Чому б написати DSL, а не RIA на основі форми?

Нещодавно я читав кілька доповідей на мовах з конкретними доменами (DSL), але ніхто з них не розглядав переваги DSL через багату інтернет-програму (RIA). У RIA, замість того, щоб вивчати мову домену, користувачеві надаються об'єкти домену у вигляді полів форми, які абревіатують лексичні визначення для мови домену. Це здається більш корисним. Що мені не вистачає?

4
@Telastyn Я міг би так само просто не сказати RIA, але просто сказав веб-додаток на основі форм. RIA та DSL можуть бути як "відкриттям інформації".
додано Автор Peteris, джерело
Я не впевнений, чому ці два повинні бути взаємовиключними, але, можливо, я щось втратив ...
додано Автор FrustratedWithFormsDesigner, джерело
Гаразд, визначте DSL типу Yacc як RIA. Або SQL-подібний DSL. Або правило двигуна.
додано Автор SK-logic, джерело
Якщо ви знаєте лише 100 слів людською мовою, то кількість пропозицій, які ви можете отримати, є дуже великою. Не так багато, коли потрібно заповнити пропуски на формі. Ви порівняли (наприклад) макроси Visual Basic for Applications з ранніми макросами на основі форми?
додано Автор user251748, джерело

6 Відповіді

Це залежить від складності домену. Якщо в основному це структуровані дані, візуальний редактор може бути більш інтуїтивно зрозумілим для використання, але якщо домен містить значні обсяги логіки, досвід знову показує, що візуальні редактори є поганим інструментом для цього.

Additionally, there are some very common, very useful tasks that are trivial with a character-based language (such as copy&paste, search&replace) but require a lot of effort to implement in a visual editor and are therefore often missing.

6
додано
Майкл, чи можете ви навести приклад проблемного домену, де кількість логіки може зробити її кращою для DSL?
додано Автор Peteris, джерело
@sebastiangeiger ruby - це не DSL, і ні Синатра. Подивіться відповідь на це питання: stackoverflow.com/questions/2822002/why-is-rail-called-a-ds & zwnj; l . Все, що вам потрібно поставити, - це просте питання: що таке домен? Якщо це загальна мета (розробка базової системи веб-додатків), то це GPL. Перегляньте відповідь, яку розповів FrustratedWithFormsDesigner у коментарях вище. Це буде кращим прикладом домену.
додано Автор Peteris, джерело
@ Брайан Рейндель: Один із прикладів, коли я особисто бачив обидва варіанти дій, є відображення даних EAI. Для банківської програми картографічне інтерфейс пакетного інтерфейсу базувався на коді і підтримувався як звичайна робота, а інтерфейс мережі мав використовувати спеціально розроблений графічний редактор правил зіставлення, який був незручним та повільний, що призводило до постійного головного болю.
додано Автор kyck-ling, джерело
@BrianReindel: Рейтинги страхових полісів.
додано Автор FrustratedWithFormsDesigner, джерело
Sinatra вважається DSL, показуючи, що ви намагаєтесь порівняти яблука та апельсини
додано Автор Izy-, джерело
@BrianReindel Я ніколи не сказав, що був рубіном. Але (частина) Sinatra - це DSL для визначення того, які дії слід виконувати, якщо доступ до певного маршруту.
додано Автор Izy-, джерело

Форма обмежує можливі вирази тільки одному типу. У природній мові ви можете написати все, що ви можете собі уявити на англійській мові. Те, що ви можете виразити за формою, набагато обмежені: наприклад, думайте про Mad Libs.

4
додано

Я буду протилежним і зазначу, що DSL часто рекомендується невідповідно, оскільки вони є більш природним і гнучким інтерфейсом для програмістів, а програмісти люблять створювати системи, які легко їх використовувати.

Це означає, що DSL найкраще підходить для функцій, призначених для програмістів або висококваліфікованих та спеціалізованих користувачів, таких як ІТ-відділи. Речі, як конфігурація/налаштування для конкретного сайту, автоматизація сценаріїв або порівняно нечасто-змінена бізнес-логіка.

DSL також може бути корисним як проміжні уявлення, що дозволяє програмісту писати код на вищих рівнях на більш компактній, краще підходить мова, навіть якщо кінцеві користувачі ніколи не бачать його.

2
додано
Ви сказали: " програмістам подобається створювати системи, які легко їх використовувати. " Сміявся, коли я це читав - на місці! Але DSL також може бути використаний не програмістами, якщо вона добре розроблена. Я бачив, що це сталося раніше.
додано Автор user251748, джерело

Оскільки DSL - це текст, я можу використовувати текстові інструменти. Найбільш помітно, що я можу генерувати код для DSL за допомогою скрипта оболонки за допомогою метапрограмування. Як кажуть інші, DSL не перешкоджає також RIA.

1
додано

Якщо ви вставляєте DSL на повній мові програмування (Python, Ruby, Groovy тощо), то ви можете використовувати DSL для автоматизації завдань.

0
додано

Ви пишете DSL-систему, коли ви зможете уявити собі необхідність в "скриптах", які виражають серію кроків більш компактно, ніж звичайна програма. Ви також створите DSL, якщо ви хочете, щоб щось було налаштовано "на полі" не програмістами, але все-таки все, що потрібно для того, щоб виконати те, що, швидше за все, потребує користувачів. Очевидним прикладом є HTML.

У минулому я часто створював мови сценаріїв, які допоможуть мені виконати автоматичні завдання (наприклад, зараз, наприклад, застарілий приклад): копіювання та видалення файлів на WAN, щоб розподілені вхідні файли та вихідні файли були зібрані та видалені. Я створив мову та "бігун", який був створений для копіювання файлів у мережі. Це було набагато менше зусиль і налагодження, ніж написання подібних програм у С (це було 25 років тому).

0
додано