Этого треда уже нет.
Это копия, сохраненная 21 мая 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
16 Кб, 1280x720
Scala #767431 В конец треда | Веб
Очередной тред про самый лучший язык для JVM.

Лучшая книга по Скале: http://www.ozon.ru/context/detail/id/31921731/

Учебник по Скале на русском: http://twitter.github.io/scala_school/ru/index.html

Второй учебник по Скале на русском: http://twitter.github.io/effectivescala/index-ru.html

Курс по fp на Скале для слоупоков: https://www.coursera.org/course/progfun

Список годноты: https://github.com/lauris/awesome-scala

Скала за пределами JVM: https://github.com/scala-native/scala-native

Два недавних форка компилятора, один от тайплевела и второй от баттхертнутого:
https://github.com/typelevel/scala (https://github.com/typelevel/scala/wiki/Differences)
https://github.com/paulp/policy
#2 #767474

>Лучшая книга по Скале: http://www.ozon.ru/context/detail/id/31921731/


Лучшая книга для жавадаунов

>Учебник по Скале на русском: http://twitter.github.io/scala_school/ru/index.html


Хуевый учебник, https://github.com/anton-k/ru-neophyte-guide-to-scala этот лучше, хотя хуй его знает.
3738 Кб, Webm
#3 #767503
>>767431 (OP)
Наскальные балбесы, поясняйте чем Скала лучше Котлина как академический язык, и лучше Джавы как язык практический для бизнеса и тырпрайза.
#4 #767524
>>767503
Котлин - кастрированное хипстерское говно для школьников. Даже чистая жава лучше.
767550767612
#5 #767550
>>767524
Мал по малу вкусности находятся. Например

inline fun Logger.debug(s: () -> String) {
if (isDebugEnabled) debug(s.invoke())
}

Метод расширения (который инлайнится кстати), принимающий лямбду, позволяет писать:

logger.debug { "Customer + " customer.getId() + " has just ordered " + order.expensiveComputation() }

При этом логирование будет выполняться, только если уровень логгера подходящий и аргументы вычислятся лениво.
767583
#6 #767583
>>767503
Тем что имеет больше возможностей, и имеет в 999999999999 раз более обширную инфраструктуру чем жидбрейнское поделие?

>>767550
Но ведь это синтаксис из скалы, да и @inline там есть. А ещё есть -Xelide-below который может вырезать ассерты и логгинг при конпеляции.
767588
#7 #767588
>>767583
Ну синтаксис, вроде, совсем не решающий аргумент, конечно если это не пиздоглазие как у Раста.

В скале пугает, когда ебанутые, которым фирма не разрешила писать на хаскеле, тащат скалаз и творят свои мутные дела. Т.е. им вроде дали неплохой язык, но они умудряются подгадить, не используя идиоматичные решения, и не подавляя маня-позывы.
767591767596
#8 #767591
>>767588

>Ну синтаксис, вроде, совсем не решающий аргумент


Ну, в смысле, не синтаксис, а конкретно эта конструкция
def huita(s: ⇒ String)
huita { ... }

А ещё PartialFunction так же передаётся.
#9 #767593
На моем недобуке хелловорлд компилировался три минуты, нахуй-нахуй.
767596767604
#10 #767596
>>767588

>Ну синтаксис, вроде, совсем не решающий аргумент, конечно если это не пиздоглазие как у Раста.


1) Удобство любого синтаксиса – дело привычки, я так же плевался с раста первые пол года знакомства с ним;
2) У скалы он куда "бохаче", в плохом смысле.

>>767593
Потому что компилятор скалы написан на скале)) ну вы понели)))
767598767604
#11 #767598
>>767596

>компилятор скалы написан на скале)) ну вы понели)))


Ты не поверишь, но компилятор хачкеля написан на хачкеле, а компилятор C на C (хотя давно уже на крестах :(), но ни один из них не тупит над факториалом столько времени.
767599
#12 #767599
>>767598

>но ни один из них не тупит


Про то и шутейка была, дурашка.
767602
#13 #767602
>>767599
Типа, у скалы не только компилятор тормозной?
#14 #767604
>>767593
Одна история охуительнее другой.

>>767596
Нет, манька, вот поэтому
https://wiki.scala-lang.org/display/SIW/Overview+of+Compiler+Phases
767606767611
#15 #767606
>>767604

>Одна история охуительнее другой.


Да, это так, я спиздел про три минуты. На самом деле, я просто не дождался окончания компиляции.
767610
#16 #767610
>>767606
Олсо, когда запускал репл, уже начал думать, что это какой-то баг в жвм или еще где, так как запускался он минуты две, минимум (потом я пошел курить, вернулся и о, чудо!). Последующие запуски, даже на прогретой жвм, были нихуя не быстрее.
#17 #767611
>>767604

>Нет, манька, вот поэтому


Теперь поясни чому хаскель компилируется быстрее - может у него компилятор малофункциональнее?
#18 #767612
>>767503
Возьми да почитай вводные на оффсайтах котлина и скалы, там даже макака поймет что к чему, аноны щас тебе как обычно тонны предвзятой хуиты понастрочат(хуле, от явы навык хорошо развит).

>>767524
Сразу видно маняхейтера. Котлин это просто улучшеная жава, добавляет кучу синтаксического сахара, который на ява ждут уже 20 лет и который реально помогает, спасая от простынок текста.
767691
#19 #767691
>>767612

>предвзятой хуиты понастрочат


у тебя неплохо получилось, маня
#20 #767857
>>767503

> чем Скала лучше Котлина как академический язык


Думаю, тебе парни из JB с вертушки бы пояснили, что Котлин - не академический язык.

> и лучше Джавы как язык практический для бизнеса и тырпрайза.


Тем, что делает код короче и читабельнее и реализует разнообразные бест практисес непосредственно в языке.
#21 #767863
Скала правда такая охуенная?
767914
#22 #767914
>>767863
Скала такая охуенная, что я не могу на ней писать. Только заглядываю в документацию, как обканчиваю монитор, иду курить, а затем без сил падаю спать.
768327768338
#23 #768327
>>767914
Внезапно поддвачну, сейм шит.
#24 #768338
>>767914
Этот форс такой охуенный, что я не могу его не форсить. Только заглядываю в сосач, как обканчиваю монитор, иду форсить форс, а затем без сил падаю спать.
#25 #768429
Нахуй ее вообще сделали? ФП блджад. Все равно никто за пределами бложеков на Скале в функциональном стиле не пишет. Потому, что если взяться за ФП всерьез, то код сразу начнет обрастать такими ебанутостями, что ударившийся во все тяжкие функциональщины скалолаз очень сильно об этом пожалеет. В общем-то нет языка, который может "запарить" мозг сильнее, чем скала. Скала имеет мозговыносящую систему типов, не имеющую аналогов в том смысле, что нет другого языка, в котором ООП было бы адекватно статически типизировано. Это крайне сложная и амбициозная задача, буквально все остальные создатели ООЯ на каком-то этапе плюнули и решили "Статическая типизация — это сложно, ну его нахуй, лучше будем динамически кастить". Правда, весь этот околодинамический цирк с конями в скале остался "для совместимости" (и дополнительного выноса мозга). За что боролись?
#26 #768437
>>768429
ну если ты не осилил хуле тогда своё рыло здесь заставляешь кукарекать?

>Скала имеет мозговыносящую систему типов


не понял это как?

>что нет другого языка, в котором ООП было бы адекватно статически типизировано.


define адекватно, а ваще ето кек канешна

>околодинамический цирк с конями в скале остался "для совместимости"


это какой?
768442768443
#27 #768438
>>767503
котлин хуйня без задач
768442
#28 #768442
>>768438
Котлин хуйня и с задачами. Ceylon неплох, но не будет популярен все равно из-за инерции.

>>768437
Вот никто и не осилил. Кроме десятка ее разработчиков. http://yz.mit.edu/wp/true-scala-complexity/
768444768447772745
#29 #768443
>>768437
Я вообще удивляюсь, как подобным предыдущему анону позволено иметь своё мнение и голосовать в частности. Давно пора ввести интеллектуальный ценз на мыслеизъявление. IQ меньше 100? - вон из интернетов! В крайнем случае - анально огородить какой-то аналог двача где оним бы могли морозить на тему

>взяться за ФП всерьез

#30 #768444
>>768442

>Котлин хуйня и с задачами.


список задач, про покпок тюринк полнота можешь не кукарекать.

>Вот никто и не осилил


define осилил. ты понимаеш что ты даун?
#31 #768447
>>768442
Котлину может повезти на Андроиде, если Гугл сжалится и подмахнет. И если товарищи прекратят велосипедить с anko (там есть хорошие вещи, но многие пытаются заменить лишь одним красивым кодом то, что сейчас имеет отличную инструментальную поддержку).
772722
#32 #768449
Добавлю еще что типов с IQ больше 140 и проявляющих подозрительную творческую активность надо тоже в резервацию, там бы где они под чутким руководством адекватов могут двигать прогресс.

Пример того, что подобные субчики могут сделать в открытом поле (если не присматривать за ними):

>WTF is /:? Why do I need to consult a periodic table to make HTTP requests? http://www.flotsam.nl/dispatch-periodic-table.html

772674
#33 #772674
>>768449

>2016


>dispatch


>когда уже есть Akka HTTP

#34 #772722
>>768447

> anko (там есть хорошие вещи, но многие пытаются заменить лишь одним красивым кодом то, что сейчас имеет отличную инструментальную поддержку)


Можно пример таких вещей, имеющих отличную инструментальную поддержку?
#35 #772745
>>768442

>As of 2.9


>January 2012


Ясно, иди нахуй
799479
#36 #774795
чего вы делаете у себя в этих ДС на scala meetup?
774843776634
#37 #774843
>>774795
Обкуриваемся функторами и ябём друг друга в монады.
#38 #776494
ребят, кто в scala умеет, поясните пожалуйста, почему так происходит что запускают прогу в идее - норм выполняется всё. запускают с командной строки - вылетает туча ошибок ( на самом деле две: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
и java.lang.NullPointerException)
776500
#39 #776500
>>776494
недобавлены зависимости к проекту.
#40 #776634
>>774795

>ДС


>scala meetup


Ну охуеть, жаль я мамкин хекка борщехлёб
#41 #777420
Обмазываюсь сейчас курсом progfun на курсере, он конечно пиздец нереально скучный. Остальные курсы с этой специальности тоже подобные или там повеселее уже будет?
#42 #777701

> We are a big scala shop at Expedia and it's concerning that Martin is more interested in Dotty.



> Scala 2.12 is late, and not having easy java8 interoperability is becoming more and more of an issue.



> I love the language but it is becoming harder to recommend it for new things due to the ambiguous roadmap

#43 #784987
поясните, скалабоги, почему в вакансиях на скала требуя год-два опыта на этом языке сверху, как правило, требуют вдвое больше опыта на джаве? Вакансия то Скала-дев
785013
#44 #785013
>>784987
Наверное потому что глупо требовать 3-6 лет опыта на скале?
#45 #786553
>>777420
Параллельное программирование еще скучней + один из двух лекторов имеет максимально неприятный акцент
#46 #786672
>>777420

>он конечно пиздец нереально скучный


Я смотрю на 1.5, понижая до 1.25, когда перестаю понимать.
18 Кб, 500x375
#47 #789409
Небольшая дружелюбная конфочка про скалу на телеграмме.
Желающие пообщаться, велкам.
https://telegram.me/joinchat/BoA_agWB_Xh7Rm75eumPNw
791942793354
#48 #790155
>>777420
А я почитываю https://www.manning.com/books/functional-programming-in-scala
Пока ток до 4 главы дошел, но честно сделал все упражнения и очень даже годно!
#49 #791942
>>789409
Моар картиночек.
793100
58 Кб, 811x608
#50 #793100
#51 #793354
>>789409

Ссылка на конфу изменилась:

https://telegram.me/joinchat/BoA_aj9lle-bI9Id-jcE3A
76 Кб, 375x375
#52 #795076
Запилил иконку для Scala IDE, может быть, кому-нибудь пригодится.
798353
#53 #798343
Что-то пусто стало в треде, все в конфу переехали?
Расскажите, какой способ обработки ошибок вы предпочитаете? Исключения, Option или что-то еще?
798961
#54 #798353
>>795076
На растянутый анус только в плоском дизайне похоже.
#55 #798961
>>798343
Try (именно который с большой буквы), который контейнер
Можно Either, но это когда ты в месте ошибки знаешь что куда класть (Left И Right)
Я тащу Try и уже там где это по смыслу подходит его разворачиваю.
#56 #799342
Почему Scala native не взлетит?
799363
#57 #799363
>>799342
А почему должна?
#58 #799474
>>768429

> В общем-то нет языка, который может "запарить" мозг сильнее, чем скала.


Есть: С++
#59 #799479
>>772745
Вот тебе немного новостей из 2016: ваш Фюрер таки признал что Скала некорректна, переписывает её заново, но когда будет релиз - хуй знает.
804130805586805640
#60 #799483
>>799451

> ga


Это как /ga?
#61 #799517

>>799451


пеар анрилейтед параши
#62 #799649
>>768429
у меня на работе скала, мудак
#63 #803945
Loving #Scala but missing #AbstractSingletonProxyFactoryBean ? Try Spring-Scala!
https://github.com/spring-projects/spring-scala
#64 #803986
>>768429
Пример Go показывает, что люди готовы обрастать код ебанутыми фичами ради скорости и писать вообще без типов.
#65 #804130
>>799479
Вот когда будет релиз, тогда и начну учить вашу скакалку для биг даты, а пока на D посижу.
804205
#66 #804205
>>804130

>D


>BigData


/0
805588
#67 #805323
Я правильно понимаю, что всё фреймворки и библиотеки скалы можно использовать с джавой?
805325805333805758
#68 #805325
>>805323
и да и нет
#69 #805333
>>805323
зачем скала, если есть джулия?
805335805341
#70 #805335
>>805333
зачем джулия, если есть кложурь?
#71 #805341
>>805333
Это тот язык, в котором из-за религиозных соображений/фундаментальных законов запретительного характера разрабы не могут REPL запилить? См. (переопределение функций/типов здесь https://github.com/JuliaLang/julia/issues/6786 и далее по переоткрываемым задачам).

Спасибо, не надо
805344805586
#72 #805344
>>805341
Из новых языков-убийц, вспоминается похожий конфуз еще у раста, в котором разрабы не осилили TCO.
805359855838
#73 #805359
>>805344
Они байтики привыкли ебать а не разворачивать рекурсию, чо ты хочешь.
855838
#74 #805586
>>805341
Но твоя скакался всё равно соснула здесь:
>>799479
#75 #805588
>>804205
А для бигдаты по твоему пойдёт? У скалы вон с релизами проблемы. А кроме неё вроде больше ничего и нет.
805746805758
#76 #805640
>>799479
Что конпелятор скалы некорректен, если точнее
805758
#77 #805676
>>777420
Кинь ссылку на курс. Они там всё переделали и теперь старая работать перестала.
#78 #805746
>>805588

>А для бигдаты по твоему пойдёт?


джява
805763
#79 #805758
>>805588

>У скалы вон с релизами проблемы


Что это означает? Ты имеешь в виду что 2.12 еще не вышла? Ну так я тебе сообщу что например спарк до 2.0 по дефолту билдится под 2.10(!), после будет под 2.11. А когда он появится в дистрибутивах клаудеры, не говоря уже о хортонворкс, вообще не известно. Может осенью, а может и в следующем году.
>>805640

>Что конпелятор скалы некорректен, если точнее


Что это означает? Что значит корректный компилятор?
>>805323
Обычно нет, если либа не написана специально для интероперабельности с джавой. Очень легко проебать и использовать такую фичу скалы которую очень трудно выразить в джаве.
806191
#80 #805763
>>805746

>жава


>бигдата


Насмешил. Это инструмент для клепания CRMок макаками, но никак не для бигдаты.
805774805787
#81 #805774
>>805763
Маня, все основные биг-дата тулы написаны на джяве и естественно она хорошо с ними интегрируется. То что скала это ололо бигдата-язык - это просто следствие того, что она работает на той же платформе, на которой джява-мужи уже всё написали.
806194
#82 #805787
>>805763
Смотря какие задачи решать. У нас обычно модель пилят на питоне, а для прода все процессы перепиливают на джаву. Но мы hdp используем, на православном спарке наверняка удобнее и быстрее использовать скалу с её радующими глаз конструкциями, похожими сами знаете на что (_+_)
#83 #806191
>>805758
Ну кукарекали же что у скалы слишком тормозной и сложный конпелятор, вот Мартин и решил переделать. А он написал так, будто переделывают с нуля весь язык.
#84 #806194
>>805774
Спарк написан на скале, лови струю в ротешник.
807283
#85 #807283
>>806194
Там немалая часть - Java-код и апишки на оба языка (+ пихтон и R), плюс он юзает хадуповские либы. Hadoop - на джаве, Storm - на джаве, Druid -на джаве, Samza - опять же, значительная часть - джава код.
То что на Scala типа ололо бигдата - просто результат использования уже написанного джява-кода. Твой вскукарек ничего не отменяет.
807323807837819072
#86 #807323
>>807283
И что? Использование готового - это хорошо, не зачем плодить велосипеды. С другой стороны скала позволяет значительно эффективнее использовать уже написанный код, элегантнее, проще, эффективнее и с большими возможностями.
807330
#87 #807330
>>807323
Так-то оно так. Я это всё к тому, что Scala - не какой-то ёба-язык монополист биг-даты, а один из языков, на котором ей можно заниматься. Вообще все адекватные бигдата тулы рано или поздно заведут SDK под десяток языков и писать можно будет хоть на питоне, хоть на джаваскрипте. Потому что в бигдате важнее сами тулсеты, чем прослойка.
#88 #807837
>>807283

>Java-код


Костыли для джявамартых?

>плюс он юзает хадуповские либы


Для совместимости с хадуповскими легаси-говнами джявамартых, ну да

>То что на Scala типа ололо бигдата - просто результат использования уже написанного джява-кода


Нет, мартышка, результат превосходства скалы над говноджявой. Иначе бы все жрали хадуп.
807845
#89 #807845
>>807837

>Истерика надуманного превосходства



Мимо Agda/Idris господин
807912807924
#90 #807912
>>807845

>Agda


А что с этим языком можно делать?
807980
#91 #807924
>>807845

>Agda/Idris


Что это за мертвечина без задач?
#92 #807980
>>807912
Унижать и доминировать над скала-макаками
808669808984
#93 #808669
>>807980
Ну и где что-то уровня Spark на агде?
808685
#94 #808685
>>808669
Ты не понял. Они нужны не для для каких-то там мартыханских школобигдатеров, а например, чтоб унижать индусов в их собственном JDK.
Вот тут пруверщики доказали что TIMSORT который используется в джяве, пердоне и ондроеде - некорректный алгоритм.
http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and-how-to-fix-it/
808998
#96 #808984
>>807980
Юникод то завезли?
808985
#97 #808985
>>808984
А нахуя её в сам язык завозить? чтобы как в свифте можно было переменные и функции смайликами именовать?
#98 #808998
>>808685

>петухи на параше доказали, что понятия некорректны


Лол, всем похуй
809018809024
#99 #809018
>>808998

>что понятия


Ты по ссылке вообще переходил? Там конкретный issue. Я воспроизводил этот баг у себя с помощью их программы. В джяве оно падало даже 67 млн. элементов. Или это ты так за обсер своих jvm анальных господ копротивляешься?

>петухи на параше


Лол, эта боль жвм-мартышки.
809026809215
#100 #809024
>>808998

>чёткие пацаны с прувером формально доказали некорректность тимсорта, которым, кстати, все так гордились


>пок-пок всем похуй, не то что я такой-то бигдата отчёт для тёти Груни вчера выгрузил


лел
809026
#101 #809026
>>809018
>>809024
То есть вершина достижений агда-петушни это проверять сортировки? Никакой работающей программы они сделать не в состоянии? Лол.
809033
#102 #809033
>>809026
Да, по сравнению с достижениями мартышек из твоей веб-студии это конечно очень слабо. Ты вообще как, за компьютер сайнсом следишь, алгоритмы там, вычисления, верификации, системы типов. Или так, только отчётики выгружаешь и спарк программируешь?
809034
#103 #809034
>>809033

>Ты вообще как, за борщехлеб сайнсом следишь, олимпиадки там, вычисления факториалов, верификации хелловорлдов, монадки


Что простите?
809037
#104 #809037
>>809034
Хули не в джава треде? Ведь теперь там можно даже найти элемент в массиве и благодаря стараниям борщехлёбов отсортировать массив без ошибки.
#105 #809215
>>809018

>с помощью их программы


В этом и суть. Сколько лет оно работало, но тут оказывается, что на одном наборе данных оно может упасть. То есть, фиксить надо, фикс хороший, но не настолько. Но, поскольку у функци-анальщиков других достижений нет, вот они и бегают размахивая руками. А вот если бы они вместо написания статеек о том, как в функци-анальщине всё хорошо, и как императивному программированию скоро-скоро придёт самый настоящий вендекапец, занимались чем-то полезным, то всем было бы намного лучше.
sage #106 #809234
лол вроде скала тред, а эталонные жатники сидят
#107 #811062
поясните, пожалуйста
можно ли как либо с одного метода достать переменную которую этот метод не возвращает?
вот пример кода
http://pastebin.com/EagWLMSW
#108 #811064
Поясните, пожалуйста. можно достать переменную с метода который эту переменную не возвращает? Вот пример кода
надо достать строку с метода, и использовать её в другом методе
http://pastebin.com/EagWLMSW
811195
#109 #811066

>>сорян, инет пинганул

#110 #811195
>>811064
Что за библиотека?
811225
sage #111 #811225
>>811195
это Play 2, очевидно
811264
#112 #811264
>>811225
[code lang="scala"]ws.url(URL).post(POST).map{ request =>
val parts = request.body.split(",")
val sessionKey = someResult
val sessionValue = someString
(sessionKey, sessionValue)
}[/code]
Не?
811266811267
#113 #811266
>>811264
Или Ok((sessionKey, sessionValue))
25 Кб, 469x167
sage #114 #811267
>>811264
Какое-же убожество. И после этого макака еще паскоды требует...
811268
10 Кб, 478x262
#115 #811268
>>811267

>2016


>без вишмастера


))
811273
sage #116 #811273
>>811268
Не для того я макбук покупал :3
811328
#117 #811328
>>811273
А для того, чтобы хэловорлд на скале компилировалась по 5 минут буквально?

Кстати, в идее стала доступна опция создания проект на Dotty, идея сама тащить последний снапшот. И оно предсказуемо работает раза в 3 медленнее текущего компилятора.
811339
#118 #811339
>>811328

>А для того, чтобы хэловорлд на скале компилировалась по 5 минут буквально?


Что, получается Бреслав правду что-ли говорил :) ?
Я только на java/kotlin/C# разрабатываю на clojure еще через плагин хеловорды :3 писал.
#119 #813533
Помогите пожалуйста из Future[String] вернуть String. Хочу строку в хтмл засунуть( плей фрейм), а он дичь мне выдает
813625813633
#120 #813625
>>813533
fStr.onComplete {
case Success(str) => println(str)
case Failure(exc) => println(exc.getMessage)
}
#121 #813633
>>813533
Без блокировки не получится, а с ней теряется весь смысл асинхронности. Правильно будет так: future.map(string => frame.put(string)) или future map frame.put.
Результат - Future[Frame].
#122 #817056
Есть ли какие нмбудь опенсурсные проекты на скале в которые можно покомитить, кроме монстров вроде спарка?
817078817553
#123 #817078
>>817056
Тысячи их. Ищи на гитхабе: https://help.github.com/articles/searching-repositories/
817096
#124 #817096
>>817078
Искал. И первые 10 страниц кроме йоба гигантов вроде спарка и плея да рисёрчей нихуя нет.
817099817631
#125 #817099
>>817096
Скала - академичный язык. Или рисёчёшь или иди круды клепай на пыхе.
817113
#126 #817113
>>817099
И что же в ней такого "окодемичного" что сильно отличает её от других языков?
#127 #817288
>>767431 (OP)
Чем скакался лучше Джулии?
817290
#128 #817290
>>817288
Распределённые вычисления на том же уровне реализованы в скале или хуже?
817295
#129 #817295
>>817290
Такой вид паралельности с общими данными там реализован разве что в виде пары конкурентных коллекций, так что да – в этой области от сосёт (отличается?) у юли.

Тоже кстати жду ответа от петуха выше – что в скале такого академичного?
817311853234
#130 #817311
>>817295
Ну тогда я лучше Юльку буду учить как академический язык, нахуй мне скакалка сдалась.
818151
#132 #817631
>>817096
Какие 10 страниц? С какими фильтрами? Такое впечателние что тебе нужны не проект найти, а попиздеть про их отсутствие.
А вообще опенсорс работает по другому:
1) У тебя есть проблема
2) Есть опенсорс либа котороая решает твою проблему, но не до конца
3) Ты допиливаешь либу и делаешь пулл реквест
4) ???????
5) PROFIT
#133 #817990
скаланы че спрашивают на собседованиях на скальные вакансии?
ну и вообще по функциональщине
отличаются ли чем-то задачки (сортировки лол) на собеседах у функционалистов от быдло-имперетивщиков?
817997818317852638
#134 #817997
>>817990
На собеседованиях вообще врядли будут спрашивать про функциональщине если в вакансии прямо не написано про шизу вроде шэйплесов – в проде её избегают во имя поддерживаемости.

На большинстве скала вакансий что я видел требуют знания ява стека + пары инструментов и фреймворков из мира скалы.
818034818038818317
#135 #818034
>>817997
то есть будут спрашивать по джаве штоль? треды-шмреды?
#136 #818038
>>817997
по фреймворкам тоже какие вопросы? типа что такое экшон в плей? ето же хуета
или че попизже?
#137 #818151
>>817311
Впрочем, на чём лучше будет нейросети писать: на скале или джулии?
852842852936
#138 #818317
>>817997

>функциональщине


>шэйплес


Как вы заебали пиздеть о том в чем не разбираетесь, уёбища.
>>817990
Предметная область имеет значение. Мы например вообще по кодированию задачек не давали, в основном вопросы то бекенду - базы, конкарренси, CAP теорема etc. Ну и общие вопросы по програмированию вроде "что НЕ нравится в скале?" и про простые структуры данных. Обычно если человек отвечает на такие вопросы, непосредственно с кодированием он справится.
Я бы еще давал задачу "напиши мне функцию reverse(List[T]) в функциональном стиле": могут разные интересные вопросы возникнуть.
На первой работе связанной со скалой собеседование строилось на отличиях скалы от джавы, какие у неё преимущества и недостатки, как там с функциональными фичами/ОО паттернами.
818365852638
#139 #818365
>>818317
звучит как не очень сложный собесед, хотя я чушок - сходу бы вот так лист функционально бы не развернул
818374
#140 #818374
>>818365
Первый собес отсеивает процентов 80-90 кандидатов. reverse не давали писать потому что нормальные джависты нам тоже подходили. Btw, развернуть связный список in-place (с мутабельныйми нодами) намного сложнее чем просто записать элементы одного списка в другой в обратном порядке (что я и имел в виде под функциональныйм разворотом списка).
819076
#141 #818539
Аноны, подскажите ньюфагу в jvm. В джава треде проигнорили. Решил запилить хелловорлд для себя и еще пары человек. Простенький бекенд с легкими БД операциями без всяких каскад апдейт на 1000-2000 запросов в день много будет в памяти отжирать? И вообще, можно где-нибудь поглядеть тесты на реальных приложениях потребления памяти по нагрузке? Просто под рукой простенький сервак на 2gb с одним ядром, на том же go его хватает за глаза, хочу попробовать на scala это дело переписать, так как функционала не хватает немного, а динамически типизированные языки я не воспринимаю на сервере.
818572818575
#142 #818572
>>818539
Сколько дашь, столько и будет отжирать.
http://stackoverflow.com/questions/14763079/what-are-the-xms-and-xmx-parameters-when-starting-jvms
Тебе может и 128mb хватит, кто знает что там у тебя за логика.
818580
#143 #818575
>>818539
Стоковый VisualVM запусти, там профайлер показывает красивый график с потреблением памяти.
818580
#144 #818580
>>818572
Ничего серьёзного, 6 моделей и небольшой xml-rpc интерфейс на коленке с вебмордой чтобы искать по истории в irc каналах зарегистрированного юзера, писалось тоже for fun.
>>818575

>VisualVM


Не знал о таком, спасибо, помониторю.
818592
#145 #818592
>>818580

>Не знал о таком


И это джависты. Она же с 2008 года в JDK входит.
818615818625
sage #146 #818615
>>818592
Это не джавист. Это залетный пидор
818619
#147 #818619
>>818615
Подтверждаю. Нужна чистка в рядах.
#148 #818625
>>818592
Нефиг жопой читать.
#149 #818635
А есть что то как скала, только не жава, а шарп, но с кроссплатформенностью?
818709818814871215
#150 #818709
818848
#151 #818814
>>818635
Например, Шарп с Mono?
818857
#152 #818848
>>818709
Vala - это копия шарпа поверх gobject. К тому же кроссплатформенность там во много номинальная.
#153 #818857
>>818814

> Шарп с Mono


> Mono


У нас за такое на районе по ебалу били.
#154 #819072
>>807283
Так-так, товарищи, тут кто-то пиздит.
Storm - говно, и написан он на Clojure, Samza - его мертворожденная копия с минимумом изменений.
А на Scala есть божественный Spark, который рвет всех и Storm с Samza (Spark Streaming), и Hadoop.
819098
#155 #819076
>>818374
Функционально - это с рекурсией и конструкцие листа на обратном ходу из последнего элемента?
819527
#156 #819098
>>819072

>и Hadoop


Ты дебил? Спарк и Хадуп разные задачи решают.

>Spark, который рвет всех и Storm


Лол, даунёнок не понимает разницу между stream-processing и micro-batching.

Судя по тому, что для тебя вся бигдата сводится к Спарку - ты просто восторженный школьник с дивана.
819110
#157 #819110
>>819098
Поясни мне разницу между spark streaming и storm
мимо
819216
#158 #819216
>>819110
присоединяюсь
#159 #819527
>>819076
Это самый простой, лаконичный и очевидный вариант. Но с ним есть одна проблема.
820336
#160 #820336
>>819527

>Самый простой лаконичный и очевидный


Переебал тебе свёрткой с вертухи прямо в щи
Кстати, напомни какую лучше использовать, правую или левую?
820717
#161 #820717
>>820336

>Переебал тебе свёрткой с вертухи прямо в щи


Это да. Я вообще какую-то хуйню в этом комменте написал, о чем-то другом думал наверное.

>Кстати, напомни какую лучше использовать, правую или левую?


Какую нужно, лол. Если оперция ассоциативна, то лучше не выёбываться и использовать левую, правая может быть не хвосторекурсивна stackoverflow привести на некоторых структурах данных (на списках все будет ок).
Кстати, кто-то сталкивался с не хвосторекурсивной левой сверткой? Ну например какой-нибудь бесконечный список [.. 0]?
822052
#162 #821120
Что означают проценты в build.sbt? На stackoverflow пишут что это как в мавене, а я не знаю как в мавене, на джаве раньше не писал.
821131
#163 #821131
>>821120
Алсо, пишут, что там синтаксис такой:

> libraryDependencies += groupID % artifactID % version % configuration


Че за группы? Че за артифакты? Че вообще гуглить надо?
821291
#165 #821592
Ауе, братульцы!
Поделитесь соображениями, что с рынком вакансий по скале в мск?
смотрю, последние года три, одни и те же конторы ищут людей, и хуй кого набирают, мне тоже дохуя где отболтили, где-то сам по фишке сливал собесы, т.к. обстановка ч т писос какая не прикольная.
везде одна ситуация: дико задроченные чуваки собеседуют для самоутверждения, но не набирают, а некоторых слишком круто осаживаю, и жалею, они не виноваты, но блять не умеют в нормальные коммуникации.
смотрю так же на джин например, 8 из 10 - релокация из ДС. т е работы тут как бы и нет для скалиста адекватного, не адепта-евангелиста, а когда ты и в код умеешь и знаешь как дела делаются. хз, Минск гораздо более праздничный, конторы крутые, бодрые не ссученные.
Как вы думаете, что тут за хуйня со скала-разработкой происходит?
821673821954
#166 #821673
>>821592
С твоей формой изложения мыслей тебе в пхп-тред. Неудивительно, что тебя никуда не берут.
#167 #821788
залепи удило, конь! это 2ч.
#168 #821954
>>821592

>Минск гораздо более праздничный


Чем Москва? Не поверю. Бывал в Минске, по сравнению с Киевом унылое место. Да-да, майдан, генотьба, скачут, всем весело.
#169 #822052
>>820717

> Ну например какой-нибудь бесконечный список [.. 0]?


Does not compute. Ты не сможешь оторвать такому списку голову, её нет
822239
#170 #822239
>>822052
Да, головы нет. Точнее её невозможно получить, как и развернуть бусконечный список. Зато есть хвост и последний элемент. Ну не важно, вопрос не про это был.
822259
#171 #822253
Минск конечно уныл, но я о работе исключительно.
#172 #822259
>>822239

>Есть хвост


Ты понимаешь, что концептуально, то что ты описал -- это всё тот же обычный бесконечный список в котором tail ты назвал head, a head - tail?
822365
#173 #822365
>>822259

>tail ты назвал head


У их типы разные. tail остаётся tail (тоже бесконечный список), head нет, но есть last.
852629
#174 #822785
Нужно ли до скалы учить джаву или сразу можно?

Сейчас заканчиваю cs50 и хочу выбрать дальнейшее развитие, интересуют более или менее современные и активно развивающиеся технологии с применением в вебе и больших данных, поэтому выбор пал на скалу. Все правильно?
822977
#175 #822914
>>767431 (OP)
Поясните, зачем нужны форки компилятора?
823037
#176 #822977
>>822785
Сам язык java тебе мало чем пригодится, скорее навредит. А вот экосистема тебе пригодится, ну и понимание что там и как в jvm твориться, и почему вся функциональщина в scala -- это не больше чем набор костылей сахарок. А веб и бигдату абсолютно нормально пилить и на java, python и на всем, чем тебе хочется. Тут скорее нужно понять, чего тебе хочется.
822985823314
#177 #822985
>>822977

> Кто-то не умеет в абстракцию

823234
#178 #823037
>>822914
Затем, что он тормозное говно, не умеющее в java 8, очевидно же.
823193
#179 #823193
>>823037

>не умеющее в java 8


А нахуя оно надо?

>он тормозное говно


Ну, это не исправить, тут дело не столько в самом компиляторе...
823542
#180 #823234
>>822985
Я то как раз перекатился из java в scala, потому что мне на jvm не хватало тех абстракций, которые предоставляет scala. А то, что функциональщина в scala -- это всего лишь сахарок, ты этого не замечаешь? Там же отовсюду торчит прибитые гвоздями к jvm куски. Ещё и система типов в scala оставляет желать лучшего. Но, для новоприбывших бойцов, может быть и не нужна jvm и вся эта возня с экосистемой java.
823567824823
#181 #823314
>>822977
>>822977
>>822977

Спасибо за ответ, а как тогда учить, то-есть в книгах по скале рассказывается о

> экосистема тебе пригодится, ну и понимание что там и как в jvm твориться



Или это отдельно гуглить и читать?
823942
#182 #823542
>>823193

>А нахуя оно надо?


Чтоб рантайм бодрей исполнял, ясное дело.

>тут дело не столько в самом компиляторе


Что он не может в параллельность - тоже дело не в нём, да?
#183 #823567
>>823234

>Синтаксический сахар


Как же меня заебала эта идиома. Со всех сторон слышен этот кукарек. Ты совершенно не понимаешь сути синтаксического сахара.

>Торчат прибитые к jvm куски


Как это понимать? Куски чего? Чем прибитые? Постишь - как в лужу пердишь
823942
#184 #823942
>>823314
В любом учебнике по scalа будут описаны некоторые подводные камни jvm. Не стоит этим заморачиваться, пока не столкнешься.

>>823567

> Как же меня заебала эта идиома. Со всех сторон слышен этот кукарек. Ты совершенно не понимаешь сути синтаксического сахара


Я то его понимаю. Любой более-менее читаемый функциональный код, можно переписать в императивном стиле, но что это даст? На scala, как и на groovy? очень удобно делать dsl, и после них, абсолютно не хочется делать некоторые вещи на java. Но я одного не понял, почему тебя так задевает то, что я назвал функциональщину в scala -- сахаром?

>Как это понимать? Куски чего? Чем прибитые? Постишь - как в лужу пердишь


Ок, скажи мне, как скала ушла от jmm? Или может scala научилась не затирать знания о генериках в рантайме? Или может scala привнесла что-то фундаментально новое в jvm?

Ты меня конечно прости, но мне кажется ты просто диванный специалист, который не пишет\писал код на scala за деньги.
824356824358824569
#185 #824356
>>823942
Некоторые твои тезисы верны, с некоторыми я не согласен. Но я совершенно не понимаю, что ты хочешь ими сказать, и главное зачем.

> Любой более-менее читаемый функциональный код можно переписать в императивном стиле


Любой более-менее читаемый код на тьюринг-полном языке можно переписать на другом тьюринг-полном языке.

>я назвал функциональщину в scala -- сахаром


Ты употребляешь термин "Синтаксический сахар" некорректно. Как это вижу я: если ты средствами языка можешь определить достаточно похожую конструкцию, то введение такой конструкции в язык - синтаксический сахар. Циклы в lisp - синтаксический сахар. В Java - насущная необходимость к синтаксическому сахару отношения не имеющая

>Синтаксический сахар:


>Это может быть любой элемент синтаксиса, который даёт программисту альтернативный способ записи уже имеющейся в языке синтаксической конструкции, и при этом является более удобным, или более кратким, или похожим на другой распространённый способ записи, или помогает писать программы в хорошем стиле.


Dependency Types, например, в скала - синтаксический сахар над какой-то из синтаксических форм java? Тогда давай, показывай как это делаетсяв джаве.
#186 #824358
>>823942
А, и да, пруф писания тобой кода на scala за деньги в студию
824569
#187 #824569
>>823942
С твоим подходом можно любой язык назвать синтаксическим сахаром над машинными кодами. Это корректное, но совершенно бесполезное определение синтаксического сахара.

>ты просто диванный специалист, который не пишет\писал код на scala за деньги.


За такие "аргументы" в приличном обществе принято сразу нахуй послать.
>>824358
Какие можно предоставить пруфы этого на анонимином форуме?
824572
#188 #824572
>>824569
покажи трудовой договор и там замажь имя свое
824585
#189 #824585
>>824572
Хуй знает, где мой договор, и вообще есть ли он, я как частный предприниматель оформлен. В любом случае, думаю что вероятность наличия в договоре слова Scala мала, там будет что-то вроде "разработка програмного обеспечения". Я могу ошибаться, конечно. Покажи свой договор как пример.
84 Кб, 540x810
#190 #824822
https://gist.github.com/anonymous/bb1eed2c4a15a35949741b4c34639e55#file-otsos-scala-L3-L21

Хотел поинтересоваться как правильно писать файлы в ZipOutputStream. Я беру прямые ссылки на удаленные файлы и пишу их через BufferedInputStream в поток архива. Брат не умер, работает нормально, но иногда всё наёбывается причем на одном и том же месте и мне дропается поврежденный архив. Проверял неоднократно, все ссылки рабочие, если по отдельности писать, то норм, но бывает, что какие-то два соседние файлы не могут записаться и все дропается нахуй, уже заебало. Че мне делать, как быть? В большинстве случаев работает нормально, но на большом множестве файлов может случится такая хуета.
824829841929871213
55 Кб, 458x704
#191 #824823
Вернулся в скалу спустя год, тайпсейф переименован, хайпа больше нет.
>>823234
Ты не понимаешь, что такое функциональное программирование. Скала функциональный язык, в ней реализованы некоторые функциональные структуры, которые используются на постоянной основе вроде монадических типов - Future, Optional, Try и тд, дефолтная иммутабельность, объекты первого класса - ты можно обращаться ко всему как кобъектам, дёргать-туда-сюда, передавать аргументом в функции, функторы, паттерн матчинг, уебищная библиотека коллекций, которые вообщем-то поддерживают все функции высшего порядка. В скале нет ленивости и есть только локальная типизация, нет ADT и зависимых типов, но и первое и второе можно реализовать, то есть это несовсем из коробки, но оно есть. Синтаксический сахар - это всякие дешевые приколы с инфиксной формой записи, щас посмотрел что это в интернете, какой-то ебанат указал на case class, в хаскеле такие классы по дефолту, и реализуются они почти так же внутри, я только зашел, а меня уже заебали этим тупым пиздежом не о чем, какие-то ебанаты просто обдрачивают слова и смакуют. Идите нахуй.
825021825036
#192 #824829
>>824822
заработало, видимо, создавались entry с одинаковым именем, дублировались ссылки

охуеть, качает 2,8гб зип и ничего не сломано
#193 #825021
>>824823
В JS есть монадический тип Promise, это тоже ФП язык?
825095
#194 #825036
>>824823
Поддержу анона выше - в плюсах есть и Future, и Optional и даже лямбдочки (sic! kek), это теперь тоже ФП язык?
825095
#195 #825095
>>825036
>>825021
Есть множество домов: без крыши, без окон, с цокольным этажем, старый, новый; но все они дома. Почему?
#196 #827686
Подскажите, где обосрался и как можно лучше сделать.

http://pastebin.com/iXTqXwqa
#197 #827902
топик утопает в дерьме...
идите на хуй, те, кто не понял или дохуя умный, вас сюда никто не звал.

На, сука! Лови свою функциональщину на С++..

struct sequence_tag {};
struct pointer_tag {};
template< class X >

X category( ... );
template< class S >
auto category( const S& s ) -> decltype( std::begin(s), sequence_tag() );
template< class Ptr >
auto category( const Ptr& p ) -> decltype( *p, p==nullptr, pointer_tag() );

std::unique_ptr<int> p( new int(5) );
auto f = []( int x ) { return -x; };
std::unique_ptr<int> q = fmap( f, p );

-- реальная дич

наблюдаю только школоту неодупляющую, либо дохуя умных которые могут тут С++ и Скалу на раз оценить, и сказать что и там и там что-то есть, оба языка одинаковы, идите на хуй все..
так вот, я вас жду таких дохуя умных на собес, и готовьтесь получше, особенно если решите проводить сквозные аналогии в ФП между языками.. буду жестко наказывать вас анально, при джунах, что бы пример был перед глазами, что бы 100 подумали прежде чем говорить.

всем добра!
#197 #827902
топик утопает в дерьме...
идите на хуй, те, кто не понял или дохуя умный, вас сюда никто не звал.

На, сука! Лови свою функциональщину на С++..

struct sequence_tag {};
struct pointer_tag {};
template< class X >

X category( ... );
template< class S >
auto category( const S& s ) -> decltype( std::begin(s), sequence_tag() );
template< class Ptr >
auto category( const Ptr& p ) -> decltype( *p, p==nullptr, pointer_tag() );

std::unique_ptr<int> p( new int(5) );
auto f = []( int x ) { return -x; };
std::unique_ptr<int> q = fmap( f, p );

-- реальная дич

наблюдаю только школоту неодупляющую, либо дохуя умных которые могут тут С++ и Скалу на раз оценить, и сказать что и там и там что-то есть, оба языка одинаковы, идите на хуй все..
так вот, я вас жду таких дохуя умных на собес, и готовьтесь получше, особенно если решите проводить сквозные аналогии в ФП между языками.. буду жестко наказывать вас анально, при джунах, что бы пример был перед глазами, что бы 100 подумали прежде чем говорить.

всем добра!
828139949859
#198 #828125
>>767431 (OP)
не самые очевидные тесты: scalapuzzlers.com
полезные упражнения: scala-exercises.org
#199 #828139
>>827902

>-- реальная дич


Конечно дичь, это разные невзаимосвязанные куски кода.
#200 #833550
Есть кто-то кто может устроить беспощадное ревью кода?
half)xtandcfANUSgm^!VailPUNCTUMc|dKom
871209
#201 #837849
мужики не из дс сколько у вас зп? с дс-блядками примерно понятно тк есть пара вакансий в общем доступе с цифрами, а я как провинциал не знаю какой ценник ломить
#202 #841613
Cкала-трендж, почему ты тонешь?
841651
#203 #841651
>>841613
Потому что скала настолько всем неинтересна, что тред можно нахуй удалять.
#204 #841870
Хелпуйте, пацаны.
Короче, написал функцию, которая принмает набор байтов и считает количество появлений каждого байта в этом наборе.

http://pastebin.com/yyYPkZDp
Но проблема в том, что не осиливает большой объем данных.
Как пофиксить?
#205 #841899
>>841870

>Как пофиксить?


Поменять язык программирования.
Мимокэп.
#206 #841902
>>841870
Вот так это фиксится. На раз-два. Не благодари.
http://pastebin.com/2kqdpMRU
841915
#207 #841915
>>841870
По поводу >>841902 - обрати внимание, там в принципе могут обрабатываться файлы гигабайтных размеров, и никакой подчеркиваю: никакой ебли с аккумуляторами.

Насчет этого, кстати, скала не хаскелл и не sml, в самой идеологии языка закладывается что in small, на уровне тела функций /их отдельных мест допустимы императивные циклы и var. Так что не еби мозги хвостовой рекурсией.
841931841951
197 Кб, 1200x800
#208 #841929
>>824822
/pr/ - NSFW борда что ли?

тест
тест
#209 #841931
>>841915

>Еби мозги с хвостовой рекурсией


Но норм пацаны же свёртками такие штуки делают
841935
#210 #841935
>>841931
Ну вон там выше свёрткой и на не борщехлебской жабе. Вообще было бы интересно послушать кукареканье борщевиков. А они, как назло, притихли.
842055
sage #211 #841951
>>841870
Твой код это пиздец. Ты понимаешь при каждом remainingBytes.tail и accumElems :+ (...) у тебя создаётся новый массив? И чем дальше, тем больше эти массивы становятся и тем больше элементов приходится копировать.
Наивное функциональное решение, вообще без заморочек с производительностью, может быть таким: seq.groupBy(identity).mapValues(_.size).
Я нормальный бенчмарк не проводил, но на моей машине обработка 100000 элеметнов занимает <100ms в худшем случае (все элементы разные) и 1-2 секунды для 1000000 разных элементов. Ты че считаешь байты, а не инты, значит максимум разных элементов у тебя может быть 256. На таких данных наивный алгоритм обрабатывает 100000 элементов з 9ms, а 1000000 - <100ms.
То есть твои пикчи по несколько метров возможно сможет осилить. Проверить это просто - нужно написть одну (1) строчку кода, а не 20 с tailrec и условиями.
Если данных больше - нужны стримы кончено. Завтра, если не лень будет, сделаю на scalaz-streams и сравню с джавовыми стримами.
Если еще больше - welcome to Spark.
>>841915

>Так что не еби мозги хвостовой рекурсией


Только если работаешь с мутабельными данными и без них не выходит выразить алгоритм или добиться приемлимой производительности.
842075871207
#212 #842055
>>841935

>Свёрткой


>Простыня текста


>Ни одного упоминания fold в любой форме.


Зачем проникающие в этот тред кукаретики назрюкивают свой кукарек совершенно не понимая того, о чем нахрюкивают?
#213 #842075
>>841951
что думаешь о cats?
#214 #842232
Помню помню какая-то обезьяна воняла, то ли здесь, то ли борщеподобном треде, что-то про поддержку SIMD в жабе.
Вот из новостей

>Из других направлений я бы отметил API для пакетной обработки данных (Vector API). В современных процессорах есть векторные расширения (SSE и AVX на x86, NEON на ARM), содержащие инструкции для пакетной обработки данных (SIMD инструкции). На текущий момент JVM умеет делать автоматическую векторизацию кода при динамической компиляции, но это не покрывает всех интересных случаев. Идет работа над специализированным API, дающим возможность явно описывать операции пакетной обработки над данными.

842286
#215 #842286
>>842232
Там была вонь про автоматическое распаралеливание кода, а вместо одной (из нескольки) ссылок с пруфом тот C++-питух скинул линк на доку про векторизацию в LLVM, после чего его выгнали нахуй из треда с визгами "КОКОКО ЖВМ ВСЁ УМЕЕТ".
#216 #842288
>>767431 (OP)
скалабогов конфа http://xaa.su/28jQ
842298844107
#217 #842298
>>842288
Пощекотал хуем за языком любителю сокращателей ссылок.
#218 #843284
Читал вот про Free монады и возник такой вопрос к тем, кто пишет на скале в продакшене: их кто-нибудь в реальной жизни использует и если да, то в каких случаях?
889734
#219 #844107
>>842288
Дай нормальный invite на конфу
844110
#221 #844125
А есть скалараш по аналагу с джаварашем?
844131844186852613
#222 #844131
>>844125
Прям как джавараш нету. Есть курсы на курсере, более-менее приличные.
844137852612
#223 #844137
>>844131
Ок гляну
#224 #844186
Скаланы, как у скалы отношения с machine learning и big data?

>>844125
Говно по "аналагу" с говном? Ебать ты говен.
844190
#225 #844190
>>844186

>Скаланы, как у скалы отношения с machine learning и big data?



Ну, apache'вский Spark написан и использует скалу.
#226 #844633
Реально ли найти в дс вакансии на джуна по скале, просто везде, где фигурирует скала, требуют еще и знания чуть ли не всего джава стека, учить сначала джаву и потом постепенно перекатываться на скалу или сразу учить скалу и потом доучить нужные технологии из джавы? Джаву знаю на уровне книги head first java
845340
#227 #845340
>>844633
Джуна вряд ли. Обычно средняя скала вакансия подразумевает, что опыт у тебя хоть какой-то есть, если не скале, то хотя бы на яве или другом языке. Ну и знание самой явы, jvm и стандартной библиотеки явы необходимы, потому что они точно понадобятся. Знание сервлетов и jdbc, скорее всего тоже понадобятся. Но вот насчет необходимости всяких древних JavaEE технологий я бы не был так уверен.

Мне, например, предлагали скала вакансии, хотя у меня основной опыт в сфере .net технологий. И собеседования на эти вакансии я проходил, несмотря на то, что особо глубоко в экосистему явы я никогда не погружался, хотя саму яву и jvm я знаю более-менее хорошо.
845371
#228 #845371
>>845340
Спасибо, ну тогда буду параллельно учить, чтобы при первой возможности перекатиться.
845684
#229 #845519
Вакансии в ДС - та еще засада.
Угораздило меня со студенческой скамьи нырнуть в Скалу всей головой, устроившись в одну фирму джуниором. Теперь как "свежий мозг" возглавляю рефакторинг, ебашу проект на ScalaZ, но при этом кушаю много-много кактусов, связанных зачастую с требованиями к окружению (Websphere + JVM 1.6 и ниипет). Пытался искать новую работу, ибо уже тошнит от одиночества, похуизма и чуть выше чем студенческой зарплаты, но АХ и УВЫ - нихуя. 99% HR-бабищ, которые доебывали меня по телефону, пытались мне впихивать какие-то джава-вакансии (зачастую на тему BigData). Хотя я четко всем говорил, что джава-опыта у меня нет, один хуй пытались пихнуть. Соснул крупных хуев на нескольких собеседованиях, где задавались в основном джава-вопросы. Лишь пару фирм было более-менее, но они нашли кандидата получше - немудрено, я сижу и сохну мозгами в своей конторке. Уже ничерта там не осталось из основ, все сплошная практика и готовность варить свои велосипеды.

Короче, анон, я уже почти год в профессиональной депрессии и совершенно не понимаю, что мне делать. Есть ли вообще жизнь на Скале? Куда идти дальше?
845530
#230 #845530
>>845519
Хуёво как-то искал, тот же тинькфф безостановочно хантит. Ну ещё как вариант – поговорить с начальством на счёт зарплаты прежде чем искать новую работу.

Кстати, уже вышла 2.12 RC1, из фич – java 8, новый оптимизатор, по синтаксису только SAM-типы.
845547
#231 #845547
>>845530
Может быть и хуево. Я искал пассивно: кинул резюмеху на хх и ждал звонков. Просмотров была тьма тьмущая, звонков не сильно меньше. Но все по джава-хуите какой-то, да и к тому же названивали агентства.
Про Тинькофф знаю, собеседовался у них. Вроде бы интересный вариант с одной стороны, с другой стороны мне немного не понравилась их атмосфера, которая довольно типичная для банка. Там все постоянно с горящей жопой и на иголках. Все вот эти АГИЛЕ, "каждую неделю релиз no matter what", спринты и прочее говно. Я туда пришел и сразу понял, что эти чуваки ищут упоротых энтузиастов, которые готовы сидеть с 10 до 19, выжимая из каждой клетки своего тела всю возможную энергию, которые готовы работать даже просто за идею. А меня в конторе разбаловали свободным графиком, похуизмом и всем таким вот. За последний год едва вспомню, когда я досидел 8-часовой рабочий день до конца. Сделал несколько фич, чувствую что заебался/устал, или пробки начнутся вот-вот - съебываю домой. Никогда не ездил в час пик.
Короч, они мне тестовые задания дали, а я через пару дней в отпуск уходил. Конечно же, я положил хуй и сообщил им об этом. До сих пор в раздумьях, впрочем. Чтобы туда нормально устроиться, мне придется хорошенько напрячь очко и вботать многое, что я когда-то знал и использовал, но порядком подзабыл. А то последние полгода я только и делаю, что веду БОЙ, а не спокойную разработку, со Spray-ем.
Короче, это реал проф депрессия с сопутствующей апатией. Всю жду, когда меня шарахнет молния, и я начну пилить какой-нибудь сайд-проект, который вскрутит мне голову и заставит многое выучить/вспомнить.
847174
#232 #845607
Как вы выучили scala?
852642871204
#233 #845684
>>845371
Куда перекатываться? Зачем перекатываться? Ты думаешь использование скалы тебя волшебным образом избавит от необходимости думать? Потому что если думать, прежде чем говнокодить, то и жаба прокатит.
845702
#234 #845702
>>845684
Избавит от многословности и отсутствия более высоких абстракций
845743
#235 #845743
>>845702
Seriously?
http://pastebin.com/yyYPkZDp
http://pastebin.com/2kqdpMRU

Не устаю повторять - разруха она не в сортирах, а в головах.
845759
#236 #845759
>>845743

>> n {



сколько можно форсить это говно
#237 #846241
есть смысл tapl дрочить?
846522
#238 #846522
>>846241
Конкретно тебе - нет.
#240 #847174
>>845547
че у тинькова задают на тестовое?
#241 #851779
Здарова скаланы, вкатываюсь в скалу по фану, очень интересно, но на Java никогда не писал, да в общем-то не собираюсь. И всю эко-систему JVM только изучаю.

А вопрос у меня один:
Есть какой-то Yoba-веб-фреймворк для скалы чтобы прям вообще макет бэк-энда за день собрать можно было и масштабировать до бесконечности? Ну типа рельсы и прочая ересь скриптопараши но только под скалу.
851792852082871202
#242 #851792
>>851779
Play Framework 2
#243 #852082
>>851779

>макет бэк-энда за день собрать можно было и масштабировать до бесконечности


Пишешь стейтлесс апи и масштабируешь по горизонтали.
Можешь спрей попробовать, если только апи будешь писать.
#244 #852612
>>844131
Не дай бог!
Пусть хотя бы эко-система скалы была в форме и явно ленивые говнокодеры выбраковывались.
852613
#245 #852613
#246 #852629
>>822365
Чем head отличается от last? Кроме названия, и того, что ты соответствующий ему элемент справа рисуешь.
852740
#247 #852638
>>817990

> скаланы че спрашивают на собседованиях на скальные вакансии?


А такие есть?

>>818317

>что НЕ нравится в скале?"


Что на такое обычно отвечают?
852740
#248 #852642
>>845607
Практикой и чтением гугла/документации/чужого кода
sage #249 #852740
>>852638

>А такие есть?


Гуглить разучился?

>Что на такое обычно отвечают?


Да разное, кто про отсутсвие общего стайл гайда, кто про убогий вывод типов, кому-то коллекции не нравятся, етц. У скалы полно недостатков и этот вопрос как раз хорошо показывает опыт работы с языком.
>>852629
Ничем. Такая вот абстракция.
#250 #852842
>>818151
Бамп вопросику
#251 #852936
>>818151
Я бы вообще посоветовал F#, но тут уже дело вкуса — статика или динамика. Из реальных аргументов — кол-во библиотек и стабильность языка — на стороне скалы.
853188
#252 #853188
>>852936

> стабильность языка — на стороне скалы


Толсто, там блядь компилятор через раз зависает, 100500 багов в трекере.
853189853219
#253 #853189
>>853188

> Толсто, там блядь компилятор через раз зависает,


Ни разу не было

> 100500 багов в трекере.


Это значит что язык активно используют и улучшают
#254 #853219
>>853188
Хз что у тебя там падает, но всё что я слышал и читал об опыте с юлей — пока что очень сыро и память течёт из все дыр.
#255 #853234
>>817295

>Тоже кстати жду ответа от петуха выше – что в скале такого академичного?


Система типов. И это нихуя не плюс.
853356
#256 #853356
>>853234
И что в системе типов такого академичного?
853838
#257 #853838
>>853356
Он наверное имеет в виду что за ситемой типов в скале есть DoT (Dependent Object Types) Calculus. Не понимаю почему это не плюс. Это позволяет формально рассуждать о системе типов и улучшать её в dotty например.
#258 #855323
Решил вкатиться в Play!
Когда редактирую views/index.scala.html например, соответствующий scala файл (target/scala-2.11/twirl/main/views/html/index.template.scala) не обновляется
Использую Жидею со Скала плагином
Приходится делать из командной строки activator clean; activator compile.
Есть какие-нибудь советы?
871198
#259 #855838
>>805344
>>805359
Причем здесь "осилили" и "не осилили".
Поддержка на уровне llvm. Проблема в том, что не каждая архитектура поддерживает. Они хотят, чтобы язык можно было портировать на как можно большее количество платформ. Вот и отказались.
#260 #862427
Каковы шансы студента-борщееда вкатиться на джуниорскую позицию на скале?
862541
#261 #862541
>>862427
Никаких
862678
#262 #862550
#263 #862678
>>862541
Ладно, тогда буду вкатываться сразу на мидла
#264 #870053
>>767431 (OP)
называется, зашел скалу поучить.

спека в виде html файлов,
ченжлог забронзовел вообще, что добавили в 2.11 догадывайся как хочешь
http://scala-lang.org/files/archive/spec/2.12/15-changelog.html
что с нами стало, мартин?
870185
#265 #870185
>>870053
Зайди на гитхаб и посмотри ченджлог в описании релиза, чо как маленький.

Алсо, зашёл на сайт, прям на странице загрузки компилятора есть ссылка "чо нового" http://www.scala-lang.org/news/2.12.0
#266 #871146
Здесь кто-то использует Akka/AkkaHTTP? Я малость охуел в начале, потом прочитал доку (http://doc.akka.io/docs/akka/2.4/scala.html) акторам и потокам, даже что-то стал понимать и получать работающее, от чего совсем охуел.
871150871271
#267 #871150
>>871146
Я использую. У меня на акке написано простое REST-апи. Сам тоже ньюфаг, вкатился в скалу недавно после 6 лет джавы, местами нравится, местами нет.
871156
#268 #871156
>>871150
А у меня микросервис для сбора статистики, основная же часть на Django с REST-фреймворком, а гуй на ScalaJS/React. Так вот, перейти с динамики на скалу (как в моем случае) - это как с бейсика/1С на нормальный ЯП.
#269 #871175
Опытные аккаёбы есть тут?
Подходит ли акка для выполнения long running tasks? Гугл говорит, что актор должен отрабатывать как можно быстрее и придется что-то городить с пулами.
Use case такой - пуляю таску на "кластер", она там выполняется от нескольких секунд до нескольких часов и возвращает результат.
Что предложите?
871196871205
#270 #871196
>>871175
кастомный контекст\или таску в отдельном экзекутор сервисе

class MyActor extends Actor {
implciit val ec = CachedThreadPool(10)
def receive = {
case task: LongRunningTask =>
MyCustomEC.run(task) pipeTo sender
}
}

object MyCustimEC {
def run(task: LRT)(implicit ec: ExecitionContext) = {
// your code here
}

}
871246
#271 #871198
>>855323
нету, кроме что не использовать плэй, сейчас пишут микросервисы, а вся статика в СПА, которая отдаётся нгинксом
872166879967
#272 #871202
>>851779
Lightbend очевидно же
#273 #871204
>>845607
никак иди нахуй отсюда
#274 #871205
>>871175

>актор должен отрабатывать как можно быстрее


This, как и в любом асинхронном фреймворке, блокировать Event Loop надолго нельзя.

>Подходит ли акка для выполнения long running tasks


Пускай таск отдельным процессом или тредом, и организуй передачу сообщений, все будет ништяк.

Не аккаёб, нуб скорее.
#275 #871207
>>841951

>сделаю на scalaz-streams и сравню с джавовыми стримами.


мда
#276 #871209
>>833550
кидай
#277 #871213
>>824822

>io


>2016


ты нормальный ваще?
#278 #871215
>>818635
тикль
#279 #871246
>>871196
Т.е. в таком случае акка будет эдаким message broker?
Если у меня producer может несколько единиц/десятков/сотен задач в секунду выдавать, то можно как-то его заблочить?
871265871400
#280 #871265
>>871246
Akka-streams
Так же можно ввернуть для надёжности Kafka Grechnevaja, а в идеале взять спарк.
#281 #871271
>>871146
Все скалаёбы используют, мне особенно вот эта няшка понравилась http://doc.akka.io/docs/akka/2.4/scala/stream/stream-graphs.html
#282 #871400
>>871246

>Если у меня producer может несколько единиц/десятков/сотен задач в секунду выдавать, то можно как-то его заблочить?



да, это бэкпрэша называется, смотри любые стримы, как простой это аковские, как провереные продакшеном - апач флинк
#283 #872166
>>871198
на чем писать микросервсиы?
872190872424872429
#284 #872190
>>872166
На чем хочешь на том и пишешь, пиздос вопросик.
#285 #872424
>>872166
Akka HTTP
#286 #872429
>>872166
spray+akka и/или finagle
873042873651
#287 #873042
>>872429
Akka HTTP is Spray 2.0
873059873100
sage #288 #873059
>>873042
Хорошо замечено, ибо спрей мертв.
873334
#289 #873100
>>873042
уже не тормозит?
#290 #873334
>>873059
Акка хттп это и есть спрей
#291 #873651
>>872429
Поясни за финагл
873858
#292 #873858
>>873651
берёшь такой набираешь в гугле блять и используешь, сука вы все тут тупые нахуй.
#293 #879967
>>871198

> а вся статика в СПА


В рот ебал ваши СПА. Вместо того чтобы отдать простую страничку текста - сперва скачай 10 мегов каких-то ебнутых скриптов, затем подожди еще полчаса, пока неторопливый мобильный браузер со скрипом провернет в себе шестерни джаваскриптовой хипстопараши. При этом смартфон держать надо в варежках для сварщиков, иначе можно ожог руки получить, ибо кочегарит во всю мощь, переваривая все эти флюксы-редуксы-хуюксы.

И ради чего это все? Почему нельзя просто страничку сгенерированную отдать? Тьфу блядь.

А потом еще ебутся с тем что гугл видите ли их сайт не индексирует как следует, так как его робот не хочет / не может как следует обработать ваши скрипты.
879968
#294 #879968
>>879967
Выключай джаваскрипт в браузере и не выебывайся
879975880656
#295 #879975
>>879968
Тогда у него вообще будет груда говна вместо интернета
#296 #880332
Хз не платина ли, но есть какие нибудь годные материалы по акке?
880520
sage #297 #880520
>>880332
Что тебе кроме доки и исходников нужно?
#298 #880656
>>879968
Угу, и что я там увижу на сайте написанном по принципу

> а вся статика в СПА, которая отдаётся нгинксом


? Пустую страницу?
80 Кб, 1440x702
#299 #881125
Готовьтесь уйти в прошлое, макаки!
881139881169881229
#300 #881139
>>881125

>Имеешь опыт разработки на Haskell от 5 лет


Борщехлебы соснули, лол. Представляете, как у этих ебанашек подгорит, когда им везде будет отказ?
#301 #881169
>>881125
Круто фотошопишь.
https://hh.ru/vacancy/18711171
А я уже обрадовался
#302 #881229
>>881125
За такие вакансии (если бы это был не фотошоп) можно было бы устраивать бои хаскеллистов, ведь их много, а вакансия одна раз в год. Ну и чтобы они там пиздили друг друга клавиатурами и рвали глотки, последний оставшийся на ногах получал бы работу.
#303 #881245
Почему в скале настолько ублюдская система типов? Интероп с явой действительно столько стоит?
881253
#304 #881253
>>881245
Хачкелист закукарекал? Что в ней убогого-то?

вкатываюсь с джавы, проблем пока не имел
881267
#305 #881267
>>881253
Не хачкеллист ни разу, из экзотики знаком только поверхостно с окамлом.
Ты их и не можешь иметь, тк не понимаешь даже о чём речь, после явы и паскаль хорош своими типами, лол.

Просто сходи посмотри как адт в скале там реализуются, гуарды пма в рантайме падают (лел), как банальный энум пишется, максимально оверинжинирнутые средства разграничения полиморфизма (хотя такое больше нигде и не выразить).

Короче, она очень мощная — но с очень странными прибомбасами и косяками.
881298882149
sage #306 #881298
>>881267

>адт в скале реализуются


Нормально реализуются. Через трейт описывающий тип и несколько наследующих его case классов. Весьма похоже на хачкель, хоть и немного более многословно

>enun


Не то чтобы они нужны в скале, но чем плохо?
http://www.scala-lang.org/api/current/scala/Enumeration.html
881682
#307 #881679
>>767431 (OP)
Есть учебник по нейронным сетям на скале? Англ подойдёт.
#308 #881682
>>881298

>Нормально реализуются. Через трейт описывающий тип и несколько наследующих его case классов.


/0

>Весьма похоже на хачкель


/0

> хоть и немного более многословно


>немного


/0

>нинужна


Ну да, ты какую нибудь фсм обычную без подобного средстав очень красиво напишешь. Не начинай песню жава и го индусов.

>но чем плохо?


Может то, что они:
1) Генерируются В РАНТАЙМЕ (как и еще добрая половина ТИПОБЕЗОБАСНОЙ системы типы скалы);
2) Нужно писать буквально в 6 раз больше как и с адт.
881737
#309 #881737
>>881682

>/0


Что сказать то этим хотел?

>Нужно писать буквально в 6 раз больше


Ты выражаешь частную концепцию в терминах более общей. В хаскелле атд -- встроеная часть синтаксиса. В скале -- нечто, что можно реализовать при помощи трейтов и классов. Это ты ещё имплементацию тайпкласов не видел, лол. Здесь то всё хотя бы очевидно, хоть и многословно.
#310 #881837
Насколько плох/хорош c# с точки зрения функциональности и удобства использования по сравнению со скалой? Думаю, что учить после джавы. Пока считаю, что скала интереснее, но пугает количество вакансий.
881842882149
#311 #881842
>>881837
Если тебя это пугает — пиздуй учить спринги и прочее, что требуют при устройстве на работу, а не языки.

>Насколько плох/хорош c# с точки зрения функциональности и удобства использования по сравнению со скалой?


Функциональность/0.
Удобство — относительно жавы 8/10, относительно скалы 2/10.

В любом случае, если ты только вкатываешься в программирование — скалу выше уровня "нескучной жавы" не осилишь.
881846
#312 #881846
>>881842
Не, так-то я уже работаю год джава девом, сейчас хочу сделать вклад в будущее, поэтому надо понять, можно ли ставить на скалу или по крайней мере, на ее идеологию и фишки, которые вроде как начинает перекатывать джава. Гетц во всяком случае наобещал уже угадывание типов, кейс классы и паттерн матчинг.
881852881857
#313 #881852
>>881846

>Гетц во всяком случае наобещал уже угадывание типов, кейс классы и паттерн матчинг.


..которых уже гарантированно не будет как минимум в девятке, ещё всего-то лет 6-8 подождать осталось. При том, что это даже не пятая часть её фич, лол.

>сделать вклад в будущее


Ты это так мусолишь, будто прям дохуя времени и сил инвестировать надо. Лишними новые концепции не будут в любом случае.
#314 #881857
>>881846
Если тебе для себя и поиграться, то ставь Haxe и конпелируй под джаву.
881878
#315 #881878
>>881857
Чем он лучше скалы?
sage #316 #882149
>>881267

>гуарды пма в рантайме падают (лел)


Ты имеешь в виду тотальность или что? В хаскеле тоже можно писать не тотальные функции.

>как банальный энум пишется


Энум не имеет отношение к системе типов, это просто класс и стандартной библотеки. Лучше исользовать джавовый энумы или либу Enumeratum.
У системы типов скалы есть реальные проблемы: http://io.livecode.ch/learn/namin/unsound
Возможно они будут пофикшены с развитием DoT в dotty и scala 3.
>>881837
Писал почти все работы в универе и полтора года на работе на шарпе, сейчас уже 4 года на скале, на джаве сам почти не писал.
Могу сказать что вернуться к шарпу будет больно. Как и к джаве, даже к восьмой. Дело не только в языках, а в библиотеках, что собственно связано, потому что более мощный язык позволяет создавать более мощные библиотеки и с их помощью писать более читаемый и, если нужно, более абстрактный код.
Хотя шарп удобнее джавы (как минимум был, с появлением восьмой джавы разрыв очень сократился), я бы не советовал переходить на него. Причина проста: на джаве чаще пишется серьёзный бэкенд. То есть у тебя есть больше возможностей работать в местах где ты узнаешь много про разные хранилища данных, конкарренси, асинхронные фреймворки etc. Я не говорю что на шарпе это не пишут, просто реже. Посмотри сам по вакансиям.
Btw, http://www.itjobswatch.co.uk - интересный пример. Найди там данные по шарпу, джаве, скале и хаскелю и сделай выводы.
891453
#317 #885882
Вкатился в проект на Play и Akka. Ох, и боль.
886052886661
#318 #886052
>>885882
Рассказывай
13 Кб, 374x128
#319 #886110
>>767431 (OP)
Что эта шайтан машина хочет от меня?
886125886153
#320 #886125
>>886110
<kzlm.
Можно просто писать код и исполнять его, без всяких созданий говно SBT-проектов? Я, блядь, просто поиграться хочу, а не ентерпрайз приложение писать. Сука. Час потратишь, слушал несколько разных индусов чтобы только понять, как запускать код из Idea, так нихуя и не получилось, хотя под конец как мартышка действия повторял. Сука, бомбит.
886445
#321 #886153
>>886110

>jvm sdk does not exists


Ну ты сам то как думаешь?
886496
#322 #886445
>>886125
REPL в скале есть, так что просто набирай в консоли "scala" и получай доступ к интерпретатору.
886496
#323 #886496
>>886445
Лол, ты действительно предлагаешь кодить без подсветки и автоподбора или траллишь?

>>886153
Как сделать его экзист, блядь? Плагин sdk установлен. Я заебался, даже гугл не помогает.

мимопестонистсменившийверу
886504
sage #324 #886504
>>886496

>Лол, ты действительно предлагаешь кодить без подсветки и автоподбора или траллишь?


Во-первых, если тебе просто поиграться, то автоподбор тебе не слишком нужен, да и подсветка тоже, хотя она есть в любом нормальном текстовом редакторе.
Во-вторых, в repl'e скалы 2.12 есть подсветка и автодополнение.
В-третьих, судя по проблеме, у тебя хромают навыки обращения с ПК.
886527
#325 #886527
>>886504

>если поиграться


Если хочу разобраться, но чисто из образовательных целей? Я читаю книжку по скале и кончаю радугой. Нужно просто понять, как это настроить, а дальше пойдёт проще.

>в repl'e скалы есть подсветка


В любом случае там нужно построчно вводить. Это не удобно, если хочешь написать что-то на 200 строк кода, нпрм.

>хромают навыки обращения с пк


И что делать?
886534
#326 #886534
>>886527
Делаешь SBT проект, а в нем создаешь себе scala worksheet. И играешься с ним сколько влезет
886543886545
8 Кб, 480x143
#327 #886543
>>886534
Спс, но я просто вместо класса обжект создал и заработало.

Мне больше интересно, как ты разобрался во всём этом? Есть какой-то учебник/сайт или есть рилейтид опыт из явы и поэтому понятно всё?
886546886571
#328 #886545
>>886534
В чём разница между worksheet/ scala script, чем они отличаются от файлов классов/объектов, как именно применяется SBT и что это вообще всё такое.
886546886571
#329 #886546
#330 #886571
>>886545
SBT -- эдакий Maven для Scala проектов. Только вместо xml описания -- DSL на самой scala.

>worksheet


Продолжение идеи REPL. Каждое выражение вычисляется и отображается интерактивно. Фактически используется за тем же, за чем и REPL

>Script


Не знаю, не трогал
>>886543
Через жопную боль. Особенно припекало от ИДЕИ, которая крашилась из-за недостатка оперативки. Как выяснилось, я забыл выделить swap.
#331 #886661
>>885882
Двачую. Писать на Scala на Play! - то же самое что писать на жабе на Play!, разве что паттерн-матичинг немного помогает.
886700886935
#332 #886700
>>886661

>то же самое что писать на жабе на Play!


Так говоришь будто что-то плохое. Вполне няшный веб-фреймворк.
#333 #886935
>>886661
У нас Play+Java как раз. Говорят, кошерно только на Scala для него писать. Что сразу заметил:
- другая парадигма, много всего осознавать, не самая пологая learning curve;
- везде пишут "расслабьтесь, скалу учить не надо". Но sbt — это описание билда на гребаной скале. Если ты ее не знаешь, что файл сложно читать, я уже не говорю менять. Это в противовес няшному декларативному Maven с xml, где конфиг по аналогии поправит даже ребенок;
- стек довольно редкий + завязка на Lightbend
887082887328
175 Кб, 550x340
scala chat #334 #887080
Кому интересно общение на тему скалки, милости просим в наш чятик
https://telegram.me/joinchat/BoA_aj9lle-bI9Id-jcE3A
#335 #887082
>>886935
Ну пиздец. XML ты значит смог выучить, а DSL с джаваподобным синтаксисом не осилил.
#336 #887104
>>887082
XML интуитивно понятен же.
#337 #887116
>>887082
XML не надо "учить" он декларативный. Там домохозяйка расскажет, что происходит. И посмотри на .sbt в противовес со всеми этими :=, <<+, +<<, <<=, whatever. Я не говорю, что это нельзя освоить. Я говорю, что это лишний геморрой и дополнительное время.
#338 #887328
>>886935

>У нас Play+Java как раз. Говорят, кошерно только на Scala для него писать


Смотря какая версия фреймворка. Первая более заточена под джаву, вторая - под скалу. Я свои проекты делаю на джаве на 1.4.х и мне норм. Хотя поскольку начал сейчас скалу осваивать - думаю вкатиться во вторую версию и поглядеть что-как там.

>>887082
Безотносительно SBT, в функциональных языках все просто помешались на придумывании DSL на каждый чих.
Самый цирк - это DSL для html или xml (такое мне попадалось). Блядь, вы ебнутые что ли? html и xml это УЖЕ DSL фактически, зачем придумывать еще один слой поверх них?
В итоге приходится учить кучу ненужной хуиты.
887469
#339 #887469
>>887328
Потому что (html (body хуй)) для многих читается и набирается проще, чем <html><body>хуй</body></html>
#340 #887495
>>887082
SBT — уродливая говнина уровня перла, а не жавоподобный синтаксис.

Вот серьёзно, я хз как люди пользуются этими сбт/мавенами/ант, когда есть божественный грейдл.
888074
#341 #888074
>>887495
Для большинства проектов все что нужно - это уметь скачивать зависимости, компилировать проект и собирать всякие джары-вары-хуяры. В таком случае что грейдл, что мавен, что сбт однохуйственны.
#342 #889671
Есть джва стула. Жаба и Скала. Стоит ли скала того чтобы в неё закатываться. Есть небольшой опыт работы с жавой, и возможность переехать на скалу. Есть успешные скала девелоперы 300к/нс, стоило ли оно того для вас, какие пруфиты по сравнению с жавой?
890102891453
#343 #889734
>>843284
Почитай вот про свободные аппликативные функторы и стрелки.
#344 #889736
>>767431 (OP)
Анон, у тебя не печет от синтаксиса скалы после хаскеля?
890102890161
#345 #890102
>>889736
Адово печет, даже учитывая что от хаскеля я узнал только какие-то самые основы.

>>889671

> и возможность переехать на скалу


А что значит "переехать"? У тебя есть вакансия со скалой, на которую тебя готовы взять? Ну тогда чего бы не попробовать.
На скале вакансий мало, но они есть. Язык интересный в целом, хоть и переусложненный.
#346 #890161
>>889736
Печёт но не сильно. Я так и не понял например, как в хаскеле нормально работать с разными зависимостями, к примеру. Если есть несколько пакетов с процедурами имена которых совпадают, начинается веселье и пиздец с квалифицированными импортами и лапшой кода
Куда сильнее печёт от каличного автоматического вывода типов. Ну оно то и понятно, скальная система типов несколько более "свободная"
890662
#347 #890662
>>890161

>сли есть несколько пакетов с процедурами имена которых совпадают, начинается веселье и пиздец с квалифицированными импортами и лапшой кода


А в каком языке это не так?
#348 #891453
>>889671
Пробовать стоит однозначно, ты ничего практически не теряешь. Ну может будешь хуже в спринге каком-то разбираться, но дрочить на фреймворки - быть дауном.
Профиты:
- язык на котором можно почти без боли писать и, что важнее, который можно без боли читать
- обычно более компетентные команды
- в среднем выше зп - пруф я давал выше >>882149
#349 #891800
Теперь вы добавлены в Перекотер, так что вам нет нужды перекатывать треды вручную >>891794
КТО-ТО ПОД ВЕДРОИД ПИШЕТ НА ЭТОЙ ХУЙНЕ? #350 #892084
Говорят вообще круто, попробуй еще захочешь.Может кто поможет закатиться
893226897118
#351 #893226
>>892084
А что ты сделал? Темплейт с макроида то пробовал собрать?
#352 #897112
Так, есть в треде скаланы - scala-разработчики? Как вкатились? Что нужно знать? Пилите стори
897118
#353 #897118
>>897112
То же что и для вкотывания в любой другой язык ничего.
Скачали любую книжку и вкатились.
>>892084
Ага, ахуенно, только вот рантайм 50мб на мобилках тебя опечалит. Если не хочешь измазываться монадами и заниматься прочими приседаниями на типах и прочем - то она тебе даст только более краткий синтаксис. Для такого лучше взять какой нибудь котлин.
Вкатится поможет шапка.
897159941003
#354 #897146
Работаю чуть меньше года джава джуном. Попробовал скалу - понравилась.

На какие деньги можно рассчитывать в МСК при выборе скала-вакансии (будет ли эта цифра выше/ниже для джава вариантов)? Охотно ли берут людей с аналогичным опытом, или стоит еще прокачаться в джаве год-два?

На hh нашел, что скалисты нужны тинькоффу и яндексу. Есть ли отзывы по ним, а также другие известные работодатели на примете?
897165
#355 #897159
>>897118
Прочитал джве книжки предварительно посмотрев курсы на coursera. Как теперь начать писать на скале за деньги?
897165897173
#356 #897165
>>897159
Получить где-то опыт (опенсорс/фриланс пойдёт чтоб подзабить портфолио), подзубрить что там спрашивают на собеседованиях по скале и в уелом, подтянуть енгришь и пиздовать собеседоваться. Ещё есть вариант походить познакомится с людьми на конференциях/митапах — больше всего хайрят через знакомых.
>>897146
Моя имхота — когда будешь уверенно тянуть на мидла (относительно своих более опытных комрадов измеряется такое), если среднеджун не стоит сильно рыпаться.

В среднем та же самая цифра, зависит от вилки конкретного региона и компании (зарплаты в целом-то только так и варьируются а не по языку).

Яндексы с тиньковыми — просто большие компании с большими штатами и, соответственно, текучкой. Так вакансий куча, но они мелькают и их трудно заметить если не мониторить (опять же, я выше уже писал — большая часть хайринга кадров производится через знакомых).
897178
#357 #897166
Про заработок денех на скале уже пора в шапку добавлять, лел.
#358 #897173
>>897159
Фриланс, хуячь вебприложения на фуллстек-скале.
#359 #897178
>>897165
Так я работу сменить хочу именно из-за того, что ощущаю, что уровень в плане технологий выше коллег и ловить в конторе уже нечего, либо меня просто не хотят прокачивать. Поэтому адекватную оценку дать себе сложно. Вопрос только в "джава или скала". Конечно, похожу по собеседованиям, посмотрю, где больше предложат и на условия труда. Но я с бОльшим удовольствием повозился бы в скале.
Значит, в крупные конторы через формы обратной связи на сайтах не стоит подавать заявки, а лучше найти человека с интересуемой фирмы и черкануть на почту?
897208
#360 #897208
>>897178
Нет, просто чирканув на почту ты наврятли чего-то вообще добьёшься (вот сам представь — тебе пишет незнакомый хуй из интернетов тебе пишет на почту, просит протолкнуть под жопу эйчарке).

Знакомятся люди явно не так, лол.
897234
#361 #897234
>>897208
Окай.. а можешь подсказать еще, в реальных скала-проектах код читабельный для среднего разработчика? Или часто используют спец. либы для хард функционального программирования, к примеру, scalaz?
897236
#362 #897236
>>897234
"Обычный скала проект" зависит только от команды которой пишется. Где-то как в мире плюсов используют очень ограниченное кол-во фич и даже травят линтеры на нарушителей, где-то и округлые котята на монадах.
897256897265
#363 #897256
>>897236
От размера команды зависит, скорее всего. Трудно представить себе даже человек 10 тайплевел-джедаев за одним проектом.
897258
#364 #897258
>>897256
Ну, проекту-то не обязательно быть монолитным. А морду для взаимодействия можно и без джихада императивщине написать.
69 Кб, 520x534
#365 #897265
>>897236
Кароч, смотря какая роль - пользователя всей этой магии (которая под капотом, наверное, всех популярных библиотек), либо кортим-разработчика. Если у каждого разработчика прикладного кода свой собственный dsl over scala, и метапрограммирование на shapeless, это как-то стремно.
#366 #902644
Изучаю вот эту страницу: https://www.scala-exercises.org/cats/semigroup
и нифига не понимаю, для чего нужен этот Semigroup, и по какому правилу он вычисляется (в гугле нифига). Подскажите?
902662902717
#368 #902664
>>902662
Кинуть ссылку на вики - все-равно что нахуй послать. Может ты сам не шаришь?
902676902717
#369 #902676
>>902664
Я и не шарю. Помню только, что полугруппа - что-то из дискретки. А тебе зачем?
902691902717
#370 #902691
>>902676
Для саморазвития. После появления в джаве лямбд, на гитхабе развелись проекты (к примеру, functionaljava), предоставляющие скаловский способ работы с данными. Там, в том числе, и эта структура есть. Видать, что-то важное, раз даже в джаву попытались мигрировать.
902693
#371 #902693
>>902691
/0
Лучше попробуй поискать чего в яву ещё не потащили.
#372 #902717
>>902644
>>902662
>>902664
>>902676
Ебаные дебилы что вы здесь делаете? Функциональщики, говно жрут, что такое полугруппа -- не знают. Ну охуеть вообще!
902729902734902740
#373 #902729
>>902717
Не разжевал понятие - записался в наши ряды =)
902736902741
#374 #902734
>>902717
Раскинулось поле по модулю пять, за ним интегралы стояли..
Че сказать то хотел?
902741
sage #375 #902736
>>902729
Не знаешь понятия - не являешься илитным скала девелопером :)
902738902741
sage #376 #902738
>>902736
Все типовики порешал, илита?
299 Кб, 1358x1284
#377 #902740
>>902717

>функциональцики


Но мы простые веб-макаки
909909
#378 #902741
>>902736
>>902729
>>902734
С манадами то уже разобрались, почаны? Или не нужно? Или не рассказали как монады связаны с полугруппами?
902747
25 Кб, 416x287
#379 #902747
>>902741

>monad is a monoid in the category of endofunctors


>Моноид


>Полугруппа

902751
#380 #902751
>>902747

>Моноид


>Полугруппа с единицей


>Снабжаешь ебаную полугруппу одним ебаным нейтральным элементом и получается блядский моноид


Что ещё спизданешь, мудило?
902754
#381 #902754
>>902751
Кэп, с чего ты решил, что с тобой кто-то спорит?
902757
#382 #902757
>>902754
Хуй знает. Такой вот я батхёртнутый долбоёб
902769
#383 #902769
>>902757
Давай лучше за NoSQL перетрем. Чому его так форсят? Я postgres всю жизнь использую (over slick как в склаебы заделался), а монгу ни одного повода изучить не было. Все ли так я делаю?
902788902847
#384 #902788
>>902769
Потому же, почему подворачивают штаны или отращивают бороду, лел. Использовать нереляционные БД там где можно использовать реляционные --- долбоебизм чистой воды
902813
#385 #902813
>>902788
Примерно так и думал. Вот у меня есть проект, где классически в БД лежат всякие сущности, и их отношения (а мордой джанга выступает). Но, вместе с тем, есть и сервис со сбором событий (и хитрой аналитикой в отчетах) на акке, где журнал весь такой из себя схеммалесс, но ссылающийся на вышеупомянутые сущности. Так вот, мне не впадлу написать миграцию, если журналирование требует каких-то изменений. Ну и понятно, что со временем, нагрузка таки может возрасти, и всю эту аналитику из отдельной схемы БД придется переносить в какое-то новомодное хранилище с шардингом, но бай дефолт монгу сувать туда я не стал.
#386 #902847
>>902769
Ты сидишь в скала треде, и вспомнил о монго, но не кассандра+айроспайк. Думаю ты зашел не в тот тред.
902852
#387 #902852
>>902847
А же говорил, что пишу гуй на scalajs и асинхронщину на AkkaHTTP/Slick (иначе фигачил бы на торнадо), причем год только как подсел. Экосистемы не знаю, да. Зато вот от тебя, няша, узнал полезное.
#388 #902880
Братья, я вам тут годноту про implicit-based паттерны принес, нубам — в обязательном порядке к прочтению.

http://www.lihaoyi.com/post/ImplicitDesignPatternsinScala.html
903335
#389 #903335
>>902880
Имплиситы какое-то невероятное говнище. Экономится пара лишних символов (ну охуеть, теперь вместо того чтобы в каждый метод передавать контекст, или, что еще лучше, один раз передать его в конструктор объекта, мы заведем новую фичу языка), зато код делается некопируемым. Нельзя просто взять, скопировать кусок когда из документации или стековерфлоу и чтобы он заработал. Так как внезапно откуда-то нужно взять кучу имплиситов, которые могут еще и внезапно нетривиально создаваться.
Короче наравне с перегрузкой операторов это квинтэссенция подхода "ты никогда не угадаешь что делает этот код просто глядя на него, пока сука не сходишь в IDE по всем методам, операторам и вообще всему окружению"
903337903977
#390 #903337
>>903335
В статье как раз описано, для чего это делается. Если так бугуртишь, и сравнивай на джавке строки через equals, там такого "говнища" не завезено.
ровные посоны пишут в ide, посмотреть значения имплиситов - одна кнопка. расширяемость языка - бесценна
903958
#391 #903958
>>903337

>и сравнивай на джавке строки через equals


А я так и делаю. Скала мне нравится многими вещами, но все-таки этот язык содержит очень много способов сделать код абсолютно непонятным и нечитаемым. И если перегрузка операторов - вещь в целом полезная (и холиварная) и способна повысить читаемость и понятность кода, то имплиситы - какая-то невнятная поебень, нужная только чтобы сэкономить пару символов. Впрочем учитывая что многие адепты скалы обожают абсолютно ложное утверждение что "короткий код = понятный код" то ничего удивительного.
903959
#392 #903959
>>903958

>нужная только чтобы сэкономить пару символов


Глубоки познания твои, подаван.
904149
#393 #903977
>>903335

>нельзя просто взять, скопировать кусок когда из документации или стековерфлоу и чтобы он заработал.


Пиздец какой-то. А так вообще можно? И внутренние импорты в проекте не помешают?

>нужная только чтобы сэкономить пару символов.


Пиздос. Даже обьяснять лень
904149
#394 #904149
>>903977

>И внутренние импорты в проекте не помешают?


Импорты стандартных классов IDE сама проставит. А вот всякие нетривиальные имплиситы - хуйз.

>>903959
>>903977
Неглубоки, но пока что я не видел ни одного использования имплисит параметров (я именно про них, имплисит преобразования в целом я нахожу полезными) которое нельзя было бы сделать добавлением пары символов и явной передаче аргумента.
904172904188
#395 #904172
>>904149
Вот и прочитай про статью про тайпклассы, там, например, разобран JSON сериализатор, расширяемый через ваш любимый Open/Closed принцип. Что за порода, им принесешь информацию на блюдечке, а они вместо чтения начинают, нытье про ненужно.
904178
sage #396 #904178
>>904172
лишнюю зпт захуярил, соре
#397 #904188
>>904149
нахуй иди отсюдава дауна кусок
904198
#398 #904198
>>904188
Поддерживаю твою сорону, но не поддерживаю твою аргументацию.

Немного джуночувств.
Вот такое я оче не люблю:
[CODE]def sosi(implicit name: String) = "Sosi " + name
......sovsem drugoy fayl....
implicit val n = "Scalahater"
............mnogo strok.........
sosi
[/CODE]
Хотя такая вот нравиттся:
[CODE]class Pidor(val name: String)
object Pidor {
implicit val pidor: Pidor = new Pidor("Scalahater")
}
......sovsem drugoy fayl....
def sosi(implicit pidor: Pidor) = "Sosi " + pidor.name[/CODE]
21 Кб, 1070x177
#399 #904895
>>767431 (OP)
объясните пожалуйста, как исправить эту ошибку? я создаю в intellij idea проект maven, потом нажимаю на "create from archetype", и выбираю scala, и у меня даже не получается запустить этот шаблонный проект. Объясните, в чём дело пожалуйста.
905338905460
#400 #904983
Настало время глупых ошибок. У меня, вот, идея не запускает свежесозданный sbt проект по стандартному create шаблону (scala-плагин установлен и без sbt все работает збс). Ошибки: ClassNotFoundException Product0, либо Function0. Погуглив, понял, что идея не видит Scala (не совсем понимаю, что это значит, и как исправить). Кто-нибудь сталкивался с такой проблемой?
905338
#401 #905338
>>904895>>904983
Мне кажется у тебя Шиндоуспроблемs.
#402 #905460
>>904895
Обновить JUnit, очевидно же.
#403 #905974
Анон, как организовать implicit conversion Option[A] => Option?

Такое не работает implicit def toB[A, B](a: Option[A])(implicit conv: A => B): Option = a.map(conv(_))
905976
#404 #905976
>>905974
Там Option проебалось.
905977
#405 #905977
>>905976
Да блядь.
Опшен(Б)
906011
#406 #906011
>>905977
Запости на пастебин.
912910
#407 #907230
щас тред похерим, аккуратно
#408 #908911
О чем спрашивают новичков на скала-собеседованиях?
908951
#409 #908951
>>908911
Об их прошлом опыте работы на Java. Как правило, большом опыте. Или вообще переучивают имеющихся в штате.

Scala Junior - редкость.
908992908995
#410 #908992
>>908951
Значит, всех сразу же делают скала-мидлами? ) Чтоб мотивировать переход. Или сеньорами, чего уж там.
908996908997
#411 #908995
>>908951
С JS прыгнул на Scala, на Java до этого почти не кодил не считая пару сложных хеловордов. Ну в целом конечно только умные джависты идут на скалу, а тормоза остаются в жабе, факт.
#412 #908996
>>908992
Да нет, не делают, сразу берут из жява мира синьйоров и мидлов.
909000
#413 #908997
>>908992
Нет, Scala язык не самый просто для новичка, да, ты можешь писать на нём как Java, только нахуй тебе тогда учить Scala, обычно скалу выбирают как раз из-за его богатых возможностей функциональной парадигмы, а это определенные правила и стиль программирования, которые во-первых накладывают ограничения при программировании (за переменную линейкой бы у меня на работе ебнули по рукам), ну и императивный стиль почему-то для большинства легче
909919
#414 #909000
>>908996
Ну просто я реально не понимаю. Вот задача. Есть теоретический (!) скала синьор с пятилетним опытом и джава синьор с таким же опытом, только-только изучивший скалу. Как каждого из них называть, если будут работать в одной команде над скала-проектом?
909004909016
#415 #909004
>>909000
Если проект на монадах и котятах — синьером будет только опытный скалист-фпшник. Иначе — похуй абсолютно, такая же жава, с чуть менее вербозным синтаксисом.
#416 #909016
>>909000
Скала синьора называй папой, джава синьора можешь называть шляпой, тетей шлюхой, гребнем, хуйлушей.
909028
#417 #909028
>>909016
Двачую этого мопса.
#418 #909909
>>902740
О! Это scala.js? Поясни, как с ним дела обстоят, жив ещё? Чо там с интеропом, либами? Как пишется вообще на нём?
909956
#419 #909919
>>908997
Т.е. var вы вообще не юзаете и если нужны сортоф while цикл(как пример) пишете функцию с хвостовой?
909956
#420 #909956
>>909909
Мне кажется что это какой-то хуевый scalatags.
C scala.js все нормально. В меру популярный для сложных интерфейсов.
>>909919
Иди на курсеру проходить proglang. Все поймешь.
910025
#421 #910025
>>909956
Это тот же скалатагс импорченный через префикс
#422 #912426
Братцы, если я совсем зеленый в алгоритмах че делать? Изучать книги/курсы с императивной реализацией? Мб есть какая годная инфа?
912674
#423 #912674
>>912426
Если тебе просто хочется уметь во всякие эти списки-деревья-сортировки то читни какого-нибудь Кормена "Алгоритмы построение и анализ", это классика, это знать надо.

Вообще реализовывать тебе вряд ли что-то придется самому, если ты только не дохуя хайлоад будешь делать (что вряд ли в ближайшем будущем) или науку пилить. Хватит краткого перечня основных алгоритмов и структур данных и основ анализа сложности чтобы понимать хуле у тебя удаление из ArrayList так долго работает. Главное знать ключевые слова, по которым потом гуглятся детали
#425 #912970
>>912910
а почему тебе не хватает просто имплицитного преобразования из A в B?
Такая штука вполне работает: http://pastebin.com/MagUGi9k

Передаем Option[A] туда, где нужен Option и A преобразуется в B
913247
#426 #913247
>>912970
Ды как-то не преобразуется, братан.
18 Кб, 921x137
44 Кб, 479x479
50 Кб, 713x544
95 Кб, 786x720
#427 #914171
СУКА ПИДОРАСЫ НЕНАВИЖУ БЛЯДЬ АААААААААААААААААААААААА
914189
#428 #914189
>>914171
def joiner[T](list: List[T]): T = ???
914426
#429 #914426
>>914189
Нужна диспечеризация по типу. Для одного типа аргумента один метод, для второго -- другой. Не через instanceOf же чекать?
Что за хуйня и почему я с ней до сих пор не столкнулся?
914430914623
#430 #914430
>>914426
Паттернматчинг. Кстати, если диспетчеризация нужна по типу параметра дженерика (как у тебя List[Int], List[String]), наткнешься на жвмопроблемы, кури тайптеги
914467
#431 #914467
>>914430
Ну и как ты собрался через паттерн матчинг проверять тип?
Вот, кстати что пишут пацаны
http://stackoverflow.com/questions/3307427/scala-double-definition-2-methods-have-the-same-type-erasure
914496914510914512
#432 #914496
914517
#433 #914510
>>914467
Ну а я че тебе написал про жвм-проблемы, ебана
#434 #914512
>>914467
А вообще, ты бы книгу прочитал, что-ли. Скала хуево осваивается методом тыка без целостной картины в головушке.
#435 #914517
>>914496
Во-первых, кто "ты"? Нас здесь двое как минимум. Во-вторых, с чего ты взял что я не читал книг?
Просто такая:
case y: List[Int] => ???
конструкция как-то мимо меня прошла
914524914538
#436 #914524
>>914517
Я третий. Про книги не я писал, но как бы основное применение паттернматчинга в других языках, откуда он пришел, именно в том чтобы матчить типы и адт, а не для обычного свитча на стероидах. Так что пиздуй читать про моноидные функторы, йопт
914527
27 Кб, 1345x304
#437 #914527
>>914524

>матчить типы


В этом вашем хаскеле такой хуйни нету, например. А, и да, в скале это не работает
914540914550
#438 #914538
>>914517

>с чего ты взял что я не читал книг?


>не знать про матч по типу


>не знать про тайп эрейже


Хуй знает. Наверное, от то, что абсолютно не понимаешь, что делаешь.
914554
#439 #914540
>>914527
Ну ты и днище ебаное тебе уже 5 раз написали про type erasure в жвм и тайптеги
914554
#440 #914550
>>914527

>В этом вашем хаскеле такой хуйни нету, например


Ты очень хуйово смортишь, причем везде. зануда мод: скала от эмэлей синтаксиса написалась, не от хачкеля

>в скале это не работает


А тут ты не та то валишь.
914556914583
#441 #914553
Мне даже интересно стало, откуда же к нам такая йоба умная прибежала? Из го-вно трета, где агитируют за то, что литература нинужна?
220 Кб, 1920x1080
#442 #914554
>>914538
>>914540
Ладно, я соснул. Не понимаю, правда, как из этого абзаца можно сделать такие далеко идущие выводы. Может книжка хуёвая? Рассказывайте, что за годноту читали
914566
#443 #914556
>>914550

>написалась


Насосалась
#444 #914566
>>914554

>Scala in Depth


Не знаю, может и хуевая. Я изучал по "Scala для нетерпеливых", там последовательно разложены аспекты языка, и примерно указано, где какие подводные камни.
914576
#445 #914576
>>914566
Она намного проще, и значительно менее подробная.
#446 #914583
>>914550

>Ты очень хуйово смортишь, причем везде


А где это в хаскиле паттерн-матчинг по типу? Или в окамле? Или в смл? Или в фешарпе? Я вот что-то не припоминаю. Ты же не имеешь в виду ручное теггирование через адт?
#447 #914623
>>914426
Юзай тайпклассы

object Main extends App {

trait Joiner[T] {
def join(list: List[T]): T
}

object Joiner {
def apply[T: Joiner](list: List[T]) = implicitly[Joiner[T]].join(list)
implicit val intJoiner: Joiner[Int] = (list: List[Int]) => 1
implicit val strJoiner: Joiner[String] = (list: List[String]) => "str"
}

println(Joiner(List(123)))

println(Joiner(List("")))

}
914630
#448 #914630
>>914623
А я еще вот такой трюк использовал: http://stackoverflow.com/questions/34745066/dummyimplicits-is-this-used-and-how
914684
#449 #914684
>>914630
Оно то можно конечно воспользоваться хаком, но тайпклассы - стандартный паттерн в ФП и в scala юзается почти везде.
Так что рекомендую освоить и использовать его: http://danielwestheide.com/blog/2013/02/06/the-neophytes-guide-to-scala-part-12-type-classes.html
914717
#450 #914717
>>914684
Да я в курсе про тайпклассы, просто дал еще один вариант. Есть разные ситуации, возможно DummyImplicit в какой-то будет лучше.
67 Кб, 500x718
#451 #914791
Ну пиздец посоны, я думал, что в скале эту хуйню пофиксили, а нет, же блядь походу прямо в жвм проблема, а не только в жабе. Ну пиздец.
#452 #914977
Анон, подскажи, как можно реализовать следующую хрень

Хочу написать функцию которая принимает два аргумента одного и того же класса, что-то вычисляет и возвращает результат, который является обьектом этого же класса

def compute(a: T, b: T): T = ...

Что бы она произвела вычисления у класса T должны быть методы +, -, , : Double

Знаю, что можно сделать интерфейс с этими методами и задать T <: Interface или через implicit обьект ComputeOps[T] с методами add(a: T, b: T) и тд, но этот метод мне не оч нравится, потому, что и так громоздкое выражение внутри функции превратится в совсем пиздец, если вместо a + b придется писать fooOps.add(a, b).

Мне нравится следующая идея: если я хочу использовать compute для некоторого класса Foo, то мне надо "довесить" необходимые методы используя implicit class не засоряя основное определение Foo, и внутри compute просто писать a + b * a.... и тд.

Можно ли так сделать, и если да, то как? Это вообще норм идея, или глупость?
915047
#453 #915047
>>914977

То, что ты описал, похоже на тайпклассы + pimp my library:

object Main extends App {

trait Add[A] {
def add(a: A, b: A): A
}

implicit class AddOps[A](a: A)(implicit n: Add[A]) {
def |+|(b: A): A = n.add(a, b)
}

object Add {
implicit val addForDouble: Add[Double] = (a, b) => a + b
}

def compute[A: Add](a: A, b: A): A = a |+| b

println(compute(1.0, 2.0))

}

Метод специально назвал |+| вместо +, чтобы было видно, что он добавлен через имплиситы
916357916407
#454 #916357
>>915047
Ты заебал уже со своими тайпклассами, Анон. Выучил тайпклассы - теперь во все щели протаскиваешь?
916363
#455 #916363
>>916357
Они без Антона торчат из всех щелей например. Печет от тайпклассов - возможно, ты используешь не тот яп
#456 #916407
>>915047
Спасибо, оч помог!
#457 #917355
>>767431 (OP)
Скаланы, а вот меня интесует вопрос по структуре проекта. Директории, куда тесты, сырсы и прочее.
917587
#458 #917587
>>917355
man sbt
918056
#459 #918056
>>917587
Про генераторы прожектов типа скалатра хуиты я знаю, но вот все эти Джава лайк подходы: директория/ещё директория/100 уровней вниз/Опача.scala меня не очень радуют. Я понимаю, что это вкусовщина всё, и можно делать как хочешь, но есть ли другой, альтернативный и популярный подход?
918153918969
#460 #918153
>>918056
Нету. И самое веселое, что тот же sbt из коробки поддерживает именно жява-стайл. Ну а чо ты хотел, она на жвм крутится, со всем вытекающим говном, вроде нпе, стирания типов и вот этого вот.
sage #461 #918969
>>918056

>директория/ещё директория/100 уровней вниз/Опача.scala


>директория/ещё директория


src/(main|test|it)/(scala|java|resources) - это нормально, что тут еще можно придумать

>100 уровней вниз


А это уже на твоё усморение. Не хочешь под каждый пакет делать директорию - не делай. Другое дело что когда у тебя 100 пакетов, с соответствующей иерархией в файловой системе как-то удобнее. Ну и я не знаю как IDE дружат с неиерархичным представлением, в смысле рефакторинга например.
#462 #924231
Cап, анон, нужна твоя помощь: есть модель - case class Model(... field: Option[Long] ...) нужно используя слик (3 версия, если это важно) взять из базы первый попавшийся экземпляр у которого field == None, обновить ему значение field и вернуть обновленный экземпляр

как-то так def findAndUpdate(value: Long): Future[Option[Model]] // value - значение которое надо установить в field, Option[Model] - потому что в базе может не оказаться сущностей с field = None
924233924274
#463 #924233
>>924231
обновить - значит изменить и записать изменение в базу
#464 #924274
>>924231
query
.map(_.field)
.filter(_.isEmpty)
.take(1)
.update(Some(value))
924291
#465 #924291
>>924274
такой запрос вернет Int, а мне надо обновленную сущность возвращать
924316
#466 #924316
>>924291
Ну, чот такое.

val itm = query.filter(_.field.isEmpty)
val optVal = Some(value)

for {
optModel <- itm.result.headOption
_ <- itm.map(_.field).take(1).update(optVal) if optModel.nonEmpty
} yield optModel.map(_.copy(field = optVal))q
924317
#467 #924317
>>924316
Без q в конце.
#468 #924960
Почаны, 2.12 сильно от 2.10 отличается? Если начну читать по 2.10 не получится так, будто я читаю про 7 джк?
sage #469 #924995
>>924960
Не получится.
#470 #925009
>>924960
Начни читать про 2.12.
#471 #925336
>>924960
Там не такие сильные изменения что прям все ПИЗДЕЦ ВСЕ ГОРИТ ПЕРЕПИСЫВАЙ ЧИСТИ ВИЛКОЙ. Если тебе не завтра на собеседование йоба-перформанс-инжинер — вообще не парься.
#472 #926064
>>924960
Весь код с 2.11 у меня переконпелировался под 2.12 без изменений, так что полагаю нихуя особо не поменяли.
#473 #926176
Есть какой-нибудь мануал по стилю, оформлению кода, бест практикам, архитектуре скала приложений, написанию тестов для них?
926195927208
#474 #926195
>>926176
Хули ты в Скалу лезешь, если даже такой простой вопрос нагуглить не можешь? Ты же с таким проглотом отсосешь, что позавидует даже самая опытная колумбийская шлюха.
926636
#475 #926636
>>926195

>кокпок кукареку


Ясно.
926972
#476 #926972
>>926636
Ебать ты нечеловек, съеби отсюда.
927343
#477 #927208
>>926176
https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&client=ubuntu#q=scala+style+guide
Теперь закрой тред и никогда сюда больше не возвращайся
927343
95 Кб, 800x600
#478 #927343
>>927208
>>926972

>.com.ua


Но я просил что-то на усмотрение анонов, а не ссылку на гугл. Обоссал тебя в общем.
927415
#479 #927415
>>927343

>2D17


>не быть хохлом


съеби, неактуальный опущ
939442
#480 #929065
Чем отличается ТРЕЙТ от абстрактного класса? Я ни хрена не понял. И зачем вообще нужны эти трейты, в чем отличие от множественного наследования в C++?
929715930170930249
#481 #929715
>>929065
Во-первых, интеропабельностью с жявой.
Во-вторых, в нормальных языках трейты не позволяют хранить вообще никакого реализационного кода, в скале все же уступили перед напором энтерпрайз-макакенов.
В-третьих, несмотря на второй пунки, в трейтах все полностью иммутабельно.
Отличие в том, что в плюсах можно наследовать любую залупу от любого спидозного хуя и это никак нормально не разграничивается в отличие от скалы (ну это про систему типов в целом в общем-то).
930170
#482 #930170
>>929065
Тем что абстрактный класс совместим с джявой, имеет конструктор, и можно наследоваться только от одного абс-го класса.

>>929715

>Во-вторых, в нормальных языках трейты не позволяют хранить вообще никакого реализационного кода


Как раз в этом их фишка по сравнению с интерфейсами (в джяве потому и спиздили её).

>В-третьих, несмотря на второй пунки, в трейтах все полностью иммутабельно.


trait Govno {
var mocha = ""
mocha = "blevota"
}
936173
#483 #930249
>>929065
Кароче, забей хуй на все сказанное, абстрактными классами не пользуются ни в Java, ни в Scala - тебе нужны интерфейсы и агрегация.
#484 #936173
>>930170
Да нет, это в скале они просто реализованы в угоду хуяк-хуяк, а не хачкелю.
Про трейты, очевидно, имелось в виду что нельзя менять их если унаследоваться от них.
#485 #936346
Посоны, обчитался двача и решил выучить скалу. Пишу вообщем простую программу:

import scala.language.higherKinds
trait Proxiable {
def source: String
}
trait Proxy[+T <: Proxiable] {
def source: String
}
case class Data(source: String) extends Proxiable
case class Stuff[+P[PP <: Proxiable] <: Proxy[PP]](content: P[Data])

Компилятор выдаёт

sandbox/test.scala:9: error: kinds of the type arguments (Proxy[PP]) do not conform to the expected kinds of the type parameters (type P) in class Stuff.
Proxy[PP]'s type parameters do not match type P's expected parameters:
trait Proxy has one type parameter, but type P has one
case class Stuff[+P[PP <: Proxiable] <: Proxy[PP]](content: P[Data])
^
one error found

Что я делаю не так?
936708
#486 #936708
>>936346
Плюсик убери
Stuff[P[PP <: Proxiable] <: Proxy[PP]]
936742
#488 #936784
>>936742

>Created: 27/May/15 5:30 AM


>На мейлаче нашли фикс за пару часов

937244
#489 #937244
>>936784
Илита интернетов, чего ты хотел?
#490 #939442
>>927415

>2014


>быть хохлом


Как там в котле?
939445
#491 #939445
>>939442

>2017


>2014


Как ты пишешь из прошлого?
939753
#492 #939753
>>939445
Это комменты из прошлого, а я из будущего.
#493 #941003
>>897118

> Ага, ахуенно, только вот рантайм 50мб на мобилках тебя опечалит


Без какого-нибудь proguard максимум 2-2.5 мб выйдет. А с ним и подавно меньше. Не стоит об этом вообще беспокоиться.
Куда большая проблема — система сборки. SBT не подойдёт, поскольку плагин андроида завязан на Gradle очень сильно и сделать что-то сложное просто не получится (всякие сложные работы с манифестами и прочее, что могут использовать сторонние библиотеки). Есть всего один плагин для скалы под андроид, сделанный энтузиастом, но он на него забил походу, так что придётся заморочиться. И со временем плагин может устареть настолько, что с ним нельзя уже будет работать, если никто не возьмётся за его поддержку.
#494 #941385
че спрашиваете у мидлов кандидатов специфичное по языку/экосистеме?
941980
#495 #941980
>>941385
import java.util.Date

trait TDate

trait TT[A1,T1]

trait TTFactory[F,G] {
def create(f: F) : TT[F,G]
def sample: F
}

object Impls {

// If the c1 is declared before c2, it compiles fine
// or if the implicit's result type is specified explicitly
implicit def c2(s: Date)/ : TT[Date, TDate] / = c1.create(s)

implicit val c1 = new TTFactory[Date,TDate] {
def create(v: Date): TT[Date,TDate] = sys.error("")
def sample = new Date
}
}

Что не так с этим кодом?
942195
#496 #942195
>>941980
No indentation.
942358942392
sage #497 #942358
>>942195
Еще макаба звездочки сожрала.
Мимо КО
942392
sage #499 #942409
>>942392
Все умеют гуглить.
Опять, всегда Ваш, КО
#500 #949593
Посаны, а какие есть ресурсы с новостями по скале? Типа как если бы я подписался на тэг scala на stackoverflow, только я хочу чтобы были статьи/новости вместо вопросов. Живу в коробке если че, всегда читал только книги по кампухтер саенсу и доки, а сейчас решил, что определился с выбором языка, и хочу следить за его жизнью.
949661
#501 #949661
>>949593
Можешь на Твиттеры видных деятелей Скалы подписаться для начала, они разную интересную фигню репостят.
949726
#502 #949726
>>949661
Heather Miller няшная чет.
#503 #949859
>>827902

> жду таких дохуя умных на собес


>буду жестко наказывать вас анально, при джунах


вся суть этих ваших собесов
унизить всех вокруг, чтобы возвысится

понабирают в команду самовлюбленных онанистов и вместо работы все нюхают собственный пердеж
#504 #954568
>>767431 (OP)
Какие цели преследуют разработчики Scala пиля Native ?
#505 #957988
Анон, нужна помощь. Такой вот кусок кода: http://pastebin.com/RTSL4kwG. При этом я пытаюсь добиться того, чтобы при вызове minByFeature не нужно было явно указывать параметры типа. Но у меня нихуя не получается
958909958985
#506 #958909
>>957988
List(-2,-3,-3,-4,-5) minBy math.abs
958985960683
#507 #958985
>>957988
>>958909
Доплню ответ - когда компилятор начинает выебываться с выводом типов, можно попытаться разбить список параметров на несколько:

val list = List(-2,-3,-3,-4,-5)

def minBy[A, B: Ordering](list: List[A])(f: A => B): A = list minBy f

println(minBy(list)(x => math.abs(x)))
959051
#508 #959051
>>958985
[code lang="scala"]
minBy(list, math.abs(_: Int))
[/code]
959061
#509 #959061
>>959051
Все равно ведь указан тип при частичном применении. Я думаю, что анон искал способ с полным выводом типов
959097
9 Кб, 947x222
#510 #959097
>>959061
У меня даже так работает, возможно в 2.12 пофиксили
959107
#511 #959107
>>959097
Походу. Я тестил на версии 2.11.8
#512 #959727
Существуют ли какие-то реальные примеры проектов на Spring + Scala? Хочу попробовать скалу, но отказываться от спринга для меня пока что слишком радикально.
959749961181
#513 #959749
>>959727
Берёшь шпринг, пишешь энтерпрайзные бобы на скале, в чём проблема?
#514 #960683
>>958909
Я знаю, что есть такая функция если ты заметил, моя реализация немного пизданутая. Всё потому что я не собираюсь это использовать, я просто хочу понять чому нужно явное указание типа в моем примере и почему нельзя без него обойтись
960684
#515 #960684
>>960683
Запилите перекот кто-то. Чур не я
961101
#516 #961101
>>960684
Да кому он нахуй нужен.
sage #517 #961181
>>959727
У нас на работе есть микро проект на спринге и скале.
Но вообще использовать джавовую инфраструктуру со скалой не имеет смысла, так же как и использовать скалу как джаву++, только дополнительных проблем отгребешь. Либо преезжай полностью, либо не выёбывайся и пиши на джаве.
#518 #969213
Сделайте перкат. Хочу обмазываться борщами.
#519 #976012
Скопировал хелловорлд из доки по akka-http
http://doc.akka.io/docs/akka-http/current/scala/http/introduction.html#using-akka-http
, через консоль билдится нормально, а в идее почему-то подчеркивает красным

> complete(HttpEntity...


> expected: ToResponseMarshallable, actual: HttpEntity.Strict


Решил понять, как оно конвертируется в ToResponseMarshallable, и не смог. Думал там какие-то имплиситы подрублены, через которые конвертируется. Что я пытался сделать:
1) Запустил activator console, импортнул все, что в коде, прописал :implicits, написало

> No implicits have been imported other than those in Predef.


2) В sbt прописал scalacOptions += "-Xlog-implicits", при конпеляции выдало

> [info] .../hello-akka-http/src/main/scala/com/example/WebServer.scala:22: server.this.RoutingLog.fromActorContext is not a valid implicit value for akka.http.scaladsl.server.RoutingLog because:


> [info] hasMatchingSymbol reported error: could not find implicit value for parameter ac: akka.actor.ActorContext


> [info] val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)(materializer)



Как все-таки HttpEntity превращается в ToResponseMarshallable?
#520 #976390
Выбираю между Скалой Питоном Го и Тут ещё на хаскель предложили посмотреть для многопоточной обработки геоданных: парсинг -> поиск координат и маршрутов.

В активе только php, delphi/pascal, ruby. Стоит скала того? А то куча статей о миграции на Го (а с го на хаскель)
978254
#521 #978254
>>976390

>в активе только php


И выбираешь ты между лебедем, раком и щукой. Бери Go, остальное ты не осилишь, да и не надо тебе оно.
978995
#522 #978995
>>978254
Причём здесь осилю-неосилю. Мне нужен эффективный инструмент, который поможет обрабатывать большие массивы данных. И не заебусь ли я потом (через год-два) разработчика искать для поддержки?
979295
#523 #979295
>>978995
При том, что ты не осилишь и инструмент этот у тебя в руках окажется неэффективным. Заебешься со всеми тремя вариантами.
979604
#524 #979604
>>979295
Почему?
979771
#525 #979771
>>979604
Почему что?
#526 #990405
Тактический бамп.
Тред утонул или удален.
Это копия, сохраненная 21 мая 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски