metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-08-12 02:10 pm

В рамках массового обострения

Обсуждение MPS:

ссылка

Единственное: я сам на яве не пишу, однако ж с каждым новым приложением на яве, которое я вижу, у меня усиливается ощущение, что профессиональное заболевание жабоводов это какой-то необузданный оверинжиниринг. Буквально, как там Э. Гамма (кажется) цитировал письмо от читателей -- "..мы прочитали вашу книгу, впихнули в свое приложение 18 шаблонов из 22, но вот последние четыре никак не можем придумать как применить, помогите".

[identity profile] theiced.livejournal.com 2009-08-12 11:18 am (UTC)(link)
А MPS между тем довольно интересный. Не панацея, но может быть в некоторых случаях с пользой применён.

[identity profile] alexott.livejournal.com 2009-08-12 11:32 am (UTC)(link)
eclipse xtext?

[identity profile] nivanych.livejournal.com 2009-08-12 01:08 pm (UTC)(link)
Шо могу сказать.
Фантазии нетуть.
Была бы фантазия, применить можно чоугодно.
;-) ;-)

[identity profile] veter-r-r.livejournal.com 2009-08-12 01:17 pm (UTC)(link)
там комменты доставляют.

"У нас код для языков пишется на нащих собственных языках для создания языков, как вы можете видеть из скриншотов выше."

Чоооорт. Как люди это понимают и этим пользуются?!

[identity profile] theiced.livejournal.com 2009-08-12 02:54 pm (UTC)(link)
Ребе, оно прикольно и понимаемо (не)нормальными которые отказываются понимать лисп.

[identity profile] veter-r-r.livejournal.com 2009-08-12 03:11 pm (UTC)(link)
Но зачем? Зачем все это нужно?

[identity profile] theiced.livejournal.com 2009-08-12 03:49 pm (UTC)(link)
если вы не видите смысла в DSL - то с вами всё ясно :)

[identity profile] veter-r-r.livejournal.com 2009-08-12 04:00 pm (UTC)(link)
Я вижу смысл в DSL, если вы под ним понимаете то же, что и я. С некоторой точки зрения PHP это тоже DSL.

А вот DSL для создания DSL -- это уже змеи для создания червей. Особенно после некоторого порога.

[identity profile] forthman.livejournal.com 2009-08-13 12:23 pm (UTC)(link)
Тот же yacc - очень даже DSL. Для создания DSL, да.

[identity profile] metaclass.livejournal.com 2009-08-12 03:52 pm (UTC)(link)
Вообще в теории - чтобы было проще работать.
На практике часто получается наоборот.

[identity profile] veter-r-r.livejournal.com 2009-08-12 03:58 pm (UTC)(link)
Ну вот это и удивляет. Сначала создают слой абстракции, чтобы было проще работать с предметным слоем, потом слой чтобы проще было работать с абстрактным слоем, а потом удивляются, когда на пятом слое начинают нарождаться черви с жабами и никто не может понять, откуда они растут.

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

[identity profile] metaclass.livejournal.com 2009-08-12 04:03 pm (UTC)(link)
У меня жабы с паттернами самозарождаются при любой попытке "сделать правильно". Может, я других методов не знаю, может язык способствует своей архитектурой, но в итоге всегда паттерны верхом на жабах въезжают и привозят тысячи классов, в которых чорт ногу сломит.

[identity profile] veter-r-r.livejournal.com 2009-08-12 04:10 pm (UTC)(link)
Ну мне "повезло" в том плане что PHP не предполагает как такового жизненного цикла у запущенного приложения. Скрипт отрабатывает и умирает секунд за 30 максимум. Поэтому все эти паттерны не приживаются. Они банально не успеют все проинициализироваться за то время, когда пользователю надо дать отклик.

Но тем не менее с ростом быстродействия серверов и сюда проникают порождения джавы.

[identity profile] metaclass.livejournal.com 2009-08-12 04:18 pm (UTC)(link)
А данные где кэшировать, неужели каждый раз в базу данных лазить?

[identity profile] veter-r-r.livejournal.com 2009-08-12 06:21 pm (UTC)(link)
В мемкэше. Для этого хватает одного несчастного класса :))

[identity profile] metaclass.livejournal.com 2009-08-12 03:51 pm (UTC)(link)
Да классические метаязыки, язык описывающий сам себя и прочее. В лиспе такое давно есть, тут просто заточено под жабу, да редактор гуманный прикручен.

[identity profile] veter-r-r.livejournal.com 2009-08-12 04:04 pm (UTC)(link)
Ну вот просто если все это раскопать, то внутри оказывается все просто и даже тривиально.
Но при этом для всего этого придумано 10 новых сущностей, пару слоев абстракции и три толстенных книги описания как оно все работает.

И если классические метаязыки были созданы для решения конкретных прикладных задач, то нынешние инструменты создаются для разработки инструментов поддержки иструментов. Вот что удручает же.

[identity profile] blacklion.livejournal.com 2009-08-12 04:13 pm (UTC)(link)
Чоооорт. Как люди это понимают и этим пользуются?!
Да нормально. DSL, что особенного? Вот сколько вы языков знаете? Неужели меньше десятка? :)

[identity profile] veter-r-r.livejournal.com 2009-08-12 06:23 pm (UTC)(link)
А пользуюсь в основном русским матерным :))

Я тут так прикинул.. наверное все-таки меньше десятка. А на кой черт мне их десяток? Достаточно тех, которые решают задачи в моей предметной области. И Ruby для души.

[identity profile] blacklion.livejournal.com 2009-08-12 07:21 pm (UTC)(link)
Makefiles и sh/bat/cmd вы считали? :)

[identity profile] blacklion.livejournal.com 2009-08-12 08:17 pm (UTC)(link)
А надо. sh — вообще полноценный язык, Makefiles — типичный DSL, ну и так далее.

[identity profile] veter-r-r.livejournal.com 2009-08-12 08:29 pm (UTC)(link)
Ну считать это языком, который я знаю, я бы не стал. У меня свои критерии для подсчетов.

А мейкфайлов так и вовсе уже лет пять не писал.

[identity profile] blacklion.livejournal.com 2009-08-12 08:35 pm (UTC)(link)
sh — так, для примера. Кто-то его знает, кто-то что-то другое подобное. Опять же не мейк-файлы так Build.xml от ANT'а, или там cmake-Файлы — но всё это ЯЗЫКИ которые мы знаем и используем даже не задумываясь.

[identity profile] veter-r-r.livejournal.com 2009-08-12 08:49 pm (UTC)(link)
И не хочу задумываться.
На кой ляд называть всякую дурную систему записи файла языком?

Так дойдем до того, что конфиг винампа языком признаем.

[identity profile] blacklion.livejournal.com 2009-08-12 08:55 pm (UTC)(link)
Ну, язык программирования — это формализованный способ управлять некоторым вычислителем (!). Теже Makefile — это Prolog в чистом виде, синтаксис только другой. То, что Prolog — язык, надеюсь никто не сомневается?

Я бы проводил границу по тьюринг-полноте. Makefile, XSLT и build.xml тогда будут языками, а конфиг винампа — нет…

[identity profile] veter-r-r.livejournal.com 2009-08-12 09:06 pm (UTC)(link)
Разница между build.xml и конфигом винампа только в количестве навешанных плагинов. :)

А Тьюринг давно устарел. И если бы он случайно ожил, то увидев то, чем занимаются нынешние программисты, срочно умер бы обратно.

[identity profile] 1ceheart.livejournal.com 2009-08-12 11:43 pm (UTC)(link)
Я вот что-то сильно не уверен насчет тьюринг-полноты make, кстати.

[identity profile] blacklion.livejournal.com 2009-08-13 04:58 am (UTC)(link)
Дык это, пролог — тьюринг-полон. Make — это пролог :)

[identity profile] eoai.livejournal.com 2009-08-13 12:31 pm (UTC)(link)
У нас вообще было, прослезиться можно.

Существующий код аж в две тыщи строк кода на шарпе переписывали на джаву. После года девелопмента и трех рефакторингов получили что-то около двухсот тыщ строк. Работало "немного не так". Рерята все выбосили и переписали еще раз с нуля - две тыщи в пять тыщ. В итоге "новое" приложение тихонько задвинули в угол.