← Вышел отчет проекта STEPS Towards Expressive Programming Systems за 2011 год
Обсуждение
Читать и комментировать в ЖЖ ↗
все что было нужно - не использовать кобл!
Комментарий
"браузинга веба" у них нет. Делать свой браузер - слишком дорогая задача, даже с применением мощных языковых технологий. Насколько реализован остальной функционал - по документам сказать сложно.
У них сложилась странная ситуация с графической подсистемой. Автор языка Nile является его же единственным пользователем и пишет на нём Gezira. Хотя мог бы использовать тот же C++ вместо самописной экзотики, с тем же уровнем абстракции и компактности кода, но большей читаемостью. Это не предположение, а моя оценка исходников из https://github.com/damelang/gezira и https://github.com/damelang/nile на базе личного опыта разработки графических подсистем в мобильных телефонах.
Недокументированный язык Nile, которым пользуется только автор, формально преподносится как некое достижение. Однако, в тексте отчёта присутствует и критика "программистских" DSL, которые упрощают код в малом, но усложняют восприятие цельной картины. Мне это кажется хорошим сигналом. Скорее всего год потратят аккурат на зачистку зоопарка.
Комментарий
Браузинг веба есть -- только это не тот вымороченный веб, который браузится мозиллой и оперой, а "настоящий веб" :-)
С графикой у них активные эксперименты: у того же Nile два погружения в другие языки. Заметки их по "зачистке зоопарка" относятся как раз к вычищению Си для формальной квалификации "от пользователя до железа" с одной стороны, и назначению какого-то оптимума для их языков портирования языков (ибо у них любой язык пишется в любом -- просто by definition для их способа разработки).
Язык Nile более-менее документирован, но в этой документации нужно разбираться. Ибо его документация -- "математическая статья", исполняемые примитивы. Тут не столько документация нужна, сколько объяснение дизайн-выборов, а это уже другой жанр.
Комментарий
Браузить такой "настоящий веб", в котором ни один сегодняшний сайт не будет корректно отображаться это уровень студенческого курсовика. :)
Что касается графики, то есть разница между подъёмом уровня абстракции (как, например, делает Conal Elliot, которого сейчас в той же рассылке fonc упоминают) и оккультным синтаксисом для вполне обычных вещей (Nile). Проще надо быть.
Комментарий
крутые чуваки, чо
идея о том что все могло быть проще и компактнее - это хорошо, но если они ее еще и реализовали, то вообще гениально :)
Комментарий
Хотя мог бы использовать тот же C++ вместо самописной экзотики, с тем же уровнем абстракции и компактности кода, но большей читаемостью.
У парней стоит задача показать что всю систему можно уместить в 20 тыщ строчек кода. Т.е. чтобы можно было во всей системе разобраться за разумное время.
А язык с++ настолько сложен и запутан, что уже в нем самом замучаешься разбираться. Грубо говоря, если бы они пошли путем С++, то это было бы наслоение сложного и запутанного над сложным и запутанным с помощью сложного и запутанного. Ну т.е. как современный софт и строится. А задача - продемонстрировать что можно по другому - а именно в тысячу раз короче.
Комментарий
Настолько же компактный код, какой представлен на Nile, может быть написан с нормальным синтаксисом на _почти_любом_ языке из мейнстрима. За исключением, пожалуй, Java, но только из-за отсутствия там перегрузки операторов. Но для JVM можно взять Scala. А C++, в свою очередь, позволил бы сделать это без потерь производительности, вероятно даже с улучшением скоростных характеристик.
Кроме того, компактизация кода на порядки сначала требует архитектурных усовершенствований, а затем уже их языковой поддержки. К сожалению, в публикациях FONC эта тема затрагивается только в общем виде: вот там цепочка трансляторов, а вот здесь worlds. Общий дизайн системы пока не проглядывается.
Комментарий
Ихняя OMeta на которой они языки пишут вобщем-то тоже на PEG-парсерах основана, которые на куче языков есть.
Но у них просто базовым языком является смесь смолтока со схемой, уж не знаю как она там называется в данный момент. И сей базовый язык из котором все основано - тоже компактно реализован.
При том что идеология Смолтока такая, что можно заглянуть в низлежащие уровни и их поменять при желании. Т.е. у них такая идеология что весь проект включая реализацию базового языка доступен программеру. Вплоть до уровня железа. Типа сверхпозднее связывание и все такое.
Типа все можно поместить в 20 тыщ строчек (за исключением может быть бутсраппинга).
А так да - все что они сделали можно делать и на других языках. Т.е. по сути они делают DSL'и а их можно на почти любом мейнстримном языке фигарить.
Комментарий
> тот же C++
а как тогда вписаться в бюджет 20к строк? компилятор плюсовый-то поболее будет
Комментарий
А сейчас там сишный компилятор, что не особо менее. Который, разумеется, хотят заменить на Maru/Nothing, но цена (время и LOC) неизвестна. Я бы вообще не стал засчитывать код компилятора бэкенда. Ведь прошивку контроллера сетевухи тоже не они пишут.
Комментарий
А у них ведь "прошивка контроллера сетевухи" в планах, насколько я помню -- и даже какие-то эксперименты с железом. Они ведь хотели от уровня гейта прыгать, а не просто "от железа".
Комментарий
Если C++ приводится как пример лучшей понятности, то каков же оригинал??
Комментарий
Вот-вот. В этой "понятности" и "интуитивности" есть много культурно-обусловленного. Тамошней командой утверждается, что требуется "повернуть мозги" на "другое -- контринтуитивное -- программирование", чтобы тамошние тексты и языки стали понятными. А вновь приходящим "олдовым программистам" C++ кажется интуитивно понятным, а вот тексты STEPS в их конкретном синтаксисе (несводимом к текстовому описанию алгоритмов и общих идей) -- непонятными. В этом-то и пойнт: компьютерная революция предлагается в мозгах прежде всего! И уже оттуда берутся 20тыс. строчек "от уровня логического гейта на кремнии".
Комментарий
Язык становится проще и компактнее при понятийном сдвиге, когда, например, вырабатывается такое понятие языка, кторое снимает в себе сотню других, простых для этого нового языка понятий. Тогда одну и туже мысль, или действие можно записать короче (копактнее). Но как тогда надо сдвинуть мозги (мышление), чтобы научиться говорить, писать и пр. на таком новом языке (языке программирования).
Комментарий
Вот-вот, именно так: http://ailev.livejournal.com/960827.html?thread=9637435#t9637435
Комментарий
Я же это понимаю, и поэтому говорю то же самое, что и Вы, но немного в другом языке.
Правда, есть отличие, я акцентирую внимание на выполнении работы по построению новых понятий, а уже потом на построении языка, в котором эти понятия могут "правильно" применяться как средства для... А, далее интересный вопрос, а для чего применяются понятия языка? И чем они отличаются от знаний, которые тоже имеются в языке (и язык программирования работы компьютера, здесь не исключение).
Комментарий
Настолько же компактный код, какой представлен на Nile, может быть написан с нормальным синтаксисом на _почти_любом_ языке из мейнстрима
Ух ты. Сильное заявление. Авторы пишут и демонстрируют
So when we say we can produce virtually all of 2.5D anti‑aliased alphaed personal computer graphics in 457 lines of program, we can let that stand on its own as being “very small”—at least 100 times smaller than other extant systems.
Вы можете представить реализацию 2.5D графической подсистемы с поддержкой антиалиасинга и альфа-каналов в 500 строк на каком нибудь языке? Хотелось бы посмотреть
Комментарий
Который, разумеется, хотят заменить на Maru/Nothing, но цена (время и LOC) неизвестна
Цена которых известна - и включена в общий бюджет проекта в 20 тыс. строк
Комментарий
Посмотрите исходники, кода на порядок больше. 457 lines учитывают только *.nl.
Комментарий
Могут прыгать, генерируя вместо C/C++ код на VHDL/Verilog. Который, опять же, скармливать стороннему софту. В чём разница?