LINUX.ORG.RU

(хочу невозможного) Есть ли ЯП со встроенным LISP-подобным макроязыком

 ,


1

5

Собственно, когда-то очень давно пользовался MASM'ом (верси 6.11, если мне склероз не изменяет), так там был встроенный макроязык, который сначала было очень трудно освоить, но зато после того, как я им проникся, я начал писать асм-код в разы быстрее, поскольку генерировал львиную часть кода именно им.

И давеча подумал я на досуге: вот мне трудно осваивать LISP с нуля, но если бы он был встроен в какой-то другой язык, вполне себе общего назначения - скорее всего мало-помалу я бы стал использовать его всё больше и больше и в конечном итоге код на LISP'е стал бы как и в случае с макроассмеблером составлять вообще большую часть кода, после чего перейти на любой полнойценный LISP-based язык не составило бы труда.

Внимание, вопрос: в каком «обычном» ЯП можно использовать LISP в качестве встроенного макроязыка?

Спасибо!

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

На вскидку JS и Io, self и lua. Скорей всего, также смоллток, руби etc. Тысячи их.

Сравнил игрушечные пукалки с мощным, компилируемым, стандартизованным Common Lisp.

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

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

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

Последний из экспериментов - Nemerle, вроде как почил, т.к. новостей про него не слышно особо.

Дык, их «макроязык» вообще не похож на лисп.

А вообще они теперь пилят не язык, а "language workbench", на котором планируется (планировалось?) сделать немерле2. Правда разработчикам не удалось привлечь достаточного внимания, более того - умудрились потерять финансирование джетбрейнс. Когда последний раз заходил на рсдн, то показалось, что они ещё и разругались друг с другом.

Ну и по теме: не думаю, что в не лисп-подобном языке будет удобна лиспообразная макронадстройка.

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

Дык, их «макроязык» вообще не похож на лисп.

Я про сам принцип лисповых макросов - работа с AST, а не с текстом, как C-like макросах.

Ну и по теме: не думаю, что в не лисп-подобном языке будет удобна лиспообразная макронадстройка.

На 100% согласен, смотрел в F# на quote - там такую лапшу наворачивает до оптимизаций, что ужас и работать с таким не хочется совершенно.

А вообще они теперь пилят не язык, а «language workbench», на котором планируется (планировалось?) сделать немерле2.

Имхо, ребята вообще не туда пошли в своих разработках изначально. Нужен был не новый ЯП, а какая-нибудь удобная для массового использования тулза для Lisp-like языка (типа La Clojure). А C# и MS допилит до отличного состояния (уже на момент .Net 3.5 это было чётко видно по интенсивности развития из либ и инструментов).

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

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

Согласен с первой частью, но не со второй. (:

Новые языки вполне себе могут занять нишу, другое дело, что в голову не приходит ничего достаточно популярного на платформе .Net не принадлежащего майкрософту. Сложно судить почему так, но для JVM есть навороченная Scala (кстати, версия для .Net у них была, но сдохла), Kotlin, Clojure и прочие, которые вполне нормально себя чувствуют.

Другое дело, что насколько я могу судить со стороны, направление развития никто особо и не выбирал: изначально Nemerle - это ведь «продукт» польских аспирантов и не думаю, что у них далеко идущие планы были. Затем разработку подхватили и, опять же, кажется, что людям просто было интересно, а никакого «маркетинга» не было.

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

Присоединяйся к проекту Яр.

Это ещё что?

Плюс лиспа не только в макросах, а ещё и в горячей замене кода, т.е. в возможности не «пересобирать» программу, а «доращивать» её.

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

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

Это версия 0.5. По идее нужно иметь несколько синтаксисов. Для скриптов нужен более короткий. Для монструозных проектов - более многословный. Но это отодвинуто в безнадёжно далёкое будущее.

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

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

Совершенно верно.

anonymous ()