DSL для пользовательских задач
От: dmz Россия  
Дата: 28.12.08 09:19
Оценка: 2 (1)
Не уверен, что это подходит в декларативное программирование... Больше нестройных размышлений, чем по сути.

Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.

Примеры из жизни:

TaskJuggler — планирование проектов.
  task test "Software testing" {
    task alpha "Alpha Test" {
      effort 1w
      depends !!software
      allocate test, dev2
      note "Hopefully most bugs will be found and fixed here."
    }

    task beta "Beta Test" {
      effort 4w
      depends !alpha
      allocate test, dev1
    }
  }


Лично я использую, но неудержимо тянет написать свое, с блекджеком и прочим. Раздражает слишком развесистый синтаксиси отсутствие некоторых функций.
Вот еще пример — Faces, тоже, для того же, но базе питона — чем-то даже лучше TJ, но прибит гвозями к GUI, а GUI стремный и глючный.



    def PlanAndControl():

    title = "Planing and Controlling"

    #for meeting etc

    resource = dev1 & dev2 & dev3 & tester & doc

    start = up.Deliveries.Begin.start

    end = up.Deliveries.Done.end

    load = WeeklyMax("4H")


    

    def Deliveries():

    title = "Milestones"

    account = "rev"



    def Begin():

        title = "Projectstart"

        start = Multi("2002-01-16", delayed="2002-01-24")

        credit = 33000.0 



        

    def Prev():

        title = "Technology Preview"

        milestone = True

        start = up.up.Software.Backend.end

        credit = 13000.0 

        gantt_same_row = up.Begin


Вот еще пример — уже собственный DSL — планирование рейсов:
РЕЙС "ТРИЛАЙН - ТРИЛАЙН" 

НАЧАЛО               "2008-03-01 06:10:00"
ПРОДОЛЖИТЕЛЬНОСТЬ    4 ЧАСА 

ПУНКТ  1 "ТРИЛАЙН"
ПРИБЫТИЕ  10 МИНУТ   ОТ РЕЙС/НАЧАЛО
УБЫТИЕ    5  МИНУТ   ОТ ПРИБЫТИЕ

ПУНКТ 2 "ТАГАНСКАЯ ПЛОЩАДЬ"
ПРИБЫТИЕ  5 ЧАСОВ   ОТ РЕЙС/НАЧАЛО
УБЫТИЕ    5 МИНУТ  ОТ ПРИБЫТИЕ

ПУНКТ 3 "ДИНАМО"
ПРИБЫТИЕ  3 ЧАСА  20 МИНУТ ОТ ПУНКТ#2/УБЫТИЕ
УБЫТИЕ    5 МИНУТ ОТ ПРИБЫТИЕ

ПУНКТ 66 "ЧИСТЫЕ ПРУДЫ"
ПРИБЫТИЕ  3 ЧАСА  20 МИНУТ ОТ РЕЙС/НАЧАЛО
УБЫТИЕ    5 МИНУТ ОТ ПРИБЫТИЕ


По результатам обсуждения с людьми, близкими по менталитету к заказчикам продукта, пришлось отказаться от предоставления пользователю возможности редактировать DSL напрямую, так что DSL сериализуется в XML/DOM, из него на клиенте генерируется динамическая форма, которая при самбите обходится и по которой генерируется все тот же DSL, но уже измененный. Но сам DSL фактически пропал раз пользователю недоступен — можно было и тупо XML туда-сюда гонять. Лично я по поводу этого решения испытываю сожаление — по моему, довольно стройная получалась в начале концепция.

Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?
Просто хочется иметь какое-то количество решений для домашнего и не очень применения — планирование проектов, построение roadmap-ов, управление сметами/бюджетами и т.п. Без GUI — задачи редуцируются до достаточно примитивных утилит — которые на входе получают текст на DSL с описанием, на выходе — отчет в каком-то виде. Интересно, может ли у таких продуктов быть вообще В ПРИНЦИПЕ немаргинальная аудитория? Видите ли вы перспективы в использовании подобного подхода? Ну и вообще...
Re: DSL для пользовательских задач
От: kmmbvnr Россия http://kmmbvnr.livejournal.com
Дата: 28.12.08 16:44
Оценка: 37 (1)
Здравствуйте, dmz, Вы писали:

dmz>Не уверен, что это подходит в декларативное программирование... Больше нестройных размышлений, чем по сути.


dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.


Где-то у Фаулера встречал фразу "Главное, в dsl не то что они business people writable, а то что business people readable".

dmz>из него на клиенте генерируется динамическая форма

Еще ведь вопрос в объеме кода реализуюшего это все. Сколько необходимо дописать чтобы добавить еще одно поле? Добавить условное выражение? Конкретно поменять структуру, автоматически сконвертив уже написанные клиентами скрипты?

dmz> ПРИБЫТИЕ 3 ЧАСА 20 МИНУТ ОТ ПУНКТ#2/УБЫТИЕ

А что бывает ОТ ПУНКТ#2/ПРИБЫТИЕ ? Почему не "ОТ НАЧАЛО", и не "ОТ ПУНКТ 2"
-- Главное про деструктор копирования не забыть --
Re[2]: DSL для пользовательских задач
От: dmz Россия  
Дата: 28.12.08 18:52
Оценка:
K>Еще ведь вопрос в объеме кода реализуюшего это все. Сколько необходимо дописать чтобы добавить еще одно поле? Добавить условное выражение? Конкретно поменять структуру, автоматически сконвертив уже написанные клиентами скрипты?

По сравневнию с чем? От очень неочевидной интерактивной логики удалось избавиться, как раз, введя DSL.

dmz>> ПРИБЫТИЕ 3 ЧАСА 20 МИНУТ ОТ ПУНКТ#2/УБЫТИЕ

K>А что бывает ОТ ПУНКТ#2/ПРИБЫТИЕ ? Почему не "ОТ НАЧАЛО", и не "ОТ ПУНКТ 2"

Ась?
Re: DSL для пользовательских задач
От: mkizub Литва http://symade.tigris.org
Дата: 28.12.08 19:56
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>По результатам обсуждения с людьми, близкими по менталитету к заказчикам продукта, пришлось отказаться от предоставления пользователю возможности редактировать DSL напрямую, так что DSL сериализуется в XML/DOM, из него на клиенте генерируется динамическая форма, которая при самбите обходится и по которой генерируется все тот же DSL, но уже измененный. Но сам DSL фактически пропал раз пользователю недоступен — можно было и тупо XML туда-сюда гонять. Лично я по поводу этого решения испытываю сожаление — по моему, довольно стройная получалась в начале концепция.


Каждому — своё.
Тебе — возможность копаться в "потрохах". Пользователям — простая и понятная форма.

PS А чем отличается SOP от LOP?
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re: DSL для пользовательских задач
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.08 01:02
Оценка: +1
Здравствуйте, dmz, Вы писали:

dmz>По результатам обсуждения с людьми, близкими по менталитету к заказчикам продукта, пришлось отказаться от предоставления пользователю возможности редактировать DSL напрямую, так что DSL сериализуется в XML/DOM, из него на клиенте генерируется динамическая форма, которая при самбите обходится и по которой генерируется все тот же DSL, но уже измененный. Но сам DSL фактически пропал раз пользователю недоступен — можно было и тупо XML туда-сюда гонять. Лично я по поводу этого решения испытываю сожаление — по моему, довольно стройная получалась в начале концепция.


XML в твоем случае — это тоже DSL. А твоя форма — это RAD-средство его редактирования. Так что на твоем месте я бы пересмотрел взгляды на ДСЛ.

dmz>Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?

dmz>Просто хочется иметь какое-то количество решений для домашнего и не очень применения — планирование проектов, построение roadmap-ов, управление сметами/бюджетами и т.п. Без GUI — задачи редуцируются до достаточно примитивных утилит — которые на входе получают текст на DSL с описанием, на выходе — отчет в каком-то виде. Интересно, может ли у таких продуктов быть вообще В ПРИНЦИПЕ немаргинальная аудитория? Видите ли вы перспективы в использовании подобного подхода? Ну и вообще...

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

Реально во многих областях (не компьютерных) есть свои разговорные DSL-и. Скажем вы когда-нибудь слушали медиков? Это же птичий язык — "В анамнезе ..." и дальше русская речь на половину перемешивается латынью и своими терминами. Это позволяет им сократить повествование и сделать его максимально непротиворечивым.
Те же задачи стоят и перед программистом. Максимально сократить реализацию задачи. Лучший вариант — это решить задачу написав только ее спецификацию. При этом спецификация обязана быть максимально непротиворечивой.
Если вы сможете сделать это, то задача будет решена наиболее оптимальным образом. А давать ДСЛ конечному пользователю совсем не обязательно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: DSL для пользовательских задач
От: kmmbvnr Россия http://kmmbvnr.livejournal.com
Дата: 29.12.08 03:36
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>По сравневнию с чем? От очень неочевидной интерактивной логики удалось избавиться, как раз, введя DSL.


DSL vs GUI. Если задача практически мнгновенно реализуется в GUI, не надо городить DSL. И обратно.

k>Добавить условное выражение

dmz>От очень неочевидной интерактивной логики

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

А кажется так удобно дописать УБЫТИЕ 5 МИНУТ ОТ ПРИБЫТИЕ ЕСЛИ НЕТ СМЕНА ПЕРСОНАЛА

dmz>>> ПРИБЫТИЕ 3 ЧАСА 20 МИНУТ ОТ ПУНКТ#2/УБЫТИЕ

K>>А что бывает ОТ ПУНКТ#2/ПРИБЫТИЕ ? Почему не "ОТ НАЧАЛО", и не "ОТ ПУНКТ 2"

dmz>Ась?


Почему DSL то такой сложный, если можно проще? Может в этом причина того что он не прижился?
-- Главное про деструктор копирования не забыть --
Re[4]: DSL для пользовательских задач
От: dmz Россия  
Дата: 29.12.08 04:03
Оценка:
dmz>>По сравневнию с чем? От очень неочевидной интерактивной логики удалось избавиться, как раз, введя DSL.

K>DSL vs GUI. Если задача практически мнгновенно реализуется в GUI, не надо городить DSL. И обратно.


Эта задача удобно GUI не решалась. Введя DSL удалось найти правильную метафору, вокруг которой удалось уже построить GUI (который отличался от изначального).

K>И описания DSL не разрослись до гигантских размеров? Уже для пяти-шести комбинаций различных управляющих параметров, обозревать чисто декларативное описание ситуации становиться очень сложно.


Предполагается, что задача, которую решает DSL — ограничена, иначе нужен уже не DSL, а универсальный язык.

K>А кажется так удобно дописать УБЫТИЕ 5 МИНУТ ОТ ПРИБЫТИЕ ЕСЛИ НЕТ СМЕНА ПЕРСОНАЛА


dmz>>>> ПРИБЫТИЕ 3 ЧАСА 20 МИНУТ ОТ ПУНКТ#2/УБЫТИЕ

K>>>А что бывает ОТ ПУНКТ#2/ПРИБЫТИЕ ? Почему не "ОТ НАЧАЛО", и не "ОТ ПУНКТ 2"

ОТ НАЧАЛО(А) — можно, "ОТ ПУНКТ 2" — тоже можно было бы (допустим, будем понимать под этим "от убытия из пункта 2" — как действие по умолчанию).

dmz>>Ась?


K>Почему DSL то такой сложный, если можно проще? Может в этом причина того что он не прижился?


А, понял. Особенно проще, в общем-то, некуда — предполагалось, что синтаксис должен быть само-объясняемый — т.е. никаких сокращений или операторов. Он не то, что бы не прижился — мы даже не пробовали в итоге. Слишком непривычно показалось.
Re: DSL для пользовательских задач
От: z00n  
Дата: 29.12.08 06:45
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?

dmz>Просто хочется иметь какое-то количество решений для домашнего и не очень применения — планирование проектов, построение roadmap-ов, управление сметами/бюджетами и т.п. Без GUI — задачи редуцируются до достаточно примитивных утилит — которые на входе получают текст на DSL с описанием, на выходе — отчет в каком-то виде.

Я боюсь для конечных пользователей и без GUI — не выйдет.
Вот забавный промер DSL'а c гуем:
http://scratch.mit.edu/
Re: DSL для пользовательских задач
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 29.12.08 07:26
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.


Пример из жизни: DSL для построения логики работы систем безопасности (видеонаблюдения и контроля доступа). Вот, например, включение прожектора по ночам и выключение его днём:
if
    event("Запуск системы")
then
    h = tonumber(os.date("%H", os.time()))
    if (h >= 8) and (h < 20)
    then
        action("Разомкнуть реле", "Видеосервер", "ПКП 1", "Реле 1")
    else
        action("Замкнуть реле", "Видеосервер", "ПКП 1", "Реле 1")
    end
end

if
    event("время 08:00:00", "")
then
    action("Разомкнуть реле", "Видеосервер", "ПКП 1", "Реле 1")
end

if
    event("время 20:00:00", "")
then
    action("Замкнуть реле", "Видеосервер", "ПКП 1", "Реле 1")
end


А вот наведение поворотной камеры, на найденное лицо:
if
    event("Запуск системы")
then
    face_timeout = true
end

x = ""
y = ""

if
    event("обнаружено лицо", "Видеоканал 1", "^x^", "^y^")
    and
    face_timeout
then
    --Наведение устройства телеметрии на обнаруженное лицо
    action("навести ptz", "IP канал 2", x, y)

    --В течение некоторого времени (3 секунды) камера не наводится на другие обнаруженные лица
    action("Создание точки выполнения", "face_timeout")
    face_timeout = false
end

if
    event("Интервал от точки выполнения", "face_timeout", 3)
then
    face_timeout = true
end


Язык доступен конечным пользователем. Но есть и GUI вариант создания совсем простеньких задач.
Re: DSL для пользовательских задач
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 29.12.08 07:44
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.


Сразу вспоминаются примеры уже не собственной разработки: 3D Max (и другие редакторы), сценарии в некоторых играх, ...
Ммм, bash и PowerShell тоже подходят?
Re[2]: DSL для пользовательских задач
От: kmmbvnr Россия http://kmmbvnr.livejournal.com
Дата: 29.12.08 08:10
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Сразу вспоминаются примеры уже не собственной разработки: 3D Max (и другие редакторы), сценарии в некоторых играх, ...

N>Ммм, bash и PowerShell тоже подходят?

И их всех объединяет наличие в языке оператора if и имеративный подход. А в примерах топик стартера, dsl чисто декларативные.

Возникает желание переделать вопрос в "А живут ли чисто декларативные DSL?" Ну или в "Какой минимальной выразимостью должен обладать DSL чтобы быть полезным?"
-- Главное про деструктор копирования не забыть --
Re[2]: DSL для пользовательских задач
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.08 09:52
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Пример из жизни: DSL для построения логики работы систем безопасности (видеонаблюдения и контроля доступа). Вот, например, включение прожектора по ночам и выключение его днём:...


Назвать такое DSL-ем я бы не решился. Это скрипт общего назначения со специализированной библиотекой.
И использовать его смогут только люди с алгоритмической подготовкой. А какой-нить охранник скорее все испортит.

С другой стороны для программистов такое решение может серьезно упростить конфигурирование системы и создания пресетов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: DSL для пользовательских задач
От: TheBeard Россия  
Дата: 29.12.08 10:10
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?


"1С Бухгалтерия" вроде целиком написана на DSL. 12 лет назад я видел продвинутых бухгалтеров, которые умели пользоваться этим языком. Правда, потом эволюция породила новый вид -- "программист 1С", гибрид программиста и бухгалтера.

dmz>Просто хочется иметь какое-то количество решений для домашнего и не очень применения — планирование проектов, построение roadmap-ов, управление сметами/бюджетами и т.п. Без GUI — задачи редуцируются до достаточно примитивных утилит — которые на входе получают текст на DSL с описанием, на выходе — отчет в каком-то виде. Интересно, может ли у таких продуктов быть вообще В ПРИНЦИПЕ немаргинальная аудитория? Видите ли вы перспективы в использовании подобного подхода? Ну и вообще...


Немаргинальной аудитории, скорее всего, не будет никогда. Поскольку DSL просто неудобен (с точки зрения непрограммиста). Что проще: нажать мышью кнопку "Делай хорошо", или написать в редакторе "делый_харашо()", запустить на выполнение, а потом искать опечатки в имени функции?

Применительно к упмянутым задачам планирования -- при изобретении хорошего DSL и среды можно ожидать того же сценария, что и в 1С: маргинальные индивидуальные пользователи и программисты на DSL для корпоративных пользователей.
Re[3]: DSL для пользовательских задач
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 29.12.08 12:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Назвать такое DSL-ем я бы не решился. Это скрипт общего назначения со специализированной библиотекой.


Наверное. ИМХО, грань между ними довольно расплывчатая.

VD>И использовать его смогут только люди с алгоритмической подготовкой. А какой-нить охранник скорее все испортит.


Охраннику обычно с помощью средств авторизации запрещается доступ к написанию скриптов. Его роль — просмотр видео и архива. Пишет скрипты администратор или представители компании-инсталятора. В простейших случаях алгоритмическая подготовка не требуется — имеется обширный набор типовых скриптов, изменять которые может практически каждый (даже охранник). Если же делать что-то сложное, то — да, надо быть программистом.

VD>С другой стороны для программистов такое решение может серьезно упростить конфигурирование системы и создания пресетов.


Вещь оказалась просто сверх удобная. В принципе, всё делалось по примеру 1С, успех которой очевиден. Для продвинутых пользователей есть ещё средства создания примитивных пользовательских интерфейсов.
Re[4]: DSL для пользовательских задач
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.08 04:25
Оценка:
Здравствуйте, Nuzhny, Вы писали:

VD>>С другой стороны для программистов такое решение может серьезно упростить конфигурирование системы и создания пресетов.


N>Вещь оказалась просто сверх удобная. В принципе, всё делалось по примеру 1С, успех которой очевиден. Для продвинутых пользователей есть ещё средства создания примитивных пользовательских интерфейсов.


Тут никто не спорит, но показанное — это скрипт с библиотекой. Это не дсл. Это мимикрия под дсл. Разница в том, что ваш язык выходит за пределы доменной области. Там есть какие-то функции, параметры и т.п. Чтобы это все понять нужно быть хоть плохоньким, но программистом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: DSL для пользовательских задач
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.08 04:31
Оценка: +1
Здравствуйте, TheBeard, Вы писали:

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


dmz>>Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?


TB>"1С Бухгалтерия" вроде целиком написана на DSL.


Она написана на С++. Но в ней используется скриптовый язык. В прочем он тоже является языком общего назначения

TB>12 лет назад я видел продвинутых бухгалтеров, которые умели пользоваться этим языком. Правда, потом эволюция породила новый вид -- "программист 1С", гибрид программиста и бухгалтера.


Сто раз видил адинэсников. Ни один из них не был бухгалтером, но все были программистами. Многие весьма посредственными.

TB>Немаргинальной аудитории, скорее всего, не будет никогда. Поскольку DSL просто неудобен (с точки зрения непрограммиста). Что проще: нажать мышью кнопку "Делай хорошо", или написать в редакторе "делый_харашо()", запустить на выполнение, а потом искать опечатки в имени функции?


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

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


Попробуй покурить определение DSL-я. А то ты явно путаешся в терминологии.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: DSL для пользовательских задач
От: kmmbvnr Россия http://kmmbvnr.livejournal.com
Дата: 30.12.08 04:55
Оценка:
Здравствуйте, TheBeard, Вы писали:

TB>Немаргинальной аудитории, скорее всего, не будет никогда.


У нас в банке, почти все начальники (ну или зам. начальники) отделов в головном офисе, умеют пользоваться msquery для составление sql запросов. Кто-то при необходимости что-то даже пишет на VBA.

Помоему вполне вменяемая аудитория для DSL.
-- Главное про деструктор копирования не забыть --
Re: DSL для пользовательских задач
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 30.12.08 11:53
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.


Если честно, то большой и красивый DSL, предназначенный именно для конечных пользователей-чайников не делал и не встречал. Но дать пользователю возможность ввода более-менее произвольных выражений в заранее определённом и описанном синтаксисе — это святое.

Если же пользователями считать не только end-userов, но и всяких консультантов-аналитиков, то тут открывается больше возможностей. Их, в конце концов, можно заставить прочитать и понять длинный мануал с описанием синтаксиса и API. И когда такой аналитик-консультант начинает понимать, что написание маленьких псевдопрограммок — это не больно, а значительно проще, чем протыкивание многочисленных кнопочек в многочисленных настроечных формочках, то тут и приходит счастье. Иногда даже шоколадки носят от избытка чувств
Re: DSL для пользовательских задач
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.12.08 12:15
Оценка: +1 :))) :)
Здравствуйте, dmz, Вы писали:

dmz>Не уверен, что это подходит в декларативное программирование... Больше нестройных размышлений, чем по сути.


dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.

Есть такой мегауспешный DSL, до популярности которого среди конечных пользователей какому-нибудь новомодному SQL как до шри-ланки пешком.
Называется этот язык "Excel formula". Крайне убогие императивные возможности, достаточно невыразительный синтаксис, местами загадочный до ужасности.

Но тем не менее, на нём миллионы линейных менеджеров финансового сектора отжигают прямо как йоги на углях.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: DSL для пользовательских задач
От: dmz Россия  
Дата: 31.12.08 03:50
Оценка: +1
S>Но тем не менее, на нём миллионы линейных менеджеров финансового сектора отжигают прямо как йоги на углях.

Это говорит нам о том, что если "простого абстрактного сферического пользователя в вакууме" правильно сориентировать,
и поставить в такую ситуацию, что деваться ему будет некуда — то никуда и не денется, будет использовать DSL.

Ведь, если подумать, выражения в экселе можно было бы конструировать как нибудь визуально — из квадратиков и стрелочек —
есть же подобные системы для программированися и программистов.
Re[3]: DSL для пользовательских задач
От: Кэр  
Дата: 31.12.08 05:00
Оценка: 1 (1) +2
Здравствуйте, dmz, Вы писали:

dmz>Ведь, если подумать, выражения в экселе можно было бы конструировать как нибудь визуально — из квадратиков и стрелочек —

dmz>есть же подобные системы для программированися и программистов.

Получилось бы ужасно.
Re[2]: DSL для пользовательских задач
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.08 16:46
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Называется этот язык "Excel formula". Крайне убогие императивные возможности, достаточно невыразительный синтаксис, местами загадочный до ужасности.


А ДСЛ ли это? Это вполне себе универсальный язык выражений. Эдакий функциональный язычек (если учитывать сам Ёксель как средство определения переменных). Если в нем можно остановить рекурсию (в чем я сомневаюсь), то на нем вообще можно производить любые вычисления.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: DSL для пользовательских задач
От: Кэр  
Дата: 31.12.08 18:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А ДСЛ ли это? Это вполне себе универсальный язык выражений. Эдакий функциональный язычек (если учитывать сам Ёксель как средство определения переменных). Если в нем можно остановить рекурсию (в чем я сомневаюсь), то на нем вообще можно производить любые вычисления.


Это язык выражений, формул. Я думаю, что никто не взялся бы написать на нем целое приложение, даже если это теоритически возможно.
Re[3]: DSL для пользовательских задач
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.01.09 14:29
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>А ДСЛ ли это? Это вполне себе универсальный язык выражений. Эдакий функциональный язычек (если учитывать сам Ёксель как средство определения переменных). Если в нем можно остановить рекурсию (в чем я сомневаюсь), то на нем вообще можно производить любые вычисления.
В нём рекурсия запрещена. В этом и есть его основное ограничение.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: DSL для пользовательских задач
От: jazzer Россия Skype: enerjazzer
Дата: 09.01.09 01:03
Оценка: -1
Здравствуйте, dmz, Вы писали:

dmz>Не уверен, что это подходит в декларативное программирование... Больше нестройных размышлений, чем по сути.


dmz>Вот интересно, есть ли шанс у DSL использоваться для задач конечных пользователей? Есть ли какие-то успешные примеры такого рода? Мне известно несколько таких DSL, но насколько я могу судить, они не очень-то выживают.



dmz>Это я к чему. Есть ли у вас живые успешные примеры DSL, который рассчитан на редактирование конечными пользователями систем (не разработчиками) ?

dmz>Просто хочется иметь какое-то количество решений для домашнего и не очень применения — планирование проектов, построение roadmap-ов, управление сметами/бюджетами и т.п. Без GUI — задачи редуцируются до достаточно примитивных утилит — которые на входе получают текст на DSL с описанием, на выходе — отчет в каком-то виде. Интересно, может ли у таких продуктов быть вообще В ПРИНЦИПЕ немаргинальная аудитория? Видите ли вы перспективы в использовании подобного подхода? Ну и вообще...

В слове DSL под буквой L подразумевается не просто язык, а язык программирования.
А стало быть, пользователем языка должен быть программист (т.е. человек с программистским мышлением).
Домохозяйка в принципе не сможет освоить даже простейший язык программирования, пока не уяснит себе основ программирования и алгоритмизации.
Поэтому либо твои конечные пользователи — это программисты, либо, если это люди, далекие от компьютеров — нужна прослойка в виде администраторов, конфигураторов и прочего обслуживающего персонала, который и будет иметь дело с твоим DSL-ем. Вот им ты сильно сможешь облегчить жизнь, придумав хороший специализированный язык (пример — регэкспы, SQL).
А ориентироваться на домохозяек смысла нет.
В любой реальной задаче скрипт на твоем мега-удобном и простом спец. языке рано или поздно превратится в нечитабельного монстра. За примерами далеко ходить не надо — те же упомянутые регэкспы и SQL в профессиональном использовании.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.