LINUX.ORG.RU

Darklang - проприетарный бездеплойный язык + среда

 , , , ,


0

2

Посмотрел видео тут https://darklang.com/ (презентация, демо) честно выглядит очень круто, то что он рассказывает впринципе покрывает все или почти все проблемы вокруг создания веб-бекендов, плюс безопасность на уровне синтаксиса, типов и версионирования кода это круто, в одной из моих прошлых контор у нас похожее было на самопальных костылях.

Интеграция реальных данных прямо в редактор кода тоже выглядит офигенно, и впринципе довольно очевидная и простая штука, просто в 99% случаев продакшен и редактор кода никак не общаются.

Из минусов конечно вендор-лок, но честно экономия затрат на разработку / прототипирование / быстрый запуск может быть сильно выгоднее. Попробую когда (и если) будет бесплатный план.

Ну и да, даже если не взлетит - само демо и идеи уже достаточно хороши чтобы утащить их в разном виде в открытые проекты :)

Что думаете?

PS большое обсуждение на HN: https://news.ycombinator.com/item?id=20985429

pbiggar - один из основателей ответил на много вопросов и прояснил некоторые вещи.

★★★★★

Ответ на: комментарий от foror

А еще вчера был долгожданный всем миром релиз языка Objeck.

Название методов с большой буквы? Спасибо, нет.

System.IO.File.Directory->CreatePath("your/path/name")->PrintLine();

Про C# не слышал?

Virtuos86 ★★★★★ ()

демо

Расскажи им, что код нужно снимать в 1080p.

выглядит очень круто

Не заметил, что там крутого? Или вы падкий на всё «блестящее»?

плюс безопасность на уровне синтаксиса, типов и версионирования кода это круто

Хипстеры всё ближе к открытию Java и InteliJ IDEA.

Что думаете?

Полная хрень, очередной бекенд фреймворк для котрого создали целый ЯП и kv БД с созданием контроллеров через UI. Просто рука-лицо, особенно когда фронт они продолжают писать на React.

foror ★★★★ ()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Не заметил, что там крутого?

То что прилагается минимум усилий для запуска и разработки проекта.

Хипстеры всё ближе к открытию Java и InteliJ IDEA.

В джава с каких пор типобезопасность? Или null и касты отменили? И type erasure? А что там с версионированием? IDEA может держать несколько версий функции на продакшене и переключать между ними? Джаву не то что открыли, ее давно оставили в прошлом.

бекенд фреймворк для котрого создали целый ЯП и kv БД с созданием контроллеров через UI.

Что в этом плохого еще раз? Джава это тоже целый яп с виртуальной машиной, в гуй не смогли только.

фронт они продолжают писать на React

Они как бы говорят что фронтенд независимый.

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 4)
Ответ на: комментарий от Virtuos86

Не совсем смолтолк в том плане что к самому рантайму нет доступа (во всяком случае не заявлено и не показано). То есть уровень интроспекции, возможности модификации не ясны, а это важная черта смолтолка.

Я вот кстати был на ESUG, очень зацепило то что они делают в Gemstone, интересно почему никто еще открытого аналога не сделал, идея же супер отличная. И версионирование у них есть и система пользователей, из того что я знаю это самое близкое к сабжу.

loz ★★★★★ ()
Ответ на: комментарий от loz

То что прилагается минимум усилий для запуска и разработки проекта.

По моему это было продемонстрировано еще в 2004 году на RoR и Django. А здесь я не увидел чего-то нового, более того тут регресс, чем прогресс.

В джава с каких пор типобезопасность?

С тех пор как появились нормальные IDE, типа Eclipse и IDEA. Понятно, что если ты будешь забивать на ворнинги, то сможешь скомпилить. И тут конечно большая недоработка, но это всё таки легаси. Поэтому в 21 веке ожидаешь как раз решение данных проблем, а не очередную хипстерскую поделку.

Что в этом плохого еще раз?

Это как ставить телегу впереди лошади.

Они как бы говорят что фронтенд независимый.

Т.е. на этом ЯП я не смогу запилить фроненд? Мдя...

foror ★★★★ ()
Ответ на: комментарий от loz

держать несколько версий функции на продакшене и переключать между ними?

Зачем это? Но хипстеров сложно понять, у вас же serverless и вот это всё с микросервисами во все поля. Ладно, видимо это поделие и правда облегчит ваш труд.

foror ★★★★ ()
Ответ на: комментарий от foror

Зачем это?

Потому что это делает возможным gradual deploy и значительно уменьшает шанс ошибок на продакшене. Если ты код не меняешь, тогда, наверное, не нужно.

сложно понять

Так все что выходит за рамки узенького мышления сложно понять. Кому-то сложно понять что можно в космос летать и разговаривать по воздуху.

у вас же serverless и вот это всё с микросервисами во все поля

У кого это у нас? Что вот это вот все? Ты придумал себе какие-то понятия но извини они никому кроме тебя не нужны.

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 2)
Ответ на: комментарий от foror

По моему это было продемонстрировано еще в 2004 году на RoR и Django

И из этого следует что больше не может быть улучшений или что?

А здесь я не увидел чего-то нового

Ты не увидел, а кто-то увидит, что поделать.

Понятно, что если ты будешь забивать на ворнинги, то сможешь скомпилить

Поэтому в 21 веке ожидаешь как раз решение данных проблем

Все-таки есть разница когда ты впринципе не можеть что-то сделать и когда тебе лишь советуют, чем это не решение?

Это как ставить телегу впереди лошади

Для человека который в жизни видел только телегу и лошадь, возможно.

Т.е. на этом ЯП я не смогу запилить фроненд?

Нет, и в этом нет проблем.

loz ★★★★★ ()
Ответ на: комментарий от loz

Ты не увидел, а кто-то увидит, что поделать.

Ну я, например, с точки зрения жабобомжей, наверное, тоже к хипстерам отношусь, но тоже не вижу в этом ничего нового. По пунктам:

  1. Декларативная конфигурация REST-эндпоинтов. Народ, родина дала вам OpenAPI, которому по меркам веба уже сто лет в обед. Чётко описываются как сами эндпоинты, так и схемы принимаемых и возвращаемых ими данных. Поддерживающие эту спецификацию библиотеки вроде oas-tools (для ноды) или connexion (для питона) позволяют вообще одной ямлиной всем API ворочать. По факту необходимость педалить код ограничивается только непосредственной логикой обработки данных, а всю служебную нагрузку, вплоть до маршалинга, они берут на себя. Кстати, вполне официальный онлайн-редактор этих схем со всеми удобствами имеется на том же сайте.
  2. Лайв-обновление эндпоинтов. Опять же, реконфигурация аппа реализуется далеко не так сложно. Один служебный эндпоинт (лучше всего на другом, контрольном порту), который супервайзит основной API-сервер, и вуаля. Можно через него как саму ямлину с эндпоинтами туда заливать, так и модули с обрабатывающим их кодом. Хоть, блин, эти модули в ClojureScript пиши и через lumo динамически их перегоняй и вгружай. Но проблемас. И всё это тегировать ровно так же, как и в сабже, да. Без каких-либо дополнительных традиционных деплоев, прикинь.
  3. Удобный мониторинг значений в запросах. Натравливаешь любой понравившийся REST-клиент по вкусу (от SoapUI до curl в цикле) и вот тебе пожалуйста. Одним облачным IDE дело не ограничивается. И не должно, собственно.
  4. Хранилища. Тут могу сказать только одно — грамотно составленный ORM-адаптер решает. А завязка на проприетарное хранилище, наоборот, усугубляет.
  5. Хостинг с автоскейлингом. Задача тоже уже over9000 единиц времени назад решена всеми, кому не лень, но у амазона с его Beanstalk получилось, как по мне, лучше всего. Впрочем, не всем это и нужно. В любом случае, это делается единоразово (я сейчас не о поднятии приложения, а о поднятии такой платформы, как сама сабжевая Темень), а дальше всё конфигурируется уже динамически.

Короче, все их мегафичи делаются в полном объёме без проприетарного зашквара. А то ишь ты как, ведь сейчас главное — хайпануть немножечко ©, а разбираться уже станут не только лишь все ©.

rebforce ()
Ответ на: комментарий от loz

Еще одна фича (заявленная, но не показанная в демо) это шаринг кода, то есть все твои девелоперы, тестировщики, возможно даже менеджеры, находятся в одной среде и тот код что ты написал сразу же могут ревьювить / тестить без выкладывания в тест среду, мержа бранчей и прочего прочего.

Непонятно, как это будет нормально работать без SCM. Как они собрались решать эту проблему с помощью фичефлагов?

theNamelessOne ★★★★★ ()
Ответ на: комментарий от rebforce

Декларативная конфигурация REST-эндпоинтов. Народ, родина дала вам OpenAPI

Его надо подключать как либу, интегрировать с логикой и веб сервером, не так ли?

одной ямлиной всем API ворочать

Теперь у тебя в проекте появляются конфигурационные файлы отдельные от кода, думаешь это не источник проблем?

Один служебный эндпоинт (лучше всего на другом, контрольном порту), который супервайзит основной API-сервер, и вуаля. Можно через него как саму ямлину с эндпоинтами туда заливать, так и модули с обрабатывающим их кодом.

Насколько это сложнее одной кнопки в интерфейсе ты не замечаешь? Сколько ресурсов уйдет на написание и тестирование служебного эндпоинта который должен принимать и валидировать конфигурационный файл? Но в целом я не считаю это какой-то киллер фичей, скорее небольшим удобством.

Натравливаешь любой понравившийся REST-клиент по вкусу (от SoapUI до curl в цикле) и вот тебе пожалуйста

Расскажи секрет как натравить так чтобы данные появились в редакторе с привязкой к переменным и читабельно отформатированные согласно типам данных?

В любом случае, это делается единоразово (я сейчас не о поднятии приложения, а о поднятии такой платформы, как сама сабжевая Темень)

Все что ты сказал - потратить пару лет чтобы запилисть аналог сабжа, они как бы это и сделали это, это их продукт и есть. То что ты расписал требует затрат на разработку, отладку, поддержку. Так имено это они и продают, чтобы тебе осталось только сделать твою бизнес-логику.

loz ★★★★★ ()
Ответ на: комментарий от theNamelessOne

В видео вроде про это нет, но даже теоритически тут не нужен SCM в традиционном смысле, у тебя по-сути нет конфликтов, если два разработчика сделали изменения одной функции - они существуют как отдельные версии, и в итоге во время ревью можно оставить одну.

Или я не понял вопрос?

loz ★★★★★ ()
Ответ на: комментарий от loz

В видео вроде про это нет, но даже теоритически тут не нужен SCM в традиционном смысле, у тебя по-сути нет конфликтов, если два разработчика сделали изменения одной функции - они существуют как отдельные версии

Если фичефлаги использовать в таком ключе, то при параллельной разработке даже небольшой командой разработчиков у тебя совсем скоро эти фичефлаги разрастутся до сотен (может быть и тысяч).

и в итоге во время ревью можно оставить одну.

Ну ок. А вдруг ты через полгода захочешь вернуть старую версию кода? Что вообще делать с историей? Оставлять мёртвый код на случай, если вдруг он тебе понадобится? Как делать бисекты для новых багов?

theNamelessOne ★★★★★ ()
Последнее исправление: theNamelessOne (всего исправлений: 1)

ОК, давайте подумаем, что у сабжа есть нового/хорошего, помимо хайпа:

  1. «Бездеплойность». Примерно как раньше любой макаке можно было дать доступ по FTP на PHP-хостинг, и всё будет работать. Не надо ничего компилять-собирать. И деплой, действительно, в реальном времени. Можно даже одной кнопкой из IDE. Нынешние CI-пайплайны с докерами, смузи и кубернетесом СИЛЬНО отстают по удобству и безгеморности. И каждое «решение» только добавляет сложности. Надо с этим что-то делать.

  2. Встроенное версионирование. Потому что Git - точно не идеал. Сначала они такие «достаточно выучить clone, commit, push и pull». А потом они такие: «ой я ничё не делал и опять всё сломалось конфликт конфликт reference not found DETACHED HEAD чё за брееед» и «перед каждым коммитом сохраняю .git в отдельную папочку, не раз спасало». Надо с этим что-то делать.

  3. Встроенная БД - а фигли нет? Потому что сейчас добавление поддержки БД в проект означает кучу бойлерплейта и ручной работы и гемора и неочевидных проблем. Надо саму БД где-то запустить, создать юзеров, дать им права, подумать о миграциях, о тестах, о локальной БД для девелопмента… Жизнь не обязательно должна быть такой тяжёлой. Было б неплохо, если б в конфиг проекта можно было добавить что-то типа import postgres from ..., components = [postgres], а не трахаться полдня.

  4. Собственно, создание проекта одной кнопкой. Уже проходили, что создание нового проекта на каком-нибудь Питоне или JS - это квест на три дня. Плюс очередные споры, какой модный веб-фреймворк заюзать, в чём писать тесты, вот эта вся петрушка. Плюс скрафтить конфиг для CI, конфиг для генератора документации, конфиг для линтера, говнинтера… А в сабже любая макака просто нажимает кнопку «New» и садится херачить код, и к обеду готово. В принципе, в новых языках типа Go и Rust с этим получше, но до идеала всё равно далеко.

А теперь давайте думать, как всё это получить без привязки к вендору, под свободной лицензией и без переписывания всего мира на Очередном Новом Языке Который Точно Решит Все Проблемы.

anonymous ()
Ответ на: комментарий от theNamelessOne

у тебя совсем скоро эти фичефлаги разрастутся до сотен (может быть и тысяч).

Такое уже есть на самом деле, я работал в крупной компании где таких фиче-флагов было в каждый момент несколько тысяч. Там есть овнершип и за каждым флагом стоит разработчик и тикет, одни убирают другие появляются да, при интенсивной разработке так и есть.

Что вообще делать с историей? Как делать бисекты для новых багов?

Хороший вопрос, это уже сложнее, посмотрим что сделают в итоге.

loz ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Где ты там увидел версионирование? Feature flags — оно не про версионирование совсем.

Это немного отдельно, они говорят про feature flags, но еще упомянают что у функции есть несколько «версий». Что именно подразумевается и что с этим можно делать пока не ясно.

loz ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Кстати нашел ответ на HN:

We combine version control, deployment and feature flags, with the intention of simplifying the three concepts into one.

The idea is that you use feature flags to manage versions (my video on the blog post goes through that workflow). We haven't yet got features to support moving back to old versions (apart from undo), but we will

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну вот хоть кто-то подумал перед тем как закапывать. Все эти штуки (не стоит пропускать еще лайв данные) как раз то что они и хотят продавать. Прямо сейчас есть реальная возможность взять инициативу и сделать открытую версию. Как показывает практика даже если не иметь все фичи - все равно будет спрос. А уж если не будет лока на язык или облако с хранилищем так вобще оторвут.

loz ★★★★★ ()
Ответ на: комментарий от loz

Хранить надо текстовый код конечно же

Проблема в том, что автор Метапрога идейно против текстовых форматов даже для внутреннего представления и обещает выкатить Бинарный Версионированный Формат, причём будет ли он делать спецификацию оного, я так и не понял. Отсюда и стремление создать свою специальную VCS (а если бы формат был текстовым, можно было бы сделать всего лишь графическую надстройку над гитом).

hobbit ★★★★★ ()
Ответ на: комментарий от Deleted

Но блин, metaprog, как то сложно это с виртуалками, торами, у меня вот тупо возможности нету столько места сейчас выделить

Опа, вот ты сейчас пол-ЛОРа в шок поверг. Если даже ты... А как же ты тогда то видео записал?

hobbit ★★★★★ ()
Ответ на: комментарий от Darkman

Хм, а что именно сложно - реализация объектной базы и хранилища? Я не знаю особо как оно внутри устроено.

Кстати ты похоже хороший кандидат на сабж (судя по нику :D)

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от Deleted

Поперхнулся чаем...

Хотя это многое объясняет, например, одновременную любовь к слаквари и десятой винде. «С уважением, ваш дядя Шарик».

З.Ы. А метапрогом все трое интересуются, или?..

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от slaykovsky

Пишут

In Ballerina, every program is a sequence diagram that illustrates distributed and concurrent interactions automatically. The diagram is the code. The code is the diagram

открываю примеры, обычный текстовый код, где диаграммы то посмотреть?

loz ★★★★★ ()
Ответ на: комментарий от loz

У меня есть мысли как реализовать полноценный открытый аналог с отличной расширяемостью, но это надо много времени и усилий.

Непонятно: почему сюда вдруг набежали и стали обсуждать метапрог? Теги-то другие!

Лично мне интересно бы прочитать портрет «типичного клиента» для этого Darklang. Имхо, на этом будут пилить только что-то небольшое и с минимумом инноваций (ибо они требуют хорошей расширяемости).

Что им (клиентам) мешает взять любую CMS, натянуть туда любой шаблон и подключить готовые плагины (помним про минимум инноваций)??? Разработчиков много и затраты небольшие.

arturianec100 ()
Ответ на: комментарий от anonymous

А теперь давайте думать, как всё это получить без привязки к вендору, под свободной лицензией и без переписывания всего мира на Очередном Новом Языке Который Точно Решит Все Проблемы.

Кто оплачивать банкет будет? Занесёшь свои кровные на краудфандинг?

foror ★★★★ ()
Ответ на: комментарий от loz

У кого это у нас?

Хипстеры, веб-макаки и просто говнокодеры.

Что вот это вот все?

Я все ваши хайповые базворды и не припомню.

Ты придумал себе какие-то понятия но извини они никому кроме тебя не нужны.

Я их придумал? ) Ну, ок...

foror ★★★★ ()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от loz

И из этого следует что больше не может быть улучшений или что?

Читай внимательнее, что я пишу.

Нет, и в этом нет проблем.

Окей, суть ясна, вопросов больше не имею.

foror ★★★★ ()