Этого треда уже нет.
Это копия, сохраненная 16 сентября 2018 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
4-Minimal-Scala-Web-Frameworks-for-Web-Developers.png8 Кб, 635x282
Scala /scala/ Scala-kun 1137321 В конец треда | Веб
Очередной тред про самый лучший язык для 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
Презентации летнего ScalaDays: https://www.parleys.com/channel/53a7d269e4b0543940d9e535/presentations?sort=views&state=public
Два недавних форка компилятора, один от тайплевела и второй от баттхертнутого:
https://github.com/typelevel/scala (https://github.com/typelevel/scala/wiki/Differences)
https://github.com/paulp/policy

Завтра ищешь в интернете книжку Programming in Scala. Похуй если ничего не поймешь. Затем идешь на scala-lang.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию скала кода - от EPFL естественно, чтобы от зубов отскакивало. Когда напишешь свой первый клон Twittera, по пути изучив основы дискретного и лямбда исчисления, скачиваешь и изучаешь любой асинхронный скала вебсервер, рекомендую Play!. Как переделаешь твиттер клон, чтобы выдавал по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop и Spark, сверхбыстрые асинхронные key-value хранилища, NoSQL и прочие мира открытого исходного кода приблуды. Отсос хиккующих питонистов / просто неудачников типа годаунов или рубифанбоев, сосут по жизни, не заставит себя ждать и уже через пол года ты будешь подворачивать штаны, есть маффины, запивая смузи и любая баба будет течь от упоминания твоей зарплаты.
Scala-kun 2 1137326
Я утверждаю, что простые и средние задачи на Scala решать существенно проще, чем на большенстве других языков.
Конечно, зависит от задачи. Очень многое на Haskell делается красиво и тривиально. Но когда начинается ввод/вывод и обработка ошибок Haskell почти ни чего не дает, по сравнению с распространенными языками.
3 1137328
Какие вопросы спрашивают на собеседовании?
4 1137329
На scala days кто-нибудь собирается? Думаю поехать на берлинскии scala days в мае, годное мероприятие?
5 1137336
>>137328
лямбды
6 1137338
>>137329
Вообще думаю все митапы по умолчанию говно.
7 1137340
>>137321 (OP)
Говорят Хаскель на порядок проще из-за отсутствия ебучего наследования и костылей JVM это так?
8 1137344
>>137336
Лямда исчисления?
9 1137363
>>137344
Оно самое а вообще хороше уже то что ты под себя не ходишь
10 1137370
>>137363
Так а ещё что спрашивают? Хочу сразу как минимум на мидла перакится, на скале ток много для спарка писал.
11 1137379
>>137370
Akka / Akka Persistence / Akka HTTP / Akka Streams, Scala, Play, Slick,Kafka
12 1137383
>>137370
skillset 1 = Scala, Spark, Cassandra
skillset 2 = Scala, Solr/Elasticsearch, Akka
13 1137400
>>137379
>>137383
Спасибо
14 1137425
>>137321 (OP)
Часто ли тащат в прод cats/scalaz ? Можно ли жить без них
15 1137436
>>137425
А какой смысл писать на Scala без ScalaZ?
16 1137438
>>137436
Ну ахуеть это что получается язык не состоятельный без сторонней билиотеки?
17 1137439
>>137340
- Нормальная хвостовая рекурсия
- Нормальный вывод типов
- Нормальный синтаксис вызова функций
- Нет разделения на функции/методы
- ???
- Сотни их
18 1137443
>>137340
только работы на нем нет
19 1137517
>>137443
Согласен
20 1137623
>>137439
ну хуй знает
21 1137734
15122556102390.jpg12 Кб, 240x240
sage 22 1137767
Поссал на скалапетухов.
мимо жс лорд
23 1137971
>>137767

>2018


>js

24 1138290
>>137321 (OP)
Хочу вкатиться с чего начинать?
25 1138296
>>138290
С Haskell
26 1138333
>>138296
Толсто
27 1138539
Там java 10 вышла, добавили var в сахарок, скоро Скала будет ненужна-ненужна
28 1138542
>>138539
Представляю баттхёрт олдскульных джавапидоров. Если даже шарпоёбы воняли про ненужность на весь интернет при добавлении подобной фичи.
29 1139144
>>138539
За сахарком это в котлин. А тут любители хорошей типизации сидят.
30 1139157
>>139144
За хорошей типизацией это в Coq. А тут корпоративные вонаби-ФП-шники сидят.
31 1148186
НАКАНЕЦТА
тред о лучшем языке программирования, мимоподписался
работаю скала-трейни-почтиджун
учу акку, слик, скалатест, всем доволен
33 1150105
>>137329
В NYC в Июне еду
34 1150602
Как сейчас ситуация с вакансиями?
35 1150818
>>150602

когда искал на фрилансе, то их оказалось таки есть. Причем больше чем я думал. Но в итоге ушел в стартап и теперь пишу на ноде (
36 1150976
>>148186
можешь вкратце описать зачем нужна акка?
37 1151042
>>150976
Я юзал akka-http, довольно удобно для написания контроллера. Ну и конечно же akka-actors для написания многопоточных программ
Скала и обучение машин 38 1151296
Двач, а скала используется для обучения машин? Насколько реально использовать скалу для МЛ (либы вроде нужные присутствуют и в большом количестве, но используются ли на практике, встречаются ли такие вакансии)?
39 1151300
>>151296

для проверки гипотез все равно быстрее python юзать и либы там заебись. Иногда уже проверенную гипотезу реализуют на Java, чтобы быстрее работало. А так в Scala для ML большого смысла нету
40 1151313
>>151300
Спасибо, анон, я примерно это и предполагал. Тогда вопрос #2:
со всей этой бигдатой, хадупами, спарками и прочим можно работать как на джаве, так и на скале. Ощутим ли выигрыш по времени при работе на скале, или если знаешь джаву то смысла вкатываться в скалу (для МЛ/ЕТЛ) нет?
41 1151325
>>151313

Scala хороша чтобы свой Spark написать, а так смысла нету. Опять же хоть Python юзай.
42 1151466
>>151042
я просто быдлоджавер, пишущий e-commerce. Конечно понимаю о существовании различных распределенных нагруженных приложений. Но супер-примеров использования реальных асинхронных штук, кроме мб чата, представить не могу)
43 1151499
А в дс есть какие-нибудь магистратуры, где я смогу изучать фп, теорию типов, мат логику? Мне интересно понять пэйпер dependent object types и свободно читать спеку языка, но пока что мне знаний не хватает. Еще было бы интересно позаниматься пруф асистантами. Начинал ковырять Coq - почти ничего не понял. Начал читать dragon book про компиляторы и потом планирую прочитать benjamin pierce: types and programming languages. Есть магистратуры, куда стоит поступать с таким полем интересов?
44 1151505
45 1151705
>>137321 (OP)
А матрёшку кто-нить юзает, а?
46 1152031
Есть вообще какая-то работа в ДС кроме Тинькова для выпускника-скалоеба (без опыта работы)?
47 1152096
Подскажите ньюфагу, как сделать так, чтобы IDEA видела либы подргуженные через SBT. Проект у меня собирается, но автокомплит по загруженным зависимостям не работает
48 1152100
>>152096
* Собирается через SBT
49 1152107
>>152096
Делаешь в идее поиск по действиям (у меня ctrl+shift+a), пишешь sbt, в открывшейся панели жмешь кнопочку с двумя синими стрелочками. Еще когда build.sbt меняешь, вверху файла должна появляться желтая полоса с опциями refresh project, enable auto-import и еще че-то.
50 1152122
>>152107
Помогло, благодарствую
51 1152125
Есть ли смысл студентоте без опыта в продакшене вкатываться в Скалу? Или лучше скакать от Джавы.
53 1152176
>>152125
Не особо важно, главное - че за работа. Большинство джава-вакансий - это какое-нибудь нудное говно типа интернет-магазинов, крудошлепства в банках и т д, но если сможешь найти приличную работу на джаве (например, будет варик в бигдату вкатиться), то устраивайся.
54 1152184
>>152176
Я имею в виду реально найти джуниорскую вакансию на Скале?
55 1152186
>>152130
Как-то слишком круто. Наукой я интересуюсь, но боюсь я для нее туповат. Я как-то в бакалавриате пытался придумать новый численный метод для вычисления одной фигни и ничего придумать не смог. Публикаций у меня нет и не предвидится, работаю на обычной энтерпрайз-работе (ну не совсем обычной, конечно, все-таки на скале немного особенные люди пишут). Я хотел поступать в магистратуру, чтобы за 2 года у меня либо появились научные интересы, либо чтоб я понял, что мне это не надо.
56 1152196
>>152184
Если в дс живешь, то реально. Скала-джуны бывают, хоть это и редкость.
57 1152220
>>152130
Автор доки в 22 года закончил мфти и уже тимлидом работал. Не представляю, чтобы люди аналогичного уровня успешности на дваче сидели.
58 1152250
>>152220
Еще автор писал, что хватает людей, которые пришли после работы в сфере и есть даже те, кому за 35
>>152186
Публикации не обязательны. Как я понял - главное в красках в резюме рассписать чем занимался и написать хорошее мотивационное письмо, зачем тебе все это надо. Так же, по словам автора, перед поступлением можно и не знать тему своей будущей диссертации и определится в первый год
59 1152386
>>152220
На дваче сидят очень успешные люди, но ридонли, это факт. Жалко, что они не пишут.
60 1153137
Вкатываюсь в скалу, лень смотреть/бенчить самому, может анон поможет:

1) Неоднократно натыкался на заявление что у Scala меньше memory footprint по сравнению с джава, но никто не поясняет за счёт чего это достигается. JVM как я понимаю одна и та же, gc тоже наверное работает одинаково, откуда улучшение? За счёт использования lazy?

2) Моё джавовское мировоззрение напрягает работа с коллекциями и сам факт того, что коллекции иммутабельны, вопрос такой, когда я делаю так:
result :+= el
на случай если проябался с синтаксисом -- хотел показать добавление элемента в конец коллекции
происходит ли полное копирование коллекции? Сложность такой операции по времени и памяти какая будет?
61 1153159
>>153137

2) списки там связанные, поэтому элемент просто добавляется в конец. да создается новый объект список, но перекопирования старых элементов не происходит
62 1153171
>>153137
Нет, не происходит. Так как коллекции иммутабельны, общая часть может быть расшарена между всеми "версиями" это коллекции. Представь, например, что у тебя есть иммутабельный список А из 100 элементов, и ты делаешь на его основе 10 новых списков Б_1..Б_10, каждый из которых добавляет один новый элемент к первоначальному списку. У тебя будет 10 списков длины 101, но память будет использована не для 101*10 элементов, а только для 10 новых элементов (по одному от каждого списка Б_1..Б_10), в то время как сто общих элементов будут расшарены между всеми списками: каждый из списков Б_n будет содержать новый элемент и ссылку на список А. Поскольку данные иммутабельны, все эти операции гарантированно корректны.

В реальных структурах данных конкретная стратегия расшаривания зависит от реализации. Обычно структура делится на небольшие чанки, внутри которых изменения копируются (ибо так быстрее), и шарятся уже эти чанки. Сложность по времени обычно логарифмическая, но что-то вроде log_32(n), то есть "effectively constant time". Подробнее о реализации и расшаривании можешь гуглить по запросу "persistent data structures".
63 1153241
>>153137

>> 1) Неоднократно натыкался на заявление что у Scala меньше memory footprint по сравнению с джава, но никто не поясняет за счёт чего это достигается. JVM как я понимаю одна и та же, gc тоже наверное работает одинаково, откуда улучшение? За счёт использования lazy?


Возможно из-за lazy (если его аквтивно используют) он и меньше, но как по мне, у Scala должен быть больше memory footprint. Во-первых, она не самый эффективный Bytecode даёт, так как мы в нём натягиваем сову на глобус, пытаясь выразить сложные scala концепции в терминах java классов и объектов. Плюс функциональщина достаточно активно срёт в память. Недавно как раз смотрел запись конференции, где чувак показывал как типичный код с фолдом списка на скалке умудряется срать в память со скоростью полгигабайта в секунду. В следствии этого во время фолда просыпается GC и код работает раза в три медленнее, чем его итеративный аналог. А всё сраный боксинг/анбоксинг
Screen-Shot-2014-05-06-at-4.14.33-PM.png139 Кб, 527x394
64 1153583
>>153241

>код с фолдом списка на скалке умудряется срать в память со скоростью полгигабайта в секунду


>А всё сраный боксинг/анбоксинг


Пикрелейтед. Открой свое сердце свету трансдьюсеров, брат!
65 1153605
>>151466
Я тоже в прошлом быдлоджавер. А про многопоточность могу в сказать, что не обязательно руками выделять отдельный поток на обработку каких данных, можно просто засовывать отельные части процессов в фьючи (например дейстия с бд), которые будут рабтать асинхронно, что ОЧЕНЬ актуально, если принимать во внимание, что в современных пк упор делаться на многопроцессорность
66 1153647
>>153605

>можно просто засовывать отельные части процессов в фьючи



ИЧСХ, для этого даже Скала не нужна, лол.
CompletableFuture, конечно

И акку можно и из джавы юзать, что многие и делают.
67 1154073
>>153647

>не нужна


нужна, поверь нужна
щас поясю почему
- неизменяемость (иммьютбл переменные и коллекции), очень помогает при работе в многопоточности, легче писать тесты и да и вообще читать код легче
- паттерн матчинг. Ну это просто охуенно, это даже не свитч на максималках, это намного круче
- краткость. Вот за что ругают яву, за то хвалят скалу
- полная поддержка фп. тут даже рассписывать не буду
- строягая типизация при той же краткости, и да типы дженекиков при компиляции не стираются, как в яве)
- охуенные стандартные либы
да и вообще жаба ОЧЕНЬ много потеряла в погоне за совместимостю, после скалы будешь смотреть на неё как на ассеблер после плюсов
68 1154079
>>154073

> вообще жаба ОЧЕНЬ много потеряла в погоне за совместимостю


Люто удваиваю.

миможабокотлиносэр
69 1154084
>>153647
>>154073
пока курил, понял что не расписал и половины перимуществ, если заинтересуешься, то я тебе на почту книжку скину "скала для джавистов"
>>154079
котлин уважаю, котлин крута но скала круче)
70 1154100
>>154084

> скала круче


А еще Солнце, кстати, желтое, а небо синее (серое в России), кэп.
71 1154127
>>154084

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



Я, как-бы, в курсе, лол.
И насчёт минусов тоже.

Я не имел в виду, "скала не нужна", я имел в виду, "скала не нужна, чтобы ...".

Ты, кстати, на работе на чём пишешь, и какого рода проекты? Это я к тому, что скала - вещь в себе, и с джавой (на деле) интегрируется не особо.
72 1154342
>>154073

>полная поддержка фп. тут даже рассписывать не буду


Всё-таки стоило бы расписать.
73 1154375
>>154127
Работаю в геймдеве, проект на акке + кэтс, для бд - слик. Также работаю удалённо над проектом-сайтиком, там плей + бутстрап
>>154342
- монады
- неизменяемость
- функции как переменные
- функции высшего порядка
- алгоритмические структуры данных
- нормальная поддержка рекурсии
хотя дать определение фп достаточно сложно, в отличии от ооп
74 1154434
>>154375

>в отличии от ооп


Так все-таки ооп - это смолток или кресты?
75 1154439
>>154434
Кресты но это не точно.
Я где-то слышал, что ООП - то что в крестах (из Симулы). В смолтолке - не ООП, а объектное программирование (объектная система в смысле позднего связывния, вот ото вот всё).
15176706166710.gif891 Кб, 250x197
76 1154461
>>154439

>не ООП, а объектное программирование


>не объектно-ориентированное программирование, а объектное программирование




>хотя дать определение фп достаточно сложно, в отличии от ооп

77 1154508
>>154375

>алгоритмические структуры данных


Алгебраические типы данных.

>неизменяемость


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

Читал ли ты книжку Functional Programming in Scala (изд. Manning)?
Это одна из лучших книг по фп вообще, я бы советовал. И задания обязательно прорешать.
Ответы есть, репозиторий на гитхабе.

Есть ещё Functional Programming in Java, тоже Manning.
Тоже охуенная вещь.
Написана в совершенно другом стиле - более практическом.
Автор (намеренно) не употребляет слово "монада" в основной части книги, например, и в послесловии объясняет, почему.
78 1154549
>>154508

>Алгебраические типы данных.


да, спс за фикс
>>154439
>>154461
>>154434
ооп - это полиморфизм, инхеритенс не знаю как норм перевести, инкапсуляция и абстракция, а дальше понимайте как хотите
79 1154558
>>154549

> инхеритенс


Лол.
Наследование.
Это как раз тот случай, когда надо переводить

Насчёт ООП - он тебя просто троллит.
80 1154577
>>154558

>Это как раз тот случай, когда надо переводить


та да, просто русский мне не родной
>>154508

>Читал ли ты книжку Functional Programming in Scala (изд. Manning)?


к сожелению ещё не читал, уже скачана, но не читал
да и только 3 месяца, как на скале, прочитал только ессеншиал скала, скала для нетерпеливых (на русском) и 200 страниц програминг ин скала одерского
81 1154601
>>154577
В FP in Scala самой скалы по минимуму.
Т.е. предварительное знание языка желательно, но не обязательно. Ну, это авторы так пишут. На самом деле, конечно, просто с нуля ловить там нечего. Но, в дебри языка они не лезут, только в типы, разве что.

Книга небольшая, язык (английский) - простой. Но, времени на чтение (с решением задач) надо много, может быть, даже и год (судя по тому, что народ пишет). Т.е. надо делать это вдумчиво и не спеша.

"Скала для нетерпеливых" - очень годная книга, перевод я, правда, не видел.
Одерского можно читать вечно, лол.
Народ на форумах пишет, что терпения не хватает.
82 1154629
>>154601

Одерского 5 раз перечитал, прежде чем более или менее стал понимать скалу.
83 1154655
>>154549

>ооп - это полиморфизм


Сильное заявление. То есть тайпклассы - это ооп?

>инхеритенс


Сильное заявление. То есть ооп-языки без наследования - не ооп? Алсо, "предпочитайте композицию наследованию", вот это все... ооп-гуру, выходит, тоже не ооп?

>инкапсуляция и абстракция


Точно, анон, ведь без ооп абстракций не бывает! Ой, подожди. Нет, что-то не сходится.
84 1154679
>>154655
ты зелёный?
ну ок, скажи что для тебя ооп, вот мне реально интересно
>>154601
>>154629
да у меня вообще уже книжек 5 накопилось, котрые хочу прочитать
85 1154685
>>154679
Для объектно-ориентированное программирование - это, внезапно, программирование, ориентированное на объекты. А объекты - это такие штуки, у которых есть внутреннее состояние, которое можно шатать сообщениями.

Но к "ООП" это не имеет никакого отношения. ООП - это просто маркетинговый буллшит без строгих\инженерных оснований, под которым каждый понимает то, что ему хочется.

Если что, это все к

>хотя дать определение фп достаточно сложно, в отличии от ооп

86 1154703
>>154073

> типы дженекиков при компиляции не стираются, как в яве)


шта?
87 1154751
>>154073

>и да типы дженекиков при компиляции не стираются, как в яве)


Ты что-то попутал. У тебя код собирается в байткод jvm, который о типе дженериков вообще представления не имеет. Ну нет на его уровне такой концепции. Не веришь - javap в помощь

А вообще я это за тебя сделаю, возьмём примитивный дженерик
class S[A](opt: A) {
def get:A = opt
}

Компиляем, юзаем javap -c -v и получаем

public A get();
descriptor: ()Ljava/lang/Object;
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #16 // Field opt:Ljava/lang/Object;
4: areturn
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LS;
LineNumberTable:
line 2: 0
Signature: #28 // ()TA;

public S(A);
descriptor: (Ljava/lang/Object;)V
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: putfield #16 // Field opt:Ljava/lang/Object; <- внимание
5: aload_0
6: invokespecial #23 // Method java/lang/Object."<init>":()V
9: return
LocalVariableTable:
Start Length Slot Name Signature
0 10 0 this LS;
0 10 1 opt Ljava/lang/Object; <- описание нашего поля
LineNumberTable:
line 1: 0
line 5: 5
line 1: 9
Signature: #29 // (TA;)V
MethodParameters:
Name Flags
opt final

Как бы можно заметить, что класс компилируется единожды и вся работа с полем идёт как с Ljava/lang/Object;

Дальше пишем:

val s = new S[Int](3)
val a = s.get
println(a + 3)

Снова javap -c -v и получаем

0: aload_0
1: new #75 // class S
4: dup
5: iconst_3
6: invokestatic #81 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
9: invokespecial #84 // Method S."<init>":(Ljava/lang/Object;)V
12: putfield #69 // Field s:LS;
15: aload_0
16: aload_0
17: invokevirtual #86 // Method s:()LS;
20: invokevirtual #90 // Method S.get:()Ljava/lang/Object;
23: invokestatic #94 // Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
26: putfield #72 // Field a:I
29: getstatic #99 // Field scala/Predef$.MODULE$:Lscala/Predef$;
32: aload_0
33: invokevirtual #101 // Method a:()I
36: iconst_3
37: iadd
38: invokestatic #81 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
41: invokevirtual #104 // Method scala/Predef$.println:(Ljava/lang/Object;)V
44: return

И снова видим, что в байткоде у нас опять сначала int боксится (6:) и засовывается в дженерик как Object(9), а затем из дженерика выдёргивается именно Object (20:) а уже потом анбоксится в int (23:). Как можешь заметить, отдельной реализации дженерика, заточеного под Int тут не генерируется.

Тоже самое и со String

val s = new S[String]("3")
val a = s.get
println(a.length)

0: aload_0
1: new #75 // class S
4: dup
5: ldc #77 // String 3
7: invokespecial #80 // Method S."<init>":(Ljava/lang/Object;)V
10: putfield #69 // Field s:LS;
13: aload_0
14: aload_0
15: invokevirtual #82 // Method s:()LS;
18: invokevirtual #86 // Method S.get:()Ljava/lang/Object;
21: checkcast #88 // class java/lang/String
24: putfield #72 // Field a:Ljava/lang/String;
27: getstatic #93 // Field scala/Predef$.MODULE$:Lscala/Predef$;
30: aload_0
31: invokevirtual #95 // Method a:()Ljava/lang/String;
34: invokevirtual #99 // Method java/lang/String.length:()I
37: invokestatic #105 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
40: invokevirtual #108 // Method scala/Predef$.println:(Ljava/lang/Object;)V
43: return
Опять суём String как Object, как Object же достаём (18:), потом чекаем, String ли это (21:) и только затем уже работает с этим объектом как со строкой

То есть на уровне байткода, как можно убедиться дженерики в Scala аналогичные дженерикам из Java, тот есть нихуя их там нет, есть лишь объекты оперирующие рефами на Object.
87 1154751
>>154073

>и да типы дженекиков при компиляции не стираются, как в яве)


Ты что-то попутал. У тебя код собирается в байткод jvm, который о типе дженериков вообще представления не имеет. Ну нет на его уровне такой концепции. Не веришь - javap в помощь

А вообще я это за тебя сделаю, возьмём примитивный дженерик
class S[A](opt: A) {
def get:A = opt
}

Компиляем, юзаем javap -c -v и получаем

public A get();
descriptor: ()Ljava/lang/Object;
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #16 // Field opt:Ljava/lang/Object;
4: areturn
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LS;
LineNumberTable:
line 2: 0
Signature: #28 // ()TA;

public S(A);
descriptor: (Ljava/lang/Object;)V
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: putfield #16 // Field opt:Ljava/lang/Object; <- внимание
5: aload_0
6: invokespecial #23 // Method java/lang/Object."<init>":()V
9: return
LocalVariableTable:
Start Length Slot Name Signature
0 10 0 this LS;
0 10 1 opt Ljava/lang/Object; <- описание нашего поля
LineNumberTable:
line 1: 0
line 5: 5
line 1: 9
Signature: #29 // (TA;)V
MethodParameters:
Name Flags
opt final

Как бы можно заметить, что класс компилируется единожды и вся работа с полем идёт как с Ljava/lang/Object;

Дальше пишем:

val s = new S[Int](3)
val a = s.get
println(a + 3)

Снова javap -c -v и получаем

0: aload_0
1: new #75 // class S
4: dup
5: iconst_3
6: invokestatic #81 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
9: invokespecial #84 // Method S."<init>":(Ljava/lang/Object;)V
12: putfield #69 // Field s:LS;
15: aload_0
16: aload_0
17: invokevirtual #86 // Method s:()LS;
20: invokevirtual #90 // Method S.get:()Ljava/lang/Object;
23: invokestatic #94 // Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
26: putfield #72 // Field a:I
29: getstatic #99 // Field scala/Predef$.MODULE$:Lscala/Predef$;
32: aload_0
33: invokevirtual #101 // Method a:()I
36: iconst_3
37: iadd
38: invokestatic #81 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
41: invokevirtual #104 // Method scala/Predef$.println:(Ljava/lang/Object;)V
44: return

И снова видим, что в байткоде у нас опять сначала int боксится (6:) и засовывается в дженерик как Object(9), а затем из дженерика выдёргивается именно Object (20:) а уже потом анбоксится в int (23:). Как можешь заметить, отдельной реализации дженерика, заточеного под Int тут не генерируется.

Тоже самое и со String

val s = new S[String]("3")
val a = s.get
println(a.length)

0: aload_0
1: new #75 // class S
4: dup
5: ldc #77 // String 3
7: invokespecial #80 // Method S."<init>":(Ljava/lang/Object;)V
10: putfield #69 // Field s:LS;
13: aload_0
14: aload_0
15: invokevirtual #82 // Method s:()LS;
18: invokevirtual #86 // Method S.get:()Ljava/lang/Object;
21: checkcast #88 // class java/lang/String
24: putfield #72 // Field a:Ljava/lang/String;
27: getstatic #93 // Field scala/Predef$.MODULE$:Lscala/Predef$;
30: aload_0
31: invokevirtual #95 // Method a:()Ljava/lang/String;
34: invokevirtual #99 // Method java/lang/String.length:()I
37: invokestatic #105 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
40: invokevirtual #108 // Method scala/Predef$.println:(Ljava/lang/Object;)V
43: return
Опять суём String как Object, как Object же достаём (18:), потом чекаем, String ли это (21:) и только затем уже работает с этим объектом как со строкой

То есть на уровне байткода, как можно убедиться дженерики в Scala аналогичные дженерикам из Java, тот есть нихуя их там нет, есть лишь объекты оперирующие рефами на Object.
88 1154826
>>154751
Ну и зачем ты это высрал сюда?
Ты, блять, кончай тут умничать.
Здесь тебе не тут.

В скале используется специальный костыль, который сохраняет информацию о типах, только и всего.
Там целое кино с рефлексией в скале, заебёшься делать.
Но, тем не менее, информация о типах - сохраняется.

Ещё раз, для особо одарённых - она не "не стирается",
она специально сохраняется, в специальном объекте, и обеспечивает это компилятор скалы, если его хорошо попросить
89 1154828
ПОЛОЖНЯК ТРЕДА sage 90 1154901

>Scala


Ненужное говно без задач, язык для быдла, пародия на ФП.

>Haskell


Топовый язык для элиты, подходит для абсолютно любых задач, тру ФП.
91 1154906
>>154901
Что то говно, что то говно.
мимо кложа лорд
92 1154908
>>154826

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


>>Там целое кино с рефлексией в скале, заебёшься делать. Но, тем не менее, информация о типах - сохраняется.



Как бы фича ради фичи. В рантайме это никак не помогает, так как JVM похуй. JITу она не поможет сгенерировать более эффективный код (а она могла бы помочь, банально со старта девиртуализовать некоторые вызовы, да удалить лишние кастчеки). Да блин, даже сама scalac всё равно генерирует код с кастчеками и прочим дерьмом. При разбработке же нормальные IDE сами прекрасно могут вывести все типы и проверить их соответствие.

>>Там целое кино с рефлексией в скале, заебёшься делать.


Как бы этим в нормальной разработке особо никто заниматься не будет. Нужно это всё трём с половиной теоретикам. Да кукаретикам, чтобы список "достоинств" скалы раздувать.
93 1154917
>>154826
Информацию о дженериках в полях, аргументах и результатов методов можно и в джава коде достать. А вот имея на руках объект класса с дженериком узнать его дженерик нельзя. Покажи мне код, который сделает это на скале, хотя бы с костылями.
94 1154969
>>154908

>При разбработке же нормальные IDE сами прекрасно могут вывести все типы и проверить их соответствие.


Это делает компилятор.
То, что мы тут обсуждаем нужно _только_ для рефлексии.

>>154917
Можно.
https://medium.com/@sinisalouc/overcoming-type-erasure-in-scala-8f2422070d20
https://docs.scala-lang.org/overviews/reflection/typetags-manifests.html
95 1154970
>>154906
Ох, лол.
Кложура - язык не для всех, это точно.
Но не по тем причинам, по каким ты думаешь.
96 1155041
>>154969
Перечитай там ещё раз. Написать метод, который принимает List[Any] и возвращает то, что там на самом деле - нельзя. А дженерики классов, полей, аргументов и результатов функций так же доступны в джаве.
97 1155058
>>155041

>List[Any]


>то, что там на самом деле



Там Any, блядь, или ты чего-то другого хотел?
Ты вообще как-то не так всё это понимаешь (судя по твоему пассажу про IDE).
Извини, у меня сегодня нет настроения нести свет просвещения в массы.
98 1155089
>>154970
А по каким?

*мимо?
99 1155090
>>155058
Погоди, а если я в метод передал List[Huita], он тоже внезапно Any?
100 1155092
>>155089
Блядь, мимо. Другой анон в смысле.

>>154970
Просто как бы скала тоже язык не для всех, и х-ль - язык не для всех, и на жаваскрипе микроконтроллеры не попишешь. То есть это самоочевидное утверждение, но ты, разумеется, имел в виду что-то другое.
101 1155120
>>155092
Я имел в виду, что лисп вообще и кложура в частности, не подходит на роль промышленного языка общего назначения.
Нормальному человеку просто тяжело писать на голом AST.
И, особенно, читать.

Плюс вот эти вот тучи функций на каждый пук - их заебёшься запоминать. Плюс динамика ещё. И макросы.
Ну и так далее. Очень большой оверхед с очень скромным результатом.
Короче - это просто нишевый DSL.

Скала - тоже та ещё хуета, из говна и палок, между нами говоря.
Я выучил её уже давно, и до вполне приличного уровня.
Но, в реале так и не применил ни разу.
Это вещь в себе. А у меня нет таких проектов.

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


Вот, просто навскидку:
https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala
https://www.slideshare.net/normation/scala-dreaded
И это ещё довольно простая тема, с которой у меня лично нет никаких проблем.

Такие дела.
101 1155120
>>155092
Я имел в виду, что лисп вообще и кложура в частности, не подходит на роль промышленного языка общего назначения.
Нормальному человеку просто тяжело писать на голом AST.
И, особенно, читать.

Плюс вот эти вот тучи функций на каждый пук - их заебёшься запоминать. Плюс динамика ещё. И макросы.
Ну и так далее. Очень большой оверхед с очень скромным результатом.
Короче - это просто нишевый DSL.

Скала - тоже та ещё хуета, из говна и палок, между нами говоря.
Я выучил её уже давно, и до вполне приличного уровня.
Но, в реале так и не применил ни разу.
Это вещь в себе. А у меня нет таких проектов.

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


Вот, просто навскидку:
https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala
https://www.slideshare.net/normation/scala-dreaded
И это ещё довольно простая тема, с которой у меня лично нет никаких проблем.

Такие дела.
102 1155124
>>155120
Анон, извини конечно, но ты совершенно не разбираешься в вещах, о которых пытаешься рассуждать. В частности, ты либо не понимаешь значения, либо просто некорректно используешь слова "AST" и "DSL". Ну, то есть продолжать обсуждение этой темы на данный момент смысла явно нет.
103 1155129
>>155124
Юноша, если вам хочется приключений - это нормально.
Пользуйтесь кложурой и скалой, хуже вам не станет.
Не догоните, так согреетесь.

Я же говорил о промышленной разработке. Когда программа живёт в несколько раз дольше железа, например.

Ну, и полезно помнить, что по этому поводу сказал Дейкстра:
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

Это именно то, что никак не может взять в толк модная хипстота, хлебающая смузи в кофешопах.
104 1155130
gg
105 1155134
>>155129
Анон, повторю еще раз, что из описанных выше высказываний следует твоя некомпетентность в обсуждаемых вопросах, а потому я не вижу смысла продолжать о чем-то говорить - мне это неинтересно. Твой пост ко мне не имеет никакого отношения, а "юношами" ты лучше пацанов у себя во дворе называй.
106 1155155
>>155134
Дружище, расслабься, всё нормально.

И всё в порядке с Clojure, на самом деле.
Я довольно давно ею занимаюсь (для развлечения). И довольно неплохо знаю.
Но, применить в реальных проектах (за деньги) так и не получилось. И это меня огорчает.
107 1155228
>>155120

> Я выучил её уже давно, и до вполне приличного уровня.


> Но, в реале так и не применил ни разу.


Чет проиграл. Не взяли на работу на скале и теперь рассказываешь, что скала не нужна, найс.

> И это очень сложный язык


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

>>155129

> he avoids clever tricks like the plague


Напомню, что тайпклассы, монады, зависимые типы и другие концепции, которые используются в скале, но которых нет во многих других языках - это не tricks, а общепринятые концепции, описанные в куче книг и статей. Если для тебя это tricks, то я тебе советую в универе отучиться, а потом постить в треде для нормальных людей.
108 1155247
>>155228

>Не взяли на работу на скале



Всё немножко не так.
В данный момент я сам обеспечиваю себя работой.
И сам решаю, что и на чём будет написано.
В процессе принятия решений - принимаю в расчёт соображения типа тех, которые высказывал старина Эджер.
Как показывает практика - не зря.

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

И да, я бы хотел, чтобы меня "взяли на работу" писать на скале.
Но, не представляю, кто бы это мог быть.
109 1155254
>>155247

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


> Но, не представляю, кто бы это мог быть.


В дс переезжай.
110 1155309
>>155254
И идти в тинькофф писать крудодрисню для сайта? Охуенное предложение.
111 1155607
>>155155
Ну ладно. Просто тогда странно слышать от тебя (factually incorrect) фразы вроде "кложа - это дсл", ну а как выглядит аст можно посмотреть, например, тут: https://github.com/clojure/tools.analyzer

Вдвойне странно слышать рассуждения о синтаксисе в контексте "промышленной разработки". На срок завершения проекта и на количество багов никак не влияет то, пишешь ты f x, f(x) или (f x). Это как раз и есть то самое хипстерство и смузихлебство - "нинравица!1". Подобные вещи нужно оценивать прагматично (объективные профиты дает? дает), а не с точки зрения нравится\не нравится. Да и привыкает к любому из этих вариантов человек максимум за 2 вечера.

Далее, что там было... Тучи функций - опять же, это какая-то хипстота. Если человек собирается писать на языкнейм, то он должен не изобретать велосипеды на каждый чих, а разобраться в стандартной библиотеке. В случае кложи это означает, что ему нужно выучить все функции в core. Просто берешь и учишь, тут нет ничего сложного (на худой конец - под рукой всегда есть читшит). В случае с джавой или скалой ему пришлось бы делать ровно то же самое - только эти функции были бы раскиданы по множеству условных "неймспейсов".

Нытье про динамику в 2018 году вообще странно слышать. Статическая типизация необходима в проектах-монолитах хотя тот же линукс вон как-то пишут на void* - и ничего; но там хуман ресоурсы, конечно, специфические, а у нас тут, типа, облака, сети, микросервисы, привет.

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

Короче, я полностью согласен с утверждением "Кложура - язык не для всех".

Но не по тем причинам, по каким ты думаешь.
112 1155735
>>155607

>factually incorrect


Не нужно всё понимать тупо буквально.
Есть метафоры, гиперболы, аллегории и прочая хуйня.

>AST


Ну, концептуально, синтаксис лиспа - это и есть голое AST. Потому, что синтаксиса, как такового, просто нет.
То, что на самом деле это не совсем так, это ничего не меняет в том смысле, в каком я употребил это сравнение.

>DSL


Написание любой программы на лиспе сводится, по сути, к написанию DSL для конкретной задачи.
Или ты будешь с этим спорить?
Ну так вот, лисп - homoiconic.
DSL для написания DSL, лол.
113 1155744
>>155735

>метафоры, гиперболы, аллегории


>концептуально


>на самом деле это не совсем так


Угумс.

>синтаксис лиспа - это и есть голое AST.


То есть (f (g x) (h y)) - аст, а f(g(x) h(y)) - уже не аст? Занятненько.

>Потому, что синтаксиса, как такового, просто нет.


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

>То, что на самом деле это не совсем так, это ничего не меняет


Так может тогда попросту не стоит употреблять такие хуевые сравнения, тем более на техническом хоть и для аниме-девочек форуме?

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


Ерунда. Даже хуже: это утверждение не несет вообще никакого смысла. Опять же, на язык просятся хипстеры-смузихлебы.

>DSL для написания DSL


A.k.a. "язык программирования общего назначения".

Все-таки зря ответил.
sage 114 1156165
>>139157
Кстати, подтверждаю. После Идриса впечатления от Скалы - полная инфернальная дрисня. если это кого-то здесь вообще интересует
115 1156785
Есть смысл вкатываться в скалу? Руби околомидл
В России есть по ней работа? А фриланс?
116 1157164
>>156785

> В России есть по ней работа?


Да.

> А фриланс?


хз
117 1157378
>>156785
что натолкнуло перейти с руби на скалу?
Мимоджавер, очень сожалею, что пишу веб на компилирцемом языке
118 1157387
Так-то да, с рубей на кложу вроде логичнее перекатываться. Зато на скалке работу проще найти.
119 1158264
>>157378
Ты и тут уже со своими фантазиями отметился, лол.
Может ты как-то не так компилируешь?

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

Если мне нужна динамика - использую Groovy. Раньше использовал JRuby, но отказался от него разлюбил, лол.
120 1158272
>>156785
Если _суровая_ статическая типизация тебя не пугает, то давай.
Скала - это статический язык, годно имитирующий динамику.
Но, чтобы понимать, как это всё работает, а не просто тупо писать магический код, придётся постараться.

>>157387

>с рубей на кложу вроде логичнее перекатываться


Если ты хипстер, то да.
Задрочив руби до потери пульса, они перекинулись на кложуру.

А так - руби и скала - довольно похожи (на уровне запаха кода или типа того).

И некоторые серьёзные руби-бобры таки перекатились на скалу.
Например, Дэвид Поллак, автор книги Beginning Scala.
Он в начале книги очень живописно описывает свой баттхёрт в начале изучения скалы.
121 1158280
>>158272

> Если ты хипстер, то да.


> Задрочив руби до потери пульса, они перекинулись на кложуру.


Свят-свят, все бородатые смузипидоры на гироскутерах съебали в ноду, в кложе они нахуй даром никому не нужны.
122 1158284
>>158272

>Если ты хипстер, то да.


Как там в 2012?

>А так - руби и скала - довольно похожи


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

>И некоторые серьёзные руби-бобры таки перекатились на скалу.


Я и не спорю. Скала - тоже хорошо. Но СЛОЖНА и НЕНУЖНА!!1
123 1158285
>>157378
Да ну не то чтобы я конкретно перекатываюсь, даже наоборот. Просто решил пополнить слегка коллекцию скиллов чтобы потом на собесах выебоны кидать
124 1158291
>>158284

>руби - это лишп без скобочек


По мне, скорее Perl
125 1158307
И да, я забыл сказать, что Дэвид Поллак, перекатившийся с руби на скалу, это тот самый чел, который потом придумал лифт.
Так благотворно на него подействовал живительный скала-баттхёрт.
126 1158308
>>158291

>Matz: Ruby is a language designed in the following steps: take a simple lisp language (like one prior to CL). remove macros, s-expression. add simple object system (much simpler than CLOS). add blocks, inspired by higher order functions. * add methods found in Smalltalk.

127 1158409
>>158308

> remove macros


и сразу в помойку такого калеку.
128 1158425
>>158409
Ну, это уже к Матцу, не ко мне.
129 1158642
cbbvc
130 1159328
>>158264
я и еще парочка таких же дебилов хотя бы джава тред расшевелили, а то последние месяца три он в тотальном упадке
131 1161286
Собираюсь вкатиться в Scala и Clojure, раньше писал только на C/C++ и Python. Посоветуйте какой-нибудь курс по Java, чтобы после него было ясно, что происходит с JVM в этих ваших скалах, желательно с сертификатами чтобы на фрилансе индусировать в случае чего
132 1161299
133 1161327
>>161286

>Собираюсь вкатиться в Scala и Clojure


>Посоветуйте какой-нибудь курс по Java


Ну охуеть.

Я так и не понял: тебе нужно про устройство jvm что-то? Или ты хочешь сначала вкатиться в тырпрайс на джаве? Или тебе просто сертификаты нужны?

Сертификаты у оракла, гугли. В джаву через thinking in java и доки можно вкатываться.
134 1161346
>>161327

> Я так и не понял: тебе нужно про устройство jvm что-то


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

> Или ты хочешь сначала вкатиться в тырпрайс на джаве? Или тебе просто сертификаты нужны?


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

> В джаву через thinking in java и доки можно вкатываться.


Ок заебись, уже хорошо, но хотелось бы именно курс с заданиями.
135 1161359
>>161346

>курс с заданиями.


Ну, на курсере вроде алгоритмы от принстона на джаве, но это курс про алгоритмы, а не про джаву, разумеется. Но тащем-то почему бы и нет. Там же проходи интро ту фанкшнл програмин от одерски.
136 1161363
>>161359

> Ну, на курсере вроде алгоритмы от принстона на джаве, но это курс про алгоритмы, а не про джаву, разумеется.


Ок, а чисто про джаву и её экосистему есть?
137 1161435
>>161363
Я не уверен, что среди джавистов особенно популярны видосики. Читай документацию.
138 1161653
>>161346

> Мне же ведь нужно хотя бы примерно понимать, на чём скала построена, как в случае чего тюнить jvm, чё у неё вообще внутри и так далее.


Можно почитать jvm specifiсation, еще на всяких хабрах и реддитах периодически постят что-нибудь про то, как тюнить жвм, на чем писать бенчмарки и т. д.

Вообще начинай сразу со скалы, джаву выучишь в процессе, там учить нехуй (если говорить о самом языке, а не о jvm).
139 1161654
>>161363
В экосистеме джавы очень много древнего индусского говна типа сервлетов, спрингов, и т д, где у авторов библиотек вместо мозга AbstractSingletonProxyFactoryBean. Тебя из экосистемы джавы должны интересовать только java se и jvm. Туторилы по классам из java se есть на сайте оракла + сорцы этих классов читай, полезное занятие.
140 1161669
>>161346

>> Мне же ведь нужно хотя бы примерно понимать, на чём скала построена, как в случае чего тюнить jvm, чё у неё вообще внутри и так далее.



Если любишь видосики то:
https://www.youtube.com/watch?v=1XV88X3ugiM
https://www.youtube.com/watch?v=-fcj6EL9rc4
https://www.youtube.com/watch?v=iGRfyhE02lA
https://www.youtube.com/watch?v=iB2N8aqwtxc
https://www.youtube.com/watch?v=oYu3HuIYDhI

Если сразу хочется чего по-жёстче, то
https://docs.oracle.com/javase/specs/jvms/se10/jvms10.pdf
YakovFajnProgrammirovanienaJavadlyadetejroditelejbabushekid[...].jpg22 Кб, 200x260
141 1161712
>>161346
Ага, вот пикрил. Там и задания тебе, как вы любите.
142 1161724
143 1161725
>>161712

> Ок заебись, уже хорошо, но хотелось бы именно курс с заданиями.


hexlet.io (я лично не пробовал но вдруг тебе надо НА РУССКОМ)
udacity
да там платно, но более эффективное обучние. ты гораздо больше денег-времени потратишь читая книжки.
144 1161747
>>161725

> вдруг тебе надо НА РУССКОМ


Не, мне как раз-таки надо наоборот.

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


Согласен. Скажи, какой конкретно курс по яве порекомендуешь для продолжающего? Как-то странно мне будет после нескольких лет зарабатывания денег питоном снова слушать объяснения того, что такое условия и for лупы.
145 1161970
>>138542
Съеби. Выразил одобрямс ораклам.
мимоджаваёб
146 1162070
Кто знает этого функционального петушка, это трап что ли???

https://www.youtube.com/watch?v=fLsTPHDWoF0
147 1162079
>>162070
Нет, просто дородная рязанская бабища. Видел ее в видосиках с кложетусовок.

Там же написано:

>Born into an aristocratic Russian-German family


>aristocratic Russian-German family

148 1162084
>>162079

И что? Гермашка же гейропа.
149 1162089
Блять, чего-то у меня хуй встал на этого Bodil.
150 1162101
>>162084
А Рязань - нет.
151 1162107
>>162079

Там дальше написано, что он шарлатан

> derided as a fraudulent charlatan by critics

sage 152 1162140
>>162107
autism intensifies
153 1170111
Програмач, как на скале правильно сделать следующее:

загрузить инфу с нескольких тысяч пронумерованных АПИ эндпоинтов (api/page/1; api/page/2 и т.д) и положить в файл в порядке нумерации, при этом (по возмжности) не держа в памяти все ответы АПИ.

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

Я создаю стек с Future и потом по мере готовности заливаю резалты в файл, т.е как только future result оказывается в файле, future убирается со стека и может быть очищено gc. Тем не менее, меня не покидает мысль что это какой-то не Scala-way, как минимум потому что я использую mutable data structures. Я пытался приладить к этой задаче стримы, но что-то каждый раз получается немного не то. Как бы решал эту задачу функциональщик, в какую сторону смотреть?
154 1170128
>>170111
А как ты собираешься эффективно класть в файл твои респонсы в порядке нумерации, если в память они не влазят, а очередность их прихода не определена?
155 1170289
>>170128
Да, пожалуй я хочу невозможного, буду думать что поменять концептуально.
156 1170297
>>170111
Параллельно запрашивай ендпоинты и сри данные в отдельную БД, которая нормально дружит с конкурентностью (то есть всякие sqlite мимо). Обязательно индексируй номер страницы api или по какому порядку ты захочешь записывать данные, чтобы при селектах не делать фулл скан каждый раз.

Как закончишь выгрузку в БД - выгружай оттуда данные в нужном тебе порядке и записывай куда надо хоть последовательно, хоть на голове.
157 1170299
>>170289
Складывай в какую-нибудь легкую базу, а оттуда по крону сливай в упорядоченный файлик, например. У тебя же нет жестких ограничений по времени?
158 1170309
>>170299
Можно загружать данные батчами - паралелльно делать 50 запросов, по заполнению батча, сортировать его в памяти, писать в файл и поехали со следующим батчем.
159 1170330
>>170309
Ну тебе же все равно придется потом джойнить и сортировать батчи в отдельном процессе.
160 1170342
>>170330
Зачем? То, что я предложил - работа для одного функционального чейна.

> джойнить и сортировать батчи в отдельном процессе


Конкурентно заполняется буфер энного размера. По заполнению буффера, буфер сортируется и высирается в файл. Повторить до окончания.
161 1170410
>>170342
Допустим, тебе пришли данные: 42, 0, 1, в таком порядке. В какое место в итоговом файле ты запишешь 42, когда получишь его?

Возможно, я овергенерализирую задачу, и тебе на самом деле параллелизация нужна только внутри чанков, а сами чанки линейные - так?
162 1170501
>>170410

>Допустим, тебе пришли данные: 42, 0, 1, в таком порядке. В какое место в итоговом файле ты запишешь 42, когда получишь его?


Сяду на хуи, мать на колени посажу.
163 1189034
Как найти работу на скале, если везде просят коммерческий опыт 1-3 года? Сейчас работаю джавером. Если у меня будет коммерческий опыт 1-3 года джавы, а скала чисто для себя. Есть шансы устроиться? Или нужно валить из джавы и изо всех сил пытаться найти хоть какую работу на скале?
164 1189059
>>170410

> Конкурентно заполняется буфер энного размера. По заполнению буффера, буфер сортируется и высирается в файл.

165 1189338
>>189034
Обычно просят опыт и на других языках, если не получается, то просись на скалишный проект на работе, только будь готов, что твой прежний опыт работы на других языках мало чего значит
166 1189413
>>189338

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


Я бы с радостью попросился на скалишный проект на работе, да только у нас скала не используется вообще, за ненадобностью
167 1189462
>>189034

Я хз как там у вас принято, но в Минске практически все вакансии требуют 1-3 года опыта и отличное знание огромного стека технологий, вот только на проверку оказывается что готовы и собаку взять. Рассылай просто резюме туда-сюда да и всё. Валить вникуда не очень идея с точки зрения карьеры, коммерческого опыта от сидения на жопе дома точно не появится.

>>137321 (OP)
Вопрос по скале к мудрым анонам:

Осваиваю play framework (2) с ebeans, в попытках избежать тонн боилерплейта хочу написать единственный CRUD контроллер, который будет работать со всеми моими моделями:

> class GeneralCRUDController[T <: Model with HasId]



Дальше делаю вот так:

> def delete(id: Long) = Action {implicit request: Request[AnyContent] =>


> val c = Ebean.delete(classOf[T], id)


> Ok("success")


> }



и получаю

> class type required but T found.


да, я не оч понимаю дженерики

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

Как мне выходить из этой ситуации? Может мой подход изначально неверен?
Доп. вопрос, как я понимаю в play framework 1 был коробочный CRUD. Во втором коробочного CRUD-а нету. Есть ли какая-нибудь адекватная замена, чтобы прямо прописал 2-3 конфига по мануалу и всё работает как по-волшебству?
167 1189462
>>189034

Я хз как там у вас принято, но в Минске практически все вакансии требуют 1-3 года опыта и отличное знание огромного стека технологий, вот только на проверку оказывается что готовы и собаку взять. Рассылай просто резюме туда-сюда да и всё. Валить вникуда не очень идея с точки зрения карьеры, коммерческого опыта от сидения на жопе дома точно не появится.

>>137321 (OP)
Вопрос по скале к мудрым анонам:

Осваиваю play framework (2) с ebeans, в попытках избежать тонн боилерплейта хочу написать единственный CRUD контроллер, который будет работать со всеми моими моделями:

> class GeneralCRUDController[T <: Model with HasId]



Дальше делаю вот так:

> def delete(id: Long) = Action {implicit request: Request[AnyContent] =>


> val c = Ebean.delete(classOf[T], id)


> Ok("success")


> }



и получаю

> class type required but T found.


да, я не оч понимаю дженерики

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

Как мне выходить из этой ситуации? Может мой подход изначально неверен?
Доп. вопрос, как я понимаю в play framework 1 был коробочный CRUD. Во втором коробочного CRUD-а нету. Есть ли какая-нибудь адекватная замена, чтобы прямо прописал 2-3 конфига по мануалу и всё работает как по-волшебству?
168 1189468
>>189462
Не понял, а как ты без рефлекшна собрался диспатчиться по неизвестному типу объекта? Или как этот Ebean.delete(classOf[T] ...) должен работать?

мимо
169 1189517
>>189034
Пилишь что-то на скале для себя, в резюме пишешь, что использовал скалу на работе, что ты как маленький?
170 1189790
>>189462

>classOf[T]


>class type required but T found.


Добро пожаловать в JVM, братишка)
type erasure
171 1189858
>>189790
F-bound polymorphism спасает, ебанько. Не надо кукарекать тут про type erasure
SergeiKorolevattheKapustinYarfiringrangein1953medium.jpg60 Кб, 305x500
172 1192781
Почаны, что скажите про korolev? Хочу вкатиться в скалу ради этого дерьма. Какие подводные камни?
173 1192789
>>192781
gwt\vaadin reinvented again
174 1192791
>>192781
Алсо, их сайт документации (я так понимаю, он на этом фреймворке и сделан) у меня безбожно тормозит. Каждый клик по любому линку вызывает раздражающее мигание всей страницы.
175 1192802
>>137321 (OP)

>>Лучший язык для JVM


Groovy
176 1192810
>>192802
Нет.
177 1192845
>>192802
У тебя в слове Kotlin 5 ошибок.
sage 178 1192933
>>192845
Котлиномакаки даже считать не умеют, лол.
179 1192957
>>192789

>reinvented


на самом деле нет, там значительные отличия. гвт\ваадин\зкос это генерелки жс кода.
королев же отправляет на сервер только дифы(то что изменилось) и жс он не генерит из-за чего клиент получается очень маленьким по объему + т.к. нет никаких скрытых полей мы получаем безопасность из коробки(никто не выгрузит в жсоне твои данные просто потому что лень править дто)
180 1192963
>>192791
https://fomkin.org/ этот? у меня он хорошо работает, но из-за специфики работы этой либы такое может быть, попробуй померить пинг до него, думаю если не больше 100 должно быть ок всё.
181 1193000
>>192963
Стоп, я был неправ и полную хуйню сказал, извиняюсь.

Я кликнул на их апидоки и даже не посмотрел, что они на жавадок.ио, так что disregard that. Алсо, если это не очередной гвт, тогда интересно. Завтра читну их пдфку, если не лень - распиши пока вкратце, как именно оно работает. Ты имеешь в виду, что жс-код у них фиксированный, с сервера прилетает только наполнение, по которому он генерит страницу? Я подобный подход видел у кложурцов, там один чувак именно так генерил спа из описания на edn edn - это более лучший жсон, если что и хуков в логику. Но у него эта шняга была внутренней и не опенсорсной, как я понял. Если тут та же идея - это прикольно.
182 1193001
Хотя, блядь, посмотрел сейчас первый попавшийся пример - пиздец, нет, там обычный темплейтинг на сервере, причем еще и адовый говнокод: https://github.com/fomkin/korolev/blob/master/examples/simple/src/main/scala/SimpleExample.scala - пиздец
183 1193008
>>193000
>>193001
ну да там своя либа для генрации хтмл из скала-кода + при каком либо запросе изменений с фронта от сервера уходит не вся страничка, а только то, что поменялось. Всё это общается через вебсокеты.
Незнаю почему ты так категоричен, там в эту простыню достаточно много функционала запихано(и никто не мешает делать универсальными и переиспользывать компоненты).
Попробуй представить каким был бы код если делать все это классическим крудапи + вебпетушение с жсом.
184 1193251
>>192933
Дебил неспособен даже o в словах находить.
185 1193368
>>189468
Ну вот пример из доков (на Java):

> Ebean.delete(Order.class, 12);



Т.е передаётся класс и айдишник. Я пытаюсь сделать тоже самое, но на скале и с дженериком, т.к не хочу писать много бойлерплейта. Моя попытка:

> class A[T] ....


> def foo(id: Int) = { ...


> Ebean.delete(classOf[T], id)



Рефлекшен разумеется есть, но он, как я понимаю, спрятан внутри Ebean, что меня целиком устраивает. В своём коде я рефлекшена иметь не хочу, а в библиотечном не против.

>>189462
И всё же, как правильно крудошлёпить в этой вашей скале (желательно на Play 2)?
Чтобы создать подобие админки мне нужно на каждую таблицу из БД делать по дао и контроллеру? Это выглядит как-то очень уж монструозно.
186 1193376
>>193368
https://github.com/pauljamescleary/scala-pet-store

Как правильно крудошлепить
187 1193399
>>193368
Если тебе нужно где-то взять класс, чтобы засунуть в такую либу, ты уже так и так связался с рефлекшном, расслабься. Чем тебя не устраивают тайптеги или что там у вас в вашей скале? Такой дженерик можно и на обычной джаве разрулить, через подклассы с указанием конкретного типа.

мимоджавист
188 1193494
>>193251
Во-во, да еще и считать не умеет.
189 1204468
Бампану тред по лучшему языку программирования в мире

Расскажите аноны, как вкатывались? Что читали, что кодили?
190 1204612
>>204468
Я вкатывался с жабы, читал хортсмана, но чтобы норм кодить очень желательно прочитать essential scala + programming in scala одерского. Ну а так мне немного повезло, нашёл вакансию, где брали без опыта работы на скале. На работе можно сказать и научился
191 1206852
Анон с пятью годами опыта работы на скале в треде. Плюс полтора года на C#. Спрашивайте свои ответы.
192 1206856
>>206852
Хуи сосешь?
193 1208298
Скалисты, я Джава прогер. Хочу Скале поучиться. Но с математикой не очень дружу (лямбды в джава знаю). Ну так вот на курсах во всяких курсерах, юдасити по скале и в книжках математическая часть объясняется или по умолчанию считается что я ее знаю?
194 1208340
>>208298
Не рекомендую с курсов начинать. Пиши как на better java первое время, а дальше само зайдёт

Ну и https://gist.github.com/d1egoaz/2180cbbf7d373a0c5575f9a62466e5e1
195 1208349
>>208340
Но better java это котлин.
196 1208351
>>208340
под better java ты имеешь в виду без функциональщины?

>https://gist.github.com/d1egoaz/2180cbbf7d373a0c5575f9a62466e5e1


Хорош, спасибо
197 1208386
>>208351
Да, все так. В фп успеешь в катиться ещё

>>208349
Уходи
198 1208947
>>206852
за 5 лет хоть раз юзал return/while/var?
199 1209373
>>208947
Нахуя?
200 1211891
>>208947
Отвечаю не за 5 лет, а за 5 месяцев:
return -- да, удобно использовать как выход из функции если функция дохера большая.
while -- нет, но он и в других языках на которых доводилось писать не очень уж часто используется, гораздо реже for var -- да, иногда удобнее сделать мутабельную переменную (что возможно связано с тем, что у меня на скале небольшой опыт, может со временем пройдёт), а ещё сталкивался с Ebean ORM, которая требует объявлять поля как var.

Более интересный вопрос подобного плана: зачем нужна конструкция for (seq) yield {action} ? Разве её нельзя во всех случаях заменить на seq.map(action), или seq.filter(...).map(action)?

Перехватывая эстафетную палочку, задаю свой вопрос:
Кто-нибудь пробовал Scala.js? Как ощущения?
Пилю свой прожект, очень не хочу писать фронт на жабаскрипте, поковырял Scala.js, выглядит вроде норм, но в туториале они предлагают складывать html файлы в корневую папку и делать в них дебильные пути к скриптам, вроде: ../target/scala/... Класть html в target тоже по смыслу не подходит. Эта ситуация мне совсем не нравится. Как потом эту чушь двигать на продакшен? Руками копировать файлы куда-то? Запихивать выборочно директории в докер контейнер?
201 1211913
>>211891
Не слышал, чтобы кто-то вообще использовал scala.js в продакшне. Если хочешь нормальный язык на клиенте - бери кложескрипт (или ризон, если хочется чуть больше приключений).

>складывать html файлы в корневую папку и делать в них дебильные пути к скриптам, вроде: ../target/scala/...


А чо, ты в сбт не можешь прописать какой тебе нужно путь для жс-выхлопа компайлера? Не вижу ничего криминального в том, чтобы хуярить дев-билды в public/js (на прод-билде оно все подтирается). Ну то есть типа КОНЦЕПТУАЛЬНО более лучше было бы держать в public только условный app.js, в который в зависимости от билда либо вхуяриваются пути к дев-коду в ../target/, либо пихается минимизированный прод-код, но на практике-то никакой разницы нет, так что не вижу смысла об этом задумываться вообще.

мимо
202 1212036
>>208947
Очень редко.
var - пару раз в тестах для инициализации состояния, иногда в акторах и в итерторе-адапторе для какой-то джавовой структуры.
while - тоже для интеропа с джавой, стрим там прочитать и все такое.
return - раньше использовал как guard, то есть для кода вида if (cond) return value в начале функции, сейчас перешел на if/else if - проще скаластайлом проверять.
>>211891

>зачем нужна конструкция for (seq) yield {action} ? Разве её нельзя во всех случаях заменить на seq.map(action), или seq.filter(...).map(action)?


Заменить можно, но for-comprehensions нужны в основном для соединения двух и более монадических операций (без них пришлось бы писть портянки вложенных flatMap-ов) и было бы странно не иметь for для одной операции имея его для нескольких. Я сам всегда использую map/filter/foreach вместо for если получается и всегда for нужно писaть flatMap два раза.

>Кто-нибудь пробовал Scala.js? Как ощущения?


Пробовал, написал на scalajs-react простой UI для системы мониторинга. До этого (и после) никогда не работал с фронтендом, так что сравнивать мне не с чем. Могу только сказать что на Scala.js можно писать сложные приложения и есть даже какая-никакая экосистема.
Проблемы с путями наверняка можно пофиксить правильными настройками sbt.
203 1212466
>>211891

>return -- да, удобно использовать как выход из функции если функция дохера большая.


я хоть на скале всего полгода, но если тебе нужен return, значит ты неправильно построил свою ф-цию
У меня лично на работе строго функциональный стиль, ни одного вара, вайла, ретёрна за всю работу
204 1212587
>>212466
на java же платят больше, а гемора меньше, да.
205 1212670
>>212466

> но если тебе нужен return


Мимокрокодил
Вы что ли аргументы по ссылку передаете или как? Почему return нельзя?
206 1212707
>>212670
Он наверное имел в виду, что ретурн прерывает исполнение функции, из-за чего у нее возникает больше одного execution path'а или как это правильно назвать, что не очень-то функционально и обычно использовалось в языках с разделением на statements и expressions.
207 1212711
>>212707
Мне кажется, функциональщики страдают фанатизмом, как, например, рьяные фанаты ООП. Усложнять код ради концепции - гиболое дело.
208 1212751
>>212711
Эм, так суть описанного как раз в том, чтобы НЕ усложнять код множественными точками возврата.
209 1212776
>>212751
Блять, я подумал, а вы правы.
210 1212999
Реально ли найти работу на Scala без бэка в Java?
211 1213021
>>212999
Лучше учить Spring и Hibernate. Зачем тебе эта Scala?
212 1213058
>>212999
Да, я перекатился в джавку с нулём опыта на яве и вообще ничего не зная про. JVM
213 1213059
>>213058
Тьфу ты, в скалку
214 1213060
>>212999
>>213021
Не слушай его. Джаву сейчас любая макака знает и спрос соответствующе обратный. Учи Скалу, анончик. И работу найти реально.
215 1213067
>>213060
Ну подожди. Как это "любая макака знает"? Нужно хорошо учить, как в Яндексе.
216 1213140
В чем преимущество скалы? Она что ли быстрее явы или что?
217 1213160
>>213140
После того как вышлел Kotlin - ни в чем.
218 1213161
>>213160
Ты про это сахарное говнище? Хз, даже ява лучше.
219 1213175
>>137321 (OP)
Но ведь гоудауны просто унизят и обоссут скалиста, как дело коснётся конкаренси и распределённых систем. Он будет забитый, сидя в углу обосссаный, дрожащими ручонками ковырят свою Акку, рыдая кричать "а... аа.. а увас генериков нет даже! у... у нас продвинутая система типо...". Но не успеет закончить, так как поймает смачный пендаль в ебальник, и будет наблюдать как его любимую Акку ебет божетсвенный CSP гошечки, не оставляя ей никаких шансов.
220 1213178
>>213175
Тем более можно писать и на goвне в функциональном стиле, просто без таких изъебов как в скуле.
222 1213181
>>213179
Ну не надо этого... ну серьёзно, скалоёб взгляни правде в лицо, твое поделие работает поверх JVM, а это дно. У вас, блядь, даже либы по работе с БД блокирующие (привет jdbc) о чём тут говорить вообще.
223 1213183
>>213181
А ПОЧЕМУ ТВИТТЕР ПЕРЕВЕЛ НА СКАЛУ?????????????????????77777777777777
224 1213185
>>211913

>Если хочешь нормальный язык на клиенте


Все равно остальное лишь обертка над ним.
225 1213211
>>213175
В тред заходит эарланго-господин и запускает 10к процессов по обоссыванию го-дебила.
226 1213230
>>213175

>Но ведь гоудауны просто унизят и обоссут скалиста

227 1213253
>>213211
Эликсиро-господин поглаживает бороду, сидя в антикафе, и респектует.
228 1213254
>>213230
На второй гифке в конце противно выливается пивас.
229 1213498
>>212999
Однозначно да. Джава-бэкграунд является плюсом из-за твоей потенциальной возможности поковыряться в кишках какого-нибудь легаси проекта. Но сейчас скала ― это полностью самостоятельный язык со своей экосистемой. Знание джавы уже несколько лет не обязательно для скалистов.
230 1213576
>>213211
потом 10к раз отсасывает на реальных задачах, где действительно нужен большой конкаренси и распределённая структура. потому-что эликсиром пользуется толлько руби-хипсторы. ладно дадим шанс эликсиро-господам вынуть хуй из рта:
даже у жвм-старья есть hazelcast, kafka, ignite. Годауны размахивают consul, etcd, nsq, groupcache, NATS (пытается ссать на кафку, но пока мимом). Что есть у эликсиродебилов? нихуя, только рэббит, но он на эрланге, так так нормальный челвоек такой хуйнеё как эликсир обмазываться не будет.
sage 231 1213629
>>213576
Нихуя у тебя манямирок, бротишь)) Земля тебе пухом)))
232 1213645
>>213629
Это реальность, назови примеры известных решений в области распределённых систем на эликсире.
233 1213651
>>213576

>даже у жвм-старья


Братишка ну ты долбоеб сравнивать устоявшуюся популярную платформу, которая старше тебя и язык, который появился 7 лет назад.
234 1213682
>>213058
>>213060
>>213498
Спасибо аноны, попробую поковыряться.
235 1213688
>>213682
Усложню вопрос. Есть вообще реальный шанс найти работу на Scala без опыта в промышленной разработке? Или лучше всё-таки начать с какого-нибудь Python или Java?
236 1213702
>>213576
Ты в курсе, что еликсир - это нескучный синтаксис для ерланга, да?
237 1213708
>>213702

>Ты в курсе, что еликсир - это нескучный синтаксис для ерланга, да?



В курсе. И что в эриксоне эрланг за сраные сервисные сообщения железок отвечал и весь хайлоуд там был только в мифах и головах нонешних некрохипстушков - тоже.
238 1213711
>>213708

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

Весь хуйлоуд эрланга - это выдумки хипстопетушков.
239 1213719
>>213651
Ты ебанулся? Если жвм старше тебя, то ты школьник ебаный (в любом случае еще опарыш), оно 1995 года.
240 1213735
>>213719
Школьникам 95 года уже по 23 года, они уже помидорками работают.
241 1213736
>>213711
Про WhatsApp который целиком на эрланге и у которого овердохуя серверов ты не слышал?
242 1213740
>>213711
У LoL мессейджинг на ерланге. Jabberd на ерланге. Алсо, https://en.wikipedia.org/wiki/Erlang_(programming_language)#Usage
243 1213751
>>213736
Хорошь соскакивать, так про любую закрытую херню можно сказать, а мол в корпорации X это работает на Y. Это всё хуйня и не имеет возможности верификации. Давай рассуждать логически, если язык/платформа збс для чего либо, то на ней будут достойные открытые проекты, на эрланге нет нихуя кроме кролика. Это наводит на мысль, что анон прав по поводу "хуйлоуд эрланга - это выдумки хипстопетушков".
244 1213898
>>213576

>consul, etcd, nsq, groupcache, NATS


Я правильно понимаю, что главное достижение годебилов это написание распределенного key-value хранилища и message broker?
sage 245 1213926
>>213751

>то на ней будут достойные открытые проекты, на эрланге нет нихуя кроме кролика


Про OTP слышал?
246 1214127
Прочитал Programming in Scala Одерски, Functional Programming Principles in Scala и множество всяких мелких статей и блогов.
Чтобы ещё навернуть? Про SICP и Кормена даже не упоминаю.
И как попрактиковаться?
247 1214180
>>213926

>ряяяя а у нас есть фреймворк, ряяяяя сажу вьебу



И где проекты на нем, м, уеба?
248 1214197
>>213688
На собственном опыте проверено, что есть.

Но тут важный момент, где ты живёшь. Если ДС или ДС2, то куча компаний хайрит джуниоров. Причём джунов рассматривают как с минимальным опытом в других областях, так и без. Если в мухосрани, то извините.

Мониторь hh, линкедин, сообщества скалистов в телеграме (там вся движуха).
249 1214210
>>214127
Scala with Cats, Effective Akka, Scala High Performance Programming.

Для практики можешь решать задачки с exercism.io. А можешь написать движок для блога. А можешь поконтрибьютить простенькие таски в проекты на гитхабе.
facepalm.jpg25 Кб, 530x309
250 1214298
>>214180

>ряя нет нихуя фреймворков опенсорса


>>есть


>ряяя а где проекты на этих ваших фреймворках опенсорсных


>>вот


>ряяяяя а откуда ты знаешь что он именно на нем а ты код видел


>>пикрелейтед

Paddington-2.jpg786 Кб, 2880x1800
251 1214318
>>214197
Спасибо тебе анон! Ты меня убедил попробовать. Я сам из мухосрани, но морально готов перебраться в ДСы джуном ради нормальной интересной работы, да и небольшая денежная подушка безопасности есть на первое время, чтоб с голодухи не помереть.
sage 252 1214328
>>214298
Куколд, плиз. Докажи, что там именно этот фреймворк используется.
253 1214368
>>213645
Discord
254 1214374
>>214368
У них львиная для профита благодаря кассандре вместо бд. Т.е. все эти ваши хайлоады на себя берёт банальная жаба. А писать в неё можешь хоть на js.
255 1214385
>>214374
>>214328

Вы хоть понимаете, что ведете себя ровно как секта свидетелей плоской земли?

Но они хотя бы просто жирно траллят, а вы на полном серьезе такие мудаки.
256 1214390
>>214385
Не, я вообще мимо проходил и ничего против ерланга не имею (вообще никакого мнения о нём не имею). Но конкретно у дискорда дела именно так.
257 1214596
>>214390
Вот только почему-то в статье самого дискорда о том, как они заскейлились на 5 млн онлайна, нет ни слова о кассандре (зато много слов о переписывании сишных библиотек на эликсире, вообще охуеть). Даже не знаю, кому верить: анону с зекача или команде discord.

мимо
259 1214641
>>214616
Круто, но где тут тезис "Т.е. все эти ваши хайлоады на себя берёт банальная жаба. А писать в неё можешь хоть на js."?
Я, в свою очередь, про эту статью говорил, если что: https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b
260 1214673
>>214197
Что тебя спрашивали когда устраивался?
Что вообще требуют от джунов (или как там начинающий называется) по скале?
261 1214678
>>214616
Вот, например реальное положение дел в дискорде
https://discordapp.com/jobs?team=engineering

в явном виде ищут только крестовиков, а этот ваш уеликсир только упоминается среди остальных языков для бека на равне с пистоном, гошкой и скалой. Таки ерланг/еликсир не нужен.
262 1214715
>>214641
Хороший у них блог, бтв. Приятно почитать.
263 1214796
>>214678

>Working with a modern tech stack built on GCE with Elixir/Erlang, Python, Go, Cassandra, Redis, Elasticsearch, and a hint of C++ where appropriate.



Я понял: ты сектант, тебе бесполезно пытаться приводить рациональные аргументы. Давай закончим, тем более что это оффтоп.
264 1214905
>>214673
У меня почти все собеседования (и самое первое, и последующие на более высокие грейды) быстро переходили в неформальное общение о том, кто я такой, откуда взялся, как пришёл в скала-мирок.

Молодым и зелёным если и будут давать задачки, то, скорее всего, примерно такого уровня: scastie.scala-lang.org/MvUJjYaZQm202EIGNath0A.

Но помимо понимания синтаксиса и стандартной библиотеки, тебе понадобится ещё и представление об экосистеме. В итоге джуну надо знать:
синтаксис
асинхронная модель (как пользоваться scala.concurrent.Future)
библиотека коллекций (map, filter, foldLeft и прочие базовые методы)
инструментарий (IDEA, sbt, git)
что-нибудь про базы данных (хотя бы в чём отличие SQL от NoSQL)
крайне желательна акка (что такое акторы, и зачем они нужны. что такое стримы, и зачем они нужны)

Лучший способ получить эти знания ― написать небольшой CRUD в качестве пет-прожекта. Например, движок для блога или примитивную CRM для воображаемой кафешки.

>>214318
А ты рисковый. Учти, что цены на жильё в ДС очень быстро сожрут твою подушку безопасности.
20416-full.png109 Кб, 430x405
265 1214909
>>214905
Разметка поехала
266 1215005
>>214905
Спасибо за такой развёрнутый ответ.

>кто я такой, откуда взялся


Вот тут я обосрусь 100%, ведь мягко говоря не студентик уже...

>задачки, то, скорее всего, примерно такого уровня


Функцию написать, я правильно понял? Сколько времени даётся на такое? Интернетами можно пользоваться?

>scala.concurrent.Future


Нагуглил. Пойду читать.

>IDEA, sbt, git


IntelliJ? Я накатил эклипс, хз что там знать то можно, всё понятно по контексту. Что-то уровня "знания ворда", лол.

>что-нибудь про базы данных


>акка


Есть что почитать про это? Всё что я гуглил это либо поверхностное, либо бесконечная кроличья нора, от которой можно словить шизу.
267 1215130
>>215005
Да, написать реализацию. Интернеты для такого не нужны, достаточно ноутбука с IDE, и никто не будет стоять над тобой с таймером. Время выполнения этих задачек джуном, которое устроит меня: nestedMap — 3 минуты, traverse — 10 минут, partition — 15 минут. Если человек тупит дольше, поинтересуюсь, как у него дела, и дальше будем уже вслух обсуждать задачу.

> Я накатил эклипс


Откуда же вы лезете? Даже на официальном сайте скалы предлагают IDEA поставить.

Про акторы и асинхронщину читай https://github.com/anton-k/ru-neophyte-guide-to-scala. Про БД — просто начни с ними работать и подгугливай документацию в процессе. Потом уже придёт понимание, что изучать полноценно.
268 1215168
>>215130

>https://github.com/anton-k/ru-neophyte-guide-to-scala


Слушай, а почему бы не взять Spring Boot, к нему добавить Spring data и прочее. Получится же быстрее и понятнее. Зачем тебе эта Scala, ммм?
269 1215326
>>215130

>Даже на официальном сайте скалы предлагают IDEA поставить.


Много ли среди скалистов вимо\имаксоебов?
270 1215338
>>215130
Ясно.

>Откуда же вы лезете?


Ну не стукай, выбрал первое что выдал гугл.

>Про БД — просто начни с ними работать


>работать


Тригернулся.
Я просто малость аутист, мне не хватает фантазии придумать что с этими бд вообще делать. Создать, добавить элемент, убрать... Всё нахуй. Лан надо будет накатить SQL и подрочиться.
Ещё раз спасибо.
271 1215570
>>215130

>Откуда же вы лезете? Даже на официальном сайте скалы предлагают IDEA поставить.


А я тебе скажу откуда. На курсере Одерски демонстрирует всё в Eclipse. Я попробовал пойти против системы и поставил себе чистую sbt. С наскока нихрена не разобрался в ней и решил, чтоб время не терять, качнуть голый компилятор. Где можно вменяемые доки найти по sbt, а не эту херню с хеллоуворлдом вместо создания проекта?
272 1215985
Есть возможность сменить работу на scala разраба.
Сейчас занят в java ee.
Какие подводные и стоит ли?
Послезавтра собедесование - к чему готовится? кроме анального порева
273 1216096
>>215570
Есть книжка SBT in Action.
Вполне годная.

>чистую sbt


И почему в женском роде? Это же "инструмент".
274 1216098
>>215570

>На курсере Одерски демонстрирует всё в Eclipse.



Это курс по фп?
Ему лет триста уже, тренд поменялся давно.
Эклипс заебал уже даже самых упоротых ебанатов, лол.
Нормальные же люди им и вовсе никогда не пользовались, ибо просто невозможно же.
275 1216102
>>214905

>scastie.scala-lang.org/MvUJjYaZQm202EIGNath0A


Это ты писал?

Что ещё за nestedMap, лол?
Лифтинг отменили уже?
276 1216138
>>216096
Спасибо за наводку на книжку! SBT хоть и tool, но система сборки. А вообще, не знаю. Оно само так получилось.

>>216098
Ага, он самый. А сам то курс стоит потраченного времени?
277 1216298
>>216138
Этот курс - пространное введение в Скалу с лёгким уклоном в ФП.
Там и про ООП куча, и т.п.
А по ФП - не так и много.

Например, чтение книжки Functional Programming in Scala (и решение задач, обязательно) будет гораздо более полезно.
Есть гитхаб с задачам, хинтами и ответами.

Это вообще одно из лучших введений в ФП как таковое.
При этом знание Скалы требуется на самом начальном уровне.
Авторы пишут, что можно вообще с нуля, но это, конечно, перебор.
278 1216337
>>216298
Я представляю как будет тормозить приложение написанное на Scala, когда GC будет работать нонстоп.
279 1216343
>>216337
Анус свой лучше представляй.
280 1216368
>>216298
Для полных нубасов без промышленного опыта курс будет полезным? Скажем, сначала накатить его, а потом Functional Programming in Scala?
281 1216375
>>216343
Ну что ты нервичаешь? Мы же с тобой понимаем, что для скорости нужна Java, а не Scala.
282 1216376
>>216368
Да, будет.

Есть ещё книжка фолиант Одерского - Programming in Scala. Надо искать 3-е издание, где версия 2.12.

Ну и другой литературы полно.

Вообще, я бы посоветовал Scala For The Impatient (2-е издание).
Минимум воды, широкий охват тем, читается легко.
А за тонкими подробностями - к фолианту Одерского.

Даже на русском есть (Scala для нетерпеливых, перевод 1-го издания), но сам я перевод не видел, по качеству ничего сказать не могу.
283 1216378
>>216375
Скала - для души, лол.
284 1216434
>>215985

>Какие подводные


Имплиситы.

>стоит ли?


Конечно стоит - кругозор шире, зарплата больше, молодежней-современней.

>Послезавтра собедесование - к чему готовится?


Ну ты скалу-то уже знаешь? Деревья повращал? Мы ж не телепаты, хуй знает, что у тебя за вакансия и какой у тебя уровень.
285 1216435
>>216375

>для скорости нужна Java


Томми, ты?
286 1216443
>>216434

>Ну ты скалу-то уже знаешь?


Нет, нихуя не знаю.
Для меня это пафосное название как и все околоджавное больше ассоциируется с чем-то промышленным и даже с ML.

>Конечно стоит - кругозор шире, зарплата больше, молодежней-современней.


А это точно не гавно на палках/попытка сделать на жвм хоть что то стоящее?
287 1216468
>>216443

>попытка сделать на жвм хоть что то стоящее?


Ты, сынок, потроллить сюда пришёл?
288 1216504
>>216378
То ли дело взять Spring 5, а там Netty и такой-то перформанс. Это тебе не Finagle какой-нибудь или Akka Http, да.
289 1216508
>>216504
Сейчас бы пытаться сделать вид, что netty - медленный энтерпрайз, а вот в акке сила.
290 1216536
>>216468
бля, нет.
но, в новой конторе обещали научить скале(они с джавы все переносят)
291 1216547
>>216508
Наоборот же! Netty быстр, а вот Akka Http не очень.
292 1216689
>>216504
Вообще-то, сетевая часть в акке сделана на netty.

Это, если отвлечься от того факта, что спринг не нужен, например.
560.jpg149 Кб, 470x560
293 1216828
Я вам покушать принёс.

It’s that time of year! Pride 2018. In honor of all of us Scalamaris that are advocates of or identify with the LGBT community–we have a little bit of Scala love for you.
294 1216937
>>216689
Ну Netty из Akka давно уже выпилили. Сам понимаешь, что это черевато добавлять в зависимости библиотеку, которую по сути поддерживает один человек.
А Spring можно и к Scala прикрутить. Как ты без IoC будешь жить, а?
295 1217015
>>216937
Стоит заметить, что спринг давно уже не только IoC, его корфичами являются и weblux/mvv, и aop, и всякие integration-security, да и без бута/клауда его используют всё меньше (что на понимании макаками-кодерами сказывается крайне негативно).
Про нетти сказал как отрезал. А ещё у него новые мажорные версии не выходили десять лет, а пятую ветку забросили после второй альфы.
296 1217024
>>217015
Согласен. Spring - это такой уанстопшоп, где есть все необходимое для разработки приложения. Если взять Scala, то можно долго куковать в поисках альтернативных библиотек и фреймворков.
297 1217131
>>217015

>Топит за спринг


>Называя несогласных "макаками"


>в Scala-треде


Содомит, ты же два раза на ноль поделил.

>>216937

>IoC


С давних пор использую.
А причём тут спринг, лол?
298 1217160
>>217131
Очевидно макаками-кодерами я называю нерадивых пользователей Spring Boot, у тебя wishful thinking сработал.

>при чём тут спринг


Думаю он подразумевал что-то вроде "можно хоть спринг использовать", но это мои домыслы.
299 1217191
>>217160
Как причем? Берешь Java + Spring и ваяешь свой стартуп. А Scala не нужна по сути.
300 1217377

> Scala ни нужна


Анончики, а можно простыми словами и без троллирования, какие у Scala преимущества по сравнению с Java? Чтоб вот можно было, например, другану-профану за пивасом пояснить, почему я решил упороться Scala. Ведь сейчас под JVM есть и Kotlin, и Clojure и, даже, Groovy.
301 1217385
>>217377
Скала по отношению к джаве - это как сиплюсплюс по отношению к си. Можно наворотить такого, что голову себе сломаешь, но если использовать как "си с классами", то преимущества очевидны.
302 1217386
>>217377
Ебать Акку под спарком збс.

Для всего остального котлин лучше, иначе есть шанс быть неявно выебанным неявным хуем невяного пидора в неявных обстоятельства.
303 1217387
>>217385

> Можно наворотить такого, что голову себе сломаешь


Вот это, между прочим, объективный минус с точки зрения языка - любой в меру своей испорченности может нахуячить так, что хуй проссышь нормально даже сам спустя пару месяцев.
304 1217390
>>217387
Но как бы и на джаве, и на любойязыкнейм можно наворотить в меру своей испорченности. Тут суть не в этом, а в том, что скалу можно использовать просто как более лучшую джаву. Мне кажется для объяснений под пивас это самое то.
305 1217401
>>217377

>едь сейчас под JVM есть и Kotlin, и Clojure и, даже, Groovy.


А ещё jRuby, Jython, и до ебеней матери всякого разного прочего.

Какие преимущества?
Никаких.
Это просто другой язык.
Какие могут быть преимущества у тёплого перед мягким?

Можно делать фп, например.
Акка там, хуякка, вот это вот всё.
Это преимущества?

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

Беттер - это котлин, хотя, я бы не стал его юзать в этом качестве - очень мутный язык, с весьма мутным будущим.
306 1217414
>>217401

>Плюс - несовместимая развесистая иерархия коллекций и т.п.


Так стд коллекции один хуй говно же.
307 1217442
>>217390
Нет. Джава сильно ограничивает. Котлин меньше. Скала вообще нет.
308 1217444
>>217414

>Так стд коллекции один хуй говно же.


В скале или в джаве?

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

Если покопаться в интернетах (англоязычных), то можно увидеть, что про скалу как беттер-джаву пишут, в основном, ньюфаги, которые скалу только вчера увидели.
Опытные бобры пишут совсем другое, уже не такое интересное, лол.
309 1217510
>>216102

Да, я.

В чём проблема с нестедмапом? Это задача, которую можно реализовать через лифтинг f в общем случае, и через xs.map(_.map(f)) в частном. Если кандидат начнёт рассказывать про lift, это ему только в плюс пойдёт.

Но вообще, это задумывалось как элементарная задачка для джуна на знание самых простых операций над стандартными коллекциями. Условно, чтобы понять, что человек не путает map и flatMap.
310 1217513
>>217444

>В скале или в джаве?


Второе.

>И, в итоге, на каждый пук надо юзать встроенные конверторы


А вот в кложе такой проблемы нет, кстати. ^_^

>Опытные бобры пишут совсем другое, уже не такое интересное, лол.


Тут не буду возражать, я не бобер.

А ты сам из личного опыта говоришь? Ну, конкретно по части того, что "никаких" преимуществ. Тот факт, что это разные языки, нам ведь не мешает их сравнивать и оценивать целесообразность их применения для какой-то данной задачи. Ты согласишься с тем, что скала в целом более высокоуровневая и более типобезопасная, чем джава?
311 1217529
>>217513
Я не говорил, что нет преимуществ.
Я сказал, что не нужно сравнивать разные вещи.
И там и там недостатки (в большинстве случаев) являются продолжением достоинств. А за достоинства приходится платить определённую цену.
Закон сохранения никто не отменял.

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



Да. Есть куча ценных фишек, свяаных с типизацией, которых нет в джаве.
Но, это не бесплатно.
Язык значительно сложнее. Порог вхождения в разы выше.
Код трудно воспринимать при беглом просмотре. И т.д.
Кто не понимает, о чём я - почитайте исходники библиотеки коллекций, например.

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

Инструментальная поддержка, опять же, несравнимая совершенно. Хотя, за последние годы поддержка скалы улучшилась в разы.

Вообще, это сложная тема, которая далеко выходит за границы обсуждения на аиб.

Стоит ли скала того, чтобы её изучить до приличного уровня?
Будет ли это полезно для профессиональног роста, даже если ты не будешь писать на ней фуллтайм?
- Однозначно.

Ну не котлин же, в самом деле, лол.

Значит ли это, что джава не нужна, и все чёткие пацаны должны перекатиться на скалу?
- Ни в коем случае.
311 1217529
>>217513
Я не говорил, что нет преимуществ.
Я сказал, что не нужно сравнивать разные вещи.
И там и там недостатки (в большинстве случаев) являются продолжением достоинств. А за достоинства приходится платить определённую цену.
Закон сохранения никто не отменял.

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



Да. Есть куча ценных фишек, свяаных с типизацией, которых нет в джаве.
Но, это не бесплатно.
Язык значительно сложнее. Порог вхождения в разы выше.
Код трудно воспринимать при беглом просмотре. И т.д.
Кто не понимает, о чём я - почитайте исходники библиотеки коллекций, например.

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

Инструментальная поддержка, опять же, несравнимая совершенно. Хотя, за последние годы поддержка скалы улучшилась в разы.

Вообще, это сложная тема, которая далеко выходит за границы обсуждения на аиб.

Стоит ли скала того, чтобы её изучить до приличного уровня?
Будет ли это полезно для профессиональног роста, даже если ты не будешь писать на ней фуллтайм?
- Однозначно.

Ну не котлин же, в самом деле, лол.

Значит ли это, что джава не нужна, и все чёткие пацаны должны перекатиться на скалу?
- Ни в коем случае.
312 1217836
>>217529
Я в целом со всем согласен, про ненужность скалы я и не говорил, и все остальное ты написал по делу.

Разве что

>И можно (иногда) нахуевертить такого, что будет компилироваться, но не будет работать (я имею в виду ошибки применения типов). В джаве такое невозможно, например.


- https://hackernoon.com/java-is-unsound-28c84cb2b3f

А в целом - да, анон, все так, я с тобой согласен.
313 1218092
>>217510

>xs.map(_.map(f))


Я примерно так и сделал
def nestedMap[A, B](xs: List[Option[A]])(f: A => B): List[Option] =
{
def wew (x: Option[A]) = x match
{case None => None
case Some(s) => Some (f(s))
}
xs.map(wew)
}

А потом пошёл читать про футуры.
Теперь ещё и про лифт читать буду.
314 1218270
>>218092
Проверка на None делается внутри map(). В это и смысл.

Футуры - это хорошо.

Лифт - хули про него читать?
Это функция, которая "поднимает" другую функцию, работающую со значением типа A, чтобы она работала а с определённым контейнером, содержащим значение типа A.

Т.е. (A => A) => ([A] => [A])
Т.е. лифтованная функция внутри себя вызывает map(f).

Вот тут можно потрогать пример:
https://scastie.scala-lang.org/mrYmm1ZiRZaNMeVVlClAQw
315 1218282
Есть ли где-нибудь нормальный бесплатный туториал о связке kafka + spark с кодом на скале? Пока что нашел толькотплатный
316 1218284
>>218270

> (A => A) => ([A] => [A])



Ну, или (A => B) => ([A] => )
317 1218285
>>218282

>kafka


Только sorokin.
С кодом на php.
318 1218301
>>218285
хуя ты шутканул ,
а по делу есть что сказать?
319 1218309
>>218301
Деньги вперед.
index.png2 Кб, 151x67
320 1218383
>>218270

>Лифт - хули про него читать?


А, так вот какой лифт имелся ввиду.
321 1218722
>>218270
ну тащемта можно показать и более общий пример через функторы:
https://scastie.scala-lang.org/dSj8uomlReeSpliZyLeg2A
322 1218799
Как написать функцию, аналогичной этой,
def transformInt(x: Int, f: Int => Int) : Int = {
f(x)
}

Но что бы вместо единственного входного параметра x: Int
были, например 2 строки s1:String, s2:String,
и к ним двоим тоже применялась какая-нибудь функция
sui.jpg37 Кб, 225x350
323 1218831
>>137326

>Но когда начинается ввод/вывод и обработка ошибок Haskell почти ни чего не дает, по сравнению с распространенными языками.



Я утверждаю, что ты просто не знаешь, как в современном ФП делается ввод/вывод и обработка ошибок. Показывать тебе как это делается на Хаскеле, конечно, бесполезно, но хоть Скалу попробуй осилить http://degoes.net/articles/modern-fp вроде специально для брейндамагнутых джавой язык делался.
324 1218841
>>218799
лол, ну держи:
def transformStrings(s1: String, s2: String, f: (String, String) => String): String = f(s1, s2)
325 1218842
>>218799
Это же map получается, или reduce?
Не понятно из твоего поста.
"и к ним двоим тоже применялась какая-нибудь функция" - это несколько расплывчато, лол.

На вход надо подавать 1 аргумент - коллекцию.
Можно сделать доп. вариант для Option (который, сука, не коллекция, почему-то).
326 1218843
>>137340
Да, это так. И дело не только в наследовании, а в том, что в Хаскеле мухи таки отделены от котлет.

Например, в Хаскеле есть "обычные" алгебраические типы данных и есть генерализованные АДТ. В Скале нет ни того, ни другого это делается через ебучие костыли вроде sealed trait .. и это вроде как АДТ, но одновременно при паттерн-матчинге может эмулировать некоторые свойства ГАДТ, но с некоторыми ограничениями. В чем конкретно заключаются "некоторые ограничения" - хуй проссышь, просто в какой-то момент ты на них внезапно натыкаешься и у тебя начинается жопаболь.

Type-level programming, higher-kinded types, type-level macros - всё это в Скале эмулируется, но с кучей бойлерплейта, без macro paradise практически ни одна функциональная библиотека на Скале не обходится. Да что уж там, даже тайпкласс или фукнцию с экзистенциальным типом на Скале написать - это проблема, тот же cats использует simulacrum и kind-projector для этого.

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

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

В общем, чтобы писать программы в функциональном стиле на Скале, надо её обвесить тоннами костылей, за которыми сути не видно. Надо знать, как все эти костыли работают, там макросы, плугины компилятора, надо знать зачем они все нужны. Поэтому в целом Хаскель гораздо проще и понятнее. На Скале всё это говно можно использовать когда ты уже всё знаешь из Хаскеля и еще знаешь специфичные заёбы Скалы. На Хаскеле можно учиться программировать.
327 1218849
Подитоживая эпопею со Скалой вспоминается анектод про Вовочку, который натягивал себе на голову презерватив со словами "Все равно на Новый год писькой буду!". Вот так и программирование на Скале - это постоянное натягивание презерватива на голову с целью превратить её в функциональный язык.
328 1218855
>>218849
То, что в Скале - это элементы фп.
Которые местами весьма полезны.

А попытки _использовать_ Скалу как функциональный язык (scalaz и прочая хуйня) - это именно попытки натянуть сову на глобус и подрочить вприсядку.
И за использование такой хуйни в продакшн надо пожизненно разжаловать в сторожа.
Capture.PNG8 Кб, 973x162
329 1218872
>>218841
>>218842
вот что я хотел сделать
330 1218873
>>218855
Лучше уж Kotlin использовать. Зачем эти сложности?
331 1218877
>>218855
Дело в том, что современный "продакшн" - это и есть дрочба вприсядку толп полуграмотных ОО-дебилов. Поэтому соверменные программы - это самое ненадёжное из когда-либо созданного человечеством, при этом по самым неэффективным технологиям. Единственное, что в Скале есть хорошего, это те самые "элементы фп.", но они там настолько убогие, что для написания полноценных функциональных программ приходится тащить с собой кучу костылей.

Что же касается применения фп "местами", так тут можно выделить три стадии развития кодописца:

0. ОО-макак. Считает, что ФП не нужно, лямбды - сложная непонятная хуйня, пишет на Джаве, хотя когда в Джаву 8 завозят таки лямбды начинает делать вид, что про ненужность говорил кто-то другой и переходит на 1-ю сдадию.

1. Недофпшник. Нахватался по верхам на сайтах типа хабра, знает, что такое лямбда, умеет пользоваться функцией map. На этом его знание фп заканчивается, никаких декомпозиционных паттернов поциент не знает, про монады читал только в скалаблогах, там же прочитал про scalaz, но не знает, зачем это нужно. Пишет на мультипарадигменном говне обычные императивные программы с функцией map и лямбдами, с умным видом говоря, что использует фп "по месту".

3. Программист. Полностью знаком с парадигмой ФП, пишет на Скале в таком https://github.com/slamdata/quasar стиле, охуевает с полудурков на дваче, которые рассказывают, что на Хаскеле сложно работать с сайдэффектами, что cats или scalaz нельзя использовать в продакшене и прочих охуенных историй, которые тут генерирует недообразованная студентота, чтобы как-то оправдать свою недообразованность.
sage 332 1218938
>>218877
ФП-блядь носится по треду с разорванной сракой, спешите видеть.
333 1218996
>>218877
Ты уж выбери, что ты хочешь. Денежки получать или фп своё.
334 1219005
>>218872
Это reduce.
Точнее - foldLeft() для списка строк.
Это если тебе нужно общее решение для любого к-ва элементов.

https://stackoverflow.com/questions/1446419/how-do-you-know-when-to-use-fold-left-and-when-to-use-fold-right

https://en.wikipedia.org/wiki/Fold_(higher-order_function)
335 1219014
>>218996
Зачем мне выбирать, если мне и так платят за ФП, причем существенно больше, чем всяким быдлокодерам которые кукарекают про ненужность ФП.
sage 336 1219017
>>218872
>>219005
Посмотрел внимательно, лол.
Это будет:

myStrings.map(toUppercase).foldLeft("")(concat)

Как-то так.
337 1219020
Блядь, сажа откуда-то приклеилась.

>>219014
Так ты радостью зашёл поделиться?
Это правильно.
И мы за тебя рады.
laugh-tom-cruise.jpg41 Кб, 600x400
338 1219091
>>218843

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



мимо-динамикодрисня-господин
339 1219093
>>218877
А вот этот пост уже поддвачну.

тот-же-господин
340 1219156
>>219093
Сам себя не поддвачнёшь - весь день как оплёванный ходишь.
sage 341 1219185
>>219156
Сочувствую тебе, братан.
image.png679 Кб, 1200x1160
342 1219731
Набросьте говна на вентилятор, плиз, SJW хуеют.
https://users.scala-lang.org/t/scala-pride-t-shirts-for-charity-fundraiser-1-week-left/2928
343 1219771
>>219731
Похоже на провокацию котлинопидоров ребят из Jet Brains.
344 1220140
Пацаны, эрланг или скала?
Вакансий в России больше на скале. Но там часто идет как дополнение к джаве. Неотъемлемо ли одно от другого?
Хотелось бы ответов от тех, кто работает или работал с обоими языками.
345 1220180
>>220140
На скале ты можешь писать что угодно.
А не эрланге?

>java


Нравится это тебе или нет, но это - промышленный стандарт. И так будет ещё много-много лет. До твоей пенсии, как минимум.
346 1220313
>>220180

>На скале ты можешь писать что угодно.


...кроме десктопа, фронтенда и легких серверов.

>Нравится это тебе или нет, но это - промышленный стандарт. И так будет ещё много-много лет.


Ага, особенно вон с такими-то новостями https://www.oracle.com/corporate/pressrelease/java-se-subscription-offering-062118.html


>До твоей пенсии, как минимум.


так пенсии ж отменили yoba.png
347 1221033
>>220313

Но ведь и десктоп, и фронтенд на скале пишут (в том числе в РФ). Не сказал бы, что мне это нравится, но это имеет место быть. Что ты под лёгкими серверами подразумеваешь, мне непонятно. Круды что ли?

>>220140
Скала не дополнение к джаве. В вакансиях их обычно пишут рядом, если уже есть большой кусок джава-энтерпрайза, а новые проекты пишутся на скале. В легаси-код программистам тоже иногда приходится залезать, поэтому в требованиях упомянают джяву.
348 1223339
Скалоблядки, можете рассказать про реальные коммерческие проекты на Акке?
Желательно энтерпрайз.
Желательно в Росии.
349 1224824
Аноны,
я постигаю акку, читаю туториал с офф сайта и не могу понять такую базовую вещь:
в нормальном коде, дерево акторов создаётся в начале работы программы и остаётся более-менее неизменным, или же некоторые акторы-дети постоянно создаются и удаляются в результате обработки сообщений родителем?

Более конкретный пример: я хочу обрабатывать запросы к СУБД, конечно же параллельно. У меня есть актор А который принимает запрос и:
1) Создаёт актора Б, который выполняет запрос, обрабатывает и возвращает результат. Затем удаляет актора Б.
2) Имеет готовый пул акторов Б, и просто роутит задачу одному из них (я видел, есть класс Роутера и несколько стратегий роутинга сообщений).

Какая из этих стратегий лучше? Если вторая, то как правильно выбрать размер пула? Если таких пулов несколько, каждый раз думать, насколько велик должен быть пул?

Дополнительный вопрос:
давеча ГО-анон писал что jdbc не асинхронно, и поэтому скала говно. Насколько правомерно это умозаключение? Я нашёл вот это:
https://github.com/mauricio/postgresql-async
(хотя в README: This is not supposed to be a JDBC replacement)
Получится ли использовать эту либу в связке с АККА ?
350 1224825
>>223339
В райфе на митапе недавно какой-то насквозь матановый доклад рассказывали, который 95% нормальных людей вообще не поняло. Но сам доклад родился из использования Акки, так что вероятно используется.
351 1224851
>>224824

>jdbc не асинхронно


В смысле, требует поддержания соединения?
Так это не JDBC.
Точнее - да, JDBC, но потому, что это абстракция для _любой_ БД, большинство из которых не асинхронны.

Хочешь асинхронности - вводи лишний слой (поближе к физической БД), который будет обслуживать твои запросы асинхронно, а с БД работать через пул соединений.

Собственно, на Акке его и можно сделать (наверное, я не большой спец по ней).
352 1224852
>>224825
Свежо предание, лол.

Понятно, что где-то всё это используется (или может использоваться) ирл, только интернеты об этом молчат, в основном.
354 1225039
>>223339
Я вот на проекте на акке в энтерпрайзе, юзает акка-акторс + акка хттп
355 1225043
>>225039
Какого рода проект или энтерпрайз?
В общих чертах?
356 1225047
>>225043
Делаем сервис для отображения рекламы в играх (в том числе AR, VR), на скале пишется сервер для фиксирования просмотра, статистики, операции с баблом, непосредственно отображения рекламы на юнити на шарпах, работаем на шведов
357 1225058
>>225039
В базу как ходишь, м? Как общие впечатления?
358 1225062
>>225047
Это охуенно, но "энтерпрайз" - это немножко другое - торговля, промышленность, банки, государственные системы.

Но, в принципе, понятно, зачем вам Акка.

А БД какая?
В Akka in Action рекомендуют вообще всё в памяти держать, при остановке системы сливать в хранилище, при старте - загружать.
Вы как делаете?
359 1225069
>>225058
С помощью Слика, но мы ещё юзаем ДинамоДБ
>>225062

>но "энтерпрайз" - это немножко другое - торговля, промышленность, банки, государственные системы


ок, значит я неправильно понимал

>А БД какая?


основная Постргрес, для статистики ДинамоДБ

>В Akka in Action рекомендуют вообще всё в памяти держать


у нас с-ма всего раз запускается, а данных супердохуя

>Вы как делаете


Держим в бд, но конечно же есть и кэшированные данные, но их немного
360 1225120
>>223339

Странный вопрос. Акка почти везде в ынтырпрайзе. У нас вот тоже. Хотя плюёмся от неё очень сильно. Вот например akka-streams потихоньку на fs2 меняем
361 1225128
>>225120
Какого рода энтерпрайз?
Какого рода проекты?
Зачем Акка?
Почему плюётесь?
362 1225130
>>225120

>fs2


Ну подожди. В Акка тиме же Конрад Малавски!
363 1225147
>>225128

> Какого рода энтерпрайз?


> Какого рода проекты?


Биллинг. Больше сказать не могу, коллеги тоже сидят, не хочу задеанониться, лол

> Зачем Акка?


Event Sourcing. Взяли Akka-Cluster, получилось неплохо. Сейчас ещё лучше, ибо код на сырых акторах я уже не помню когда писал в последний раз.

> Почему плюётесь?


Future. Но тащемто уже скрыли всё что можно за семи слоями абстракций и везде (почти) Monix
364 1225149
>>225147
Сергей?
365 1225167
>>225147
А почему не взяли JGroups для кластеризации?
366 1225338
>>225167
Потому что писали на скале.

А если серьёзно, то хз. Это прям как-то даже странно. Да и не только же кластер нужен нам был -- стримы и персистенс тоже.
367 1225382
Ребят, Одерски то не видит!
368 1225383
>>225382
Это потому, что ночь уже.
369 1225462
>>225338
Выбрасываешь скалу, берешь джаву, спринг, базу там какую-нибудь, инмеймори дата грид, хазелкаст там, инфиниспан там вот и все.
370 1225466
>>225462
А потом долбишься в зад

ты кстати, что вечером делаешь?
371 1225481
>>225466
Ты это, давай переходи на джаву, а там посмотрим.
372 1225658
>>225481
Лучше ты на скалу.
Уже и майки для вас завезли: >>219731
373 1226490
Господа, а есть какая-нибудь IDE полегче IDEA?
374 1226527
>>226490
Emacs + ensime или VSCode
375 1226607
>>226527

> VSCode


А разве там есть нормальная поддержка? Синтаксис подсвечивает и на этом всё.
376 1226653
>>226607
плагин какой-то был
377 1226668
>>226490
Ну у меня на немощном ноуте IDEA +- работала, но на линухе; а на винде, да, тормоза неебические.
Попробуй убунту + идеа, мб заканает, потому что я лично не представляю, как кодить на скале не в идее; поиск юзеджов (для акторов вещь просто необходимая), подсветка передачи имплиситов.
Если не идея, то не могу ничего посоветовать, сори
378 1226751
>>226490
Вроде для Eclipse что-то было.
379 1226773
>>226527

>ensime


Для джавы норм? Лучше eclim'а?
380 1226795
>>226773
Не знаю. Использую IDEA.
381 1226903
>>226795
Блин, придется попердолить, деваться некуда. Выглядит вкусно.
1482335701117758674.jpg59 Кб, 600x337
382 1228444
Господа, я тут пытаюсь осилить Functional Programming Principles in Scala на курсере и у меня начинают возникать трудности. Как реализовать тот или иной метод в императивном стиле я представляю, а вот с функциональной реализацией проблемы. Посоветуйте, как развить в себе это самое функциональное мышление.
383 1228471
>>228444
Я параллельно с курсом читал SICP. Одерски оттуда все задачи подергал. Порой объяснение материала в SICP изложено намного лучше чем в курсе.
Есть же всякие entry-level книжки для тех кто решил освоить функциональную парадигму.
Я бы не сказал, что конкретно данный курс является лучшим источником информации по теме.
Если тебе охота именно Scala освоить для каких-то своих проектов, то лучше взгляни на этот гайд - https://gist.github.com/d1egoaz/2180cbbf7d373a0c5575f9a62466e5e1. А курсы оставь на потом. Их польза крайне сомнительна, к сожалению. Лучше пролистать пару книг и начать писать небольшой проект используя полученные знания.
А проходя данный курс ты будешь неделю думать как решить задачу с разменом монет или полиномы высчитывать ФУНКЦИОНАЛЬНО!
384 1228733
>>228444
Решай больше задачек. Смотри чужие решения после того, как написал свое.

У скалы кстати есть свой аналог http://www.4clojure.com/problems ?

>>228471
Двачую кроме последней части. Перед тем, как писать петпроект, тебе все равно надо научиться составлять алгоритмы. Кому-то нравится видео, кому-то - книжки. Без разницы в принципе, но курс тебя еще будет подгонять сроками, плюс там есть форум, где можно задавать ответы.
385 1228803
>>228471
>>228733
Спасибо!
386 1228856
>>228444
Я кстати помнится вот такую хуйню нашёл когда-то
http://www.otstavnov.com/Odersky_Scala_lecture-notes.html
Может тебе пригодится.
387 1228859
Я снова выхожу на связь. Возник вопрос по литературе. Книг по Scala не сказать, что много, но и не одна. Что лучше новичку читать? Есть ли смысл читать Essential Scala от Underscore если потом читать Scala for the Impatient? И что по поводу толстой книги Одерского?

Я понимаю, скорее всего вопрос платиновый. Но я так уже попадал с Питоном. Все советуют The Byte of Python, но это полное говно, а не книга, и я лишь потратил время. Более менее полезной была Think Python, и то, только из-за наличия упражнений. В итоге, всё перешло в изучение Лутца, где много воды, но расписано всё обстоятельно. Правда, один хер, работу джуном я на Питоне найти не могу. Похоже, я слишком старый для этого дерьма. Вот такой вот я вкатывальщик-неудачник, да. В общем, проще - не всегда лучше, потому что остается много непонятной магии в работе. А я так не могу. Меня это раздражает сильно.
388 1228863
>>228859
Impatient + FP in Scala (скала там почти с нуля).
Можно параллельно.
Фолиант - для тонких подробностей.
389 1228865
>>228859

>Scala for the Impatient?


Я дропнул. Не помню почему. Хоть и на русском было, но что-то мне не зашло. Очень много воды.

>по поводу толстой книги Одерского?


Вот этой?
https://www.artima.com/pins1ed/index.html
Мне нормас зашло.
В любом случае придётся прочитать всё тоже самое, но в разных вариантах.
С задачками я вот это читал
http://aperiodic.net/phil/scala/s-99/

>работу джуном я на Питоне найти не могу


На скале тем более не найдёшь. Открой хх, там требуются только сеньёры на 200 тысяч, ньюфаги никому не нужны.
390 1228868
>>228865

>Хоть и на русском было, но что-то мне не зашло


Лол.
Не читайте до обеда советских газет.

Читать надо по английски.
И второе издание.

Фолиант - третье.

Всё есть в интернетах.
391 1228873
>>228865
И хуй знает, где ты там воду нашёл.
Книга очень плотно написана.

Русский перевод, правда, не видел.
Не удивлюсь, если насрали, как обычно.
392 1228891
>>228873
Дело не в русике, а в постоянных авторских "а вот в крестах вот так, в яве так...". Да мне похуй как там, пиши по делу. И ебанутая подача, то расписывает простейшую хуйню, а через страницу даёт пример, чтобы понять который надо ещё пару страниц гуглить.
Русик я упомянул, чтобы подчеркнуть, что даже учитывая разницу в языках (русик то родной, пинг от глаз до мозга меньше) книга на английском зашла легче.
393 1228896
>>228891

>"а вот в крестах вот так, в яве так...". Да мне похуй как там



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

Книга написана очень хорошо и лишнего там нет ничего, всё строго по делу.

И, далеко не каждая книга, а особенно по такому не особо популярному языку, выдерживает второе издание вскоре после первого.

И да, эта книга для тех, кто уже умеет программировать. Т.е. это не учебник по программированию.
И скала - очень плохой кандидат на роль первого языка.
394 1228902
>>228896

>Скала - очень сложный язык.


Почему?
395 1228954
>>228856

>http://www.otstavnov.com/Odersky_Scala_lecture-notes.html


Спасибо!

>>228865

>На скале тем более не найдёшь. Открой хх, там требуются только сеньёры на 200 тысяч, ньюфаги никому не нужны.


Ньюфаги в принципе никому не нужны. Интересно, откуда при такой политике сеньоры берутся. А мне уже без разницы на каком языке я не смогу работу найти. Мне недавно отказали в интервью на трейни-вакансию, в которой требовали знание хоть какого-то языка. Скалу хотя бы интересно учить.

>>228896

>Скала - очень сложный язык.


Скала - интересный язык. Он создан для людей, которые сначала думают, а потом делают. Если с думалкой слабо, то есть JS, Python, Ruby и PHP. Там можно говнокодить даже с дырой в голове.
396 1228962
>>228954

>Скала - интересный язык


Вот вот.
Только поэтому и учу, а то бы дальше маняме смотрел, б листал и лес фармил.
397 1228985
>>228954

>Скала - очень сложный язык.


>Скала - интересный язык.


>Если с думалкой слабо то есть JS, Python, Ruby и PHP



Ты, вообще, понял, по какому поводу я это написал (про "сложный")?
И кому?
Попробуй, перечитай.

Или ты привык слушать себя, в основном?
Возможно, в этом причина твоих проблем с поиском работы.

Алсо, с каких пор питон и руби стали языками для слабоумных, лол?
Многие рубисты, например, люто надрачивают на скалу, тот же Поллак (разработчик Lift).

>>228902

>Почему?


В смысле?
Спроси у Одерского.

Или ты имеешь в виду, с чего я это взял?
Потом поймёшь, если продолжишь учить.

Чисто для примера - почитай исходники библиотеки коллекций.
Если хоть что-то там поймёшь - отпишись обязательно, лол.
398 1228989
>>228985

>Или ты привык слушать себя, в основном?


>Возможно, в этом причина твоих проблем с поиском работы.


Ты чего злой такой? Основные причины - отсутствие профильного опыта и возраст. Причем, вторая причина ключевая, насколько я могу судить.

>Алсо, с каких пор питон и руби стали языками для слабоумных, лол?


Я написал, что даже имея дырку в голове, на них можно успешно говнокодить. То есть язык не так требователен к квалификации пользователя.
399 1228991
>>228985

>В смысле?


Уже который раз слышу, что сложна, но так и не могу понять почему.
Такое чувство, что это какой-то налёт элитарности, чтобы отпугнуть ньюфагов.
Ну матан, вся хуйня. Но погромирование само по себе подразумевает матан, разве нет?
400 1228994
>>228991
Я не спец в этом вашем программировании, но мне что-то подсказывает, что для клепания форм, например, матан не нужен.
401 1229002
>>228991
Нет там никакого матана.
Просто язык сложный, потому, что очень много всего в нём.

Просто для примера:
https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala

>чтобы отпугнуть ньюфагов


Чтобы предупредить, лол.
И чтобы человек не думал, что это он тупой, например.
402 1229004
>>228989

> возраст


И сколько же вам стукнуло, почтеннейший?
403 1229012
>>229002

>очень много всего в нём


Это ж плюс, разве нет? Широкий выбор инструментов это здорово.
К тому же никто не заставляет всем этим пользоваться. Я вот читал про всю эту ковариативность, и прочую еботню с типами, например, но что-то мне подсказывает используется это очень редко.
Про подчёркивание - это наоборот упрощение, когда не нужно переменные лишний раз создавать, ебанул _ да и всё. Как символ, который подразумевает что-то очевидное, типо местоимения.
Очень во многом вижу вот этот подход, хз как выразиться, для ленивого человека. Может поначалу это и кажется сложным и нихуя непонятным, но когда один раз поймёшь, то уже не захочешь возвращаться обратно.
Огромный простор для того, чтобы лишний раз не писать новый код, а переиспользовать уже имеющийся.
404 1229022
>>229012
Правда в продакшене это никому не нужно. Проще и дешевле взять Java или Kotlin и в случае необходимости использовать какую-нибудь Akka (хотя реализация акторов на Java вроде имелась).
Пока найдешь программиста на Scala, который не фигачит одни монады - контора успеет обанкротиться.
405 1229023
>>229022

>Проще и дешевле взять Java или Kotlin


Есть и обратный момент. Если взяли всё таки Scala, то там вероятно не просто и не дёшево.

>который не фигачит одни монады


Как что-то плохое. Неужели формошлёп, который потеет услышав что-то про лямбды, будет предпочтительней?
406 1229024
>>229023
Зачем такие сложности, когда можно взять стандартный спринговый стек и не обосраться в продкшене?
407 1229034
>>229024
Раз не взяли, значит на то были причины.
408 1229055
>>229034
Да ладно! Вон, SEMRush переходит со скалы на джаву.
409 1229129
>>229055
Да, скала хайп немножко поутих в последние пару лет.

Причина, видимо, в том, что сложность языка "не окупается". И параллельный успех (блядского) котлина свидетельствует о том же.
410 1229141
>>229129

> скала хайп немножко поутих


И заебись, меньше вкатывальщиков-джунов, готовых работать за 300 баксов, которые демпингуют зп. А работа будет и так.
411 1229177
>>229004
Мне далеко за тридцать. И я ощутил в полной мере, как "никогда не поздно вкатываться". Честно говоря, не ожидал такого. Думал, айтишники - ребята прогрессивные.

Отсутствие опыта, конечно, тоже оказывает влияние. Но я ж и не претендую на синьорскую позицию. Я настроился на среднюю джунскую зарплату уже... В общем, немного у меня энтузиазм подисчерпался. Решил вот посмотреть на Скалу.
412 1229194
>>229177
Я смотрю, олдфагов тут несколько больше, чем принято считать, лол.

Российские айтишники - не прогрессивные.
Угадай почему.

Да, никогда не поздно.
Просто чем позже, тем сложнее.
Уже считаешь себя умным, и это сильно мешает умнеть на самом деле.

Скала - интересный язык.
Но, если ты хочешь найти работу, и ты уже не мальчик - учи джаву. Изучение скалы может в этом сильно помочь, но потом.

Варианты - 1С, PHP.
Это не подъёбка.
JS - слишком молодёжно, мне кажется. Но, тоже вариант.

Вообще, ориентируйся на то, что тебе хотелось бы _создавать_.
Потому, что язык (языки) - это просто инструмент.
И без мотивации на создание конкретных вещей он бесполезен.
413 1229254
>>229177
Не все так плохо, братунь. На прошлой работе, примерно год назад, взяли двух вкатывальщиков-джунов рубистами, одному было 33, другому 36. Оба прошли испытательный и остались.
414 1229578
Как понять, что ты уже не джун а хотя бы лоу-мидл, и стоит просить прибавки кроме того, что код-ревью почти все без замечаний
415 1229624
>>229194
>>229254
Спасибо за совет и поддержку. Думаю, допройду вводный курс Одерского - жаль бросать, осталось две недели всего. И снова погружусь в Python. Может курсы какие на той же курсере пройду, чтоб сертификатик был в резюме.
416 1229715
>>229578
в чем проблема просто попросить прибавки?
417 1229727
>>229715
выгонят же!
418 1229737
>>229715
Не то что бы >>229727, но сорт оф ведь я джун и без понятия особо в этом плане, поэтому и спрашиваю
419 1229742
>>229737

не ссы. Просто приходи и говори: "Даров, я тут сделал то и то, научился тому и закрываю вот это. Накиньте двадцатку."

Если посылают -- спрашивай, что тебе необходимо сделать, чтобы получить прибавку, ведь ты хочешь получать больше.

Всё это на личном опыте, если работодатель адекватный -- накинет, или скажет что подкачать. Если нет, то беги нахуй. Скалист без работы не останется долго.
420 1229743
>>229742
скалист уровня джун - лоу-мидл? Везде же сеньеры нужны дс
421 1229751
>>229742
Как часто по-твоему должны делать повышения?
422 1229755
>>229751

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

>>229743

Да хуйня эйчарская. Хотят superstar, но сойдет и обезьяна, которая функтор от моноида отличить в силах
423 1229758
>>229755
А если 1.5 года не повышают. Мне еще потерпеть или лучше искать новую работу?
424 1229763
>>229758
я рили хз, я всё на личном опыте говорю. У меня был супер ахуенный манагер и говорил он так: "С компании надо забирать всё" и постоянно давал мне прибавку, когда я просил.

Не будь терпилой -- требуй, проси, доказывай, что ты заслуживаешь больше. Если нет, то сваливай.

Но быть мудаком, который приходит и говорит: "У меня тут оффер, делайте прибавку или я сваливаю" не стоит.
425 1229764
>>229755

>Да хуйня эйчарская. Хотят superstar, но сойдет и обезьяна, которая функтор от моноида отличить в силах


Ну не знаю. В Тинькове сильно по скале гоняют, ууух!
426 1229765
>>229763
Дело в том, что контроффера у меня нет. Да и это как-то на саботаж очень похоже.
Наверное я просто не очень ценный сотрудник и нужно довольствоваться тем что имеешь.
427 1229767
>>229763
Повезло тебе с менеджером. Мой менеджер только спрашивает "Ну че, сколько там еще осталось?!".
428 1229769
>>229763
я другой анон который и начал спраишвать про это вот все, ситуация - месяцев 8 назад устроился джуном, при этом до этого на скале не прогая вообще. И, если в начале я бывало тупил и тд в плане делания всего как на каком-нибудь питоне, а не в фп стиле и все такое, то постепенно стал намного лучше, делаю все сам и с минимумом незначительных замечаний. Но как-то все равно хз, мб я многого хочу и все такое
429 1229777
>>229769
не ссы анончик, подойти сегодня к манагеру и поговори с ним, потом отпишись здесь. Что плохого то случиться может? Да нихуя, ровным счётом.
430 1229780
>>229777
просто выгонят и наймут более лояльного сотрудника!
431 1229788
>>229780
И правильно сделают, мелкобуквенное быдло не нужно.
432 1229798
>>229769
Что хоть пишете на скале?
433 1229820
>>229788
но мне предложили потерпеть с повышением!
в компании проблемы, нужно перетерпеть!
434 1229847
>>229755

>сойдет и обезьяна, которая функтор от моноида отличить в силах


И часто в работе нужны понятие функтора и моноида?
435 1229854
436 1230162
>>229847
Это совсем не сложные понятия, на самом деле.

Функтор, например, это любая хуйня, которая реализует map().
437 1230204
Кто-нибудь вкатывался в скалу с нуля? Или всё таки это не первый язык у большинства?
Гуглю хх, там даже джунов нет, не то что стажёров. Всем подавай сразу сеньёров с опытом и стаком на страницу.
В то же время на Java вакансии есть, берут вообще всех, буквально "основы ооп" в требованиях. Может стоит влезть в джаву, а потом уже перекатываться?
Хотя с другой стороны, откуда то ведь берутся эти сеньоры...
438 1230211
>>230204
Олдфаг-кун, это опять ты?

Ну вот смотри.
Есть такая книжка Functional Programming In Scala.
https://scanlibs.com/functional-programming-in-scala/

Знания скалы там почти не требуется.
Всё, что нужно, объясняют в процессе.
Используется ограниченное подмножество языка, без заморочек, которых в скале полно.

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

Если ты поймёшь, о чём эта книга, зачем вообще всё это нужно, если сможешь решать 1 главу за 7-10 дней (в среднем) и решить все - ты молодец. И смело можешь претендовать на работу, почёт и уважение.

Но, я что-то сомневаюсь.
Поэтому, я бы предложил тебе выбрать джаву, а к скале вернуться попозже.
439 1230220
>>230211
Нет, я не тот питонист.
Дело не в книжках. А в последующем устройстве.
Прочту я её, не прочту, что-то мне подсказывает работодателю похуй.
Хуй с горы без опыта работы? Мы вам перезвоним.
440 1230221
>>230211

>Олдфаг-кун, это опять ты?


Неа. Это другой анон. Я вот писал >>229624

Но за наводку на книгу спасибо. Вообще, мне дико доставило именно решение заданий в курсе Одерского. Так что книжечку буду читать для собственного развития.

А вообще, мне сегодня ВНЕЗАПНО позвонили и пригласили на собеседование. Что-то там с Питоном и данными я как раз собирался удариться в ML библиотеки. Завтра пойду побеседую.
441 1230225
>>230204
>>230220
Я задавал аналогичный вопрос в треде и мне неплохо на него ответили здесь >>229194

Могу предположить, что в России-матушке не так много компаний, которые используют Scala вообще, и как основной язык разработки в частности. Это такое экспериментальное направление скорее. Да и Scala завязана на JVM и интегрируется с Java. Поэтому последнюю желательно таки знать.
442 1230226
>>230220
Чувак, если ты можешь читать такие книги (и понимать прочитанное), твоему работодателю не будет похуй, поверь мне.

Другое дело, что чтобы смочь, надо уже иметь изрядно этого самого опыта, лол.

Или быть гением, но гении сюда не пишут.
443 1230228
>>230221

>для собственного развития


Это одна из лучших книг по ФП для начинающих.
Независимо от языка.

Плюс, в отличие от хаскеля, например, тут используется практичный jvm-язык. И весьма многое можно с минимальными изменениями реализовать на джаве.
444 1230233
>>230226

>твоему работодателю не будет похуй


Вот хз, хз.
>>230225

>в России-матушке не так много компаний, которые используют Scala вообще


Внезапно, они есть.
Но нужны серьёзные ребятки с опытом в 2-3 года на 300 тысяч в секунду.

А, похуй, буду читать этот толмуд и мониторить периодически хх. Не взлетит так в джаву вкачусь. Нет.
445 1230261
>>230221
Ох лол, так это ты? Ну ок, ждем на собеседование...
446 1230288
>>216536

> они с джавы все переносят



Лол, нахера?)
447 1230322
>>230204
Я вкатывался. Не имел вообще никакого опыта на JVM, кроме немного кложуры. В прошлом гавнокодил на питоне.
448 1230368
>>230204
работал стажёром, имея опыт стажировки на яве + пет проджект на спринге (мвс + дата), но это вроде как не просилось; требовали знаний ооп + фп + бд
449 1230390
>>230368
Ну и как, интересней чем на Java?
450 1230405
>>230390
Ясен пень, я вообще скалу учил без особой надежды на работу, чисто для себя, потому что реально интересно.
Ну а с вакансией реально повезло, не буду отрицать, работается заебись
>>225047 -кун
451 1230433
>>230261
Ну как, взяли?
452 1230497
>>230433
Разнесли как дворовую шпану.
453 1230869
>>151705
Я юзаю, что интересует?
454 1230870
>>152031
Сбертех, но тинькофф получше
455 1230871
>>152031
Exante, Revolut.
456 1231383
>>230261
>>230433
Контора хоть и крупная, но мутная какая-то. Вообще, собеседование проходило странно: меня пытались напугать сложными задачами, которые они решают, но при этом уровень моей компетенции не проверяли совсем. На мои вопросы об используемом стеке прямо так и не ответили.

олдфаг-недопитонист
457 1231792
>>152031
да на самом деле почте в любом технологичном банке есть скалка: райф, сбер, тинька. Насчёт альфы не уверен.

Ещё куча более мелких мест есть. Не так много как на джаве, но всё равно есть
458 1232645
>>152031
Вбросил бы свою контору, но не хочу деанона.

А вообще, пойми, что, даже если в вакансии написано, что компания ищет сеньора, тебе ничего не мешает написать им и узнать про джуновские позиции. Часто джунов ищут пассивно и не публикуют вакансии для них.
459 1232677
>>232645
унижение какое!
460 1232847
Аноны, а какую работу выполняют на Scala? С чем, в основном, приходится иметь дело?
461 1232874
>>232847
В основном приходится иметь дело с медленной компиляцией, нечитаемым кодом и постоянными тормозами приложения из-за того, что GC работает как сумасшедший пытаясь вычистить весь мусор, который приложение на Scala генерит каждую секунду.
462 1232894
>>232847
Биг дата всякая, ну и просто бэкенды с аккой.
463 1232980
>>232894
Причем биг дата не такая уж и биг, но чего уж точно с избытком - описано здесь >>232874
464 1232982
>>232980
>>232874
Зарепортил залетную обиженку.
465 1233014
>>232982
Что ты там зарепортил? Это анонимный форум.
466 1233028
>>233014

>Это анонимный форум.


Смешно шутите, Николай.
467 1233455
>>232874

>нечитаемым кодом


то что ты не умеешь его читать, это означает, только то, что ты не умеешь его читать
Скала тем и прекрасна, что можно писать очень лаконичные и выразительные конструкции, которые выглядят как built-in

>медленной компиляцией


это да, но для сервака это неважно

> постоянными тормозами


не замечал
468 1233805
>>233455

>то что ты не умеешь его читать, это означает, только то, что ты не умеешь его читать


У Скалы объективно очень хуёвый синтаксис. К нему можно привыкнуть, как к Лиспу, или как к запаху носков в казарме, но чем-то хорошим он от этого не становится.
469 1233851
>>233805

>У Скалы объективно очень хуёвый синтаксис


Ахуенные истории.жпег
Если вот это сложно, то остаётся только 1с с его ВЫЧЕСТЬ ПРМН ПРИБАВИТЬ НАЛОГ и в таком духе.
Небольшие трудности могут вызвать только всякие имплиситы, вот выше анон _+_ подобные записи считал сложными.
Ну и с типизацией надо разбираться, если ты хочешь использовать это всё на полную катушку.
К слову, у скалы же из хаскеля ноги растут? Я как-то читал статью в интернетах, там автор ебанат, он в одной статье давал ссылку на другую, и вот у меня ушло минут 5 прежде чем я сообразил, что та другая использует примеры на хастлере.
sage 470 1233870
>>233805
Ты питонист или goвноед? ^_^
471 1233934
>>233805
Все верно. Намного быстрее и главное дешевле написать все на Java. Хорошо что есть уже обкатанный Спринг и сопутсвующие библиотеки. Пока будешь подбирать стек на скале, у тебя деньги кончатся в конторе. Нужно же чтобы библиотеки были написаны на скала и все было функциональненько!
472 1234026
>>233851

> вот у меня ушло минут 5 прежде чем я сообразил


И таков тупица каждый второй скалист
473 1234036
>>233851

>Если вот это сложно


Ездить на велосипеде с квадратными колёсами не сложно, просто неудобно.
>>233870
Нет, я предпочитаю нормальные языки программирования.
>>233934
С Джавой сравнивать не корректно, потому что Джава менее выразительна, соответственно и синтаксис для неё придумать проще, но если уж на то пошло, там он лучше.
474 1234237
Аноны, давайте помогать друг другу, так как ждать ответов в треде долго. Мб будем оставлять свою телегу другим с описанием и приблизительной оценкой своих скиллов/ знаний фреймворков
Начну с себя:
@dirinle
Scala 7/10
Akka Actors 8/10
Akka Http 6/10
Play2 3/10
Slick 9/10
Я, например, постоянно спотыкаюсь об плэй, так как только недавно с ним работаю
475 1234239
Аноны, хочу писать полноценно функционально. Что лучше, cats или scalaz?
476 1234283
>>234239
Cats для петухов, конечно scalaz!
477 1234540
>>234239

сейчас более популярно cats
478 1234618
>>234239
Haskell.
479 1234684
>>234618
Я ждал этого ответа, спасибо.
480 1234748
>>234618
Тогда уж Erlang, там хоть работа найти можно будет.
481 1234750
>>234748
работу, быстрофикс.
482 1234789
>>234748
Если ерланг, то лучше уж эликсир или кложу.
483 1234797
>>234789
если эликсир или кложу, то лучше скалу, тогда и работу найти можно будет.
484 1234801
>>234797
Логично!
485 1235260
>>234789
На кложе нет работы, хватит распространять этот миф.
486 1235265
>>216375
Для скорости нужен го, раст или плюсы. Ты забыл что-ли, что джява работает на JVM? Которая в принципе сосёт на реальных задачах, и написать на ней что-то быстрое, особенно когда дела касается асинхронщины адски сложно. Просто не ебать мозги и взять гошку.
487 1235266
>>235260
Никита Прокопов же нашел работу на кложе!
488 1235271
>>235266
Шта? Кто это вообще?
489 1235275
>>235271
Да ты погугли! Ты же не гуглил!
490 1235283
>>235271
Один из самых известных программистов на Clojure!
491 1235382
Если Scala такая плохая, почему ее используют?
492 1235384
>>235382
Потому что очень много скала-макак, готовых писать за 200 баксов. Короче демпинг зп норм программистов.
493 1235393
>>235382
потому что на ней легко писать программы с хорошим дизайном. Тру программисты не боятся сложностей, поэтому пишут на спринге или го!
494 1235398
>>235393
спринг божественен!
495 1235467
>>235382
Кто использует-то? Даже не в первой двадцатке по популярности.
497 1235486
>>235260
Июнь не палится. :')

>>235271
Автор firacode
498 1235495
>>235480
Этот график - полнейшая хуйня.

И, хорошо ещё, если это просто троллинг.
А если те, кто делает эти "исследования", сами в это верят, то это пиздец.
499 1235496
>>235382
Не особо. Всё относительно - относительно ocaml или clojure её таки используют. Относительно Java, JS или C# - вообще нахуй никому не нужна, забытое поделие.
sage 500 1235518
>>235495
Конечно школьнику с сосача виднее, чем одной из самых известных analyst фирм. Съеби в /b.
501 1235821
>>235518

>analyst фирм


Сеньор enterprise солюшн architect в треде! Все на борт application сервера!
tumblro56sc7ASY31ugyavxo11280.jpg264 Кб, 1280x683
502 1235920
Пацаны, я вам оп-пик для переката принес:

>Hieronymus Bosch “A visual guide to the Scala language” oil on oak panels, 1490-1510.


>The left panel shows the functional features, the main one describes the type system, and the right the object oriented parts.

503 1237516
Добрый вечер, скалагоспода. В общем решил навернуть скалу для себя, в качестве хобби, а то заебал жс на работе уже, да и хочется вкусить все бэкендерские фишки, к тому же на таком охуенном фп языке. Вообще, в дальнейшем хочу перекатиться с фронтоговна на скалобэка, сколько это примерно должно занять? фп вроде немного знаю, на жсе стараюсь ворочать говна в фп стиле
504 1237565
>>237516
Purescript. И научись сначала ставить и добиваться решения по одной задаче за раз.
505 1237580
>>237516
всегда лолирую с джс дурачков, которые говорят "фп немного знаю". Фп это не map, filter, reduce.

https://gist.github.com/d1egoaz/2180cbbf7d373a0c5575f9a62466e5e1 -- добро пожаловать.
506 1237664
>>237580
Забавно, аноны в треде советовали как раз всё с точностью до наоборот: толстую книгу Одерски и красную по ФП.
507 1237674
>>237664
дык красную книгу там и советуют, только чуть попозже
508 1238540
Бамп годному языку
509 1239026
>>237580
Так Скала - это не ФП. Скала - это Джава с лямбдами + пара костыльных паттернов на макросах имплицитах, которыми пытаются имитировать ФП. Если хорошо в этих костылях разобраться и попердолиться пару вечеров, то можно написать целую монаду, например.
510 1239258
Аноны, вопрос немного не по теме треда, но больше некуда. Чем так плох F# по сравнению со Scala, что его вообще никто не использует?
511 1239531
>>239026
анон ты обосрался, как связаны монады, макросы и ФП? Не неси хуйню, уйди
512 1239571
>>239531
Когда твои познания в ФП немного перевалять за map и пару статей на хабре, а опыт программирования на скале - за пару заданий из кук-буков, ты поймёшь, как они связаны. А пока просто учись и не выёбывайся.
513 1239582
>>239571
ты будешь дальше выебываться или может ответишь на вопрос? Как связаны монады, макросы и ФП? ФП не может существовать без макросов и монад?
514 1239587
>>239258
1. проприетарный (де факто)
2. проёбаны GADT-ы, нigher-kinded polymorphism и многое другое. И этого никогда не будет, потому что 1 и на любой вопрос отвечают "это сложно сделать в дудке без костылей".

Вообще, в плане функциональности языки можно разделить так:

0. Эксперементальные языки, вроде Idris, Agda и т.п. Делают НЁХ, но, к сожалению, она не всегда пригодна для практического применения. Например, в Агде нельзя задать функтор для стрелки (морфизма внутри языка), и прочие нежданчики всплывают, про которые никто не знает, потому что никто на этих языках не программирует. Я уж не говорю про отсутсвие экосистемы.

1. Haskell - делают нормально, огромный набор рабочих паттернов для решения практических задач, про язык всё известно, нормальная экосистема. Есть определенные ограничения и косяки, но они тоже, как правило, известны.

2. Scala - пытаются делать то же, что и в Haskell, но по причине родовой травмы, получается только на костылях и в инвалидной коляске. У особо умных личностей путём героических сражений с собственным инструментом и преодоления созданных им трудностей всё же получается что-то сделать (тот же cats или scalaz), но не пытайтесь повторять это дома, может оказаться опасно для мозга. К сожалению, все эти сложности не получается до конца изолировать даже на уровне библиотеки, поэтому даже воспользовавшись чем-либо готовым, вы всё равно рискуете хапнуть говна и повторить геройские подвиги сражения с языком, хотя, справедливости ради, уже в более лайтовой форме, чем авторы либ.

3. F# - онально огорожены и, как я уже писал выше, даже не пытаются делать то, что не поддерживается самой платформой .net. В итоге застряли на полиморфизме ранга-1, причем 13 лет назад, в течение которых все нововведения в язык сводились к синтаксическому сахарку и частным свистелкам-перделкам, которые, по идее, в любом нормальном языке могут быть реализованы на уровне макросов или, в крайнем случае, плагинов компилятора. inb4 MIT-лицензия и наличие mono не особо позволяют шарпу стать "открытым", это все равно, что говорить, что windows-only-говно не онально огорожено потому что есть wine
514 1239587
>>239258
1. проприетарный (де факто)
2. проёбаны GADT-ы, нigher-kinded polymorphism и многое другое. И этого никогда не будет, потому что 1 и на любой вопрос отвечают "это сложно сделать в дудке без костылей".

Вообще, в плане функциональности языки можно разделить так:

0. Эксперементальные языки, вроде Idris, Agda и т.п. Делают НЁХ, но, к сожалению, она не всегда пригодна для практического применения. Например, в Агде нельзя задать функтор для стрелки (морфизма внутри языка), и прочие нежданчики всплывают, про которые никто не знает, потому что никто на этих языках не программирует. Я уж не говорю про отсутсвие экосистемы.

1. Haskell - делают нормально, огромный набор рабочих паттернов для решения практических задач, про язык всё известно, нормальная экосистема. Есть определенные ограничения и косяки, но они тоже, как правило, известны.

2. Scala - пытаются делать то же, что и в Haskell, но по причине родовой травмы, получается только на костылях и в инвалидной коляске. У особо умных личностей путём героических сражений с собственным инструментом и преодоления созданных им трудностей всё же получается что-то сделать (тот же cats или scalaz), но не пытайтесь повторять это дома, может оказаться опасно для мозга. К сожалению, все эти сложности не получается до конца изолировать даже на уровне библиотеки, поэтому даже воспользовавшись чем-либо готовым, вы всё равно рискуете хапнуть говна и повторить геройские подвиги сражения с языком, хотя, справедливости ради, уже в более лайтовой форме, чем авторы либ.

3. F# - онально огорожены и, как я уже писал выше, даже не пытаются делать то, что не поддерживается самой платформой .net. В итоге застряли на полиморфизме ранга-1, причем 13 лет назад, в течение которых все нововведения в язык сводились к синтаксическому сахарку и частным свистелкам-перделкам, которые, по идее, в любом нормальном языке могут быть реализованы на уровне макросов или, в крайнем случае, плагинов компилятора. inb4 MIT-лицензия и наличие mono не особо позволяют шарпу стать "открытым", это все равно, что говорить, что windows-only-говно не онально огорожено потому что есть wine
515 1239591
>>239587
Содержательно. Спасибо.
516 1240000
Долго, тяжело, больно перекатываться с Жавы на Скалу? В Жаве уже 4 года бтв.
517 1240002
>>240000
Ну и да - будут ли с этого профиты? Получится ли это монетизировать в будущем?
518 1240164
>>240000

>4 года бтв


А нахуя тебе? Ты ж там небось уже тысяч 200 получаешь, минимум.
519 1240167
>>240164
Чтобы в будущем получать уже 300, например
520 1240178
Ананасы, как лучше оформлять простые рекурсивные функции с if-else или match-case?
521 1240385
>>240178
В шапке же вроде было
https://docs.scala-lang.org/style/
522 1240545
>>239587

>Haskell крут.


>Scala пытается быть такой же крутой.


Тогда почему вакансий Scala тысячи, а у Haskell десятки?
523 1240654
>>240545
Haskell слишком крут. Очевидно же.
524 1242760
>>239587
А что на счет Clojure?
525 1245322
Почему трут конфу по скале из шапки @hcdev
526 1246634
>>242760
Такое же нинужно как и скала, тащемта.
527 1246916
Аноны, а как по-простому скомпилировать скала-код в байткод для jre?
1. Делаю обычный хеллоуворлд
2. scalac hello.scala
3. java Hello дает Error: Could not find or load main class Test
scala.jpg270 Кб, 700x790
528 1250022
Бамп
529 1250127
>>250022
Да не поможет тебе бамп, скала нинужна, она умирает. Убогий тулинг, мешанина концепций, язык просто как куча разношёрстного барахла, да еще и на JVM.
Вон буружуи уже какие разговоры заводят:
https://www.quora.com/Is-Scala-a-dying-programing-language
530 1250392
>>250127
Нет, не нужна, не надо её учить.
В статье так и сказано.
2.png96 Кб, 1800x2032
531 1250507
Scala нинужна. Твердо и четко.
532 1250508
>>250507
Я не поверю, что человек который смог в монады будет кормить настолько жирного зелёного.
533 1250801
>>250507
Что это за маня-фантазии? Сам рисовал? Открой репорт гитхаба, скала уже менее популярна, чем шелл-скрипты.
https://octoverse.github.com/
535 1251127
>>251030
На коболе знаешь какие зп охуительные? Когда технология загибается, спеца найти становится сложнее и рынок готов предлагать большие зп, лишь кто-то был готов обмазываться и поддерживать уже накатанное.
536 1251130
>>251127
Так ты работать собрался или на анонимных форумах для девочек анимешниц усираться?
537 1251315
>>251130
Вот именно - работать, для второго есть скала.
15325982017230.jpg11 Кб, 415x406
538 1253800
Читаю это красную книгу, вижу задание.
Смотрю как надо сделать. Решаю сделать тоже самое, но с блекджеком с потоками. А хули нет?
В пятницу сделал, все выходные пробухал.
Щас посмотрел, что я сделал и обосрался. Всего пару дней прошло, а я уже забыл что и как я делал, пришлось 5 минут смотреть в экран, чтобы вспомнить.
539 1254044
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ
image.png497 Кб, 460x460
540 1254045
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ
НУЖЕН ПЕРЕКАТ

инбифо: сам делай перекат
Тред утонул или удален.
Это копия, сохраненная 16 сентября 2018 года.

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

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