Re[3]: Языково-ориентированное программирование: следующая п
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.04.06 00:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Покури на досуге Nemerle и уверен, что твое мнение резко изменится.


Это не аргумент. Вон тут кое-кто регулярно Оберон хвалит Да, с виду всё зашибись, а ты этот Немерле в реальном проекте над которым далеко не самые талантливые сыны отчества трудулись использовал?

VD>Что до DSL-ей, то ты их все равно будешь изобретать и использовать так как без них сложные задачи практически не решаются.

VD>Вопрос только в том будут ли это чистые и интуитивно понятные решения или эмуляция (например, на базе объектов) кривыми средствами устаревшего языка.

Для убедительности (это не подкол) привёл бы при пример задачи которая с DSL будет решаться интуитивно понятно, а без "за счёт эмуляции на базе объектов кривыми средствами устаревшего языка".
Считать, что уже есть Си++/C#/Java и SQL.

А заодно и трудозатраты на создание DSL, освоение DSL и т.д. хорошобы подсчитать. Я так понимаю, что раз ты защищаешь этот подход, значит использовал его на практике, ну так расскажи мне о реальных цифрах
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Языково-ориентированное программирование: следующая п
От: Зверёк Харьковский  
Дата: 16.04.06 00:15
Оценка: 1 (1) +2
Здравствуйте, adontz, Вы писали:

A>ИМХО закоренелого консерватора: Я скажу грубость, но статья откровенно фантазёрская.


Когда я переводил эту статью, она была мне интересна чисто теоретически. На данный момент, подход мною используется практически — но не в стиле Дмитриева, а в стиле in-language DSL, о которых говорил eao197
Автор: eao197
Дата: 14.04.06


С "высоты" уже практического опыта, могу сказать, что ни с одной из описанных тобой сложностей (пока?) не сталкивался вообще, благодаря малому размеру DSL-ей.

Пример (мой, из текущего проекта):
class Something
#...
  data :price, Float, :default => 1.0, :validate => lambda{|val| val >= 0.0}
#...
end

(это все, что нужно для описания поля — по этому описанию создается геттер, сеттер, валидатор, инициализатор, загрузка из БД, выгрузка в БД).

Еще пример: тулза под названием rake — это make на Ruby in-language DSL, отличное описание, почти не требующее знания Руби, сделал Фаулер:
task :main => [:errata, :articles]

#many lines of build code

file 'build/eaaErrata.html' => 'eaaErrata.xml' do
  # build logic
end
task :errata => 'build/eaaErrata.html'

(читается "задача main требует выполнения задач errata, articles; файл eaaErrata.html получается из файла eaaErrata.xml выполнением таких-то действий; задача errata требует получения файла eaaErrata.html"

То есть — 2-3 новых "ключевых слова" + "самоописующий" синтаксис (требует очень гибкого базового синтаксиса — динамический Ruby и статический Nemerle этому условию удовлетворяют, не говоря уж о классических Lisp/Smalltalk) — и voila.
Это just works в реальной жизни.

В таком, примерно, аспекте.
FAQ — це мiй ай-кью!
Re[4]: Языково-ориентированное программирование: следующая п
От: Зверёк Харьковский  
Дата: 16.04.06 00:20
Оценка: 13 (3) +3
Здравствуйте, adontz, Вы писали:

A>Для убедительности (это не подкол) привёл бы при пример задачи которая с DSL будет решаться интуитивно понятно, а без "за счёт эмуляции на базе объектов кривыми средствами устаревшего языка".

A>Считать, что уже есть Си++/C#/Java и SQL.

Вообще говоря, любое создание иерархии классов (или набора функций), отражающих предметную область — и есть создание DSL'я (о чем вполне однозначно говорит Дмитриев в статье). Просто мы это "так не называем".

То есть вот это — тоже DSL (надуманный пример на несуществующем языке):
window = new Window
button = new Button
button.size = (100, 25)
button.caption = 'WTF?'
window.layout(button)


Другое дело — что Дмитриев считает необходимым создать кучу визуальных тулзов, явно поддерживающих такой подход; а мы с Владом внезапно сошлись на том, что достаточно одного языка с ОЧЕНЬ выразительным синтаксисом.
FAQ — це мiй ай-кью!
Re[2]: И еще
От: Зверёк Харьковский  
Дата: 16.04.06 00:32
Оценка:
Здесь лежит ссылка на статью того же Фаулера и довольно интересное обсуждение:
http://gzip.rsdn.ru/Forum/Message.aspx?mid=1569069&only=1
Автор: Зверёк Харьковский
Дата: 29.12.05
FAQ — це мiй ай-кью!
Re[5]: Языково-ориентированное программирование: следующая п
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.04.06 00:33
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Другое дело — что Дмитриев считает необходимым создать кучу визуальных тулзов, явно поддерживающих такой подход;


ИМХО это не эффективный подход. Как ни смешно, но редактируя формочки .Net мне зачастую проще и быстрее покопаться в файле Designer.cs, чем щёлкать мышью.

ЗХ>а мы с Владом внезапно сошлись на том, что достаточно одного языка с ОЧЕНЬ выразительным синтаксисом.


А, ну я тут с вами тоже соглашусь, но я ещё не помню случая, чтобы плюсы доставались без минусов. Простой пример шаблоны vs дженерики. Шаблоны в конечном итоге элементарно удобнее когда дело касается вызова операторов или даже функций о которых известно лишь имя и число параметров. Выразительность потрясающая, возможности огромные, но отладка этого добра не самое приятное занятие. А дженерики? Убожество убожеством, Никаких существенных проблем, кроме проблемы приведения типов они не решили. Ну а с другой сторны и хлопот с ними на порядок меньше.
Nemerle это чудесно пока на нём пишете ты с Владом (может и мне присоединиться? ), ну а когда на нём будет писать Вася Пупкин? Вот ведь в чём вопрос. Можно напридумывать кучу гениальных вещей, но до промышленного использования доходят не гениальные идеи, а общепонятные.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Языково-ориентированное программирование: следующая п
От: Зверёк Харьковский  
Дата: 16.04.06 00:40
Оценка:
Здравствуйте, adontz, Вы писали:

ЗХ>>Другое дело — что Дмитриев считает необходимым создать кучу визуальных тулзов, явно поддерживающих такой подход;


A>ИМХО это не эффективный подход. Как ни смешно, но редактируя формочки .Net мне зачастую проще и быстрее покопаться в файле Designer.cs, чем щёлкать мышью.


Да вот фиг его знает. Люды кажуть, что, к примеру, IDE, поддерживающая сложный рефакторинг, на порядок увеличивает продуктивность. Я там ниже в треде сослался на статью Фаулера — так вот он, в том числе, пишет и о том, насколько нужны визуальные тулзы.

ЗХ>>а мы с Владом внезапно сошлись на том, что достаточно одного языка с ОЧЕНЬ выразительным синтаксисом.


A>Nemerle это чудесно пока на нём пишете ты с Владом (может и мне присоединиться? ),


Я не пишу на Немерле

A>...ну а когда на нём будет писать Вася Пупкин? Вот ведь в чём вопрос. Можно напридумывать кучу гениальных вещей, но до промышленного использования доходят не гениальные идеи, а общепонятные.


Мняяя... аргумент по сути, видимо, верный, но мне малоинтересный — я выбираю только то, чем нравится пользоваться лично мне. Промышленная эффективность — как-то
FAQ — це мiй ай-кью!
Re[7]: Языково-ориентированное программирование: следующая п
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.04.06 00:51
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Да вот фиг его знает. Люды кажуть, что, к примеру, IDE, поддерживающая сложный рефакторинг, на порядок увеличивает продуктивность. Я там ниже в треде сослался на статью Фаулера — так вот он, в том числе, пишет и о том, насколько нужны визуальные тулзы.


А какая есть визуальная поддержка рефакторинга? Переименовать класс/метод? И сё? Не густо.
Нет, я не против DSL. Например я уже давно набираю структуру БД вот в таком виде
[I] - 32bit integer
[L] - 64bit integer
[S] - string
[G] - guid
[D] - datetime
[T] - text

[PK] - primary key
[PK-N] - composite primary key
[UK] - unique key
[UK-N] - composite unique key
[FK(table.column)] - foreign key

[user_list]
    [G] user_id [PK]
    [S] user_login [UK-1]
    [S] user_domain [UK-1]
    [S] user_password
    [I] user_role
        administrator, user
    [T] user_cryptkey_private
    [T] user_cryptkey_public
    [D] user_timestamp

По очень простой причине — так легче править руками. DDL SQL очень громоздкий, когда надо просто понять какие у нас будут таблицы и столбцы. Делать это в Visio и даже Excel не удобно — я пытался. Удобнее в Visual Studio открыть текстовый файл и писать вот в таком вот формате. Но это моя персональная фенечка, которая удобна лично мне. Я в таком виде структуру БД никому не отдам и уж тем более не потребую, чтобы мне её приносили в таком виде.

ЗХ>Мняяя... аргумент по сути, видимо, верный, но мне малоинтересный — я выбираю только то, чем нравится пользоваться лично мне. Промышленная эффективность — как-то


А мне летать, а мне летать, а мне летать охота...
Ну раз такие аргументы не интересны, других у меня и не было
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Языково-ориентированное программирование: следующая п
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.04.06 00:58
Оценка:
Здравствуйте, adontz, Вы писали:

A>Это не аргумент. Вон тут кое-кто регулярно Оберон хвалит Да, с виду всё зашибись, а ты этот Немерле в реальном проекте над которым далеко не самые талантливые сыны отчества трудулись использовал?


А это и не аргумент. Это предложение и предположение. В общем, ты покури, а там расскажешь прав я оказался или нет.
Обещаю, что время будет потрачено не зря и проведено с интересом.

VD>>Что до DSL-ей, то ты их все равно будешь изобретать и использовать так как без них сложные задачи практически не решаются.

VD>>Вопрос только в том будут ли это чистые и интуитивно понятные решения или эмуляция (например, на базе объектов) кривыми средствами устаревшего языка.

A>Для убедительности (это не подкол) привёл бы при пример задачи которая с DSL будет решаться интуитивно понятно, а без "за счёт эмуляции на базе объектов кривыми средствами устаревшего языка".

A>Считать, что уже есть Си++/C#/Java и SQL.

Таких задач масса. Вот тебе ради хохмы пример отличной пенисометрии демонстриующей силу ДСЛ-ей:
Версия 0.04
Автор: Oyster
Дата: 14.04.06

сравни его с С++-реализацией:
[Nemerle] Семантический контроль над размерностями
Автор: Oyster
Дата: 05.04.06

это тоже в общем-то ДСЛ, но язык менее выразительный и все проблемы недоДСЛей вылезают очень сильно. Сравни декларацию типов, да и оцени использование физических литералов.

Из других примеров... Как тебе строки со слйсами в стиле Руби или Перла:
$"Summa = $(a + b)..."


A>А заодно и трудозатраты на создание DSL,


Трудозатраты зависят от языка. Если пытаться создавать ДСЛ-и на С++, то конечно проблем не оберешся. Затраты могут сильно перевешивать бенефиты и реальное приемущество будет получено только в очень универсальных случаях. Но если есть нечто вроде макросов Немерле, то создание ДСЛ-ей становится сравнимым с созданием библиотеки.

A>освоение DSL и т.д. хорошобы подсчитать.


Этот скепсис от непонимания чем отличается ДСЛ от ЯП общего назначения. ДСЛ — это очень простой язык решающих ограниченный набор задач предметной области (ДСЛ — язык специфичный для предметной области).

ДСЛ-и очень просты в освоении и менее подвержены ошибкам, так как не универсальны, что позволяет ограничивать их только корректными описаниями (все некооректное должно быть синтаксически не верным).

A> Я так понимаю, что раз ты защищаешь этот подход, значит использовал его на практике, ну так расскажи мне о реальных цифрах


Ты тут как-то набросился на мою статью о конфигурации. Так вот как раз она описывала ДСЛ-подход средствами ЯП не преднозначенного для разработки ДСЛ-ей.

А вообще, ДСЛ — это можно сказать отдельная парадигма. Прогрмму можно представить как набор ДСЛ-ей и описание на них самой программы. При таком подходе объем кода резко сокращается, а его надежность увеличивается.

Кстати, SQL — это ДСЛ дотсупа к реляционным данным. Так что ты и сам не раз использовал ДСЛ-и, но не думал о них как парадигме. Если же осознать эту парадигму, то твой арсенал может резко увеличиться и ты сожешь решать многие задачи проще.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Языково-ориентированное программирование: следующая п
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.04.06 01:15
Оценка: :))
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Другое дело — что Дмитриев считает необходимым создать кучу визуальных тулзов, явно поддерживающих такой подход; а мы с Владом внезапно сошлись на том, что достаточно одного языка с ОЧЕНЬ выразительным синтаксисом.


Да уж. Не часто мы сходимся на 100%, так что в этом однозначно что-то есть.

Кчтати, я бы сказал, что даже не с выразительным синтаксисом, а с выразительными средствами расширения синтаксиса и контроля результата. Вот, например, базовый синтаксис Немерле очень ограничен. Но маросы позволяют очень гибко расширять язык. В итое язык становится очень выразительным, хотя он по базовой локоничности пожалуй проиграет Оберону.

Пользуясь случаем передаю привет С.Губанову.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Языково-ориентированное программирование: следующая п
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.04.06 01:15
Оценка: 1 (1) +1 :)
Здравствуйте, adontz, Вы писали:

A>ИМХО это не эффективный подход. Как ни смешно, но редактируя формочки .Net мне зачастую проще и быстрее покопаться в файле Designer.cs, чем щёлкать мышью.


Забавно, что код генерируемый дизайнерами тоже является ДСЛ-ем и даже имеет свой интерпретатор и не полностью совместим с C# или VB. А сам дизайнер это визаулизатор этого ДСЛ-я и по совместительству свой ДСЛ.

В общем, ДСЛ — это больше парадигма (образ видения программы), чем кокретное вополщение.

A>А, ну я тут с вами тоже соглашусь, но я ещё не помню случая, чтобы плюсы доставались без минусов. Простой пример шаблоны vs дженерики. Шаблоны в конечном итоге элементарно удобнее когда дело касается вызова операторов или даже функций о которых известно лишь имя и число параметров.


Боюсь, что для этого куда удачнее использовать функциональные типы. Опять же погляди на Немерле и поймешь, что и тут С++ не лучший пример.

A> Выразительность потрясающая, возможности огромные, но отладка этого добра не самое приятное занятие. А дженерики? Убожество убожеством, Никаких существенных проблем, кроме проблемы приведения типов они не решили. Ну а с другой сторны и хлопот с ними на порядок меньше.


Дык, дженерики — это хорошее решение конкретной проблемы. В отличии от С++-шаблонов они просто неспособны решать другие задачи.
Так вот хороший ДСЛ — это тоже "хорошее решение конкретной проблемы".

A>Nemerle это чудесно пока на нём пишете ты с Владом (может и мне присоединиться? ), ну а когда на нём будет писать Вася Пупкин? Вот ведь в чём вопрос. Можно напридумывать кучу гениальных вещей, но до промышленного использования доходят не гениальные идеи, а общепонятные.


Васи Пупкину можно дать в руги уже результат труда квалифицированного программиста. Макросы Немерле — это сборки подключаемые через референсы (как простые сборки, да они ими и являются). Так что создать макрос внутри проекта невозможно. И тот кто отвечает за проект может легко контролировать какие макросы используются и кто их создает.

К тому же в отличии от С++ Немрле несравнимо проще. Да и ошибок дизайна в языке куда меньше. Для обобщенного кода используются те же дженерики. А для более хитрых вещей макросы. Сам же язык даже более безопасен и прост чем C#.

ЗЫ

В общем, я последний месяц его изучаю и не перестаю удивляться насколько грамотно он спроектирован. Если бы не проблемы вроде отсутсвия полноценной поддержки IDE, ошибки и недоработки в компиляторе и отсуствие хорошей документации (хотя над этим мы уже и сами работаем) я бы вообще забыл про другие языки. В общем, я просто в восторге от этого языка. Мое мнение — это реальный прорыв в мэйнстрим-языках! Это то что я так долго искал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Языково-ориентированное программирование: следующая п
От: CrazyPit  
Дата: 16.04.06 05:35
Оценка: 76 (4) :)
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Сергей Дмитриев, Зверёк Харьковский (перевод), Вы писали:


A>
  • Надёжность
    A>Не секрет, что даже самый простой язык сложно учить. Базовая часть SQL один из самых простых языков, но даже с её помошью можно наворотить весьма и весьма трудноотлаживаемые конструкции. Нельзя создать абсолютно дуракозащищённую систему. Даже самые передовые промышленные языки типа C# имеют свои грабли. Где же гарантия, что DSL'ы будут и достаточно мощными, и лишёнными граблей? А нет такой гарантии. Почему многие используют MFC? Библиотека-то так себе. потому что есть огромный опыт использования и если случилось что-то плохое, то скорее всего ты не первый и известно как с этим бороться. А это, заметьте, в рамках Си++, всего одна библиотека. А если новый язык?
    A> [поскипано]


    Надёжность
    Не секрет, что даже самую простую библиотеку сложно учить. Базовая часть StandartIOLib одная из самых простых библиотек, но даже с её помошью можно наворотить весьма и весьма трудноотлаживаемые конструкции. Нельзя создать абсолютно дуракозащищённую систему. Даже самые передовые промышленные языки типа Algol68 имеют свои грабли. Где же гарантия, что библиотеки будут и достаточно мощными, и лишёнными граблей? А нет такой гарантии. Почему многие используют PDP1? Машинка так себе. потому что есть огромный опыт использования и если случилось что-то плохое, то скорее всего ты не первый и известно как с этим бороться. А это, заметьте, в рамках , всего одна машина. А если новая библиотека?

    ......................

    Библиотеки

    В результате, если раньше человек учил один ассемблер и грабли одной машины, то теперь он будет учить язык высокого уровня да ещё 5-6 библиотек и грабли 5-6 библиотек. Насколько реально заставить среднего специалиста учить 5-6 библиотек? А вообще много ли программистов действительно (со всеми граблями) знает больше 3-4 библиотек?

    ..................

    На каждую используемую библиотеку нужно минимум 2-3 человека которые будут её знать, а иначе проект будет очень зависим от конкретных личностей. А если таких библиотек 10? Причём если набор комнанд процессора 8086 всем известен, то нанять человека знающего библиотеку внутреней разработки просто нельзя. Значит увеличивается время ввода в курс дела нового сотрудника. Кроме того библиотеки внутренней разработки это такая штука у которой есть автор и все остальные. И когда уходит автор, новый автор начинает её переделывать под себя. Внутренние разработки всегда имеют личностный и проектный налёт и очень редко действительно универсальны.



    --------------------------------

    A>Должны быть очень серьёзные причины чтобы заставлять людей учить новый язык (я думаю изучение языка программирования по сложности сопоставимо с человеческим языком). У нас, помимо языка общего назначения — русского, есть не так уж много DSL'ей. Математические знаки (физика пользуется математическими знаками) и химические. Других я и не припомню. Если нам в жизни хватило всего 3х языков, зачем их плодить в программировании и называть это прогрессом, когда вместо разработки продукта у нас будет вавилонское столпотворение?


    А если серьёзно, вы так говорите, как будто DSL будут такие же сложные как языки программирования, они в большинстве случаев намного проще и соотвественно всё что вы сказали "слегка" преувеличено. Я уже приводил пример, миниязыки в Unix сообществе используяться постоянно — чистый LOP, никто не жалуеться — учит. Или ActiveRecord и Hibernate чем не DSL?
  • Re[2]: Языково-ориентированное программирование: следующая п
    От: Дарней Россия  
    Дата: 16.04.06 07:48
    Оценка: +1
    Здравствуйте, adontz, Вы писали:

    A>

    ИМХО закоренелого консерватора

    Я скажу грубость, но статья откровенно фантазёрская.


    Ты не только консерватор, ты еще и догматик
    Сам себе создал дракона, сам же его и убил.
    DSL — это не язык в том же понимании, что и C++, и даже не SQL. Это намного меьше, и в то же время — больше. Типичный DSL не обязательно должен отвечать критерию о Тьюринг-полноте (и даже лучше, если он не будет ему отвечать). Он должен всего лишь просто и эффективно решать одну очень узкую и ограниченую задачу. Для понимания сути DSL лучше подумать о регулярных выражениях или XPath.
    SQL, конечно, когда-то задумывался как DSL, но со временем к нему приделали императивные расширения синтаксиса и кучу других нестандартных расширений, которые извратили изначальную идею. [off] Да и его стандартный синтаксис далек от идеала, если хорошо подумать. Авторы слишком много задумывались об идеологии, и слишком мало о практике.[/off]
    Ситуация, когда разные разработчики решают одну и ту же задачу разными DSL, полностью аналогична ситуации, когда один разработчик использует для построения GUI Qt, а другой wxWindows. И решается она такими же средствами, то есть при помощи стальной линейки или розг — в зависимости от вкусов руководителя проекта
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[5]: Языково-ориентированное программирование: следующая п
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 16.04.06 10:36
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Таких задач масса. Вот тебе ради хохмы пример отличной пенисометрии демонстриующей силу ДСЛ-ей:

    VD>Версия 0.04
    Автор: Oyster
    Дата: 14.04.06

    VD>сравни его с С++-реализацией:
    VD>[Nemerle] Семантический контроль над размерностями
    Автор: Oyster
    Дата: 05.04.06

    VD>это тоже в общем-то ДСЛ, но язык менее выразительный и все проблемы недоДСЛей вылезают очень сильно. Сравни декларацию типов, да и оцени использование физических литералов.

    Сравнил, оценил. Слабенько. То есть внешне прикольно, а вот на кто на деле использует разные системы мер в одной программе? Зато как я понял так не сделать
    length_t x = 3;
    length_t y = 5;
    length_t z = 9;
    volume_t v = x * y; // упс, забыли z, нихрена не скомпилируется.


    Ладно забили, идею, что DSL это абстракция, а не сущность я уже понял

    VD>Трудозатраты зависят от языка. Если пытаться создавать ДСЛ-и на С++, то конечно проблем не оберешся.


    Например boost:spirit?

    VD>Этот скепсис от непонимания чем отличается ДСЛ от ЯП общего назначения. ДСЛ — это очень простой язык решающих ограниченный набор задач предметной области (ДСЛ — язык специфичный для предметной области).


    DSL это синтаксически очень простой язык. Влад, даже в пределах оператора SELECT можно такого наворотить.... А весь синтаксис с примерами помещается на 5 страниц.

    VD>Ты тут как-то набросился на мою статью о конфигурации.


    Как видишь, я набрасываюсь на все статьи, так что запомни — это не личное, я просто злой и вредный вообще.

    VD>Так вот как раз она описывала ДСЛ-подход средствами ЯП не преднозначенного для разработки ДСЛ-ей.


    Аээээ ну так вообще любой конфигурационный файл давай обзовём DSL'ем. А-а-а-а DSL'и нас окружили, они нападают
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[3]: Языково-ориентированное программирование: следующая п
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 16.04.06 10:37
    Оценка:
    Здравствуйте, CrazyPit, Вы писали:

    За стёб 5+

    CP>А если серьёзно, вы так говорите, как будто DSL будут такие же сложные как языки программирования, они в большинстве случаев намного проще и соотвественно всё что вы сказали "слегка" преувеличено.


    Время покажет.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[6]: Языково-ориентированное программирование: следующая п
    От: Дарней Россия  
    Дата: 16.04.06 10:46
    Оценка: +1
    Здравствуйте, adontz, Вы писали:

    A>Аээээ ну так вообще любой конфигурационный файл давай обзовём DSL'ем.


    собственно, так оно и есть

    A>А-а-а-а DSL'и нас окружили, они нападают


    а то ж
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[3]: Языково-ориентированное программирование: следующая п
    От: GlebZ Россия  
    Дата: 16.04.06 13:48
    Оценка: 25 (2) +1
    Здравствуйте, CrazyPit, Вы писали:

    Проблема в том, что если ты ошибся в самой реализации языка, и на нее уже написал код, то при изменении оного получишь на порядок больше проблем чем при изменении библиотеки(которая обладает ясным интерфейсом). Поэтому стоимость ошибки в языке значительно больше чем стоимость ошибки в библиотеке.
    Пока нету нормального автоматизированного рефакторинга, сравнивать с библиотеками не стоит.

    С уважением, Gleb.
    Re[4]: Языково-ориентированное программирование: следующая п
    От: Oyster Украина https://github.com/devoyster
    Дата: 16.04.06 14:38
    Оценка: +1
    Здравствуйте, adontz, Вы писали:

    A>Это не аргумент. Вон тут кое-кто регулярно Оберон хвалит Да, с виду всё зашибись, а ты этот Немерле в реальном проекте над которым далеко не самые талантливые сыны отчества трудулись использовал?


    Не в первый раз я слышу сравнение обсуждения Nemerle с "обсуждением" Оберона. И всё-таки хочу заметить, что сторонники Nemerle на форуме всё же стараются аргументированно отстаивать свою точку зрения (например — приводить
    Автор: Oyster
    Дата: 22.02.06
    примеры
    Автор: Oyster
    Дата: 26.02.06
    исходников
    Автор: Oyster
    Дата: 05.04.06
    ) — достаточно почитать форум, чтобы понять это.

    А вот что мне как раз не нравится, так это странные вроде_бы_как_оппоненты, которые заявляют, что Nemerle есть очередная туфта, даже не удосужившись его попробовать (что совсем несложно) хотя бы на небольшом проектике. Нет, ничего личного, — я вообще говорю...
    Re[6]: Языково-ориентированное программирование: следующая п
    От: Oyster Украина https://github.com/devoyster
    Дата: 16.04.06 14:47
    Оценка: +1
    Здравствуйте, adontz, Вы писали:

    A>Сравнил, оценил. Слабенько. То есть внешне прикольно, а вот на кто на деле использует разные системы мер в одной программе?


    Сравнивать предлагали реализацию на C++ и Nemerle. Понятно, что эта библиотека никому нафик не нужна (и тем не менее, тут на форуме утверждали, что на Nemerle она не решается — этот факт также подтолкнул меня к написанию решения на Nemerle ).

    A>Зато как я понял так не сделать

    A>
    A>length_t x = 3;
    A>length_t y = 5;
    A>length_t z = 9;
    A>volume_t v = x * y; // упс, забыли z, нихрена не скомпилируется.
    A>

    Плохо понял — в таком случае именно что не скомпилируется (у величин разные размерности, и проверка этого будет выполняться на этапе компиляции; собственно, задача библиотеки и была вынести подобные проверки на этап компиляции), чего и требуется Ты бы попробовал хоть для начала...
    Re[6]: Языково-ориентированное программирование: следующая п
    От: WolfHound  
    Дата: 16.04.06 15:14
    Оценка: +2
    Здравствуйте, adontz, Вы писали:

    A>Сравнил, оценил. Слабенько. То есть внешне прикольно, а вот на кто на деле использует разные системы мер в одной программе? Зато как я понял так не сделать

    A>
    A>length_t x = 3;
    A>length_t y = 5;
    A>length_t z = 9;
    A>volume_t v = x * y; // упс, забыли z, нихрена не скомпилируется.
    A>

    Плохо ты понял... Смотри лучше.

    VD>>Трудозатраты зависят от языка. Если пытаться создавать ДСЛ-и на С++, то конечно проблем не оберешся.

    A>Например boost:spirit?
    Жутик еще тот... а если вспомнить boost::lambda...
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[6]: Языково-ориентированное программирование: следующая п
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.04.06 15:39
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Сравнил, оценил. Слабенько.


    Слабенько? И что слабенько? Сравни чистоту описания и возможность использования просто таки литералов физ.величин с тем что получается на С++.
    По-моему, разница настолько очевидна, что и говорить не о чем.

    А ведь С++-решение использует почти 100% языка, то есть идет на грани возоможностей языка. Меж тем результат получается не очень замечательный. Описание физ.величин запутанное и непонятное. О физ. литералах вообще речи не идет. А сообщения об ошибках?

    Меж тем у Немерла есть огромный запас прочности. Так что ты тут явно не прав.

    A> То есть внешне прикольно, а вот на кто на деле использует разные системы мер в одной программе? Зато как я понял так не сделать

    A>
    A>length_t x = 3;
    A>length_t y = 5;
    A>length_t z = 9;
    A>volume_t v = x * y; // упс, забыли z, нихрена не скомпилируется.
    A>


    A>Ладно забили, идею, что DSL это абстракция, а не сущность я уже понял


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

    Так то ты просто не понял сути.

    VD>>Трудозатраты зависят от языка. Если пытаться создавать ДСЛ-и на С++, то конечно проблем не оберешся.


    A>Например boost:spirit?


    Да, например. Только Спирит тоже идет на пределе возможностей С++. По сему имеет кучу ограничений и проблем (как например плохая диагностика ошибок и невозможность отладки метакода).

    Меж тем Немерле позволяет решить подобную задачу вообще без ограничений.

    A>DSL это синтаксически очень простой язык. Влад, даже в пределах оператора SELECT можно такого наворотить.... А весь синтаксис с примерами помещается на 5 страниц.


    SQL — это пример границы между ДСЛ и полноценным языком. Потому он так сложен.

    A>Как видишь, я набрасываюсь на все статьи, так что запомни — это не личное, я просто злой и вредный вообще.


    Ну, ну... Ты себя оговаривашь. Что-то критики С++-статей от тебя не много.

    VD>>Так вот как раз она описывала ДСЛ-подход средствами ЯП не преднозначенного для разработки ДСЛ-ей.


    A>Аээээ ну так вообще любой конфигурационный файл давай обзовём DSL'ем. А-а-а-а DSL'и нас окружили, они нападают


    Дык так оно и есть. Просто те кто не систематизировал свои взгляды этого пока не замечают.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.