|
Перспективы Scala
|
|||
---|---|---|---|
#18+
cossack5, Оно вроде .... уж начал думать что-то пропустил. тоже есть минусы: единственный минус SCALA - высокий порог вхождения. от чтения документации, до работоспособного кода, ( написанного действительно как на SCALA, а не в стиле "пишем на SCALA в стиле JAVA" ) значительная дистанция. в этом смысле у Rust, к сожалению, ещё более высокий порог... очень мало программистов сочетающих в голове низкоуровневое С и функциональщину SCALA или Хаскеля. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 20:18 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Cheblinединственный минус SCALA - высокий порог вхождения. от чтения документации, до работоспособного кода, ( написанного действительно как на SCALA, а не в стиле "пишем на SCALA в стиле JAVA" ) значительная дистанция. Мне не очень нравятся статические методы в scala, т.е. если мне в обычном классе нужны статические методы, я должен создать некий object с таким же именем и в нем писать эти методы. Как по мне, было удобно, если бы статические методы можно было писать и в object, и в class (чтобы не писать два раза object/class). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 20:26 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
cossack5, некий object с все Ваши неудобства - последствия JAVA аквариума. напротив, именно с object, в SCALA всё удивительно логично. особенно в контексте, наличия traits . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 20:39 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
CheblinmaytonCheblin, вау-эффекта нет. вау-эффект обещаю, выкладывай JAVA аналог. Аналог чего? Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 22:06 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Partisan MСоздатель Scala - один. Швейцарский профессор Мартин Одерски. Он сам рассказал, что ему университет дал свободу творчества. Вот он и создал язык, напихав в него всевозможные достоинства. Но при создании языка не было определённой цели, и так как он был не программист, то ему было трудно понять, что нужно программистам. А что нужно программистам? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 23:00 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
maytonА что нужно программистам? бабло ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 00:35 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
maytonCheblinпропущено... вау-эффект обещаю, выкладывай JAVA аналог. Аналог чего? Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы. Вы не внимательны. я писал выше для эксперимента попробуй следующий код переписать со SCALA на JAVA. представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 03:59 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
CheblinВы не внимательны. я писал выше для эксперимента попробуй следующий код переписать со SCALA на JAVA. представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект здесь похоже только вы на своей волне - я вот тоже ничего не понял: вы привели какой-то код на C и ссылку на multiline с интерполяцией, что предлагается переписать и зачем? от отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо: совершенно непонятно как IDE будет поддерживать зависимости - ловить баги в рантайме оно нафиг не нужно (тут с грустью вспоминаем эклипс, который jsp толком не умел) это прямой путь к разного рода уязвимостям (XSS, XSRF, RCE, SQL injection и пр.), потому как интерполироваться оно должно в зависимости от контекста, а не абы как (как в scala ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 06:47 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Cheblinmaytonпропущено... Аналог чего? Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы. Вы не внимательны. я писал выше для эксперимента попробуй следующий код переписать со SCALA на JAVA. представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект Начнем с того что я бы вообще так не делал. Это хардкод. Я бы постарался генерализировать идею и описать ее в терминах ООП и композиции. А а java есть фреймворк freemarker который решает аналогичные вещи. Или apache velocity. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 08:08 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Андрей Панфиловздесь похоже только вы на своей волне - я вот тоже ничего не понял: вы привели какой-то код на C и ссылку на multiline с интерполяцией, что предлагается переписать и зачем? это НЕ код на С. это одна SCALA мультистрока. то, что видно как С код - это так подсветка кода всё разукрасила. поддержки SCALA на сайте нет. Андрей Панфиловот отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо: как Вам там пишется на JDK 1.1 ? от отсутствия джинериков смертей не наблюдается? Андрей Панфилов а интерполяция строк - фича довольно сомнительная, ибо: понятно. нету - значит и не нужно. Л - логика! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 08:57 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
maytonНачнем с того что я бы вообще так не делал. Это хардкод. Я бы постарался генерализировать идею и описать ее в терминах ООП и композиции. А а java есть фреймворк freemarker который решает аналогичные вещи. Или apache velocity. весь приведенный перечень инструментов доступен в SCALA. Соответственно все они были мной испытаны и проверены. заявляю ответственно. Это всё Ацтой. и в смысле удобства программирования, и в смысле поддержки в IDE, и в смысле скорости генерации текста. Быстрее и эффективнее Twirl (который хадкордит во время компиляции все, до чего дотянется) ничего нет. Но это всё предназначено и пригодно только для генерации web страниц. Для кодогенерации НЕ пригодно. В чем отличие? В веб страницах в основном много контента и мало управляющих конструкций. При кодогенерации наоборот. Контент в ужастно мелкой грануляции (вплоть до ставить или нет запятую / точку с запятой в данном месте ) и гигантская мешанина управляющих конструкций. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:13 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Cheblinзаявляю ответственно. Это всё Ацтой. Нет, безответственно. FreeMarker и Velocity написаны на Java и с успехом могли бы применяться в Scala, если бы любителям Scala не хотелось выпендиваться, как в этой цитате. Нормальное для них видите ли недостаточно хорошо. Правда, Velocity устарел. FreeMarker популярен и применяется в важных программных средствах. Но есть ряд других генераторов шаблонов на Java, из которых можно выбирать. Меня например заинтересовал некий Thymeleaf, потому что он применяется в Spring (наряду с FreeMarker). В FreeMarker единственная проблема - если в программу входит более старая его версия, тогда надо исходный код шаблона FreeMarker делать с учётом её возможностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:23 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Cheblinэто НЕ код на С. это одна SCALA мультистрока. то, что видно как С код - это так подсветка кода всё разукрасила. поддержки SCALA на сайте нет. getClass().getResourcesAsStream() - вроде нет никакого повода бежать и строчить минеты создателям scala, при этом жава код сам по себе, а остальное само по себе, и нет никакой лапши как в PHP. CheblinАндрей Панфиловот отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо: как Вам там пишется на JDK 1.1 ? от отсутствия джинериков смертей не наблюдается?А чего? в жаву уже завезли женерики? CheblinАндрей Панфилов а интерполяция строк - фича довольно сомнительная, ибо: понятно. нету - значит и не нужно. Л - логика!Вы там в своем Китае читать разучились судя по всему, на мой взгляд я вполне доступно обосновал почему интерполяция - зло, если бы скала была бы столь же популярна как и жава (а не иметь три более-менее стрельнувших проекта из-за чего причислять себя к ылитарным погромистам), то из-за этой интерполяции каждый день бы новые CVE появлялись, нашлепанные ылитарными погромистами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:38 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Cheblin, Вот именно управляющих конструкций в примере не увидел. Может пример неудачный? Я так понимаю вы говорите, что такие встроенные конструкции позволяют не переключать контекст? А как такое в последующей поддержке? Такая длинная чужеродная простыня посреди кода выглядит сомнительно с точки зрения читабельности. А если там посередине еще и сложная логика в выражениях? В целом, если стоит задача кодогенерации со сложной логикой, зачем использовать такое низкоуровневое средство как шаблон? Почему не строить АСТ и по нему уже генерить код, тем самым разнеся логику и саму кодогенерацию? Ну и в целом выпячивание именно мультистрок и интерполяции как килер фичи выглядит сомнительно. Почему неискушенный читатель должен предпочесть scala, а не, скажем, groovy, где такие же строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:40 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Подытожу для себя. Мультистроки и интерполяция - это не та киллер-фича с которой надо выходить на Scala-презентацию. Много языков имеют строковые подстановки с вычислением выражения но это не сделало их выдающимися. Нужно привести пример кода который на уровне парадигмы принципиально сложно повторить в других ЯП в сравнение со Scala. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:02 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
мне тоже непонятно в чем крутизна примера, если есть 1001 других способов показать что скала крутая. Мне например очень нравится концепция dependent-types. В данном примере тип возвращаемого результата метода handle зависит от ЗНАЧЕНИЯ передаваемого в метод параметра. Передали LocalComputation - метод вернет LocalResponse, передали RemoteComputation - вернули RemoteResponse. Всего пару строк кодаи мощь системы типов скалы. Попробуйте переписать на java чо:) Многие java программисты даже не задумываются о том, сколько всего можно переложить на компилятор. Да, возможно дольше писать, но я лучше напишу так, чем миллион тестов потом:) Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:18 |
|
Перспективы 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:21 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Ну или вот, классика. DSL for Payrol Calculator, readable by business и обратите внимание, все steps имеют свой тип(фантомный), Step[PreDeductions] Step[Final] и тд. Если бизнес чел перепутает шаги местами,то это вызовет компилейшен эррор. Опять же, желающие могут попробовать силы в переписывании на java Код: 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.
Ну и да, код можно еще упрощать и упрощать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:33 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
А как насчет нормальной поддердержки higher order functions ? Код: java 1. 2. 3. 4. 5. 6. 7.
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:42 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
забыл никМне например очень нравится концепция dependent-types. В данном примере тип возвращаемого результата метода handle зависит от ЗНАЧЕНИЯ передаваемого в метод параметра. Передали LocalComputation - метод вернет LocalResponse, передали RemoteComputation - вернули RemoteResponse.Чет я не особо фишку уловил, в жаве не так чтоли? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 16:15 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Андрей ПанфиловЧет я не особо фишку уловил, в жаве не так чтоли? А теперь добавьте LocalResponse и LocalComputation и сделайте чтобы метод handle возвращал Future<T> Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 16:57 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
забыл никА теперь добавьте LocalResponse и LocalComputation и сделайте чтобы метод handle возвращал Future<T> Код: java 1. 2. 3. 4. 5.
Ничего не поменялось: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:17 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Кмк в Scala лучше система типов. По крайней мере generic collection of primitives выглядит как в c++ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:28 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Да, вы правы. Я старался минимизировать пример, но убрал всю соль, действительно в таком виде его можно перепистаь на Java без особых проблем. В полном примере есть использование implicit фич, так что не охота было перегружать. Если интересно, то это частный случай так называемого magnet pattern, ознакомиться можно здесь - А как насчет вот такого примера? Есть франшиза, есть персонажи. Есть метод, который должен компилироваться только если персонажи принадлежат данной франшизе. Сможете повторить на Java? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 18:28 |
|
Перспективы Scala
|
|||
---|---|---|---|
#18+
maytonКмк в Scala лучше система типов. По крайней мере generic collection of primitives выглядит как в c++ То что вам кажется, является неоспоримым общепризнанным фактом. Несомненно система типов Scala в разы мощнее, не дотягивает конечно до Haskell но с Java сравнивать просто смешно. Даже представлять не охота, как можно закодировать List длиной 3 как тип.. https://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 18:42 |
|
|
start [/forum/topic.php?fid=59&msg=39694583&tid=2120988]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 176ms |
0 / 0 |