Size: a a a

Compiler Development

2020 February 22

K

Kir in Compiler Development
Синтаксис с точки зрения человека, как мне кажется, надо изучать на примере хаскелля. Все прочие языки после него кажутся захламлёнными.
источник

AR

Andrew Rudenko in Compiler Development
K R
Я догадался, что #lang вы имели ввиду директиву Racket (или что-то подобное).

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

А проблема Лиспа в том, что он плохо читаем человеком (а машиной отлично). Частично это исправляется блочной структурой, но явно недостаточно. Раскрашивание вроде помогает. Может быть ещё что-то?

И когда вы строите DSL эта проблема восприятия встаёт в полный рост.
прекрасно читается, а раскрашивание вообще можно отключить )
источник

YS

Yuriy Syrovetskiy in Compiler Development
Kir
Синтаксис с точки зрения человека, как мне кажется, надо изучать на примере хаскелля. Все прочие языки после него кажутся захламлёнными.
если изучать лисп после Хаскеля, то Хаскель кажется захламлённым
источник

AR

Andrew Rudenko in Compiler Development
Andrew Rudenko
прекрасно читается, а раскрашивание вообще можно отключить )
у меня вообще так
источник

PS

Peter Sovietov in Compiler Development
K R
Я догадался, что #lang вы имели ввиду директиву Racket (или что-то подобное).

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

А проблема Лиспа в том, что он плохо читаем человеком (а машиной отлично). Частично это исправляется блочной структурой, но явно недостаточно. Раскрашивание вроде помогает. Может быть ещё что-то?

И когда вы строите DSL эта проблема восприятия встаёт в полный рост.
DSL ведь как раз и создаются, чтобы проблема восприятия не стояла так остро. DSL, в основном, это про выразительную нотацию, взятую из предметной области. И в том же Racket есть какие-никакие, но рабочие средства создания DSLs. Авторы в статье по ссылке выше честно признаются, что макросы и прочее, что сейчас есть в Лиспе — полумеры.

Когда я пишу, скажем, в PLT Redex, то я создаю правила логического вывода прямо в нотации Генцена, даже разделительные линии приходится рисовать ASCII-графикой :) При этом семантика выполнения у PLT Redex отлична от обычного Racket и даже для любителя различных прологов там есть, от чего прийти в восхищение :)
источник

KR

K R in Compiler Development
Peter Sovietov
DSL ведь как раз и создаются, чтобы проблема восприятия не стояла так остро. DSL, в основном, это про выразительную нотацию, взятую из предметной области. И в том же Racket есть какие-никакие, но рабочие средства создания DSLs. Авторы в статье по ссылке выше честно признаются, что макросы и прочее, что сейчас есть в Лиспе — полумеры.

Когда я пишу, скажем, в PLT Redex, то я создаю правила логического вывода прямо в нотации Генцена, даже разделительные линии приходится рисовать ASCII-графикой :) При этом семантика выполнения у PLT Redex отлична от обычного Racket и даже для любителя различных прологов там есть, от чего прийти в восхищение :)
А если хорошо разработанной предметной области нет - например, вы создаёте DSL для описания структуры 164*3 диалогов в графической программе?
источник

YS

Yuriy Syrovetskiy in Compiler Development
K R
Я догадался, что #lang вы имели ввиду директиву Racket (или что-то подобное).

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

А проблема Лиспа в том, что он плохо читаем человеком (а машиной отлично). Частично это исправляется блочной структурой, но явно недостаточно. Раскрашивание вроде помогает. Может быть ещё что-то?

И когда вы строите DSL эта проблема восприятия встаёт в полный рост.
кто-нибудь пробовал аналог MPS положить на S-exp?
источник

KR

K R in Compiler Development
Yuriy Syrovetskiy
кто-нибудь пробовал аналог MPS положить на S-exp?
Мысль не понял. Да и не мне это надо адресовывать.
источник

YS

Yuriy Syrovetskiy in Compiler Development
K R
Мысль не понял. Да и не мне это надо адресовывать.
это гипотетический ответ на "Может быть ещё что-то?"
источник

YS

Yuriy Syrovetskiy in Compiler Development
K R
Мысль не понял. Да и не мне это надо адресовывать.
мысль в том, что часть идей MPS, в частности, накладывание GUI на структуру кода, можно реализовать в S-выражениях почти так же, как MPS это делает на XML
источник

KR

K R in Compiler Development
Yuriy Syrovetskiy
мысль в том, что часть идей MPS, в частности, накладывание GUI на структуру кода, можно реализовать в S-выражениях почти так же, как MPS это делает на XML
С известной степенью точности XML это и есть S-expression.
источник

YS

Yuriy Syrovetskiy in Compiler Development
адресовано всем, кому это интересно
источник

YS

Yuriy Syrovetskiy in Compiler Development
K R
С известной степенью точности XML это и есть S-expression.
да, но нет. пространства имён в XML встроены и всем понятны, а на S их придётся костылить
источник

PS

Peter Sovietov in Compiler Development
K R
А если хорошо разработанной предметной области нет - например, вы создаёте DSL для описания структуры 164*3 диалогов в графической программе?
Для проектирования/моделирования GUI вполне есть развитые нотации и формальные методы: https://www.hillelwayne.com/post/formally-specifying-uis/
источник

KR

K R in Compiler Development
Спасибо. А что-нибудь за HierarchicalStMach в этой области разработали?

Всё-таки, почти 40 лет прошло.
источник

PS

Peter Sovietov in Compiler Development
K R
Спасибо. А что-нибудь за HierarchicalStMach в этой области разработали?

Всё-таки, почти 40 лет прошло.
Я бы предпочел обсудить вопросы разработки компиляторов, а не проектирования GUI :)
источник

KR

K R in Compiler Development
Peter Sovietov
Я бы предпочел обсудить вопросы разработки компиляторов, а не проектирования GUI :)
Это не проектирование GUI, а достаточно общий вопрос. HSM сделали давно, да и для светофоров вроде изначально. Может быть вы знаете, было ли какое-нибудь развитие дальше?
источник

PS

Peter Sovietov in Compiler Development
Мне кажется, в контексте чата интереснее будет звучать вопрос о трансляции для входного языка описания UI (где как раз можно воплотить самые разные идеи: dataflow-переменные ван Роя, синхронные языки, программирование в ограничениях, CSP и так далее) в низкоуровневый целевой код для одной популярных GUI-библиотек в духе Qt/Tk/SDL/Web/... :)
источник

KR

K R in Compiler Development
А где можно почитать про dataflow программирование? Concepts, techniques, and models of computer programming? Или есть ещё что-нибудь?
источник

KR

K R in Compiler Development
Интересно в применении к streaming задачам и связь с реактивным программированием.
источник