LINUX.ORG.RU
Ответ на: комментарий от KennyMinigun

Хороший язык. Лишнего не разрешает. Не забалуешь с ним.

anonymous
()
Ответ на: комментарий от habamax

Правда не знаю, корректно ли это называть DSL.

Ну, для ряда доменов — вполне корректно.

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

И наоборот, если ты готов пожертвовать ясностью изложения (навалить всякого синтаксического мусора и boilerplate-а), то можно просто писать код на general-purpose языке, используя определенные где-то в сторонке сущности предметной области, и называть это «DSL-ем». Это делается хоть на лиспе, хоть на с++, без малейших проблем.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)
Ответ на: комментарий от anonymous

Markdown говно

Т.е. аргументы у тебя закончились?

референсная реализация - помойка на регэкспах, которую уже даже сами авторы (кто жив остался) не понимают.

Твои сведения устарели. http://commonmark.org/

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Т.е. аргументы у тебя закончились?

Они у меня еще и не начинались. Просто ты зря упомянул Markdown. Markdown - говно язык, уже расплодилось 100500 несовместимых форков, и никто так и не осилил внятную спецификацию выродить.

Есть гораздо более приличные примеры, тот же wiki markup.

Твои сведения устарели. http://commonmark.org/

Поздно, форков уже 100500, и никто не спешит признавать спецификацию.

anonymous
()
Ответ на: комментарий от Manhunt

Только вменяемым DSL эта изоморфная форма уже не будет.

С чего она не будет вменяемой?

В таком, что секспровых скобок в нем нет.

И что? Как скобки относятся к с-експрам? с-експры - это АСТ, которое представлено вложенными списками. Конкретный синтаксис этого АСТ может быть различен - скобочные выражения, индентация, другие варианты.

http://llvm.org/devmtg/2008-08/Begeman_EfficientJIT.pdf

Не вижу описания семантики фаз. Как загружать код в произвольную фазу? Как квотировать в минус-фазу?

anonymous
()
Ответ на: комментарий от Manhunt

define «загруженный»

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

anonymous
()
Ответ на: комментарий от Manhunt

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

Ну так это неправильная позиция. Разница есть и она принципиальна - у меня на написание дсля в ракетке уйдет раз в 10 меньше трудозатрат, чем у тебя в сишке руками. При это еще и результат будет у меня более качественный.

anonymous
()
Ответ на: комментарий от anonymous

С чего она не будет вменяемой?

С того, что всё будет засрано синтаксическим мусором.

И что?

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

Не вижу описания семантики фаз. Как загружать код в произвольную фазу? Как квотировать в минус-фазу?

Каких именно фаз? Ты о чем?

Manhunt ★★★★★
()
Ответ на: комментарий от anonymous

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

До тире ты говоришь о сложностях компьютерного разбора. А после тире — делаешь выводы о проблемах человеческого восприятия и мышления. Так вот, ты перепутал теплое с мягким. То, что кажется простым и понятным с точки зрения обычного человека, зачастую оказывается чрезвычайно сложным и неоднозначным с точки зрения компьютера. Именно по этой причине компьютеры до сих пор не готовят тебе завтрак, не убирают за тобой кровать, и т.д. и т.п. Им это оказывается чрезвычайно сложно, хотя из людей с этим шутя справляется каждая первая горничная ТП. Вот такая между компьютерами и людьми пропасть.

Хороший ЯП (в том числе, и DSL) ориентирован именно на человека. А не на сложности той программы, которой придется код на ЯП разбирать. В этом смысле, лисп определенно не является хорошим ЯП. А markdown, наоборот, является.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)
Ответ на: комментарий от Manhunt

С того, что всё будет засрано синтаксическим мусором.

Откуда? Мусора наоборот будет меньше, в секспрах меньше синтаксиса.

То, что этот язык — не скобочный.

При чем тут скобочность? Какое отношение секспры имеют к скобках?

Каких именно фаз? Ты о чем?

Обычных.

https://www.cs.utah.edu/plt/publications/macromod.pdf

anonymous
()
Ответ на: комментарий от Manhunt

Ололо, давай, покажи нам всем: Вызов лисперам.

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

anonymous
()
Ответ на: комментарий от Manhunt

До тире ты говоришь о сложностях компьютерного разбора.

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

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

Сложная грамматика = сложнее реализовать алгоритм разбора = сложнее разбирать человеку. Это совершенно тождественные вещи. Любому человеку гораздо проще запомнить одно правило, чем 10, иисключение - когда синтаксис становится слишком вербозным, но в данном случае это условие не выполнено.

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

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

anonymous
()
Ответ на: комментарий от ados

А почему это лисп меньше ориентирован на человека, чем markdown?

Потому что обилие скобочек удобно только примитивному синтаксическому анализатору. Человек таким анализатором не снабжен.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Это очень неубедительный ответ на вопрос человеку, программирующему на лиспе. Как вы можете здесь что-то утверждать, если вы кода на лиспе никогда и не видели?

ados ★★★★★
()
Последнее исправление: ados (всего исправлений: 2)
Ответ на: комментарий от anonymous

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

Нет, не тождественные. «Сложное для человека» и «сложное для компьютера» — это совершенно не одно и то же. По-крайней мере, если не ударяться в асимптотики.

Люди выполняют эти задачи просто, потому что у них в голове нейронная сеть, начальная конфигурация которой тьюнилась сотни тысяч лет и потом десятилетия обучалась конкретным задачам. Но парсинг текста ни искусственном языке не относится к задачам подобного рода, им человек обучается с нуля.

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

Ты можешь обучиться чему-то совсем синтетическому и искусственному (например, скобкодрочерству), но это во-первых потребует существенных усилий, а во-вторых делать ты это будешь весьма паршиво (по сравнению с теми вещами, к которым ты приспособлен с рождения).

Manhunt ★★★★★
()
Ответ на: комментарий от ados

Это очень неубедительный ответ на вопрос человеку, программирующему на лиспе.

Ты спросил, а я - ответил. Задачи убедить тебя в чем-либо — не ставилось.

Как вы можете здесь что-то утверждать, если вы кода на лиспе никогда и не видели?

Видел, хоть и не очень много. Прочитал SICP, авторы которого об этом языке отзываются восторженно и много на нем пишут. Какие остались впечатления? Про скобчатый синтаксис было достаточно сказано выше... а так еще убило, что с середины книжки авторы удались в императивщину. И нафига тогда все это надо, когда есть гораздо более адекватные императивные языки?!

Manhunt ★★★★★
()
Ответ на: комментарий от anonymous

Ололо, давай, покажи нам всем: Вызов лисперам.

Что показать? Там же нету никакого дсля, сравнивать не с чем.

Язык ebuild-ов вплоне можно рассматривать как (убогий) DSL.

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

Ну то есть как обычно: лисп лучше всех считает факториалы. Кхм. Подмножество факториалов, потому что для для факториалов по-серьезнее нужен написанный на Си GMP. Ясно.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от Manhunt

Подмножество факториалов, потому что для для факториалов по-серьезнее нужен написанный на Си GMP.

Для «серьезных факториалов» возьмут FORTRAN, если что. Никто в здравом уме не будет писать такие задачи на лиспе, или другом ЯП. И что плохого в том, чтобы использовать GMP или фортрановые библиотеки из более удобного ЯП? Зачем ты вообще приплел лисп и факториалы здесь?

Oxdeadbeef ★★★
()
Ответ на: комментарий от Oxdeadbeef

Зачем ты вообще приплел лисп

Да, ты прав. Не стоит скатывать топик о DSL в лиспосрач.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от CARS

Лучший — Groovy (см. например http://www.slideshare.net/glaforge/going-to-mars-with-groovy-domainspecific-l...

Безотносительно к Groovy, вот этот слайд понравился:

Goals of DSLs

  • Use a more expressive language than a general-purpose one
  • Share a common metaphor of understanding between developers and subject matter experts
  • Have domain experts help with the design of the business logic of an application
  • Avoid cluttering business code with too much boilerplate technical code thanks to a clean separation
  • Let business rules have their own lifecycle
Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Язык ebuild-ов вплоне можно рассматривать как (убогий) DSL.

Но этот дсль даже не 10% всей задачи.

Ну то есть как обычно: лисп лучше всех считает факториалы.

При чем тут факториалы? Ну предложи свой дсл, на котором можно будет сравнить. Просто паскаль удобен тем, что он достаточно прост, при этом покрывает бОльшую часть интересных аспектов и при этом есть четкая его спецификация.

anonymous
()
Ответ на: комментарий от Manhunt

Потому что обилие скобочек удобно только примитивному синтаксическому анализатору. Человек таким анализатором не снабжен.

Как раз снабжен. Скобочки человека разбирать _значительно_ проще чем разного рода инфиксные выражения и другие штуки с нагруженным синтаксисом. Человеку, не знающего синтаксис лиспа, можно его объяснить за час. Человек, не знающему синтаксис сишки - придется объяснять неделю.

anonymous
()
Ответ на: комментарий от Manhunt

«Сложное для человека» и «сложное для компьютера» — это совершенно не одно и то же. По-крайней мере

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

Так вот парсинг фраз устной речи человек умеет эволюционно

ЯП имеют чуть менее чем никакое отношение к устной речи.

Ты можешь обучиться чему-то совсем синтетическому и искусственному (например, скобкодрочерству)

Так все дело в том, что скобкодрочерство на порядок менее искусственно, чем сишкодрочерство.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.