OberonCore
https://forum.oberoncore.ru/

О предметно-ориентированных языках
https://forum.oberoncore.ru/viewtopic.php?f=57&t=3557
Страница 1 из 5

Автор:  Валерий Лаптев [ Четверг, 01 Сентябрь, 2011 20:39 ]
Заголовок сообщения:  О предметно-ориентированных языках

Я думаю, книга Мартина Фаулера http://www.ozon.ru/context/detail/id/6967089/
снимает проблему. Просто "изобретаем" DSL и пишем на нем.
Цитата:
В этой книге известный эксперт в области программного обеспечения Мартин Фаулер предоставляет информацию, которая поможет вам определиться, следует ли использовать предметно-ориентированные языки для решения стоящих перед вами задач. Если применение предметно-ориентированных языков окажется оправданным, то вам пригодится вторая часть книги, в которой подробно, на конкретных примерах, описаны технологии, применяемые при создании таких языков.
Методы, описанные в данной книге, могут использоваться в большинстве современных объектно-ориентированных языков программирования. В основном примеры в книге написаны на Java и C#, но в некоторых из них использован Ruby. Все главы по возможности организованы в виде самодостаточных частей, а большинство справочных разделов - в знакомом читателю формате описания шаблонов программирования.
При правильном выборе и применении предметно-ориентированные языки могут существенно упростить сложный код, обеспечить эффективное общение с пользователями, повысить производительность и устранить узкие места разработки. В этой книге известный эксперт в области программного обеспечения Мартин Фаулер предоставляет информацию, которая поможет вам определиться, следует ли использовать предметно-ориентированные языки для решения стоящих перед вами задач. Если применение предметно-ориентированных языков окажется оправданным, то вам пригодится вторая часть книги, в которой подробно, на конкретных примерах, описаны технологии, применяемые при создании таких языков.

Автор:  Илья Ермаков [ Четверг, 01 Сентябрь, 2011 20:54 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Эффективные абстракции прикладного уровня - вещь по сути своей динамичная (должны уточняться неоднократно в процессе работы даже над одной задачей, не говоря про переключение на смежные). Никакое языковое решение не сравнится в гибкости с обычным библиотечно-каркасным. А значит, быстро отстанет от понимания задачи и будет "жать".

Имхо, деятели типа Фаулера занимаются DSL не потому, что понимают "под давлением практики", что они эффективны, а потому, что верят в давний бродячий мем "уровень языков программирования будет неуклонно повышаться" - и пытаются этот мем реализовывать.

Автор:  Валерий Лаптев [ Пятница, 02 Сентябрь, 2011 07:49 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

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

Автор:  Info21 [ Пятница, 02 Сентябрь, 2011 11:24 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Я тоже не верю во все эти DSL.

Любой D можно обсуждать на обычном языке + словарь.
Так и тут. Оберон + каркас типов и процедур.

Автор:  Alexey_Donskoy [ Пятница, 02 Сентябрь, 2011 13:39 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Info21 писал(а):
Любой D можно обсуждать на обычном языке + словарь.
Так и тут. Оберон + каркас типов и процедур.
Имхо, неоправданное сужение.
Обсудите-ка таким образом D="проект дома":
- с дизайнером;
- с проектировщиком;
- с прорабом...

Или вот, совсем не отходя от программирования - пример DSL для моделирования динамических систем (фактически это Data Flow Diagram):
Код:
1 v 1
2 L (1.5p+1/3.14p3+1.5p2+0.7p+1) (1)

Ну и т.д. и т.п...

Автор:  Info21 [ Пятница, 02 Сентябрь, 2011 14:49 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Alexey_Donskoy писал(а):
Info21 писал(а):
Любой D можно обсуждать на обычном языке + словарь.
Так и тут. Оберон + каркас типов и процедур.
Имхо, неоправданное сужение.
Обсудите-ка таким образом D="проект дома":
- с дизайнером;
- с проектировщиком;
- с прорабом...
Уговорили: для прораба придется изменить ключевые слова, взяв однокоренные от одного корня 8)

Alexey_Donskoy писал(а):
Или вот, совсем не отходя от программирования - пример DSL для моделирования динамических систем (фактически это Data Flow Diagram):
Код:
1 v 1
2 L (1.5p+1/3.14p3+1.5p2+0.7p+1) (1)

Ну и т.д. и т.п...
Мой опыт из разряда "и т.д." говорит, что достаточно рассматривать такие выражения как входные данные (типа читать специальным коммандером из текста), и вовсе не обязательно впаивать их в язык.

И.Е. уже сказал главное, до сюда относящееся, повторять не буду.

Автор:  Илья Ермаков [ Пятница, 02 Сентябрь, 2011 15:20 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Библиотечный вариант может быть громоздче по символам, зато прозрачней по проекции на реализацию. Плюс освоить API проще, чем язык, потому что API не содержит исключений относительно правил базового языка. Сравните, что проще вспомнить через год, глядя на программу - DSL или API.

DSL хочут те, кому нужно делать много и похожее. Но чаще программист широкого профиля имеет дело с многим и разным.

Автор:  Info21 [ Пятница, 02 Сентябрь, 2011 15:37 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Илья Ермаков писал(а):
DSL хочут те, кому нужно делать много и похожее. Но чаще программист широкого профиля имеет дело с многим и разным.
Можно переформулировать проблему так:

Достаточно ли места для DSL между:
1) Оберон+API+микроязык для данных (особенно если Оберон выучили в школе)
2) фиксированные формы
?

Автор:  Сергей Прохоренко [ Пятница, 02 Сентябрь, 2011 17:01 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Илья Ермаков писал(а):
Сравните, что проще вспомнить через год, глядя на программу - DSL или API.


Думаю, что для случая структурного редактора DSL и API одинаково удобны, так как языковые конструкции можно выбирать из палитры так же легко, как и процедуры.

А вспоминать вообще ничего не придется - достаточно будет выбрать нужное из списка/палитры или даже из справки.

Автор:  Info21 [ Пятница, 02 Сентябрь, 2011 18:48 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Сергей Прохоренко писал(а):
Думаю, что для случая структурного редактора DSL и API одинаково удобны, так как языковые конструкции можно выбирать из палитры так же легко, как и процедуры.
Но нужно учесть, что структурный редактор -- это довольно сложная вещь.

Автор:  Владислав Жаринов [ Суббота, 03 Сентябрь, 2011 09:01 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Info21 писал(а):
Илья Ермаков писал(а):
DSL хочут те, кому нужно делать много и похожее. Но чаще программист широкого профиля имеет дело с многим и разным.
Можно переформулировать проблему так:

Достаточно ли места для DSL между:
1) Оберон+API+микроязык для данных (особенно если Оберон выучили в школе)
2) фиксированные формы
?
Понимается ли DSL как "внешний" язык формализации - подобно FBD в этом сообщении? А формы - это что имеется в виду - интерфейсные, как окна в гуе или документы в 1С?
P.S. Вот чел в этом сообщении говорил, оказывается, примерно о том же (касательно того чего "мы не видим на схеме") - есть разные аспекты представления о деятельности. И надо отделять их в "разные сферы".

Автор:  Илья Ермаков [ Суббота, 03 Сентябрь, 2011 10:31 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Сергей Прохоренко писал(а):
Думаю, что для случая структурного редактора DSL и API одинаково удобны, так как языковые конструкции можно выбирать из палитры так же легко, как и процедуры.
А вспоминать вообще ничего не придется - достаточно будет выбрать нужное из списка/палитры или даже из справки.


А без структурного редактора? Например, продумывая решение проблемы по пути на работу за рулём? :)

Автор:  Сергей Прохоренко [ Суббота, 03 Сентябрь, 2011 11:55 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Илья Ермаков писал(а):
Сергей Прохоренко писал(а):
Думаю, что для случая структурного редактора DSL и API одинаково удобны, так как языковые конструкции можно выбирать из палитры так же легко, как и процедуры.
А вспоминать вообще ничего не придется - достаточно будет выбрать нужное из списка/палитры или даже из справки.


А без структурного редактора? Например, продумывая решение проблемы по пути на работу за рулём? :)


За рулем лучше сосредоточиться на обстановке, иначе можно попасть в ДТП. :D Я вообще противник частных автомобилей в крупных городах. Автомобилисты отравляют жизнь пешеходам, разбазаривают общественные ресурсы и собственные деньги и мешают развитию общественного транспорта (в т.ч. новых видов транспорта, как PRT). А вот, например, в Сиднее я часто видел в электричках (они же и метро) программистов с ноутбуками. Там, правда, метро поприятнее, чем московское.

В будущем программирование без структурного редактора будет похоже на изучение в школе информатики без доступа к компьютеру.

Если серьезно, то структурный редактор должен взять на себя всю рутину, а в отрыве от него программист должен решать творческие задачи: изучать предметную область, дискутировать с заказчиком, строить информационную модель на клочке бумажки, искать пути решения проблем, продумывать общую архитектуру программы.

Автор:  Валерий Лаптев [ Суббота, 03 Сентябрь, 2011 12:32 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Сергей Прохоренко писал(а):
В будущем программирование без структурного редактора будет похоже на изучение в школе информатики без доступа к компьютеру.

Если серьезно, то структурный редактор должен взять на себя всю рутину, а в отрыве от него программист должен решать творческие задачи: изучать предметную область, дискутировать с заказчиком, строить информационную модель на клочке бумажки, искать пути решения проблем, продумывать общую архитектуру программы.


Я тут думаю так же. И, кстати, Страуструп еще в 1994 году в книге Дизайн и эволюция С++ писал о том, что профессиональная интегрированная среда программирования должна строиться не вокрух ТЕКСТОВОГО редактора, а вокруг СЕМАНТИКИ конструкций языка.
Вот мы и пытаемся построить систему вокруг семантики конструкций языка. И получается семантический (структурный) редактор.

Автор:  Владислав Жаринов [ Суббота, 03 Сентябрь, 2011 12:39 ]
Заголовок сообщения:  Семантика языка программирования

Валерий Лаптев писал(а):
...
профессиональная интегрированная среда программирования должна строиться не вокрух ТЕКСТОВОГО редактора, а вокруг СЕМАНТИКИ конструкций языка.
Вот мы и пытаемся построить систему вокруг семантики конструкций языка. И получается семантический (структурный) редактор.
А семантичные (т.е. осмысленные в "предметке" или на множестве встретившихся сочинителю "предметок") конструкции языка - это процедуры? Или просто м.б. куски кода? Или вообще принцип иной?

Автор:  Сергей Прохоренко [ Суббота, 03 Сентябрь, 2011 13:23 ]
Заголовок сообщения:  Re: Семантика языка программирования

Драконограф писал(а):
А семантичные (т.е. осмысленные в "предметке" или на множестве встретившихся сочинителю "предметок") конструкции языка - это процедуры? Или просто м.б. куски кода? Или вообще принцип иной?


Элементы выражений, библиотечные процедуры, операторы (команды, инструкции), в том числе, многоветочные, паттерны (составные операторы) и таблицы определения типов и переменных. А также более высокоуровневые конструкции (модули, проекты). Может быть, что-то я и упустил.

Автор:  Alexey_Donskoy [ Суббота, 03 Сентябрь, 2011 14:53 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Info21 писал(а):
Мой опыт из разряда "и т.д." говорит, что достаточно рассматривать такие выражения как входные данные (типа читать специальным коммандером из текста), и вовсе не обязательно впаивать их в язык.
Естественно, что технически так и делается.
И исходный текст - тоже входные данные для компилятора.

Я немного о другом.
О необходимости DSL для прикладника.

Неужто Вы хотите сказать, что вские САПРы, SCADA, и т.д. и т.п. делать не нужно?
А если уж таки нужно, то упомянутые инструменты несут все признаки и атрибуты полноценной среды программирования, включая ряд поддерживаемых ими языков.

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

Автор:  Info21 [ Суббота, 03 Сентябрь, 2011 15:03 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Alexey_Donskoy писал(а):
И исходный текст - тоже входные данные для компилятора.
Я Вас умоляю.

Из невозможности точно определить где кончается один конец у палки, и где начинается другой, никак не следует отсутствия двух концов.

Alexey_Donskoy писал(а):
Неужто Вы хотите сказать, что вские САПРы, SCADA, и т.д. и т.п. делать не нужно?
Неужто это можно вычитать из моих соообщений?

Alexey_Donskoy писал(а):
И в таком случае очень важно, чтобы язык этот проектировался тщательно
Ну да. Язык уже спроектирован -- Оберон. Об этом и речь.

А вспомогательные микроязыки будут "гулять" -- И.Е. уже объяснил, почему.

Автор:  Alexey_Donskoy [ Суббота, 03 Сентябрь, 2011 15:22 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Info21 писал(а):
Alexey_Donskoy писал(а):
Неужто Вы хотите сказать, что вские САПРы, SCADA, и т.д. и т.п. делать не нужно?
Неужто это можно вычитать из моих соообщений?
...
Ну да. Язык уже спроектирован -- Оберон. Об этом и речь.
По-видимому, именно так и звучат Ваши сообщения.
И поэтому я повторяю вопрос - что, чертёж надо на Обероне описывать?

Тут все высказываются вполне определённо, когда кто-то птыается применить тот же Дракон за пределами чисто алгоритмических задач. И справедливо. Но Вы ж тут то же самое делаете! ИЕ, насколько я понимаю, говорил о вполне конкретных вопросах, относящихся к программированию и языкам программирования.
А у Вас звучит необоснованное расширение области применимости...

Info21 писал(а):
А вспомогательные микроязыки будут "гулять" -- И.Е. уже объяснил, почему.
Какие-такие микроязыки?!

Есть много разных предметных областей, не так ли?
Далеко не все они имеют алгоритм как основной инструмент. Далеко не все они требуют программирования.

Зато все они имеют свой тезаурус. Обычно никак не связанный с программированием.
И поэтому очень странно видеть призывы против языка в пользу API.

Кстати, по существу API - это тоже очень даже язык. Только в силу своей специфики (заточенности на программирование и алгоритмику в частности) он не является (и не может являться) адекватным для каждой конкретной предметной области.
Имхо, конечно.

Автор:  Info21 [ Суббота, 03 Сентябрь, 2011 15:41 ]
Заголовок сообщения:  Re: язык программирования в контексте идеологии Открытого ПО

Alexey_Donskoy писал(а):
Info21 писал(а):
Alexey_Donskoy писал(а):
Неужто Вы хотите сказать, что вские САПРы, SCADA, и т.д. и т.п. делать не нужно?
Неужто это можно вычитать из моих соообщений?
...
Ну да. Язык уже спроектирован -- Оберон. Об этом и речь.
По-видимому, именно так и звучат Ваши сообщения.
И поэтому я повторяю вопрос - что, чертёж надо на Обероне описывать?
Алексей, мне неохота фехтовать остроумием.
В таких системах обычно развиваются скриптовые языки. Обычные языки программирования с выкрутасами и прибамбасами. Эти языки могли запросто быть комбинациями Оберон+АПИ.

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/