LINUX.ORG.RU

Golang или Gambit Scheme?

 


1

3

Решил попробовать слезть с CL и перейти на другой язык. Рассматриваю варианты. Например, посмотрел на Оберон. Он хорош тем, что там почти ничего нет, но этим же он и плох.

Интересен Gambit - трансляция в Си позволяет (попытаться) отлаживать неработающие программы обычным отладчиком для Си. Но есть и интерпретатор. По показателям github (звёзды, форки и пр) - примерно равен ClozureCL и вдвое меньше SBCL.

Но потом посмотрел трекер. Да, Gambit тоже бывает, что падает. А вот golang вроде должен быть понадёжнее. Единственное, мне опять же не нравится отсутствие пошагового отладчика. Похоже, мои неудавшиеся эксперименты на ClozureCL - это более продвинутая технология, чем то, что есть в golang. Но в golang оно зато (вроде бы) работает.

Соответственно, прошу советов. Есть ещё вариант взять какую-нибудь вирт. машину, например, HHVM и начать пилить язык прямо в кодах этой машины. Но это я всё же стараюсь в себе подавить ибо трудоёмкость создания языка с нуля слишком велика.

Ну и далее, Схема - всё же маргинальщина, а на голанге, если что, можно и на хлеб заработать.

★★★★★

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

Да всё как-то не складывается. Какойто там питон. Или зубрить перл 6, в котором по идее опциональная типизация должна работать. В любом случае встроенного в компилятор-интерпритатор статического анализатора с узерскими тактиками вроде как нет еще. Ну всмысле что-то вроде coq, только чтоб верификация была отключаемой вплоть до динамических типов.

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

Ну, захочешь попилить Яр и впилить туда нужные тебе фичи, заходи через годик :) Сейчас ресурсов вообще нет, может быть, через годик будут. В целом есть желание поработать над статическим анализом и т.п.

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

Гыы, я даже не смотрел толком что это такое. Есть же сотни недоделанных достаточно популярных в определенных кругах языков (rust, idris, crystal, vala итп). Ну и принцип лунапарка бендера (в смысле свой с 0) никто не отменял.

Вообще про типизацию это всё так, мечты. Надо стремиться что-то закодить, а для этого хватает инструментов. Где надо шустро есть C++. Где надо гибко есть встраиваемые языки типа луа. Смешать, но не взбалтывать ... profit.

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

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

Из перечисленного тобой никто не идёт в сторону горячей замены, а я после CL без этого никак не могу себя представить в этом ремесле :) И, надо сказать, мне уже давно неинтересно «что-нибудь закодить», а вот сделать более хороший ЯП - это интересно.

Но конечно, своё с 0 - это святое для всех :)

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

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

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

Я как раз плясал от задачи, правда, она уже теперь неактуальна.

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

тем не менее в умелых руках JIT может соптимизировать лучше, чем любая статика, так как при полиморфизме реальные типы проясняются только во время выполнения и в некоторых случаях их оптимизация может значительно превысить затраты на компиляцию.

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

В общем-то, ничто. Но за равную ценю я предпочту подход, как в SBCL, т.е. инкрементный AOT.

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

Скорее всего, никуда не буду переходить - буду потихоньку тянуть то, что уже сделано. Переход слишком дорог, у меня сейчас нет ресурсов на него.

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

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

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

На самом деле там много иллюзорных преимуществ, которые таковыми не являются. Например, гомоиконность. Классно, что дерево выглядит очень наглядно. Но плохо, что к нему нельзя прицепить данные о том, из какого места оно загружено. Приходится городить довольно сложные костыли.

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

В ракете дерево отличается от просто данных как раз инфой про источник. Как я и говорил уже лисп проапгрейдили до схемы.

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

Я знаю. Но в ракете байткод и пока он не пермиссивно лицензирован. Плюс там call/cc, а корутины ПММЛ лучше, т.к. дешевле в реализации (хотя тут я не эксперт). Перед typescript-ом ему нечем похвалиться, а макросы впилить в тайпскрипт я и сам смогу, когда понадобится :) Т.е. сравнение ракета и typescript явно в пользу typescript.

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

Кста спасибо за идею глянуть Gambit Scheme. А то я хотел свалить с ракета на другую схему, но не знал что вообще есть, что стоит посмотреть. Уж сильно игрушечный ракет внутри.

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

Что именно там игрушечного и как поживает перевод на Chez? Я замечал, что там именно отладчик игрушечный. Но настоящего отладчика для настоящих лиспов тоже не особо получается сделать.

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

Только не предлагай Elm :)

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

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

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

В схеме несколько видов макросов и все какие-то странные. В CL - один и более-менее нормальный.

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

Ну CL макрос запросто протекает. Конструктор из граблей, пистолетов и велосипедов. Хотя он конечно проще в обращении на порядок и не создает затыков на каждом шаге как в схеме.

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

По-моему круто было бы разобраться со схемным макро-зоопарком. ЧСВ значительно подымет. Ну и на защиту от протечек заморачиваться не придется.

Кстати я тут нашел таки список всех схем и меня заинтересовала chibi-scheme для целей ембединга в С++.

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

Да там защита настолько тривиальна и настолько на автопилоте делается, что проблема протечек кажется мне абсолютно несерьёзной. Может, я зря так, конечно. Но вот так.

Где нашёл ты этот список? Мне интересны схемы, умеющие save-image, как SBCL. Для меня это - критичная фича.

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

https://www.slant.co/topics/5282/~scheme-implementations

Кстати chibi scheme как раз умеет сохранять-загружать свой heap (sexp_load_image) на уровне GC. То это или нет я с ходу не пойму, так как я никогда и не был профи лиспером да и завязал с ним давно.

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

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

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

Я от Оберона протащился - он пока выглядит наиболее близким приближением к тому, что надо. Хотя там много нужно допилить, по дороге поссорившись с консервативными оберонщиками :)

протащился недавно от Глагол-а, вот этого

оно транслирует в ассемблер и далее nasm-ом, довольно минималистичное, минимум оверхеда

насчёт оптимизаторов в компиляторах Оберона — хз.

на мой взгляд, нормально оптимизирует при трансляции через Си, например те же компиляторы от XDS.

ну или свой «миниоберон» написать, трансляцией через PEG парсер CTFE макросами времени компиляции на чём-то типа D, Nim и т.п.

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

ряд примеров на Stratego/XT Spoofax IDE

паскаль смоллток simpl

ещё интересный DSL icedust

для описания моделей данных типа IDEF1X Entity-Relation

из интересных примеров его применения: WebDSL,

для бухгалтерии ,neverwinder2 DSL для описания классов/абилок DnD3.5

Stratego/XT интересен тем, что ориентирован на конкретный синтаксис, и переписывание термов на основе «композабельных» стратегий (например, для проходов оптимизатора или перенацеливаемый транспилятор в другой язык)

Spoofax — сборка Eclipse, где всё это работает «из коробки».

ну да, и ещё сборка XDS Oberon-2 на базе Eclipse (где тоже всё работает «из коробки»)

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

спросить буратину: 2С

топик на мисте

аффтар жжёт (вырвиглазный ужос.ру)

вот тут качаем 2.rar и смотрим 1CV7&2CV7.EXE

спросить буратину, лол

Ядро программы 2С:Микрокомплекс. Это ядро может работать с метаданными и базами 1С бухгалтерский учет. Для этого нужно переименовать файлы «1cv7.dd и 1cv7.md» в «2cv7.dd и 2cv7.md». Ядро не требует регистрации и установки с дистрибутива. Эта программа free ware.

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

А, да, вроде что-то есть, спасибо.

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

Ну, в общем Яр слегка подразмораживается, буду двигаться в прежнем направлении. Попутно буду что-то пытаться сделать с Обероном (точнее, с BBCB, который есть Component Pascal), но это в меньшем приоритете. Постараюсь избежать вмешательства в SBCL. В итоге Яр на время останется без настоящей статической типизации, но это не так уж и страшно. Главное в стат. типизации - это всё же навигация к исходнику, а не проверка типов при компиляции.

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

Главное в стат. типизации - это всё же навигация к исходнику, а не проверка типов при компиляции.

Фейспалм. Не, ты точно альтернативно одаренный.

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

Или ты просто не в контексте. SBCL делает некие проверки, только не все, какие надо. Строку вместо числа просто так не подсунешь.

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

Где-то был эпический пост про эволюцию лиспера: сначала он делает свою библиотеку, потом свой лисп, потом свою ОС или что-то там. Вот я уже перешёл на этап «своей ОС». Смотрим http://yar.mybb.ru/viewtopic.php?id=4, осуждаем здесь или там - пофиг в принципе.

Смысл затеи состоит в том, чтобы соскочить с SBCL и иметь возможность нанимать дедушек - дельфистов :)

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.