Поработав со Скалой около года для себя и на фрилансе, почитав про разные косяки и многословность, по сравнению с clojure, я понял, что в нем, все-таки, черт может ногу сломить. Иногда. Чего туда только не по-напихано. А какая есть альтернатива для JVM? Java (и 8) не предлагайте. То, что только совсем недавно появилось или слишком непопулярное, тоже не годится. Frege, например, только недавно родился.
Остается только Clojure. Мне, в принципе, нравится, потому что я больше к функциональному программированию склонен, в том числе к Хаскеллу.
Но, может есть еще что-то? Что бы стали использовать?
Здравствуйте, ManFeel, Вы писали:
MF>Поработав со Скалой около года для себя и на фрилансе, почитав про разные косяки и многословность, по сравнению с clojure, я понял, что в нем, все-таки, черт может ногу сломить.
Может. А может и не сломать. Интересно, сколько раз я тут уже повторял: не нравятся навороты — не юзайте. Можете даже коллекции скаловские не юзать — а тупо жавовские. Будет такая вот жава в компактном синтаксисе. Я вот погряз в макросах — но огромное количество народу самим их существованием не заморачивается (да и не было их вообще ещё не так давно).
UPD. А уж про "многословность" — это я вообще даже не понял, речь о скале или о жаве. Скала — многословна?!
Здравствуйте, dimgel, Вы писали:
D>Может. А может и не сломать. Интересно, сколько раз я тут уже повторял: не нравятся навороты — не юзайте. Можете даже коллекции скаловские не юзать — а тупо жавовские. Будет такая вот жава в компактном синтаксисе. Я вот погряз в макросах — но огромное количество народу самим их существованием не заморачивается (да и не было их вообще ещё не так давно).
да я-то могу и не использовать, а как код других читать с наворотами?
D>UPD. А уж про "многословность" — это я вообще даже не понял, речь о скале или о жаве. Скала — многословна?!
да, scala может быть многословна по сравнению с clojure. хотя, я сильно пока не вникал. но, видел, что в макросах скала — да — более многословнее, чем clojure.
Здравствуйте, ManFeel, Вы писали:
MF>да я-то могу и не использовать, а как код других читать с наворотами?
А зачем? Если юзать только жавовские либы, то и код других читать не придётся.
А вообще, чем проще инструмент, тем больше сложности выпадает на долю приложения, стесняюсь повторять старый кывтовский консенсус.
MF>да, scala может быть многословна по сравнению с clojure. хотя, я сильно пока не вникал. но, видел, что в макросах скала — да — более многословнее, чем clojure.
Да ладно, кому они нужны — макросы-то? Жили без них — не тужили, они вообще только во фреймворковых вещах нужны. А если в команде разделение труда, то прикладнушникам вообще не надо туда лезть, как не лезут они в сорцы того же спринга.
Хотя штука адовая, тут соглашусь, но из моего опыта выходит, что сложность задач, которые я макросами пытаюсь решить, значительно превышает сложность собственно структур, с которыми приходится работать. AST замороченное, поначалу от граблей на лбу живого места нет, но со временем и запоминаешь, и привыкаешь — даже не стараясь специально.
Здравствуйте, dimgel, мы писали:
MF>>в макросах скала — да — более многословнее, чем clojure.
D>AST замороченное
Чёт я ж вроде написал в предыдущем посте, но видимо заредактировал: квазицитаты достаточно часто помогают, за исключением совсем уж динамических случаев, да и там частенько можно складывать квазицитаты в ListBuffer[Tree], чтобы потом квазицитатой же воткнуть куда надо, например так:
val $buf = new ListBuffer[Tree]
$buf += q"private val $termName1 = $expr1"
$buf += q"private val $termName2 = $expr2"
q"class C { ..$buf; def f() = $termName1 + $termName2 }" // вложенный Block вокруг $buf не создаётся
Здравствуйте, dimgel, Вы писали:
D>Да ладно, кому они нужны — макросы-то? Жили без них — не тужили, они вообще только во фреймворковых вещах нужны. А если в команде разделение труда, то прикладнушникам вообще не надо туда лезть, как не лезут они в сорцы того же спринга.
Не соглашусь. Периодически приходится читать исходники и свинга и хибернейта и других библиотек, включая, конечно, JDK. И простота Java ОЧЕНЬ помогает. Не знаю, что там с консенсусом кывта, но скаловские коллекции я не могу осилить. Как ни залезу в них, так и погрязаю в десятках интерфейсов.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, ManFeel, Вы писали:
MF>> А какая есть альтернатива для JVM?
DM>http://ceylon-lang.org/
по критерию "популярность" не подходит. для себя, может он и подойдет, но стоит ли тратить на него время? может, умрет, так и не родившись толком. я про него только 2ой раз слышу.
Здравствуйте, vsb, Вы писали:
vsb>Как ни залезу в них, так и погрязаю в десятках интерфейсов.
Блин, вроде ж сохранял в закладки отличное объяснение идеи за всеми этими наворотами с коллекциями на SO от (кажется) Miles Sabin — и не нахожу вообще никак, даже гуглом. Всё какая-то ересь от Одерски в выдачу лезет.
Но в общем согласен: в погоне за избавлением от копипасты реализаций и за удобством использования (автоматический выбор наиболее конкретного типа результата всяких там map()) они усложнили всю свою кухню на порядок, если не на два. Слава те яйца, мне до сих пор пригождалось только пару раз заглядывать в реализации отдельных методов, а общая картина — да чёрт бы с ней.
Здравствуйте, dimgel, Вы писали:
D>Здравствуйте, ManFeel, Вы писали:
MF>>да я-то могу и не использовать, а как код других читать с наворотами?
D>А зачем? Если юзать только жавовские либы, то и код других читать не придётся.
не получится использовать только жавовские либы всегда
Здравствуйте, ManFeel, Вы писали:
MF>не получится использовать только жавовские либы всегда
Я склонен полагать, что если очень захотеть, то получится. Специально выше написал, что даже без скаловских коллекций можно прожить: например, используемый в main(args: Array[String]) Array — это жавовский mutable Array, а всё остальное можно импортировать из java.util. Только разве ж это жизнь?
Здравствуйте, ManFeel, Вы писали:
MF>Поработав со Скалой около года для себя и на фрилансе, почитав про разные косяки и многословность, по сравнению с clojure, я понял, что в нем, все-таки, черт может ногу сломить. Иногда. Чего туда только не по-напихано. А какая есть альтернатива для JVM? Java (и 8) не предлагайте. То, что только совсем недавно появилось или слишком непопулярное, тоже не годится. Frege, например, только недавно родился.
MF>Остается только Clojure. Мне, в принципе, нравится, потому что я больше к функциональному программированию склонен, в том числе к Хаскеллу.
MF>Но, может есть еще что-то? Что бы стали использовать?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, ManFeel, Вы писали:
ЕА>>>Kotlin
MF>>его чуть ли не вчера выпустили, никаких фич особых нет
N>На мой взгляд, там есть почти все фичи, которые нужны. Какой именно фичи тебе не хватает?
я же не говорю, что мне не хватает чего-то. в скале эти фичи тоже есть.
Здравствуйте, dimgel, Вы писали:
MF>>да я-то могу и не использовать, а как код других читать с наворотами?
D>А зачем? Если юзать только жавовские либы, то и код других читать не придётся.
Предлагаешь сразу переписывать код с наворотами при чем не разбираясь, чего же он делает ?
Здравствуйте, Ikemefula, Вы писали:
D>>А зачем? Если юзать только жавовские либы, то и код других читать не придётся.
I>Предлагаешь сразу переписывать код с наворотами при чем не разбираясь, чего же он делает ?