Обсуждение

В архиве: 22 комментария.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 9 ноября 2011

Комментарий

все что было нужно - не использовать кобл!

Имя не сохранено · 9 ноября 2011

Комментарий

"браузинга веба" у них нет. Делать свой браузер - слишком дорогая задача, даже с применением мощных языковых технологий. Насколько реализован остальной функционал - по документам сказать сложно. У них сложилась странная ситуация с графической подсистемой. Автор языка Nile является его же единственным пользователем и пишет на нём Gezira. Хотя мог бы использовать тот же C++ вместо самописной экзотики, с тем же уровнем абстракции и компактности кода, но большей читаемостью. Это не предположение, а моя оценка исходников из https://github.com/damelang/gezira и https://github.com/damelang/nile на базе личного опыта разработки графических подсистем в мобильных телефонах. Недокументированный язык Nile, которым пользуется только автор, формально преподносится как некое достижение. Однако, в тексте отчёта присутствует и критика "программистских" DSL, которые упрощают код в малом, но усложняют восприятие цельной картины. Мне это кажется хорошим сигналом. Скорее всего год потратят аккурат на зачистку зоопарка.

Анатолий Левенчук · 9 ноября 2011

Комментарий

Браузинг веба есть -- только это не тот вымороченный веб, который браузится мозиллой и оперой, а "настоящий веб" :-) С графикой у них активные эксперименты: у того же Nile два погружения в другие языки. Заметки их по "зачистке зоопарка" относятся как раз к вычищению Си для формальной квалификации "от пользователя до железа" с одной стороны, и назначению какого-то оптимума для их языков портирования языков (ибо у них любой язык пишется в любом -- просто by definition для их способа разработки). Язык Nile более-менее документирован, но в этой документации нужно разбираться. Ибо его документация -- "математическая статья", исполняемые примитивы. Тут не столько документация нужна, сколько объяснение дизайн-выборов, а это уже другой жанр.

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

Имя не сохранено · 9 ноября 2011

Комментарий

Браузить такой "настоящий веб", в котором ни один сегодняшний сайт не будет корректно отображаться это уровень студенческого курсовика. :) Что касается графики, то есть разница между подъёмом уровня абстракции (как, например, делает Conal Elliot, которого сейчас в той же рассылке fonc упоминают) и оккультным синтаксисом для вполне обычных вещей (Nile). Проще надо быть.

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

Имя не сохранено · 9 ноября 2011

Комментарий

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

Имя не сохранено · 9 ноября 2011

Комментарий

Хотя мог бы использовать тот же C++ вместо самописной экзотики, с тем же уровнем абстракции и компактности кода, но большей читаемостью. У парней стоит задача показать что всю систему можно уместить в 20 тыщ строчек кода. Т.е. чтобы можно было во всей системе разобраться за разумное время. А язык с++ настолько сложен и запутан, что уже в нем самом замучаешься разбираться. Грубо говоря, если бы они пошли путем С++, то это было бы наслоение сложного и запутанного над сложным и запутанным с помощью сложного и запутанного. Ну т.е. как современный софт и строится. А задача - продемонстрировать что можно по другому - а именно в тысячу раз короче.

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

Имя не сохранено · 10 ноября 2011

Комментарий

Настолько же компактный код, какой представлен на Nile, может быть написан с нормальным синтаксисом на _почти_любом_ языке из мейнстрима. За исключением, пожалуй, Java, но только из-за отсутствия там перегрузки операторов. Но для JVM можно взять Scala. А C++, в свою очередь, позволил бы сделать это без потерь производительности, вероятно даже с улучшением скоростных характеристик. Кроме того, компактизация кода на порядки сначала требует архитектурных усовершенствований, а затем уже их языковой поддержки. К сожалению, в публикациях FONC эта тема затрагивается только в общем виде: вот там цепочка трансляторов, а вот здесь worlds. Общий дизайн системы пока не проглядывается.

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

Имя не сохранено · 10 ноября 2011

Комментарий

Ихняя OMeta на которой они языки пишут вобщем-то тоже на PEG-парсерах основана, которые на куче языков есть. Но у них просто базовым языком является смесь смолтока со схемой, уж не знаю как она там называется в данный момент. И сей базовый язык из котором все основано - тоже компактно реализован. При том что идеология Смолтока такая, что можно заглянуть в низлежащие уровни и их поменять при желании. Т.е. у них такая идеология что весь проект включая реализацию базового языка доступен программеру. Вплоть до уровня железа. Типа сверхпозднее связывание и все такое. Типа все можно поместить в 20 тыщ строчек (за исключением может быть бутсраппинга). А так да - все что они сделали можно делать и на других языках. Т.е. по сути они делают DSL'и а их можно на почти любом мейнстримном языке фигарить.

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

Имя не сохранено · 10 ноября 2011

Комментарий

А сейчас там сишный компилятор, что не особо менее. Который, разумеется, хотят заменить на Maru/Nothing, но цена (время и LOC) неизвестна. Я бы вообще не стал засчитывать код компилятора бэкенда. Ведь прошивку контроллера сетевухи тоже не они пишут.

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

Анатолий Левенчук · 10 ноября 2011

Комментарий

А у них ведь "прошивка контроллера сетевухи" в планах, насколько я помню -- и даже какие-то эксперименты с железом. Они ведь хотели от уровня гейта прыгать, а не просто "от железа".

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

Анатолий Левенчук · 10 ноября 2011

Комментарий

Вот-вот. В этой "понятности" и "интуитивности" есть много культурно-обусловленного. Тамошней командой утверждается, что требуется "повернуть мозги" на "другое -- контринтуитивное -- программирование", чтобы тамошние тексты и языки стали понятными. А вновь приходящим "олдовым программистам" C++ кажется интуитивно понятным, а вот тексты STEPS в их конкретном синтаксисе (несводимом к текстовому описанию алгоритмов и общих идей) -- непонятными. В этом-то и пойнт: компьютерная революция предлагается в мозгах прежде всего! И уже оттуда берутся 20тыс. строчек "от уровня логического гейта на кремнии".

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

Имя не сохранено · 10 ноября 2011

Комментарий

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

Имя не сохранено · 10 ноября 2011

Комментарий

Я же это понимаю, и поэтому говорю то же самое, что и Вы, но немного в другом языке. Правда, есть отличие, я акцентирую внимание на выполнении работы по построению новых понятий, а уже потом на построении языка, в котором эти понятия могут "правильно" применяться как средства для... А, далее интересный вопрос, а для чего применяются понятия языка? И чем они отличаются от знаний, которые тоже имеются в языке (и язык программирования работы компьютера, здесь не исключение).

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

Имя не сохранено · 10 ноября 2011

Комментарий

Настолько же компактный код, какой представлен на 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 строк на каком нибудь языке? Хотелось бы посмотреть

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

Имя не сохранено · 10 ноября 2011

Комментарий

Который, разумеется, хотят заменить на Maru/Nothing, но цена (время и LOC) неизвестна Цена которых известна - и включена в общий бюджет проекта в 20 тыс. строк

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

Имя не сохранено · 10 ноября 2011

Комментарий

Могут прыгать, генерируя вместо C/C++ код на VHDL/Verilog. Который, опять же, скармливать стороннему софту. В чём разница?

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