|
|
|
Scala
|
|||
|---|---|---|---|
|
#18+
Вот вчера не мог уснуть и решил почитать про эту Scala. Просмотрел несколько разных статей на тему "Почему скала в овер100500 раз удобнее чем ява" и, честно говоря, так и не понял. - Ну можно какие-то моменты более кратко выразить в коде, но это какой-то сомнительный плюс. - Функциональное программирование - действительно ли оно нужно?.. - Как понял там постоянные проблемы с обратной совместимостью (старые либы не работают на новых версиях скалы, иногда... можно прикрутить либы написанные на яве, но там, говорят, пляски с бубнами) Подытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2017, 17:08 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
HettВот вчера не мог уснуть и решил почитать про эту Scala. Просмотрел несколько разных статей на тему "Почему скала в овер100500 раз удобнее чем ява" и, честно говоря, так и не понял. - Ну можно какие-то моменты более кратко выразить в коде, но это какой-то сомнительный плюс. - Функциональное программирование - действительно ли оно нужно?.. - Как понял там постоянные проблемы с обратной совместимостью (старые либы не работают на новых версиях скалы, иногда... можно прикрутить либы написанные на яве, но там, говорят, пляски с бубнами) Подытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? Бери kotlin. Лучше совместимость с java, проще синтаксис, быстрее компиляция. А плюсы... Вот что я вижу в kotlin (в принципе в scala так же): - ООП проще потому, что не надо писать лишних букв- оно само. При этом чем стандартнее код- тем он короче; - ФП проще потому, что синтаксис лучше подходит (val x: Int = 3 гораздо лучше ложится в лямбды чем final int x = 3); - для скриптом не надо тащить groovy- всё четь - можно компилировать в javascript легко - можно компилировать в native (пока бэта, но уже немного работает)- хорошо для утилит, для скриптов (чтобы sh не писать). В целом- приятно. А нужность ФП- есть некоторые (!) вещи, которые порще выражать в виде функциональщины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2017, 19:11 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ФП реально нужно. Благодаря лямбдам решение многих моих насущных задач упростилось в разы. А про скалу поздно уже обмусоливать. Сейчас не найду, но видел год-два назад несколько толковых статей по этому вопросу. Основные плюсы и минусы давно известны. Помимо указаных сложностей с совместимостью есть проблема долгой компиляции и IDE поддержка хромает. Для бизнеса актуальна и проблема кадров. Порог входа в язык ещё выше. А рынок и так голодает от недостатка квалифицированных разрабов. Но учить скалу есть смысл в любом случае для расширения кругозора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2017, 19:50 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
HettВот вчера не мог уснуть и решил почитать про эту Scala. Что скажете? Читать не надо, надо писать. ;-) Попробуйте что-нибудь сделать на Scala тогда ваше мнение о нем сложится более точнее. А так вроде бы Scala была модна в BigData, но как сейчас не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 07:59 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Hett- Функциональное программирование - действительно ли оно нужно?Конечно! И самое главное - после появления "лямбЪдЪ" в Java 8 популярность Scala резко снизилась. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 08:03 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
HettПросмотрел несколько разных статей на тему "Почему скала в овер100500 раз удобнее чем ява" и, честно говоря, так и не понял. Чего непонятного. У любой дряни есть свои фанаты. Их аргументы только для них и имеют смысл. пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Действительно, Scala изобрёл не программист, а некий швейцарский профессор. Если бы он угадал, что нужно программистам, то язык мог бы стать популярным, но он не угадал. Это обычная проблема при изобретении языков. Alexey Tomin. Бери kotlin. Лучше совместимость с java, проще синтаксис, быстрее компиляция. Возьмём Kotlin. Этот язык - маргинальный даже по сравнению со Scala, поэтому лучше подходит для фанатствования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 09:39 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
У scala мощней система типов, больше уровень абстракции. Можно писать более короткие программы, но и порог вхождения больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 11:28 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Partisan MHettПросмотрел несколько разных статей на тему "Почему скала в овер100500 раз удобнее чем ява" и, честно говоря, так и не понял. Чего непонятного. У любой дряни есть свои фанаты. Их аргументы только для них и имеют смысл. пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Действительно, Scala изобрёл не программист, а некий швейцарский профессор. Если бы он угадал, что нужно программистам, то язык мог бы стать популярным, но он не угадал. Это обычная проблема при изобретении языков. Можно было написать проще - не осилил. Порог входа действительно выше и именно поэтому scala врядли станет промышленным стандартом, но в области BigData и Machine Learning это мейнстрим в данный момент и не просто так. В принципе соглашусь с Blazkowicz , все грамотно расписано. Учить надо для самообразования, еще и Clojure заодно:) Да, сначала будет трудноЮ будет ломать, но в итоге ваш уровень как программиста вырастет на порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 11:40 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Всегда полезно хотя бы ознакомится. Но особого распространения Scala не получит. Функциональные языки всегда страдали от того, что на них слишком много мозговой энергии надо тратить. Большинство задач прекрасно можно решить обычными средствами. Лямбды прекрасно добавляются к обычным, императивным языкам. Зато у людей возникает резонный вопрос - на фига ли так мучится, если задача этого не требует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 13:32 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЩичеВсегда полезно хотя бы ознакомится. Но особого распространения Scala не получит. Функциональные языки всегда страдали от того, что на них слишком много мозговой энергии надо тратить. Большинство задач прекрасно можно решить обычными средствами. Лямбды прекрасно добавляются к обычным, императивным языкам. Зато у людей возникает резонный вопрос - на фига ли так мучится, если задача этого не требует. Scala же, вроде, не чисто функциональная? Там не нужно мучатся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 13:35 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
BlazkowiczScala же, вроде, не чисто функциональная? Там не нужно мучатся. чтобы ТС после и про функциональные не спрашивал). Ответы не изменятся). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 13:42 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЩичеВсегда полезно хотя бы ознакомится. Но особого распространения Scala не получит. Функциональные языки всегда страдали от того, что на них слишком много мозговой энергии надо тратить. Большинство задач прекрасно можно решить обычными средствами. Лямбды прекрасно добавляются к обычным, императивным языкам. Зато у людей возникает резонный вопрос - на фига ли так мучится, если задача этого не требует. Scala же, вроде, не чисто функциональная? Там не нужно мучатся. Наверное он имел в виду, что Scala - не процедурный ЯП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 13:55 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЩичеВсегда полезно хотя бы ознакомится. Но особого распространения Scala не получит. Функциональные языки всегда страдали от того, что на них слишком много мозговой энергии надо тратить. Большинство задач прекрасно можно решить обычными средствами. Лямбды прекрасно добавляются к обычным, императивным языкам. Зато у людей возникает резонный вопрос - на фига ли так мучится, если задача этого не требует. Вопрос привычки опять же. Чтобы въехать надо минимум полгода плотно сесть за туториалы и кодить проект, не каждый конечно себе это может позволить. До того как я узнал скалу, я не предполагал что if\else statements могут так раздражать, как и мутабельные переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 13:57 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, но мякотка как раз в функциональном стиле. И кроме того, если вы уж решили на ней работать, то на собеседовании спросят, а потом и применять надо будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 14:01 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
забыл ник Вопрос привычки опять же. Чтобы въехать надо минимум полгода плотно сесть за туториалы и кодить проект, не каждый конечно себе это может позволить. До того как я узнал скалу, я не предполагал что if\else statements могут так раздражать, как и мутабельные переменные. В том и дело. Сначала надо капитально заняться, а потом и выяснится - надо реально это или нет. Не в абстрактном вакууме, а конкретно тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2017, 14:03 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Разговор слепых с глухими. Одни говорят что функциональность вообще не нужна, другие что нужна но сложна. Есть еще вариант - то что функциональность сложна в скале вовсе не значит что функциональность сложна в принципе. Скала неудачный язык и функциональность там сделана неудобно, да и все остальное тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 17:33 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. Где вы тут сложность увидели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 17:35 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
если кому невтерпеж то на coursera опять цикл по скале из 5 курсов от него самого, проффэсора с 8 мая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 17:37 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Скала умудрилась сделать простые и компактные функциональные вещи сложными и неудобными. Скала вобщем-то была-бы неплохим языком если-бы оттуда выкинуть большую часть того что там есть. А так - какая-то жуткая мешанина из надерганных и перекрученных концепций которая в итоге оказалась даже еще хуже чем жава. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 17:39 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Только и слышишь - функтор, монада. Ладно-бы толк был, а то скалисты обычно там где можно 3 строчки написать городят полстраницы. И потом даже когда отказываются в итоге от скалы и переходят на жава - перетягивают туда свои привычнки и начинаю городитеь еще большее месиво чем обычная жава лапша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 17:42 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
В скале нет ничего сложного, если сразу не лезть в дебри. Можно начать программировать в стиле java, даже точки с запятой можно оставить в конце выражений. И постепенно осваиваться. Для понимания функционального подхода в скале советую изучить хаскель, хотя какие-то приёмы конечно можно понять и без этого. Хаскель - чистый функциональный язык, без всякого ООП и прочих "фабрик фабрик". Синтаксис простой, за счёт чего легко понимается вся идея функционального программирования. На счёт монад. Для начала, вам не обязательно знать, что List, Option, Either - монады. Достаточно знать какие методы для них существуют, а для этого необходимо запустить REPL (интерактивный интерпретатор). Для хаскеля рекомендую "Learn You a Haskell for Great Good!", для скалы ресурсов много, можно начать с документации на официальном сайте. P.S. Меня больше раздражают не монада и функтор, а то, что зайти на форум можно только залогинившись на главной странице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2017, 19:53 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
llemingесли кому невтерпеж то на coursera опять цикл по скале из 5 курсов от него самого, проффэсора с 8 мая Для общего развития не повредит, конечно.Только курсов на самом деле 4. 5 - это типа курсовая/диплом. Одерски по скале ведет там только 2 курса из 4. Остальные (параллельное программирование и апач спарк) к скале имеют весьма опосредованное отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 01:18 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Hett, в общем, у меня возникли те же чувства, что и у вас. Некоторые кроме чувств приводят весомые аргументы: http://www.mapdb.org/blog/scala_has_weakly_typed_syntax/ Но понимать тексты на Scala весьма выгодно в плане зарплаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 00:40 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
rfqв общем, у меня возникли те же чувства, что и у вас не прошло и 2-3 года, как сабж из восторженного чувства превратился в никому ненужный хлам ( утрирую ). Всё быстро в мире IT )). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 09:25 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
rfqHett, в общем, у меня возникли те же чувства, что и у вас. Некоторые кроме чувств приводят весомые аргументы: http://www.mapdb.org/blog/scala_has_weakly_typed_syntax/ Но понимать тексты на Scala весьма выгодно в плане зарплаты. Лол, автор путает by-name параметры и лямбды, о чем тут можно говорить... А аргументы в стиле Код: java 1. 2. оказывается если писать стейтмент на двух строках, да еще и используя инфиксную нотацию -вот такая бяка может быть ппц... как можно в здравом уме приводить такие аргументы... Да, scala сложна, но не настолько как рисуют оналитеги типо этого. Она нашла свою нишу в bigdata, где по факту не нужна никакая магия, а просто функциональные коллекции, которые на голову выше чем в java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 11:51 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
> Можно начать программировать в стиле java, даже точки с запятой можно оставить в конце выражений. > И постепенно осваиваться. Я думаю это один из самых больших недостатков Скалы. Правильный подход - ломать практики Java поскольку они плохо ложаться на функциональное и "легковесное" программирование. А Скала позволяет писать Жава код, Куча скалистов - это бывшие жависты, продолжающие писать свою Жава лапшу. В итоге - все библиотеки и экосистема языка забита низкокачественными проектами в стиле Жава. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:48 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Прежде всего, зачем вам читать эту простыню: я прогал 8 лет на джаве, я сижу 3 года на скале и возвращаться не собираюсь. Это как возвращаться на паскаль с С++. говоря субъективно, на scala надо писать, т.к. я не знаю ни одного человека, который вернулся бы обратно на java после хотя бы полугода разработки. говоря объективно: - scala как процедурно-объектный язык мощнее джавы по дизайну. В ней удобнее использовать лямбды, она обладает намного более мощным аналогом switch (pattern matching), её коллекции изначально заточены под операции, которые в джаве доступны только через стримы или внешнюю либу типа гуавы, в ней более гибкие упрощающие инкапсуляцию области видимости и т.д. и т.п. - scala/sbt как среда сборки пропагандирует современный подход к разработке с автоматической рекомипляцией/быстрым рестартом приложения. Идеологию Play framework следовало бы почитать всем разработчикам для JVM. - scala как технология представляет собой идеологию и набор библиотек для разработки эффективного асинхронного кода. Scala future, Akka, Finagle. - scala как функциональный язык позволяет перетянуть больше парадигм ФП в промышленное применение. В основном это касается стандартных монад (Option, Future, Either) и их композиции. Продвинутые темы, такие как монадные трансформеры, свободные монады, абстрактные типы и типонезависимый код всё еще на стадии эксперимента - нет 100% уверенности, что это упрощает разработку, а не наоборот И минусы: - нормальных учебников для новичков просто нет. Все книжки, которые я видел, быстро закапываются в сложности, что отпугивает многих. - scala компилируется значительно медленнее, чем java. В ФП-проектах время компиляции становится сравнимым с С++. - 100% надежной поддержки в IDE пока нет. Ситуация похожа на С++ в начале века - простой код обрабатывался IDE хорошо, но шаблоны посложнее сводили с ума анализатор. - минус, он же плюс: отладчик в скале малополезен. Из-за обилия лямбд проще переписать код так, чтобы в нем гарантированно не было ошибок, чем ставить точки останова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2017, 23:51 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
HettПодытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? Кину 5 копеек. Языки программирования создают не боги и не небожители. А обычные инженеры (зачастую). Языки становятся на долгие десятилетия стандартом общения между программистом и имплементацией. Как следствие. Ошибки или недостатки которые заложил создатель мы тащим долгие годы. Почему Джеймс Гослинг не заложил в java парадигму беззнаковой арифметики. Ведь процессоры прекрасно это поддерживали? Почему в первых версиях не было типа enum, не было generics, и не было семантики строкового аргумента внутри switch? Почему API сразу не поддержал out.printf, а потребовалось несколько лет чтобы осознать что это реально практично и полезно? Почему строки нужно сравнивать только через equals() а не через более короткий binary operator? Почему нельзя перегрузить + для сложения матриц и векторов? В какой-такой концепции ООП записано что этого делать нельзя? И такой поток "почему" у меня - бесконечен. И с другой стороны. Мартин Одерский. Профессор. Да еще и специализируется на ЯЗЫКАХ. Этот человек знает всё о всех парадигмах. Он не стал размениваться на мелочи. Он заложил в Scala ВСЕ-ВСЕ языковые парадигмы которые только существуют. Серъезно! Там только чорта в ступе не хватает. И если вы однажды (с похмелья) вдруг решили создать свой язык или DSL или скриптик .. то замрите (!) на минуточку и вспомните что в Scala это уже есть! Натурально. Фундаментальные стратегии работы с коллекциями такие как map, flatMap, fold воплощены в scala в то время как в Java к ним только-только подходят и то без понимания сути а инструментально, как побочка от работы со Streams. В Scala можно постулировать не то что жалкое целое число или комплексное или вектор. Можно объявить "группы", "кольца" и прочие материи высокого порядка математики и далее унаследовать от них поведение. В Scala решена проблема ромбовидного наследования. Решена бротва! Вы всё спорите в топиках ООП? Так знайте! Она - формализована в Scala и результат детерминирован. Никакого UB! Scala - статически типизирована на уровне компиллятора. А это значит что мы получаем формальное доказательство правоты нашего алгоритма после компилляции целого леса шаблонов и функций. И это значит что никаких ошибок рантайма при кастинге не будет! Это - закон! А что может быть лучше для программиста чем закон который гарантирует что код - верный. И еще раз. В Scala есть всё! Если чего-то нет - то читайте внимательно. Я сейчас не говорю о практике или о статистике использования этого ЯП. Это отдельный вопрос. Но теоретический батл Java уже давно проиграла. Что может инженеришко Гослинг противопоставить профессору языковых наук Одерскому!? Это вам не хер собачий! Это академичский подход. Это - наука! А не дурацкие фреймворки с бинами. Мдя.... Я не имею ентерпрайзных проектов на Scala. И его пока не знаю так хорошо чтобы трабл-шутить ошибки. Но у меня достаточно сильно развито природное инженерное любопытство которое будет и будет двигать меня в сторону этого сложного и интересного языка. Вот такие вот 5 копеек. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 01:03 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
maytonHettПодытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? Кину 5 копеек. Языки программирования создают не боги и не небожители. А обычные инженеры (зачастую). Языки становятся на долгие десятилетия стандартом общения между программистом и имплементацией. Как следствие. Ошибки или недостатки которые заложил создатель мы тащим долгие годы. Почему Джеймс Гослинг не заложил в java парадигму беззнаковой арифметики. Ведь процессоры прекрасно это поддерживали? Почему в первых версиях не было типа enum, не было generics, и не было семантики строкового аргумента внутри switch? Почему API сразу не поддержал out.printf, а потребовалось несколько лет чтобы осознать что это реально практично и полезно? Почему строки нужно сравнивать только через equals() а не через более короткий binary operator? Почему нельзя перегрузить + для сложения матриц и векторов? В какой-такой концепции ООП записано что этого делать нельзя? И такой поток "почему" у меня - бесконечен. И с другой стороны. Мартин Одерский. Профессор. Да еще и специализируется на ЯЗЫКАХ. Этот человек знает всё о всех парадигмах. Он не стал размениваться на мелочи. Он заложил в Scala ВСЕ-ВСЕ языковые парадигмы которые только существуют. Серъезно! Там только чорта в ступе не хватает. И если вы однажды (с похмелья) вдруг решили создать свой язык или DSL или скриптик .. то замрите (!) на минуточку и вспомните что в Scala это уже есть! Натурально. Фундаментальные стратегии работы с коллекциями такие как map, flatMap, fold воплощены в scala в то время как в Java к ним только-только подходят и то без понимания сути а инструментально, как побочка от работы со Streams. В Scala можно постулировать не то что жалкое целое число или комплексное или вектор. Можно объявить "группы", "кольца" и прочие материи высокого порядка математики и далее унаследовать от них поведение. В Scala решена проблема ромбовидного наследования. Решена бротва! Вы всё спорите в топиках ООП? Так знайте! Она - формализована в Scala и результат детерминирован. Никакого UB! Scala - статически типизирована на уровне компиллятора. А это значит что мы получаем формальное доказательство правоты нашего алгоритма после компилляции целого леса шаблонов и функций. И это значит что никаких ошибок рантайма при кастинге не будет! Это - закон! А что может быть лучше для программиста чем закон который гарантирует что код - верный. И еще раз. В Scala есть всё! Если чего-то нет - то читайте внимательно. Я сейчас не говорю о практике или о статистике использования этого ЯП. Это отдельный вопрос. Но теоретический батл Java уже давно проиграла. Что может инженеришко Гослинг противопоставить профессору языковых наук Одерскому!? Это вам не хер собачий! Это академичский подход. Это - наука! А не дурацкие фреймворки с бинами. Мдя.... Я не имею ентерпрайзных проектов на Scala. И его пока не знаю так хорошо чтобы трабл-шутить ошибки. Но у меня достаточно сильно развито природное инженерное любопытство которое будет и будет двигать меня в сторону этого сложного и интересного языка. Вот такие вот 5 копеек. Спасибо за внимание. Взвился бывший алкоголик, Матершинник и крамольник, Надо выпить треугольник, На троих его даёшь. Разошёлся, так и сыпет, Треугольник будет выпит, Будь он параллелепипед, Будь он круг, едрёна вошь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 05:20 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
scfИ минусы: - нормальных учебников для новичков просто нет. Все книжки, которые я видел, быстро закапываются в сложности, что отпугивает многих. - scala компилируется значительно медленнее, чем java. В ФП-проектах время компиляции становится сравнимым с С++. - 100% надежной поддержки в IDE пока нет. Ситуация похожа на С++ в начале века - простой код обрабатывался IDE хорошо, но шаблоны посложнее сводили с ума анализатор. - минус, он же плюс: отладчик в скале малополезен. Из-за обилия лямбд проще переписать код так, чтобы в нем гарантированно не было ошибок, чем ставить точки останова. это очень весомые минусы для промышленной разработки. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 11:52 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Это правда. Под Scala пока нет вменяемого учебника. Тоесть нет дидактического материала подобного тому что пишет Шилдт, Хорстман. Нет наработанных практик code-review. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 13:14 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
maytonТоесть нет дидактического материала подобного тому что пишет Шилдт, Хорстман. . Кей Хорстман "Скала для нетерпеливых" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 14:16 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
maytonЭто правда. Под Scala пока нет вменяемого учебника. Тоесть нет дидактического материала подобного тому что пишет Шилдт, Хорстман. Нет наработанных практик code-review. Т.е. нету закостенелой единственно верной непогрешимой точки зрения, известной как "лучшие практики". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 14:30 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
переход на версию 2.12 сломал нафиг проект, написанный под 2.11.7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 15:49 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ponuchпереход на версию 2.12 сломал нафиг проект, написанный под 2.11.7 Интересно, вы разобрались, что конкретно поломалось? Бинарную совместимость на уровне библиотек никто не обещал, например... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 21:20 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВУ scala мощней система типов, больше уровень абстракции. Можно писать более короткие программы, но и порог вхождения больше.Отлично, немного экстраполируем -> нужен бесконечно сложный абстрактный язык, но и программы на нем писать будет не надо! Ява взлетела по двум причинам (причем взлетела именно в той области что есть): - достаточно простой и детерминированный в написании и поддержке (когда определились со стеком) - достаточно кроссплатформенный (а времена ее создания были как раз самые неопределенные) Переплюнуть Кобол №2 будет сложно. Хоть скале, хоть чему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 21:55 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
dimonz80maytonТоесть нет дидактического материала подобного тому что пишет Шилдт, Хорстман. . Кей Хорстман "Скала для нетерпеливых" Дада. Это моя настольная книга. Но она не годится в качестве учебника тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2017, 22:09 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
dimonz80maytonТоесть нет дидактического материала подобного тому что пишет Шилдт, Хорстман. . Кей Хорстман "Скала для нетерпеливых" Скорее нет книги аналогичной Эффективная Java от Блоха. С best practice и стандартизированными подходами к решению задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2017, 16:21 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
maytonЭтот человек знает всё о всех парадигмах. Он не стал размениваться на мелочи. Он заложил в Scala ВСЕ-ВСЕ языковые парадигмы которые только существуют. Серъезно! Там только чорта в ступе не хватает. И это весьма плохо. Поскольку вынуждает тратить на освоение языка куда больше сил и времени нежели реально надо. Мастодонты реализующие все и вся регулярно появляются и проваливаются. Например, был такой язык PL/I. Вчистую проигравший С и Pascal. Почему? Было очень мало программистов освоивших его полностью. Аналогичная ситуация с противостоянием С++ и Delphi в коммерческом секторе, С vs C++ в написании драйверов. Ну неохота тратить время на тысячи бесполезных тонкостей. В последнем случае формально используются компилятор С++, но реально пишут используя лишь некоторые расширения к С. Называть Гослинга инженеришкой глупо. Гослинг сознательно урезал язык и большое ему за это спасибо. Хотя, если бы Java была бы разжиревшим слоном, то она бы не пришла к языку № 1 в мире. Он взял концепции оправдавшие себя и выкинул все что без особой надобности. Ну что ж, академические языки потому и не находят применения в коммерческом секторе, что их мощь чаще вынуждает тратить силы впустую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 09:23 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
quot Hett]Вот вчера не мог уснуть и решил почитать про эту Scala. Просмотрел несколько разных статей на тему "Почему скала в овер100500 раз удобнее чем ява" и, честно говоря, так и не понял. Ну как бы Java обскакать по удобству очень несложно, язык крайне неудобный. Одна невстроенность в язык BigDecimal уже много стоит. Это для языка, который используется для бизнес-приложений! - Ну можно какие-то моменты более кратко выразить в коде, но это какой-то сомнительный плюс. это уже немало! Если тебе это не важно, почему на ассемблере не пишешь? - Функциональное программирование - действительно ли оно нужно?.. почему бы и нет? например, оно позволяет автоматически распараллеливать выполнение программы. Подытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? ты непрофессионал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:02 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
[quot Blazkowicz]ФП реально нужно. Благодаря лямбдам решение многих моих насущных задач упростилось в разы. Ну, лямбды - это еще далеко не все ФП... . Для бизнеса актуальна и проблема кадров. Порог входа в язык ещё выше. А рынок и так голодает от недостатка квалифицированных разрабов. "еще выше"? Выше чего, нулевого порога в Java? Он просто какой-то есть, ТС тому свидетель... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:07 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
SiemarglЕвгенийВУ scala мощней система типов, больше уровень абстракции. Можно писать более короткие программы, но и порог вхождения больше.Отлично, немного экстраполируем -> нужен бесконечно сложный абстрактный язык, но и программы на нем писать будет не надо! В конечном итоге да! Но сумма интеллекта величина постоянная, а количество населения постоянно растет. Был например derive , написанный на диалекте lisp, который помещался на дискетку 1,2 дюйма и который позволял работать со всей известной мне математикой! MathCad и Maple сильно отставали по возможностям. SiemarglЯва взлетела по двум причинам (причем взлетела именно в той области что есть): - достаточно простой и детерминированный в написании и поддержке (когда определились со стеком) - достаточно кроссплатформенный (а времена ее создания были как раз самые неопределенные) Переплюнуть Кобол №2 будет сложно. Хоть скале, хоть чему. Ява еще долго будет в тренде, ибо формоклепательство и тривиальная кодописанина пользуется спросом. Такие языки, как scala предназначены для решения серьезных задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:15 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
MasterZivэто уже немало! Если тебе это не важно, почему на ассемблере не пишешь? Краткость - не всегда сестра таланта. MasterZivпочему бы и нет? например, оно позволяет автоматически распараллеливать выполнение программы. Мой вопрос скорее подразумевал парадигму ФП в чистом виде, коим обсуждаемый язык преподносится. MasterZivты непрофессионал. Даже и не собирался себе этот титул присуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:21 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
HettМой вопрос скорее подразумевал парадигму ФП в чистом виде, коим обсуждаемый язык преподносится. И чтобы не цеплялись к словам, поправлюсь, имел в виду чистым от процедурного стиля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:24 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
MasterZivпочему бы и нет? например, оно позволяет автоматически распараллеливать выполнение программы. Сомнительное утверждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 11:58 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
https://ru.coursera.org/learn/progfun1 есть такой курс - его нужно пройти и решить для себя нужна ли скала или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2017, 11:17 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВMasterZivпочему бы и нет? например, оно позволяет автоматически распараллеливать выполнение программы. Сомнительное утверждение. Erlang https://ru.wikipedia.org/wiki/Erlang#.D0.9F.D0.B0.D1.80.D0.B0.D0.BB.D0.BB.D0.B5.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D0.B2.D1.8B.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2017, 13:26 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Часто вижу люди упоминают что язык Х не такой мощный как Скала. Инересно увидеть пример кода на Скале демонстрирующий это, желательно короткий который демонстрирует это. Но реальный, не просто какой-то абстрактный функтор или монада, а привязанное к чему-то совершенно реальному и практичному, т.е. этот пример должен реально использоваться и использоватся часто и приностиь значительную пользу . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2017, 23:28 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
private, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А теперь прошу - то же самое на джаве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 08:22 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
privateЧасто вижу люди упоминают что язык Х не такой мощный как Скала. Инересно увидеть пример кода на Скале демонстрирующий это, желательно короткий который демонстрирует это. Но реальный, не просто какой-то абстрактный функтор или монада, а привязанное к чему-то совершенно реальному и практичному, т.е. этот пример должен реально использоваться и использоватся часто и приностиь значительную пользу . в java8 такой фокус тоже сработает, но тем не менее, смотрите как изящно делаем HashMap Код: sql 1. 2. или вот, наглядная обработка условий с match. код читаемый, легко правится Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 10:17 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Буквально из вчерашнего: Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 11:42 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Щиче...Например, был такой язык PL/I. Вчистую проигравший С и Pascal... Спорное утверждение PL/I AFAIK был заточен на IBM 360 ее продолжение и клоны C и Pascal'у проиграть не мог, когда я в начале 90-х сидел на ЕС ЭВМ там ни C, ни Pascal не было. Как можно проиграть тому, кого нет? Ну и синтаксис был заточен под IBM 360. Последовательные файлы, индексно организованные и так далее. Фиг такой язык на другую ОС перенесешь. Где файл это файл и все ))) без всяких выпендрежей с прямым доступом к нужным цилиндрам диска ))) IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 12:09 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
privateЧасто вижу люди упоминают что язык Х не такой мощный как Скала. Инересно увидеть пример кода на Скале демонстрирующий это, желательно короткий который демонстрирует это. Но реальный, не просто какой-то абстрактный функтор или монада, а привязанное к чему-то совершенно реальному и практичному, т.е. этот пример должен реально использоваться и использоватся часто и приностиь значительную пользу . Мы не сможем определиться с критериями "значительной пользы". У нас нет возможности обсуждать серъезные SR в рамках sql.ru. Во первых никто их не будет читать и во вторых не секюрно и т.п. Но меня-бы вполне устроили обычные кейсы рефакторинга, когда есть какой-то ящик с входом и выходом, написанный на Java/C++/C#/Delphi. Желательно не более чем на 100 строк. И мы (все) внимательно на него смотрим. Думаем. И применяем к нему рефакторинги которые - сокращают его объем кода. - делают его более maintainable - делают его более Human-readable Далее мы пытаемся реализовать этот черный ящик на Scala и смотрим какой профит мы с этого получаем. Если ничего не получаем - то считаем что в данном кейсе язык X такой-же мощный как Scala или Scala не дает никаких преимуществ. P.S. В топике по трассировкой луча я сделал наивную попытку просто перевести С++ в Scala но получил (пока) ошибку рендеринга и к сожалению ее не исправил т.к не хватает времени разобраться. В топике где Atum играл с Stream-s и решал искусственные задачки я предложил решить те-же задачки на Scala но к сожалению не получил поддержки аудитории да и самому мне тогда не было времени их решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 13:18 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
авторА теперь прошу - то же самое на джаве.А я не говорил что приведу ответ на Java :), ниже пример на TypeScript (я использовал интерфейсы, но с классами тоже можно, и да, он тоже сделает автокастинг и проверку корректных значений в свитче и если мы забудем ретурн сделать тоже подскажет). Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 20:53 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
авторval profiles = profileService.findByParameters(Parameters(email = '%foo%')) val profilesById = profiles.map(p => p.id -> p).toMap Аналогично на тайпскрипте. Чуть длиннее, но в общем терпимо. Код: javascript 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 21:08 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
автор Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. Опять на тайп-скрипте (он перехватит все нулл поинтеры и заставит сдлать проверку на нул если ее например пропустить). На мой взгляд эта версия проще, короче и понятней. Код: javascript 1. 2. 3. 4. 5. Но, можно сделать еще лучше, так как это делается например в Рельсах, нужно прокетировать апи сервиса так чтобы он сам все проверял. В коде ниже `one()` выкинет ошибку если найдено 0 или > 1. Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 21:20 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
авторcase class JsResource(path: Path, dependencies: List[JsResource]) //файл и его зависимости, формируют дерево //получить множество всех зависимостей из дерева def flatDependencies(root: JsResource): Set[Path] = root.dependencies.flatMap(flatDependencies).toSet + root.path Хммм, а из-за циркулярных зависимостей в бесконечный цикл не войдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 21:40 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
private, тайпскрипт - вещь хорошая, но это надстройка над яваскриптом с необязательными типами. Так сказать, другая весовая категория, и до роли промышленного языка больших систем он еще не дорос. Войдет, но, по условию задачи, это дерево, а не граф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 21:57 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Версия на тайпскрипт. Немного нечитабельно, основная проблема - отсутствие метода `flatten` в жаваскрипте... Код: javascript 1. 2. 3. 4. 5. С флаттен было-бы читабельней. Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 22:19 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
И я забыл в Set обернуть... Последний пример подкачал..., уступает скале из-за отсутствия хорошей стандартной библиотеке в жаваскрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2017, 22:27 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Интересная позиция конечно:) по типу суровых русских дровосеков с японской бензопилой Ну например сделай на typescript такое - Код: 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. А теперь как им пользоваться - Код: 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. Да, я не скажу что такое надо сплошь и рядом, и сама концепция path-dependent types трудна, но если использовать дозированно и к месту, то можно прилично помочь компилятору. Жду аналог на TS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 00:50 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Как раз наоборот. Я продемонстрировал что "Японская Бензопила" (обычный язык, тайпскрипт) неплохо справиляется с предложенными выше практическими и часто встречающимися задачами. А ты предложил перепелить рельс - привел пример абстрактного, редко используемого кода. Я же явно упоминул что желательно рассматривать """"ример должен реально использоваться и использоватся часто и приностиь значительную пользу""". Какой смысл рассматривать фичу языка которая используется редко и приносит незначительную пользу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 13:59 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
По приведенному коду - нужно определится - либо он частно используется в проектах на скале и приносит значимю пользу (и желательно продемонстрировать реальным кодом - как именно он эту пользу приносит, как в примерах выше, там явно видно что это обычный рабочий код, рендеринг обьектов, работа с базой данных и т.п.). Либо отбросить его как несущественный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 14:04 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
maytonHettПодытожив все прочитанное вчера (а мыслей было на много больше чем я тут написал, что-то уж из головы все вылетело) - пришел к выводу, что это скорее инструмент фанатиков, помешанных на "идеальном коде", которые больше времени теоретизируют. Что скажете? Кину 5 копеек. Языки программирования создают не боги и не небожители. А обычные инженеры (зачастую). Языки становятся на долгие десятилетия стандартом общения между программистом и имплементацией. Как следствие. Ошибки или недостатки которые заложил создатель мы тащим долгие годы. Почему Джеймс Гослинг не заложил в java парадигму беззнаковой арифметики. Ведь процессоры прекрасно это поддерживали? Почему в первых версиях не было типа enum, не было generics, и не было семантики строкового аргумента внутри switch? Почему API сразу не поддержал out.printf, а потребовалось несколько лет чтобы осознать что это реально практично и полезно? Почему строки нужно сравнивать только через equals() а не через более короткий binary operator? Почему нельзя перегрузить + для сложения матриц и векторов? В какой-такой концепции ООП записано что этого делать нельзя? И такой поток "почему" у меня - бесконечен. И с другой стороны. Мартин Одерский. Профессор. Да еще и специализируется на ЯЗЫКАХ. Этот человек знает всё о всех парадигмах. Он не стал размениваться на мелочи. Он заложил в Scala ВСЕ-ВСЕ языковые парадигмы которые только существуют. Серъезно! Там только чорта в ступе не хватает. И если вы однажды (с похмелья) вдруг решили создать свой язык или DSL или скриптик .. то замрите (!) на минуточку и вспомните что в Scala это уже есть! Натурально. Фундаментальные стратегии работы с коллекциями такие как map, flatMap, fold воплощены в scala в то время как в Java к ним только-только подходят и то без понимания сути а инструментально, как побочка от работы со Streams. В Scala можно постулировать не то что жалкое целое число или комплексное или вектор. Можно объявить "группы", "кольца" и прочие материи высокого порядка математики и далее унаследовать от них поведение. В Scala решена проблема ромбовидного наследования. Решена бротва! Вы всё спорите в топиках ООП? Так знайте! Она - формализована в Scala и результат детерминирован. Никакого UB! Scala - статически типизирована на уровне компиллятора. А это значит что мы получаем формальное доказательство правоты нашего алгоритма после компилляции целого леса шаблонов и функций. И это значит что никаких ошибок рантайма при кастинге не будет! Это - закон! А что может быть лучше для программиста чем закон который гарантирует что код - верный. И еще раз. В Scala есть всё! Если чего-то нет - то читайте внимательно. Я сейчас не говорю о практике или о статистике использования этого ЯП. Это отдельный вопрос. Но теоретический батл Java уже давно проиграла. Что может инженеришко Гослинг противопоставить профессору языковых наук Одерскому!? Это вам не хер собачий! Это академичский подход. Это - наука! А не дурацкие фреймворки с бинами. Мдя.... Я не имею ентерпрайзных проектов на Scala. И его пока не знаю так хорошо чтобы трабл-шутить ошибки. Но у меня достаточно сильно развито природное инженерное любопытство которое будет и будет двигать меня в сторону этого сложного и интересного языка. Вот такие вот 5 копеек. Спасибо за внимание. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:09 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
privateЧасто вижу люди упоминают что язык Х не такой мощный как Скала. Инересно увидеть пример кода на Скале демонстрирующий это, желательно короткий который демонстрирует это. Но реальный, не просто какой-то абстрактный функтор или монада, а привязанное к чему-то совершенно реальному и практичному, т.е. этот пример должен реально использоваться и использоватся часто и приностиь значительную пользу . Вся научная разработка компании huawei идет на scala ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:11 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Atum1privateЧасто вижу люди упоминают что язык Х не такой мощный как Скала. Инересно увидеть пример кода на Скале демонстрирующий это, желательно короткий который демонстрирует это. Но реальный, не просто какой-то абстрактный функтор или монада, а привязанное к чему-то совершенно реальному и практичному, т.е. этот пример должен реально использоваться и использоватся часто и приностиь значительную пользу . Вся научная разработка компании huawei идет на scala Из того что уже написано и работает на Scala - можно отметить фреймвоки Akka и Kafka. Этот пример кода не очень короткий и я-бы даже сказал весьма длинный. Но можно брать из него фрагменты и думать чё там и как. Я его код не смотрел но думаю что он - весьма достоен своего выбора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:29 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВзабыл никНу например сделай на typescript такое - https://github.com/Reactive-Extensions/RxJS Это совсем не о том.. Observables - лишь пример. Идея в том, что многие потенциальные ошибки в скале можно отличить уже на этапе компиляции (а не в логах на продуктиве, как это обычно бывает) Scala имеет более строгую типизацию, чем Java, C# или Typescript. Говорят, что есть ещё более строгие языки со странными названиями - Haskell, Idris, Agda... Но я вот с ними не сталкивался. Ну и работодатели, видимо, тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 22:12 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Диез Scala имеет более строгую типизацию, чем Java, C# или Typescript. Scala имеет более мощную систему типов, чем Java, C#. Typescript - немного в стороне, хотя в C# есть dynamic... То, что показано в примере - примеси, на C# легко реализуются с помощью интерфейсов и методов расширения, которые там появились 100500 лет назад. В 7,0 появился pattern matching, но он сильно уступает scala и f#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 11:09 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Коллеги, система типов Scala - это вещь хорошая, но не прикладная и уж точно не то, за все мы так любим этот язык для разработки. Вот еще немного моего любимого: Код: java 1. 2. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 11:37 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
scf, Поправка ко второму примеру: Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 11:39 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
scf, И еще одна поправка ко второму примеру Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 12:05 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВДиезScala имеет более строгую типизацию, чем Java, C# или Typescript. Scala имеет более мощную систему типов, чем Java, C#. Typescript - немного в стороне, хотя в C# есть dynamic... Не вижу противоречий. Если вы дадите формальное определение понятий "сила типизации" и "мощность системы типов" - можно будет подискутировать. ЕвгенийВТо, что показано в примере - примеси, на C# легко реализуются с помощью интерфейсов и методов расширения, которые там появились 100500 лет назад. В 7,0 появился pattern matching, но он сильно уступает scala и f#. Примеси - это не так интересно. Автор поста специально сделал сделал акцент на концепции path-dependent types. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 13:46 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
авторВся научная разработка компании huawei идет на scala Из того что уже написано и работает на Scala - можно отметить фреймвоки Akka и Kafka. Все это классно, но можно привести много примеров где компания Х успешно использует технологию Y. Это хороший дополнительный бонус, но он не демонстрирует преимушества языка в наглядном виде. авторИдея в том, что многие потенциальные ошибки в скале можно отличить уже на этапе компиляции Опять абстрактные утверждения. Про тот код с обсервером - он относится не к категории "многие" а к "редкие". Сказать что скала позволяет отследить потенциальные ошибки в каких-то редких случаях - да, судя по тому примеру можно так сказать. Но вот что "многие ошибки" пока такого примера не было. авторScala имеет более строгую типизацию Опять абстрактные утверждения. авторScala имеет более мощную систему типов, чем Java, C#. Typescript - немного в стороне, хотя в C# есть dynamic... Опять абстрактные утверждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 17:50 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
автор Код: javascript 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. Вроде так-же? (я пропустил типы, это обычный жаваскрипт, но в тайпскрипте будет также) Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 17:55 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 18:20 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
private, Про адекватность сравнения типизированного языка с нетипизированным я уже писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 06:30 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
SupplierStreram - хороший пример - как написать такое без ФП я ХЗ .... Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 09:07 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Atum1, то же на скале: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 11:19 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
авторПро адекватность сравнения типизированного языка с нетипизированным я уже писал. Типизированная версия будет та-же, вариант с ТайпСркиптом Код: javascript 1. 2. 3. 4. 5. 6. 7. И оригинальный код на скале ниже - сложнее и запутаннее. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 15:07 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Ну и вообще - в том коде изначально ошибка, это как-раз пример как не нужно делать. Что на скале что на других языках таких вещей следует избегать, а не показывать их как достоинства языка Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 15:10 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
privateНу и вообще - в том коде изначально ошибка, это как-раз пример как не нужно делать. Что на скале что на других языках таких вещей следует избегать, а не показывать их как достоинства языка Код: javascript 1. 2. 3. Любопытно, в чем ошибка и каких вещей избегать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 20:37 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Нужно стараться избегать использования нулл или опшенал. Они должны как-то обрабатываться в другом месте а не перемешиваться с логикой алгоритма - суммирования в данном случае. Алгоритм должен работать с числами, а проблемы нулей/опшенелов решаться в другом месте. Я знаю что есть мнение что хорошо универсально все обрабатывать - но я думаю это не правильно, простой алгоритм суммирования превращается в размазанную лапшу из опшенолов как в примере выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2017, 14:07 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
privateНужно стараться избегать использования нулл или опшенал. Они должны как-то обрабатываться в другом месте а не перемешиваться с логикой алгоритма - суммирования в данном случае. Алгоритм должен работать с числами, а проблемы нулей/опшенелов решаться в другом месте. Я знаю что есть мнение что хорошо универсально все обрабатывать - но я думаю это не правильно, простой алгоритм суммирования превращается в размазанную лапшу из опшенолов как в примере выше. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:08 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
private Я знаю что есть мнение что хорошо универсально все обрабатывать - но я думаю это не правильно, простой алгоритм суммирования превращается в размазанную лапшу из опшенолов как в примере выше. +1 Толи дело потрясающий C#! Код: c# 1. 2. 3. 4. P.S. Не надо в ФП использовать циклы и переменные! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:58 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, это если бизнес-логика только одна - математика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:07 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Petro123ЕвгенийВ, это если бизнес-логика только одна - математика. Да нифига подобного, просто надо мыслить по иному. Вот например чистый web, правда не scala. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:22 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ Вот например чистый web, совмещение разметки с кодом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:33 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Судя по этому топику, главным критерием функционального программирования для джавистов выступает поддержка языком лямбда функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:39 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
FishHookСудя по этому топику, главным критерием функционального программирования для джавистов выступает поддержка языком лямбда функций. В Java не реализован например вывод типов и функции высших порядков сделаны через одно место, отсюда, от незнания и такие помыслы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:28 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ... Не надо в ФП использовать циклы и переменные! Из всех фП языков, сталкивался только с APL. Было это еще в старших классах школы Там циклов не было, как понятия. Просто не было. Про переменные не помню ))) были или нет ))) вроде были. Глубинной крутости лямбд не понимаю ((( На мой взгляд, синтаксический сахар над обычными callback'ами. При этом в Java про exception'ы полностью забыли. Что в ряде случаев, превращает код с лямбдами в нечто монстрообразное, когда приходится try...catch... куда надо и не надо впихивать. IMHO & AFAIK Стримы выглядят вроде красиво, но опять таки, если не брать в голову вопросы производительности. А в этом случае, код со стримами значительно хуже читается. Глядя на код, нифига не понятно, к какой же реально последовательности действий он приводит. Начинаешь смотреть отладчиком и временами волосы на голове становятся дыбом. Старый код на форах и интераторах, занимает не намного больше места (не намного сложнее пишется), но зато интерпретируется значительно более однозначно. Все таки AFAIK в общем времени разработки, собственно набор кода - не больше 10% от времени. Т.ч. компактность кода выраженная в кол-ве символов, это конечно хорошо, но не в ущерб простоте восприятия. Сталкивался с кодом на Cobol'е. Даже потребности взять книжку или скачать документацию из И-нет'а не появлялось. Просто смотришь на код и понимаешь, что же он делает. Глядя на код в данной теме, люди не знакомые с вопросом, фиг что поймут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 13:12 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВВ Java не реализован например вывод типов авторJava EE — Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия. поэтому "строгая типизация". Мало ли что там компилятор выдаст)). А у нас атомный реактор)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 13:32 |
|
||
|
Scala
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev Глубинной крутости лямбд не понимаю ((( На мой взгляд, синтаксический сахар над обычными callback'ами. За счет callback реализованы функции высших порядков. Т. е. функция может быть аргументом и результатом другой функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2122898]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 364ms |

| 0 / 0 |
