1) Текстовое представление при прочих равных лучше "бинарного" (или XML-ного)
2) ОО сейчас - плохой источник идей
3) Любой универсальный тул такого рода (равно как и универсальные IL) на самом деле жестко ограничен кругозором автора и языками, которые он имел в виду.
Любой язык, не вкладываюийся в эти рамки создает трудноразрешимые проблемы
3.1) Разнообразие даже традиционных языков гораздо выше, чем кажется
4) Язык (или система программирования) должна в первую очередь структурировать мышление и предоставлять уже готовые средства программирования. Расширяемость будет использоваться весьма ограниченно
4.1) Расширение языка (или системы), сильно выходящее за рамки начальной концепции затруднено по двум причинам
- это задача соизмеримая с созданием компилятора - гораздо более важно то, что она соизмерима и даже превосходит задачу конструирования языка "с нуля" (намного более сложная задача, нежели реализация уже описанного).
5) Наиболее правильным путем достижения расширяемости является не надстройка метауровня (что равносильно использованию очень неудобного макропроцессора), а упрощение языка и превращение возможно большего числа сущностей в объекты языка пользовательского уровня (first-class entities). Например управляющие конструкции и reflection вполне могут быть таким образом реализованы.
1. Если этот структурный редактор попользовать не вместо, а в дополнение к библиотеке/препроцессору, может получиться не слишком плохо.
2. Выбора, наворачивать ли язык программирования или редактор для него, может и не быть. Если чего-то делать не хочется-не можется, всегда можно найти-придумать для этого уважительную причину.
3. Масштаб результата не всегда совпадает с масштабом задумки, а по пути может найтись что-нибудь неожиданно полезное. Так что если выбирать между делать что-то и не делать ничего, лично я предпочитаю первое, тем более что делать не мне.
Я никоим образом не хочу сказать, что Сергею следует бросить этим заниматься. Я просто хочу попробовать как-то сделать так, чтобы он не скакал по граблям. Скажем если ограничиться "умным" редактором - то оно точно весьма интересно. Я, например, попробовал приложить его идеи к O'Caml, который я люблю и хорошо знаю - получается довольно любопытно (особенно с учетом того, что там-то есть и бинарное внежнее представление синтаксического дерева и реальная расширяемость синтаксиса). Опять же - и какие-то новые по отношению к Java-образным языкам идеи и запросы появляются.
Я почти уверен, что если взять другие языки (List/SmallTalk/Cecil) и попробовать примерить эту идею на них - тоже получится довольно много и интересного и поучительного (вон тот же Cecil - мультиметоды ведь в Java вставляли). Причем полезного не только для этих языков.
Просто, вполне хорошо видно, что человек знает только Java - и Жаба у него и получается. Только в макияже. А это, как-то, грустно. Особенно если учесть, что прямо у него в фирме есть куча народа, которые вполне в теме.
1) Текстовое представление при прочих равных лучше "бинарного" (или XML-ного)
2) ОО сейчас - плохой источник идей
3) Любой универсальный тул такого рода (равно как и универсальные IL) на самом деле жестко ограничен кругозором автора и языками, которые он имел в виду.
Любой язык, не вкладываюийся в эти рамки создает трудноразрешимые проблемы
3.1) Разнообразие даже традиционных языков гораздо выше, чем кажется
4) Язык (или система программирования) должна в первую очередь структурировать мышление и предоставлять уже готовые средства программирования. Расширяемость будет использоваться весьма ограниченно
4.1) Расширение языка (или системы), сильно выходящее за рамки начальной концепции затруднено по двум причинам
- это задача соизмеримая с созданием компилятора
- гораздо более важно то, что она соизмерима и даже превосходит задачу конструирования языка "с нуля" (намного более сложная задача, нежели реализация уже описанного).
5) Наиболее правильным путем достижения расширяемости является не надстройка метауровня (что равносильно использованию очень неудобного макропроцессора), а упрощение языка и превращение возможно большего числа сущностей в объекты языка пользовательского уровня (first-class entities). Например управляющие конструкции и reflection вполне могут быть таким образом реализованы.
Антон Москаль
Reply
2. Выбора, наворачивать ли язык программирования или редактор для него, может и не быть. Если чего-то делать не хочется-не можется, всегда можно найти-придумать для этого уважительную причину.
3. Масштаб результата не всегда совпадает с масштабом задумки, а по пути может найтись что-нибудь неожиданно полезное. Так что если выбирать между делать что-то и не делать ничего, лично я предпочитаю первое, тем более что делать не мне.
Reply
Reply
Я почти уверен, что если взять другие языки (List/SmallTalk/Cecil) и попробовать примерить эту идею на них - тоже получится довольно много и интересного и поучительного (вон тот же Cecil - мультиметоды ведь в Java вставляли). Причем полезного не только для этих языков.
Просто, вполне хорошо видно, что человек знает только Java - и Жаба у него и получается. Только в макияже. А это, как-то, грустно. Особенно если учесть, что прямо у него в фирме есть куча народа, которые вполне в теме.
Антон Москаль
Reply
Reply
Leave a comment