|
|
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
Всем привет. Я создал новый топик чтобы вынести из "Как долго протянет java?" интересное обсуждение на тему scala. Ниже выпишу цитаты. ---- - Just Do IT! (c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 03:41:40 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
пролетевшийVoDAу нас 99% заковыристой бизнес-логики были заковыристыми поскольку нужно было учесть множество несвязанных параметров. пропущено... У нас получалась довольно большая гора if (condition) { } Некоторые части выполнены в виде интерсепторов, но большая часть - if. У нас медицинское приложение, поэтому ТЗ куда как заковыристее, поскольку обильно сдобрено терминологией. С парсерами Scala и специальным языком, подобное ТЗ фактически и является кодом программы. Доктора не всегда могут его писать без ошибок, но по крайней мере читают и проверяют. Если логику надо закодить, то ScalaTest/Spec тоже сильно помогает: тесты практически совпадают с текстом ТЗ, поэтому доктор опять таки может их прочитать и найти ошибки. Далее пишется код который эти тесты проходит... Пока что для меня основная проблема со Scala - большинство библиотек написаны очень далеко от самодокументированного стиля, при этом и комментарии отсутствуют как класс. Несмотря на все предупреждения Одесски не злоупотреблять перегрузкой операторов, символами или неявными преобразованиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 03:42:33 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
пролетевшийVoDAДа, у меня ощущения, что DSL должен помогать в подобных ситуациях. Сделать DSL описывающий предметную область и написать ТЗ на нем. Код: plaintext 1. 2. 3. 4. Как вы сделали DSL для вашей предметной области? Какие техники Scala требуются для создания DSL и насколько "хрупкой" получился DSL фреймворк для вашей предметной области? Ну основная идея как раз чтобы на этом языке писали не разработчики, а передать поддержку бизнес аналитикам и докторам. Иначе разработчикам надо слишком сильно вникать в предметную область. Или докторам в програмирование. DSL написан с использованием Parser Combinators . Сам синтаксис разработан нашим начальником, он доктор по образованию но немного разбирается в програмировании ( на уровне сделать парсер на JavaCC, web приложение на Java или базу данных в SQL :-). Это уже второй проект с таким языком, первый уже 10 лет функционирует, сейчас модернизируем и расширяем с 3 болезней да 150. У докторов реально мозги по другому завернуты, многие вещи с моей точки зрения абсолютно не логичны, но для специалистов реально понятнее поскольку описание соответствует врачебной практике. Для устойчивости все обложено тестами сверху донизу. Есть даже специальное приложение для авторов DSL, гдеони могут сделать фиктивного пациента или указать реального, и проверить что программа функционирует как ожидается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 03:43:01 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
пролетевшийНу основная идея как раз чтобы на этом языке писали не разработчики, а передать поддержку бизнес аналитикам и докторам. Иначе разработчикам надо слишком сильно вникать в предметную область. Или докторам в програмирование.разработка приложения перекладывается на плечи аналитиков, но поддержка и доработка самого DSL лежит на программистах. и DSL как язык может через какое то время стать довольно сложен, что далеко не каждый программист сможет расширить его синтаксис до требуемого по новому ТЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 03:47:55 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
пролетевшийDSL написан с использованием Parser Combinators . Сам синтаксис разработан нашим начальником, он доктор по образованию но немного разбирается в програмировании ( на уровне сделать парсер на JavaCC, web приложение на Java или базу данных в SQL :-).Можно пример нетривиального выражения на DSL и подсистемы, которая этот DSL исполняет (поддерживает)? Или можем попрактиковаться на примере моего простенького "ТЗ" техническое задание case 91: { если оператор вызвал команду *** нужно выполнить ***. при выполнении case 91 нужно также выполнить case 12, case 18 и case 22. } case 12: { если оператор не вызывал никаких действий в течении ХХХ минут (конфигурируемо), то выполнить auto-logout. } case 18: { если определенные точки тех.процесса перегружены, то выполнить автоматическое перемещение операторов. Вычислить оператора с наименьшей загрузкой (но так чтобы куча условий) и переместить на наиболее загруженные участки. Повторить для всех критических участков. } case 22: { оператор не может быть перемещен, если на данной позиции он отработал меньше ХХХ минут (конфигурируемо). } для простоты распарсивания каждый case завернут в фигурные скобки чтобы упростить разбор где начало и окончание блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 03:52:28 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
А зачем это обязательно парсить-то? Тестеровщиков нечем занять? И если обязательно парсить, то зачем вообще нужна scala (разве что из-за парсер комбинаторов), если java будет работать также? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 12:04:44 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
VoDAпролетевшийНу основная идея как раз чтобы на этом языке писали не разработчики, а передать поддержку бизнес аналитикам и докторам. Иначе разработчикам надо слишком сильно вникать в предметную область. Или докторам в програмирование.разработка приложения перекладывается на плечи аналитиков, но поддержка и доработка самого DSL лежит на программистах. и DSL как язык может через какое то время стать довольно сложен, что далеко не каждый программист сможет расширить его синтаксис до требуемого по новому ТЗ. у 1Сников ничего не получилось, в том смысле что идея создать ЯП для бухгалтеров-аналитиков. Какой ни простой ЯП ни делай, всё одно программисту работа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 12:16:06 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
пролетевшийНу основная идея как раз чтобы на этом языке писали не разработчики, а передать поддержку бизнес аналитикам и докторам. Доктора, как и другие профессионалы в своей деятельности и одновременно пользователи компьютеров - не будут работать и с DSL по той причине что какой DSL не делай это будет: - Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, ... (из вики) Вот эта та формальность любого компьютерного языка программирования и порождает потребность в переводчике на него с человеческого (какого бы ни специализированного) языка. Называются такие люди - программистами. Да, часто они плохо знают эти "человеческие" языки. Помогают им поэтому в переводе "редакторы" и "корректоры" в виде аналитиков и консалтеров. Насчет бизнес-аналитиков - тоже есть сомнения. Тут такая аналогия - есть много хороших писателей, но гораздо меньше из них придумали свой "язык" (как Сэмюэль Беккет, Андрей Платонов, Джеймс Джойс). Как и малое число художников создают свои направления в живописи. Создание приличного, на троечку, DSL - подозреваю и большинство программистов не осилят. Не потому что тупые, а потому что это другой вид деятельности нежели "переводчик", "писатель" и т.д. Соответственно нужны и другие склонности и навыки. Это скорей работа для программиста уровня архитектора. Похожа же она на - выявление паттернов проектирования. Так что берусь утверждать - а жизнь покажет был прав или нет, Scala практически достигла возможностей своего распространения. Как и другой обильно обсуждаемый и интересный и т.д. язык - Haskell. Но разговоров о ней будет много, и жить и развиваться она будет тоже долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 13:28:14 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
schwaА зачем это обязательно парсить-то? Тестеровщиков нечем занять? И если обязательно парсить, то зачем вообще нужна scala (разве что из-за парсер комбинаторов), если java будет работать также?Ок. Как сделать DSL для ТЗ описанного выше? не будем сужать область решений до парсинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 14:01:20 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
SkyNIN, У Scala есть обилие готовых библиотек и решений, разработанных для Java. Этого сильно не хватает haskell'у. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 14:01:36 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
Petro123у 1Сников ничего не получилось, в том смысле что идея создать ЯП для бухгалтеров-аналитиков. Какой ни простой ЯП ни делай, всё одно программисту работа.Возможно. Я хочу попрактиковаться на "кошках" и, возможно, делать собственные DSL под свои задачи. В личных проектах критерий только один - эффективность. Другие типа насколько сложно найти замену для разработчика DSL и т.п. не так важны ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 14:04:16 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
VoDAschwaА зачем это обязательно парсить-то? Тестеровщиков нечем занять? И если обязательно парсить, то зачем вообще нужна scala (разве что из-за парсер комбинаторов), если java будет работать также?Ок. Как сделать DSL для ТЗ описанного выше? не будем сужать область решений до парсинга Без остальных кейсов (от 1 до 91) писать нет смысла т.к. это будет лишь угадывание - ведь полной картины не видно, а без нее это все лишено смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 15:47:47 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
schwaVoDAпропущено... Ок. Как сделать DSL для ТЗ описанного выше? не будем сужать область решений до парсинга Без остальных кейсов (от 1 до 91) писать нет смысла т.к. это будет лишь угадывание - ведь полной картины не видно, а без нее это все лишено смысла.остальные кейсы написать не сложно, только не усложнит ли это DSL для тестового проекта? для простоты можно считать, что кейсов всего 4-ре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 15:52:14 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
LeonidvУ Scala есть обилие готовых библиотек и решений, разработанных для Java Это не у Scala есть, а у Java как Вы сами верно заметили ;) Как же несчастные программисты на Java столько понаписали то? А вот так и написали, что утрировано конечно - "Scala Java миру - не нужна". А кому тогда она нужна? Нет у ее каких-то ТАКИХ!!! преимуществ чтобы Java программистам имело смысл на нее переходить. Именно из обилия готовых решений, библиотек, методик-лучших практик, фреймворков, книг, комьюнити, IDE, ... и т.д. Об этом уже и из Scala лагеря слышатся голоса. Но конечно, всегда найдется 0,01% задач где она будет лучшим выбором. И конечно, изучить, полюбопытствовать, пощупать лишним не будет. Язык интересный, многопарадигменный, в нем есть немало свежего взгляда на старые концепции. Речь же все же я вел не о ней. А о DSL как подходе. Потому что вот не дожидаясь DSL в самой Java тьма библиотек и фреймворков вынесли специализированное для конкретной задачи в xml или аннотации. Мое глубокое ИМХО это и есть суррогат, недо DSL подход применяемый массово в мире Java. Чем же чистый DSL будет лучше, легче в разработке сопровождении, ...? Вот бы мне о чем интересно было подискутировать. Вот когда будет показано, доказано что чистый, настоящий DSL ого-го как лучше, тогда да, можно и о Scala. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 16:34:24 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
Что-то конечно написал. На супер дсл не претендую. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Результат выполнения Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2012, 17:30:20 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
VoDA, Вопрос, связанный с DSL довольно сложен. Для Java - это, весьма условно. Для Sсala - несколько вариантов. Мне приходилось изучать Squeryl - это Scala DSL, продобный LINQ. Он не использует вовсе концепцию plugin и поэтому имеет довольно изощренный код. И здесь не помогает ни implicit conversion ни operator overloading. Но plugins для компилятора Scala позволяют делать очень многие вещи, которые невозможно делать, например, для Groovy. Я бы посмотрел в сторону Scala Plugin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 20:34:59 |
|
||
|
написание DSL на Scala
|
|||
|---|---|---|---|
|
#18+
VoDA, Вопрос, связанный с DSL довольно сложен. Для Java - это, весьма условно. Для Sсala - несколько вариантов. Мне приходилось изучать Squeryl - это Scala DSL, продобный LINQ. Он не использует вовсе концепцию plugin и поэтому имеет довольно изощренный код. И здесь не помогает ни implicit conversion ни operator overloading. Но plugins для компилятора Scala позволяют делать очень многие вещи, которые невозможно делать, например, для Groovy. Я бы посмотрел в сторону Scala Plugin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 21:10:46 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=317&tid=2132876]: |
0ms |
get settings: |
18ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 358ms |
| total: | 509ms |

| 0 / 0 |
