Чето походу
статья про DSL особо никому не приглянулась: комментариев нет, реакция в инете нулевая (за исключением недовольного
ворчания archimag'a в своем блоге. Ну да архимаг известный брюзга: continuations в вебе архаизм, DSL застрял в середине 80-ых, и так далее
(
Read more... )
Comments 54
просто, часто комментировать лень
Reply
Reply
Reply
Нет, я считаю, что использование DSL значительно упрощает чтение и понимание кода :)
Я же привожу пример: имплементация move-valid-p против ее же имплементации на DSL defvalidator. Ну согласитесь же, что любой здоровый человек по DSL алгоритм работы поймет намного быстрее, чем если бы он полез разбираться в двойных циклах с невнятными счетчиками?
Скучный и однообразный код -- это неизбежность, поэтому пусть его лучше пишет машина по внятному и короткому описанию.
> вынуждены лезть в кишки макросов, чтобы попытаться понять, что на самом деле вставляется на место использования DSL
Да ладно уж, вынуждены :) Часто вы макроэкспандите loop, format или ppcre? На самом деле, практически никогда не бывает нужно узнать "что конкретно" делает код, достаточно осознать его алгоритм, параметры и результаты.
Например, большинству .NET программистов совершенно пофигу, как работает linq.
> участки программы написанные на DSL очень сложно ( ... )
Reply
Я о чём и толкую. На loop, format и ppcre есть подробная документация. На ваш DSL - нет.
> На самом деле, практически никогда не бывает нужно узнать "что конкретно" делает код, достаточно осознать его алгоритм, параметры и результаты.
Это срабатывает до тех пор, пока программа на DSL работает как задумывалось. А вот если она начинает выдавать малопонятные ошибки, то в "кишки" лезть все равно придется. Или если захочется расширить или изменить семантику DSL.
Reply
Ну вы так говорите, как будто это неизбежный злой рок всех моих DSL-ей =) Разумеется, при расширении функционала или публичном релизе подробные доки будут написаны. Это как и везде.
> А вот если она начинает выдавать малопонятные ошибки, то в "кишки" лезть все равно придется.
Да ради Бога, в CL это не сложнее, чем залезть в кишки чьей-то левой и бажной библиотеки.
> Или если захочется расширить или изменить семантику DSL.
Я же говорю: для этого необязательно лезть в кишки, достаточно определить свой DSL поверх существующего.
Reply
(The comment has been removed)
Но ведь это не так. У языка есть такое свойство: "Выразительность" -- даже у универсальных языков вне своей основной предметной области она может быть очень низкая. Например, зная ассемблер, очень тяжело разбираться в сложных программах на нем.
Reply
(The comment has been removed)
Чем длинней перед тобой простыня кода, тем больше шансов, что тебе даже не захочется ее читать.
Открой, например, случайный исходник мозиллы или опеноффиса. Увидишь там код, удовлетворяющий всем coding styles, stantards, best practices, etc, только, чтобы что-то понять, придется крепко повозиться =)
Reply
Reply
(The comment has been removed)
Reply
Остальное -- это реализация языка программирования игровых ситуаций на прямоугольном поле. В качестве примера я на нем же решил другую задачу (о восьми ферзях).
Да, и о каких ошибках и побочных эффектах ты говоришь? Или ты это типа так, рандомно для красного словца упомянул? =)
Reply
Reply
Reply
Leave a comment