Re[17]: Ваше отношение к языку Scala
От: mkizub Литва http://symade.tigris.org
Дата: 09.06.07 12:34
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, mkizub, Вы писали:


M>>Там идеология программирования, такая-же как ООП, например.


К>ОК, тогда поясни, в чём суть идеологии.

К>Для меня ООП — "всё есть объекты с состояниями/операциями плюс (возможно) инкапсуляция/наследование/полиморфизм".
К>Что есть СОП? Или это как "неуловимый Джо"?
К>Слово "семантика" не является идеей

Расширяемость языка (и создание DSL) как в Lisp, удобство программирования превосходящие WYSIWYG редакторы и современные IDE.
Возможность программировать ближе к человеческим понятиям.
Запись
Logger.getLogger("FooBar").log(WARNING, "Message")
это трансляция на язык программирования пожеланя разработчика "каким-то образом сообщить такое-то предупреждение".
Вся фишка в том, что предлагается так и писать
trace WARNING "Message"
и отдельно написать плагин к компилятору (точнее — среде разработки), который будет это пожелание trace трансформировать
в понятия более низкого уровня, вроде "вызвать функцию такую-то с такими-то аргументами".

Программист не будет переводить задачу не с человеческого описания на конкретный язык с конкретными библиотеками.
Один будет формировать понятия предметной области и либо расширять существующий язык, либо писать отдельный язык.
А другой будет обеспечивать работу первого — заниматься низкоуровневыми деталями.
Это разделение позволит ещё больше структурировать программу. Как сейчас одни пишут библиотеки, а другие их
пользуют, так и предлагается делать, только библиотеки эти будут библиотеками значений, концепций.

Если тебе не нравится пример с trace как слишком простой — вот ещё два примера.
1. Написан отдельный DSL язык для рендерера/редактора SymADE. Позволяет удобно себя редактировать.
Написан быстро, и легко расширяется, так как текстового синтаксиса не имеет.
2. Написано расширения к Java (точнее — к Kiev, который сам расширение явы), для данного
конкретного проекта (SymADE) для работы с деревьями. Позволяет забыть все сложности
добавления и удаления узлов, автоматически отслеживает целостность дерева, вызывает нужные
коллбэки и прочее. Генерирует кучу кода (раза в два превышающую основной код) из простых
аннотаций к декларациям классов.
При этом я вижу то-же, что и раньше,
foo.name = new Ident("name");
а это автоматор преобразовывается в getter/setter вызовы автоматически сгенерированных методов,
которые всю работу по верификации данного кода (включая рантайм) и делают.

Во всём этом нет ничего нового, всё это уже было. И Lisp уже был, и IDE уже были.
Только их вместе не было.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.