>>767431 (OP) Наскальные балбесы, поясняйте чем Скала лучше Котлина как академический язык, и лучше Джавы как язык практический для бизнеса и тырпрайза.
>>767583 Ну синтаксис, вроде, совсем не решающий аргумент, конечно если это не пиздоглазие как у Раста.
В скале пугает, когда ебанутые, которым фирма не разрешила писать на хаскеле, тащат скалаз и творят свои мутные дела. Т.е. им вроде дали неплохой язык, но они умудряются подгадить, не используя идиоматичные решения, и не подавляя маня-позывы.
>>767588 >Ну синтаксис, вроде, совсем не решающий аргумент Ну, в смысле, не синтаксис, а конкретно эта конструкция def huita(s: ⇒ String) huita { ... }
>>767588 >Ну синтаксис, вроде, совсем не решающий аргумент, конечно если это не пиздоглазие как у Раста. 1) Удобство любого синтаксиса – дело привычки, я так же плевался с раста первые пол года знакомства с ним; 2) У скалы он куда "бохаче", в плохом смысле.
>>767593 Потому что компилятор скалы написан на скале)) ну вы понели)))
>>767596 >компилятор скалы написан на скале)) ну вы понели))) Ты не поверишь, но компилятор хачкеля написан на хачкеле, а компилятор C на C (хотя давно уже на крестах :(), но ни один из них не тупит над факториалом столько времени.
>>767606 Олсо, когда запускал репл, уже начал думать, что это какой-то баг в жвм или еще где, так как запускался он минуты две, минимум (потом я пошел курить, вернулся и о, чудо!). Последующие запуски, даже на прогретой жвм, были нихуя не быстрее.
>>767503 Возьми да почитай вводные на оффсайтах котлина и скалы, там даже макака поймет что к чему, аноны щас тебе как обычно тонны предвзятой хуиты понастрочат(хуле, от явы навык хорошо развит).
>>767524 Сразу видно маняхейтера. Котлин это просто улучшеная жава, добавляет кучу синтаксического сахара, который на ява ждут уже 20 лет и который реально помогает, спасая от простынок текста.
>>767503 > чем Скала лучше Котлина как академический язык Думаю, тебе парни из JB с вертушки бы пояснили, что Котлин - не академический язык.
> и лучше Джавы как язык практический для бизнеса и тырпрайза. Тем, что делает код короче и читабельнее и реализует разнообразные бест практисес непосредственно в языке.
>>767863 Скала такая охуенная, что я не могу на ней писать. Только заглядываю в документацию, как обканчиваю монитор, иду курить, а затем без сил падаю спать.
>>767914 Этот форс такой охуенный, что я не могу его не форсить. Только заглядываю в сосач, как обканчиваю монитор, иду форсить форс, а затем без сил падаю спать.
Нахуй ее вообще сделали? ФП блджад. Все равно никто за пределами бложеков на Скале в функциональном стиле не пишет. Потому, что если взяться за ФП всерьез, то код сразу начнет обрастать такими ебанутостями, что ударившийся во все тяжкие функциональщины скалолаз очень сильно об этом пожалеет. В общем-то нет языка, который может "запарить" мозг сильнее, чем скала. Скала имеет мозговыносящую систему типов, не имеющую аналогов в том смысле, что нет другого языка, в котором ООП было бы адекватно статически типизировано. Это крайне сложная и амбициозная задача, буквально все остальные создатели ООЯ на каком-то этапе плюнули и решили "Статическая типизация — это сложно, ну его нахуй, лучше будем динамически кастить". Правда, весь этот околодинамический цирк с конями в скале остался "для совместимости" (и дополнительного выноса мозга). За что боролись?
>>768437 Я вообще удивляюсь, как подобным предыдущему анону позволено иметь своё мнение и голосовать в частности. Давно пора ввести интеллектуальный ценз на мыслеизъявление. IQ меньше 100? - вон из интернетов! В крайнем случае - анально огородить какой-то аналог двача где оним бы могли морозить на тему >взяться за ФП всерьез
>>768442 Котлину может повезти на Андроиде, если Гугл сжалится и подмахнет. И если товарищи прекратят велосипедить с anko (там есть хорошие вещи, но многие пытаются заменить лишь одним красивым кодом то, что сейчас имеет отличную инструментальную поддержку).
Добавлю еще что типов с IQ больше 140 и проявляющих подозрительную творческую активность надо тоже в резервацию, там бы где они под чутким руководством адекватов могут двигать прогресс.
Пример того, что подобные субчики могут сделать в открытом поле (если не присматривать за ними):
>>768447 > anko (там есть хорошие вещи, но многие пытаются заменить лишь одним красивым кодом то, что сейчас имеет отличную инструментальную поддержку) Можно пример таких вещей, имеющих отличную инструментальную поддержку?
ребят, кто в scala умеет, поясните пожалуйста, почему так происходит что запускают прогу в идее - норм выполняется всё. запускают с командной строки - вылетает туча ошибок ( на самом деле две: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver и java.lang.NullPointerException)
Обмазываюсь сейчас курсом progfun на курсере, он конечно пиздец нереально скучный. Остальные курсы с этой специальности тоже подобные или там повеселее уже будет?
поясните, скалабоги, почему в вакансиях на скала требуя год-два опыта на этом языке сверху, как правило, требуют вдвое больше опыта на джаве? Вакансия то Скала-дев
>>798343 Try (именно который с большой буквы), который контейнер Можно Either, но это когда ты в месте ошибки знаешь что куда класть (Left И Right) Я тащу Try и уже там где это по смыслу подходит его разворачиваю.
>>805333 Это тот язык, в котором из-за религиозных соображений/фундаментальных законов запретительного характера разрабы не могут REPL запилить? См. (переопределение функций/типов здесь https://github.com/JuliaLang/julia/issues/6786 и далее по переоткрываемым задачам).
>>805588 >У скалы вон с релизами проблемы Что это означает? Ты имеешь в виду что 2.12 еще не вышла? Ну так я тебе сообщу что например спарк до 2.0 по дефолту билдится под 2.10(!), после будет под 2.11. А когда он появится в дистрибутивах клаудеры, не говоря уже о хортонворкс, вообще не известно. Может осенью, а может и в следующем году. >>805640 >Что конпелятор скалы некорректен, если точнее Что это означает? Что значит корректный компилятор? >>805323 Обычно нет, если либа не написана специально для интероперабельности с джавой. Очень легко проебать и использовать такую фичу скалы которую очень трудно выразить в джаве.
>>805763 Маня, все основные биг-дата тулы написаны на джяве и естественно она хорошо с ними интегрируется. То что скала это ололо бигдата-язык - это просто следствие того, что она работает на той же платформе, на которой джява-мужи уже всё написали.
>>805763 Смотря какие задачи решать. У нас обычно модель пилят на питоне, а для прода все процессы перепиливают на джаву. Но мы hdp используем, на православном спарке наверняка удобнее и быстрее использовать скалу с её радующими глаз конструкциями, похожими сами знаете на что (_+_)
>>805758 Ну кукарекали же что у скалы слишком тормозной и сложный конпелятор, вот Мартин и решил переделать. А он написал так, будто переделывают с нуля весь язык.
>>806194 Там немалая часть - Java-код и апишки на оба языка (+ пихтон и R), плюс он юзает хадуповские либы. Hadoop - на джаве, Storm - на джаве, Druid -на джаве, Samza - опять же, значительная часть - джава код. То что на Scala типа ололо бигдата - просто результат использования уже написанного джява-кода. Твой вскукарек ничего не отменяет.
>>807283 И что? Использование готового - это хорошо, не зачем плодить велосипеды. С другой стороны скала позволяет значительно эффективнее использовать уже написанный код, элегантнее, проще, эффективнее и с большими возможностями.
>>807323 Так-то оно так. Я это всё к тому, что Scala - не какой-то ёба-язык монополист биг-даты, а один из языков, на котором ей можно заниматься. Вообще все адекватные бигдата тулы рано или поздно заведут SDK под десяток языков и писать можно будет хоть на питоне, хоть на джаваскрипте. Потому что в бигдате важнее сами тулсеты, чем прослойка.
>плюс он юзает хадуповские либы Для совместимости с хадуповскими легаси-говнами джявамартых, ну да
>То что на Scala типа ололо бигдата - просто результат использования уже написанного джява-кода Нет, мартышка, результат превосходства скалы над говноджявой. Иначе бы все жрали хадуп.
>>808998 >что понятия Ты по ссылке вообще переходил? Там конкретный issue. Я воспроизводил этот баг у себя с помощью их программы. В джяве оно падало даже 67 млн. элементов. Или это ты так за обсер своих jvm анальных господ копротивляешься?
>>808998 >чёткие пацаны с прувером формально доказали некорректность тимсорта, которым, кстати, все так гордились >пок-пок всем похуй, не то что я такой-то бигдата отчёт для тёти Груни вчера выгрузил лел
>>809026 Да, по сравнению с достижениями мартышек из твоей веб-студии это конечно очень слабо. Ты вообще как, за компьютер сайнсом следишь, алгоритмы там, вычисления, верификации, системы типов. Или так, только отчётики выгружаешь и спарк программируешь?
>>809018 >с помощью их программы В этом и суть. Сколько лет оно работало, но тут оказывается, что на одном наборе данных оно может упасть. То есть, фиксить надо, фикс хороший, но не настолько. Но, поскольку у функци-анальщиков других достижений нет, вот они и бегают размахивая руками. А вот если бы они вместо написания статеек о том, как в функци-анальщине всё хорошо, и как императивному программированию скоро-скоро придёт самый настоящий вендекапец, занимались чем-то полезным, то всем было бы намного лучше.
поясните, пожалуйста можно ли как либо с одного метода достать переменную которую этот метод не возвращает? вот пример кода http://pastebin.com/EagWLMSW
Поясните, пожалуйста. можно достать переменную с метода который эту переменную не возвращает? Вот пример кода надо достать строку с метода, и использовать её в другом методе http://pastebin.com/EagWLMSW
>>811273 А для того, чтобы хэловорлд на скале компилировалась по 5 минут буквально?
Кстати, в идее стала доступна опция создания проект на Dotty, идея сама тащить последний снапшот. И оно предсказуемо работает раза в 3 медленнее текущего компилятора.
>>811328 >А для того, чтобы хэловорлд на скале компилировалась по 5 минут буквально? Что, получается Бреслав правду что-ли говорил :) ? Я только на java/kotlin/C# разрабатываю на clojure еще через плагин хеловорды :3 писал.
>>813533 Без блокировки не получится, а с ней теряется весь смысл асинхронности. Правильно будет так: future.map(string => frame.put(string)) или future map frame.put. Результат - Future[Frame].
>>817290 Такой вид паралельности с общими данными там реализован разве что в виде пары конкурентных коллекций, так что да – в этой области от сосёт (отличается?) у юли.
Тоже кстати жду ответа от петуха выше – что в скале такого академичного?
>>817096 Какие 10 страниц? С какими фильтрами? Такое впечателние что тебе нужны не проект найти, а попиздеть про их отсутствие. А вообще опенсорс работает по другому: 1) У тебя есть проблема 2) Есть опенсорс либа котороая решает твою проблему, но не до конца 3) Ты допиливаешь либу и делаешь пулл реквест 4) ??????? 5) PROFIT
скаланы че спрашивают на собседованиях на скальные вакансии? ну и вообще по функциональщине отличаются ли чем-то задачки (сортировки лол) на собеседах у функционалистов от быдло-имперетивщиков?
>>817990 На собеседованиях вообще врядли будут спрашивать про функциональщине если в вакансии прямо не написано про шизу вроде шэйплесов – в проде её избегают во имя поддерживаемости.
На большинстве скала вакансий что я видел требуют знания ява стека + пары инструментов и фреймворков из мира скалы.
>>817997 >функциональщине >шэйплес Как вы заебали пиздеть о том в чем не разбираетесь, уёбища. >>817990 Предметная область имеет значение. Мы например вообще по кодированию задачек не давали, в основном вопросы то бекенду - базы, конкарренси, CAP теорема etc. Ну и общие вопросы по програмированию вроде "что НЕ нравится в скале?" и про простые структуры данных. Обычно если человек отвечает на такие вопросы, непосредственно с кодированием он справится. Я бы еще давал задачу "напиши мне функцию reverse(List[T]) в функциональном стиле": могут разные интересные вопросы возникнуть. На первой работе связанной со скалой собеседование строилось на отличиях скалы от джавы, какие у неё преимущества и недостатки, как там с функциональными фичами/ОО паттернами.
>>818365 Первый собес отсеивает процентов 80-90 кандидатов. reverse не давали писать потому что нормальные джависты нам тоже подходили. Btw, развернуть связный список in-place (с мутабельныйми нодами) намного сложнее чем просто записать элементы одного списка в другой в обратном порядке (что я и имел в виде под функциональныйм разворотом списка).
Аноны, подскажите ньюфагу в jvm. В джава треде проигнорили. Решил запилить хелловорлд для себя и еще пары человек. Простенький бекенд с легкими БД операциями без всяких каскад апдейт на 1000-2000 запросов в день много будет в памяти отжирать? И вообще, можно где-нибудь поглядеть тесты на реальных приложениях потребления памяти по нагрузке? Просто под рукой простенький сервак на 2gb с одним ядром, на том же go его хватает за глаза, хочу попробовать на scala это дело переписать, так как функционала не хватает немного, а динамически типизированные языки я не воспринимаю на сервере.
>>818572 Ничего серьёзного, 6 моделей и небольшой xml-rpc интерфейс на коленке с вебмордой чтобы искать по истории в irc каналах зарегистрированного юзера, писалось тоже for fun. >>818575 >VisualVM Не знал о таком, спасибо, помониторю.
>>807283 Так-так, товарищи, тут кто-то пиздит. Storm - говно, и написан он на Clojure, Samza - его мертворожденная копия с минимумом изменений. А на Scala есть божественный Spark, который рвет всех и Storm с Samza (Spark Streaming), и Hadoop.
>>819072 >и Hadoop Ты дебил? Спарк и Хадуп разные задачи решают. >Spark, который рвет всех и Storm Лол, даунёнок не понимает разницу между stream-processing и micro-batching.
Судя по тому, что для тебя вся бигдата сводится к Спарку - ты просто восторженный школьник с дивана.
>>820336 >Переебал тебе свёрткой с вертухи прямо в щи Это да. Я вообще какую-то хуйню в этом комменте написал, о чем-то другом думал наверное. >Кстати, напомни какую лучше использовать, правую или левую? Какую нужно, лол. Если оперция ассоциативна, то лучше не выёбываться и использовать левую, правая может быть не хвосторекурсивна stackoverflow привести на некоторых структурах данных (на списках все будет ок). Кстати, кто-то сталкивался с не хвосторекурсивной левой сверткой? Ну например какой-нибудь бесконечный список [.. 0]?
>>821120 Алсо, пишут, что там синтаксис такой: > libraryDependencies += groupID % artifactID % version % configuration Че за группы? Че за артифакты? Че вообще гуглить надо?
Ауе, братульцы! Поделитесь соображениями, что с рынком вакансий по скале в мск? смотрю, последние года три, одни и те же конторы ищут людей, и хуй кого набирают, мне тоже дохуя где отболтили, где-то сам по фишке сливал собесы, т.к. обстановка ч т писос какая не прикольная. везде одна ситуация: дико задроченные чуваки собеседуют для самоутверждения, но не набирают, а некоторых слишком круто осаживаю, и жалею, они не виноваты, но блять не умеют в нормальные коммуникации. смотрю так же на джин например, 8 из 10 - релокация из ДС. т е работы тут как бы и нет для скалиста адекватного, не адепта-евангелиста, а когда ты и в код умеешь и знаешь как дела делаются. хз, Минск гораздо более праздничный, конторы крутые, бодрые не ссученные. Как вы думаете, что тут за хуйня со скала-разработкой происходит?
>>821592 >Минск гораздо более праздничный Чем Москва? Не поверю. Бывал в Минске, по сравнению с Киевом унылое место. Да-да, майдан, генотьба, скачут, всем весело.
>>822052 Да, головы нет. Точнее её невозможно получить, как и развернуть бусконечный список. Зато есть хвост и последний элемент. Ну не важно, вопрос не про это был.
>>822239 >Есть хвост Ты понимаешь, что концептуально, то что ты описал -- это всё тот же обычный бесконечный список в котором tail ты назвал head, a head - tail?
Сейчас заканчиваю cs50 и хочу выбрать дальнейшее развитие, интересуют более или менее современные и активно развивающиеся технологии с применением в вебе и больших данных, поэтому выбор пал на скалу. Все правильно?
>>822785 Сам язык java тебе мало чем пригодится, скорее навредит. А вот экосистема тебе пригодится, ну и понимание что там и как в jvm твориться, и почему вся функциональщина в scala -- это не больше чем набор костылей сахарок. А веб и бигдату абсолютно нормально пилить и на java, python и на всем, чем тебе хочется. Тут скорее нужно понять, чего тебе хочется.
>>822985 Я то как раз перекатился из java в scala, потому что мне на jvm не хватало тех абстракций, которые предоставляет scala. А то, что функциональщина в scala -- это всего лишь сахарок, ты этого не замечаешь? Там же отовсюду торчит прибитые гвоздями к jvm куски. Ещё и система типов в scala оставляет желать лучшего. Но, для новоприбывших бойцов, может быть и не нужна jvm и вся эта возня с экосистемой java.
Спасибо за ответ, а как тогда учить, то-есть в книгах по скале рассказывается о > экосистема тебе пригодится, ну и понимание что там и как в jvm твориться
>>823193 >А нахуя оно надо? Чтоб рантайм бодрей исполнял, ясное дело. >тут дело не столько в самом компиляторе Что он не может в параллельность - тоже дело не в нём, да?
>>823234 >Синтаксический сахар Как же меня заебала эта идиома. Со всех сторон слышен этот кукарек. Ты совершенно не понимаешь сути синтаксического сахара. >Торчат прибитые к jvm куски Как это понимать? Куски чего? Чем прибитые? Постишь - как в лужу пердишь
>>823314 В любом учебнике по scalа будут описаны некоторые подводные камни jvm. Не стоит этим заморачиваться, пока не столкнешься.
>>823567 > Как же меня заебала эта идиома. Со всех сторон слышен этот кукарек. Ты совершенно не понимаешь сути синтаксического сахара Я то его понимаю. Любой более-менее читаемый функциональный код, можно переписать в императивном стиле, но что это даст? На scala, как и на groovy? очень удобно делать dsl, и после них, абсолютно не хочется делать некоторые вещи на java. Но я одного не понял, почему тебя так задевает то, что я назвал функциональщину в scala -- сахаром? >Как это понимать? Куски чего? Чем прибитые? Постишь - как в лужу пердишь Ок, скажи мне, как скала ушла от jmm? Или может scala научилась не затирать знания о генериках в рантайме? Или может scala привнесла что-то фундаментально новое в jvm?
Ты меня конечно прости, но мне кажется ты просто диванный специалист, который не пишет\писал код на scala за деньги.
>>823942 Некоторые твои тезисы верны, с некоторыми я не согласен. Но я совершенно не понимаю, что ты хочешь ими сказать, и главное зачем. > Любой более-менее читаемый функциональный код можно переписать в императивном стиле Любой более-менее читаемый код на тьюринг-полном языке можно переписать на другом тьюринг-полном языке. >я назвал функциональщину в scala -- сахаром Ты употребляешь термин "Синтаксический сахар" некорректно. Как это вижу я: если ты средствами языка можешь определить достаточно похожую конструкцию, то введение такой конструкции в язык - синтаксический сахар. Циклы в lisp - синтаксический сахар. В Java - насущная необходимость к синтаксическому сахару отношения не имеющая >Синтаксический сахар: >Это может быть любой элемент синтаксиса, который даёт программисту альтернативный способ записи уже имеющейся в языке синтаксической конструкции, и при этом является более удобным, или более кратким, или похожим на другой распространённый способ записи, или помогает писать программы в хорошем стиле. Dependency Types, например, в скала - синтаксический сахар над какой-то из синтаксических форм java? Тогда давай, показывай как это делаетсяв джаве.
>>823942 С твоим подходом можно любой язык назвать синтаксическим сахаром над машинными кодами. Это корректное, но совершенно бесполезное определение синтаксического сахара. >ты просто диванный специалист, который не пишет\писал код на scala за деньги. За такие "аргументы" в приличном обществе принято сразу нахуй послать. >>824358 Какие можно предоставить пруфы этого на анонимином форуме?
>>824572 Хуй знает, где мой договор, и вообще есть ли он, я как частный предприниматель оформлен. В любом случае, думаю что вероятность наличия в договоре слова Scala мала, там будет что-то вроде "разработка програмного обеспечения". Я могу ошибаться, конечно. Покажи свой договор как пример.
Хотел поинтересоваться как правильно писать файлы в ZipOutputStream. Я беру прямые ссылки на удаленные файлы и пишу их через BufferedInputStream в поток архива. Брат не умер, работает нормально, но иногда всё наёбывается причем на одном и том же месте и мне дропается поврежденный архив. Проверял неоднократно, все ссылки рабочие, если по отдельности писать, то норм, но бывает, что какие-то два соседние файлы не могут записаться и все дропается нахуй, уже заебало. Че мне делать, как быть? В большинстве случаев работает нормально, но на большом множестве файлов может случится такая хуета.
Вернулся в скалу спустя год, тайпсейф переименован, хайпа больше нет. >>823234 Ты не понимаешь, что такое функциональное программирование. Скала функциональный язык, в ней реализованы некоторые функциональные структуры, которые используются на постоянной основе вроде монадических типов - Future, Optional, Try и тд, дефолтная иммутабельность, объекты первого класса - ты можно обращаться ко всему как кобъектам, дёргать-туда-сюда, передавать аргументом в функции, функторы, паттерн матчинг, уебищная библиотека коллекций, которые вообщем-то поддерживают все функции высшего порядка. В скале нет ленивости и есть только локальная типизация, нет ADT и зависимых типов, но и первое и второе можно реализовать, то есть это несовсем из коробки, но оно есть. Синтаксический сахар - это всякие дешевые приколы с инфиксной формой записи, щас посмотрел что это в интернете, какой-то ебанат указал на case class, в хаскеле такие классы по дефолту, и реализуются они почти так же внутри, я только зашел, а меня уже заебали этим тупым пиздежом не о чем, какие-то ебанаты просто обдрачивают слова и смакуют. Идите нахуй.
топик утопает в дерьме... идите на хуй, те, кто не понял или дохуя умный, вас сюда никто не звал.
На, сука! Лови свою функциональщину на С++..
struct sequence_tag {}; struct pointer_tag {}; template< class X >
X category( ... ); template< class S > auto category( const S& s ) -> decltype( std::begin(s), sequence_tag() ); template< class Ptr > auto category( const Ptr& p ) -> decltype( *p, p==nullptr, pointer_tag() );
std::unique_ptr<int> p( new int(5) ); auto f = []( int x ) { return -x; }; std::unique_ptr<int> q = fmap( f, p );
-- реальная дич
наблюдаю только школоту неодупляющую, либо дохуя умных которые могут тут С++ и Скалу на раз оценить, и сказать что и там и там что-то есть, оба языка одинаковы, идите на хуй все.. так вот, я вас жду таких дохуя умных на собес, и готовьтесь получше, особенно если решите проводить сквозные аналогии в ФП между языками.. буду жестко наказывать вас анально, при джунах, что бы пример был перед глазами, что бы 100 подумали прежде чем говорить.
мужики не из дс сколько у вас зп? с дс-блядками примерно понятно тк есть пара вакансий в общем доступе с цифрами, а я как провинциал не знаю какой ценник ломить
>>841870 По поводу >>841902 - обрати внимание, там в принципе могут обрабатываться файлы гигабайтных размеров, и никакой подчеркиваю: никакой ебли с аккумуляторами.
Насчет этого, кстати, скала не хаскелл и не sml, в самой идеологии языка закладывается что in small, на уровне тела функций /их отдельных мест допустимы императивные циклы и var. Так что не еби мозги хвостовой рекурсией.
>>841870 Твой код это пиздец. Ты понимаешь при каждом remainingBytes.tail и accumElems :+ (...) у тебя создаётся новый массив? И чем дальше, тем больше эти массивы становятся и тем больше элементов приходится копировать. Наивное функциональное решение, вообще без заморочек с производительностью, может быть таким: seq.groupBy(identity).mapValues(_.size). Я нормальный бенчмарк не проводил, но на моей машине обработка 100000 элеметнов занимает <100ms в худшем случае (все элементы разные) и 1-2 секунды для 1000000 разных элементов. Ты че считаешь байты, а не инты, значит максимум разных элементов у тебя может быть 256. На таких данных наивный алгоритм обрабатывает 100000 элементов з 9ms, а 1000000 - <100ms. То есть твои пикчи по несколько метров возможно сможет осилить. Проверить это просто - нужно написть одну (1) строчку кода, а не 20 с tailrec и условиями. Если данных больше - нужны стримы кончено. Завтра, если не лень будет, сделаю на scalaz-streams и сравню с джавовыми стримами. Если еще больше - welcome to Spark. >>841915 >Так что не еби мозги хвостовой рекурсией Только если работаешь с мутабельными данными и без них не выходит выразить алгоритм или добиться приемлимой производительности.
>>841935 >Свёрткой >Простыня текста >Ни одного упоминания fold в любой форме. Зачем проникающие в этот тред кукаретики назрюкивают свой кукарек совершенно не понимая того, о чем нахрюкивают?
Помню помню какая-то обезьяна воняла, то ли здесь, то ли борщеподобном треде, что-то про поддержку SIMD в жабе. Вот из новостей >Из других направлений я бы отметил API для пакетной обработки данных (Vector API). В современных процессорах есть векторные расширения (SSE и AVX на x86, NEON на ARM), содержащие инструкции для пакетной обработки данных (SIMD инструкции). На текущий момент JVM умеет делать автоматическую векторизацию кода при динамической компиляции, но это не покрывает всех интересных случаев. Идет работа над специализированным API, дающим возможность явно описывать операции пакетной обработки над данными.
>>842232 Там была вонь про автоматическое распаралеливание кода, а вместо одной (из нескольки) ссылок с пруфом тот C++-питух скинул линк на доку про векторизацию в LLVM, после чего его выгнали нахуй из треда с визгами "КОКОКО ЖВМ ВСЁ УМЕЕТ".
Читал вот про Free монады и возник такой вопрос к тем, кто пишет на скале в продакшене: их кто-нибудь в реальной жизни использует и если да, то в каких случаях?
Реально ли найти в дс вакансии на джуна по скале, просто везде, где фигурирует скала, требуют еще и знания чуть ли не всего джава стека, учить сначала джаву и потом постепенно перекатываться на скалу или сразу учить скалу и потом доучить нужные технологии из джавы? Джаву знаю на уровне книги head first java
>>844633 Джуна вряд ли. Обычно средняя скала вакансия подразумевает, что опыт у тебя хоть какой-то есть, если не скале, то хотя бы на яве или другом языке. Ну и знание самой явы, jvm и стандартной библиотеки явы необходимы, потому что они точно понадобятся. Знание сервлетов и jdbc, скорее всего тоже понадобятся. Но вот насчет необходимости всяких древних JavaEE технологий я бы не был так уверен.
Мне, например, предлагали скала вакансии, хотя у меня основной опыт в сфере .net технологий. И собеседования на эти вакансии я проходил, несмотря на то, что особо глубоко в экосистему явы я никогда не погружался, хотя саму яву и jvm я знаю более-менее хорошо.
Вакансии в ДС - та еще засада. Угораздило меня со студенческой скамьи нырнуть в Скалу всей головой, устроившись в одну фирму джуниором. Теперь как "свежий мозг" возглавляю рефакторинг, ебашу проект на ScalaZ, но при этом кушаю много-много кактусов, связанных зачастую с требованиями к окружению (Websphere + JVM 1.6 и ниипет). Пытался искать новую работу, ибо уже тошнит от одиночества, похуизма и чуть выше чем студенческой зарплаты, но АХ и УВЫ - нихуя. 99% HR-бабищ, которые доебывали меня по телефону, пытались мне впихивать какие-то джава-вакансии (зачастую на тему BigData). Хотя я четко всем говорил, что джава-опыта у меня нет, один хуй пытались пихнуть. Соснул крупных хуев на нескольких собеседованиях, где задавались в основном джава-вопросы. Лишь пару фирм было более-менее, но они нашли кандидата получше - немудрено, я сижу и сохну мозгами в своей конторке. Уже ничерта там не осталось из основ, все сплошная практика и готовность варить свои велосипеды.
Короче, анон, я уже почти год в профессиональной депрессии и совершенно не понимаю, что мне делать. Есть ли вообще жизнь на Скале? Куда идти дальше?
>>845519 Хуёво как-то искал, тот же тинькфф безостановочно хантит. Ну ещё как вариант – поговорить с начальством на счёт зарплаты прежде чем искать новую работу.
Кстати, уже вышла 2.12 RC1, из фич – java 8, новый оптимизатор, по синтаксису только SAM-типы.
>>845530 Может быть и хуево. Я искал пассивно: кинул резюмеху на хх и ждал звонков. Просмотров была тьма тьмущая, звонков не сильно меньше. Но все по джава-хуите какой-то, да и к тому же названивали агентства. Про Тинькофф знаю, собеседовался у них. Вроде бы интересный вариант с одной стороны, с другой стороны мне немного не понравилась их атмосфера, которая довольно типичная для банка. Там все постоянно с горящей жопой и на иголках. Все вот эти АГИЛЕ, "каждую неделю релиз no matter what", спринты и прочее говно. Я туда пришел и сразу понял, что эти чуваки ищут упоротых энтузиастов, которые готовы сидеть с 10 до 19, выжимая из каждой клетки своего тела всю возможную энергию, которые готовы работать даже просто за идею. А меня в конторе разбаловали свободным графиком, похуизмом и всем таким вот. За последний год едва вспомню, когда я досидел 8-часовой рабочий день до конца. Сделал несколько фич, чувствую что заебался/устал, или пробки начнутся вот-вот - съебываю домой. Никогда не ездил в час пик. Короч, они мне тестовые задания дали, а я через пару дней в отпуск уходил. Конечно же, я положил хуй и сообщил им об этом. До сих пор в раздумьях, впрочем. Чтобы туда нормально устроиться, мне придется хорошенько напрячь очко и вботать многое, что я когда-то знал и использовал, но порядком подзабыл. А то последние полгода я только и делаю, что веду БОЙ, а не спокойную разработку, со Spray-ем. Короче, это реал проф депрессия с сопутствующей апатией. Всю жду, когда меня шарахнет молния, и я начну пилить какой-нибудь сайд-проект, который вскрутит мне голову и заставит многое выучить/вспомнить.
>>845371 Куда перекатываться? Зачем перекатываться? Ты думаешь использование скалы тебя волшебным образом избавит от необходимости думать? Потому что если думать, прежде чем говнокодить, то и жаба прокатит.
Здарова скаланы, вкатываюсь в скалу по фану, очень интересно, но на Java никогда не писал, да в общем-то не собираюсь. И всю эко-систему JVM только изучаю.
А вопрос у меня один: Есть какой-то Yoba-веб-фреймворк для скалы чтобы прям вообще макет бэк-энда за день собрать можно было и масштабировать до бесконечности? Ну типа рельсы и прочая ересь скриптопараши но только под скалу.
>>851779 >макет бэк-энда за день собрать можно было и масштабировать до бесконечности Пишешь стейтлесс апи и масштабируешь по горизонтали. Можешь спрей попробовать, если только апи будешь писать.
>>852638 >А такие есть? Гуглить разучился? >Что на такое обычно отвечают? Да разное, кто про отсутсвие общего стайл гайда, кто про убогий вывод типов, кому-то коллекции не нравятся, етц. У скалы полно недостатков и этот вопрос как раз хорошо показывает опыт работы с языком. >>852629 Ничем. Такая вот абстракция.
>>818151 Я бы вообще посоветовал F#, но тут уже дело вкуса — статика или динамика. Из реальных аргументов — кол-во библиотек и стабильность языка — на стороне скалы.
>>853356 Он наверное имеет в виду что за ситемой типов в скале есть DoT (Dependent Object Types) Calculus. Не понимаю почему это не плюс. Это позволяет формально рассуждать о системе типов и улучшать её в dotty например.
Решил вкатиться в Play! Когда редактирую views/index.scala.html например, соответствующий scala файл (target/scala-2.11/twirl/main/views/html/index.template.scala) не обновляется Использую Жидею со Скала плагином Приходится делать из командной строки activator clean; activator compile. Есть какие-нибудь советы?
>>805344 >>805359 Причем здесь "осилили" и "не осилили". Поддержка на уровне llvm. Проблема в том, что не каждая архитектура поддерживает. Они хотят, чтобы язык можно было портировать на как можно большее количество платформ. Вот и отказались.
Здесь кто-то использует Akka/AkkaHTTP? Я малость охуел в начале, потом прочитал доку (http://doc.akka.io/docs/akka/2.4/scala.html) акторам и потокам, даже что-то стал понимать и получать работающее, от чего совсем охуел.
>>871146 Я использую. У меня на акке написано простое REST-апи. Сам тоже ньюфаг, вкатился в скалу недавно после 6 лет джавы, местами нравится, местами нет.
>>871150 А у меня микросервис для сбора статистики, основная же часть на Django с REST-фреймворком, а гуй на ScalaJS/React. Так вот, перейти с динамики на скалу (как в моем случае) - это как с бейсика/1С на нормальный ЯП.
Опытные аккаёбы есть тут? Подходит ли акка для выполнения long running tasks? Гугл говорит, что актор должен отрабатывать как можно быстрее и придется что-то городить с пулами. Use case такой - пуляю таску на "кластер", она там выполняется от нескольких секунд до нескольких часов и возвращает результат. Что предложите?
>>871175 >актор должен отрабатывать как можно быстрее This, как и в любом асинхронном фреймворке, блокировать Event Loop надолго нельзя. >Подходит ли акка для выполнения long running tasks Пускай таск отдельным процессом или тредом, и организуй передачу сообщений, все будет ништяк.
>>871196 Т.е. в таком случае акка будет эдаким message broker? Если у меня producer может несколько единиц/десятков/сотен задач в секунду выдавать, то можно как-то его заблочить?
>>871198 > а вся статика в СПА В рот ебал ваши СПА. Вместо того чтобы отдать простую страничку текста - сперва скачай 10 мегов каких-то ебнутых скриптов, затем подожди еще полчаса, пока неторопливый мобильный браузер со скрипом провернет в себе шестерни джаваскриптовой хипстопараши. При этом смартфон держать надо в варежках для сварщиков, иначе можно ожог руки получить, ибо кочегарит во всю мощь, переваривая все эти флюксы-редуксы-хуюксы.
И ради чего это все? Почему нельзя просто страничку сгенерированную отдать? Тьфу блядь.
А потом еще ебутся с тем что гугл видите ли их сайт не индексирует как следует, так как его робот не хочет / не может как следует обработать ваши скрипты.
>>881125 За такие вакансии (если бы это был не фотошоп) можно было бы устраивать бои хаскеллистов, ведь их много, а вакансия одна раз в год. Ну и чтобы они там пиздили друг друга клавиатурами и рвали глотки, последний оставшийся на ногах получал бы работу.
>>881253 Не хачкеллист ни разу, из экзотики знаком только поверхостно с окамлом. Ты их и не можешь иметь, тк не понимаешь даже о чём речь, после явы и паскаль хорош своими типами, лол.
Просто сходи посмотри как адт в скале там реализуются, гуарды пма в рантайме падают (лел), как банальный энум пишется, максимально оверинжинирнутые средства разграничения полиморфизма (хотя такое больше нигде и не выразить).
Короче, она очень мощная — но с очень странными прибомбасами и косяками.
>>881267 >адт в скале реализуются Нормально реализуются. Через трейт описывающий тип и несколько наследующих его case классов. Весьма похоже на хачкель, хоть и немного более многословно >enun Не то чтобы они нужны в скале, но чем плохо? http://www.scala-lang.org/api/current/scala/Enumeration.html
>>881298 >Нормально реализуются. Через трейт описывающий тип и несколько наследующих его case классов. /0 >Весьма похоже на хачкель /0 > хоть и немного более многословно >немного /0 >нинужна Ну да, ты какую нибудь фсм обычную без подобного средстав очень красиво напишешь. Не начинай песню жава и го индусов. >но чем плохо? Может то, что они: 1) Генерируются В РАНТАЙМЕ (как и еще добрая половина ТИПОБЕЗОБАСНОЙ системы типы скалы); 2) Нужно писать буквально в 6 раз больше как и с адт.
>>881682 >/0 Что сказать то этим хотел? >Нужно писать буквально в 6 раз больше Ты выражаешь частную концепцию в терминах более общей. В хаскелле атд -- встроеная часть синтаксиса. В скале -- нечто, что можно реализовать при помощи трейтов и классов. Это ты ещё имплементацию тайпкласов не видел, лол. Здесь то всё хотя бы очевидно, хоть и многословно.
Насколько плох/хорош c# с точки зрения функциональности и удобства использования по сравнению со скалой? Думаю, что учить после джавы. Пока считаю, что скала интереснее, но пугает количество вакансий.
>>881837 Если тебя это пугает — пиздуй учить спринги и прочее, что требуют при устройстве на работу, а не языки. >Насколько плох/хорош c# с точки зрения функциональности и удобства использования по сравнению со скалой? Функциональность/0. Удобство — относительно жавы 8/10, относительно скалы 2/10.
В любом случае, если ты только вкатываешься в программирование — скалу выше уровня "нескучной жавы" не осилишь.
>>881842 Не, так-то я уже работаю год джава девом, сейчас хочу сделать вклад в будущее, поэтому надо понять, можно ли ставить на скалу или по крайней мере, на ее идеологию и фишки, которые вроде как начинает перекатывать джава. Гетц во всяком случае наобещал уже угадывание типов, кейс классы и паттерн матчинг.
>>881846 >Гетц во всяком случае наобещал уже угадывание типов, кейс классы и паттерн матчинг. ..которых уже гарантированно не будет как минимум в девятке, ещё всего-то лет 6-8 подождать осталось. При том, что это даже не пятая часть её фич, лол. >сделать вклад в будущее Ты это так мусолишь, будто прям дохуя времени и сил инвестировать надо. Лишними новые концепции не будут в любом случае.
>>881267 >гуарды пма в рантайме падают (лел) Ты имеешь в виду тотальность или что? В хаскеле тоже можно писать не тотальные функции. >как банальный энум пишется Энум не имеет отношение к системе типов, это просто класс и стандартной библотеки. Лучше исользовать джавовый энумы или либу Enumeratum. У системы типов скалы есть реальные проблемы: http://io.livecode.ch/learn/namin/unsound Возможно они будут пофикшены с развитием DoT в dotty и scala 3. >>881837 Писал почти все работы в универе и полтора года на работе на шарпе, сейчас уже 4 года на скале, на джаве сам почти не писал. Могу сказать что вернуться к шарпу будет больно. Как и к джаве, даже к восьмой. Дело не только в языках, а в библиотеках, что собственно связано, потому что более мощный язык позволяет создавать более мощные библиотеки и с их помощью писать более читаемый и, если нужно, более абстрактный код. Хотя шарп удобнее джавы (как минимум был, с появлением восьмой джавы разрыв очень сократился), я бы не советовал переходить на него. Причина проста: на джаве чаще пишется серьёзный бэкенд. То есть у тебя есть больше возможностей работать в местах где ты узнаешь много про разные хранилища данных, конкарренси, асинхронные фреймворки etc. Я не говорю что на шарпе это не пишут, просто реже. Посмотри сам по вакансиям. Btw, http://www.itjobswatch.co.uk - интересный пример. Найди там данные по шарпу, джаве, скале и хаскелю и сделай выводы.
>>886110 <kzlm. Можно просто писать код и исполнять его, без всяких созданий говно SBT-проектов? Я, блядь, просто поиграться хочу, а не ентерпрайз приложение писать. Сука. Час потратишь, слушал несколько разных индусов чтобы только понять, как запускать код из Idea, так нихуя и не получилось, хотя под конец как мартышка действия повторял. Сука, бомбит.
>>886496 >Лол, ты действительно предлагаешь кодить без подсветки и автоподбора или траллишь? Во-первых, если тебе просто поиграться, то автоподбор тебе не слишком нужен, да и подсветка тоже, хотя она есть в любом нормальном текстовом редакторе. Во-вторых, в repl'e скалы 2.12 есть подсветка и автодополнение. В-третьих, судя по проблеме, у тебя хромают навыки обращения с ПК.
>>886504 >если поиграться Если хочу разобраться, но чисто из образовательных целей? Я читаю книжку по скале и кончаю радугой. Нужно просто понять, как это настроить, а дальше пойдёт проще.
>в repl'e скалы есть подсветка В любом случае там нужно построчно вводить. Это не удобно, если хочешь написать что-то на 200 строк кода, нпрм.
>>886534 В чём разница между worksheet/ scala script, чем они отличаются от файлов классов/объектов, как именно применяется SBT и что это вообще всё такое.
>>886545 SBT -- эдакий Maven для Scala проектов. Только вместо xml описания -- DSL на самой scala. >worksheet Продолжение идеи REPL. Каждое выражение вычисляется и отображается интерактивно. Фактически используется за тем же, за чем и REPL >Script Не знаю, не трогал >>886543 Через жопную боль. Особенно припекало от ИДЕИ, которая крашилась из-за недостатка оперативки. Как выяснилось, я забыл выделить swap.
>>886661 У нас Play+Java как раз. Говорят, кошерно только на Scala для него писать. Что сразу заметил: - другая парадигма, много всего осознавать, не самая пологая learning curve; - везде пишут "расслабьтесь, скалу учить не надо". Но sbt — это описание билда на гребаной скале. Если ты ее не знаешь, что файл сложно читать, я уже не говорю менять. Это в противовес няшному декларативному Maven с xml, где конфиг по аналогии поправит даже ребенок; - стек довольно редкий + завязка на Lightbend
>>887082 XML не надо "учить" он декларативный. Там домохозяйка расскажет, что происходит. И посмотри на .sbt в противовес со всеми этими :=, <<+, +<<, <<=, whatever. Я не говорю, что это нельзя освоить. Я говорю, что это лишний геморрой и дополнительное время.
>>886935 >У нас Play+Java как раз. Говорят, кошерно только на Scala для него писать Смотря какая версия фреймворка. Первая более заточена под джаву, вторая - под скалу. Я свои проекты делаю на джаве на 1.4.х и мне норм. Хотя поскольку начал сейчас скалу осваивать - думаю вкатиться во вторую версию и поглядеть что-как там.
>>887082 Безотносительно SBT, в функциональных языках все просто помешались на придумывании DSL на каждый чих. Самый цирк - это DSL для html или xml (такое мне попадалось). Блядь, вы ебнутые что ли? html и xml это УЖЕ DSL фактически, зачем придумывать еще один слой поверх них? В итоге приходится учить кучу ненужной хуиты.
>>887495 Для большинства проектов все что нужно - это уметь скачивать зависимости, компилировать проект и собирать всякие джары-вары-хуяры. В таком случае что грейдл, что мавен, что сбт однохуйственны.
Есть джва стула. Жаба и Скала. Стоит ли скала того чтобы в неё закатываться. Есть небольшой опыт работы с жавой, и возможность переехать на скалу. Есть успешные скала девелоперы 300к/нс, стоило ли оно того для вас, какие пруфиты по сравнению с жавой?
>>889736 Адово печет, даже учитывая что от хаскеля я узнал только какие-то самые основы.
>>889671 > и возможность переехать на скалу А что значит "переехать"? У тебя есть вакансия со скалой, на которую тебя готовы взять? Ну тогда чего бы не попробовать. На скале вакансий мало, но они есть. Язык интересный в целом, хоть и переусложненный.
>>889736 Печёт но не сильно. Я так и не понял например, как в хаскеле нормально работать с разными зависимостями, к примеру. Если есть несколько пакетов с процедурами имена которых совпадают, начинается веселье и пиздец с квалифицированными импортами и лапшой кода Куда сильнее печёт от каличного автоматического вывода типов. Ну оно то и понятно, скальная система типов несколько более "свободная"
>>890161 >сли есть несколько пакетов с процедурами имена которых совпадают, начинается веселье и пиздец с квалифицированными импортами и лапшой кода А в каком языке это не так?
>>889671 Пробовать стоит однозначно, ты ничего практически не теряешь. Ну может будешь хуже в спринге каком-то разбираться, но дрочить на фреймворки - быть дауном. Профиты: - язык на котором можно почти без боли писать и, что важнее, который можно без боли читать - обычно более компетентные команды - в среднем выше зп - пруф я давал выше >>882149
>>897112 То же что и для вкотывания в любой другой язык ничего. Скачали любую книжку и вкатились. >>892084 Ага, ахуенно, только вот рантайм 50мб на мобилках тебя опечалит. Если не хочешь измазываться монадами и заниматься прочими приседаниями на типах и прочем - то она тебе даст только более краткий синтаксис. Для такого лучше взять какой нибудь котлин. Вкатится поможет шапка.
Работаю чуть меньше года джава джуном. Попробовал скалу - понравилась.
На какие деньги можно рассчитывать в МСК при выборе скала-вакансии (будет ли эта цифра выше/ниже для джава вариантов)? Охотно ли берут людей с аналогичным опытом, или стоит еще прокачаться в джаве год-два?
На hh нашел, что скалисты нужны тинькоффу и яндексу. Есть ли отзывы по ним, а также другие известные работодатели на примете?
>>897159 Получить где-то опыт (опенсорс/фриланс пойдёт чтоб подзабить портфолио), подзубрить что там спрашивают на собеседованиях по скале и в уелом, подтянуть енгришь и пиздовать собеседоваться. Ещё есть вариант походить познакомится с людьми на конференциях/митапах — больше всего хайрят через знакомых. >>897146 Моя имхота — когда будешь уверенно тянуть на мидла (относительно своих более опытных комрадов измеряется такое), если среднеджун не стоит сильно рыпаться.
В среднем та же самая цифра, зависит от вилки конкретного региона и компании (зарплаты в целом-то только так и варьируются а не по языку).
Яндексы с тиньковыми — просто большие компании с большими штатами и, соответственно, текучкой. Так вакансий куча, но они мелькают и их трудно заметить если не мониторить (опять же, я выше уже писал — большая часть хайринга кадров производится через знакомых).
>>897165 Так я работу сменить хочу именно из-за того, что ощущаю, что уровень в плане технологий выше коллег и ловить в конторе уже нечего, либо меня просто не хотят прокачивать. Поэтому адекватную оценку дать себе сложно. Вопрос только в "джава или скала". Конечно, похожу по собеседованиям, посмотрю, где больше предложат и на условия труда. Но я с бОльшим удовольствием повозился бы в скале. Значит, в крупные конторы через формы обратной связи на сайтах не стоит подавать заявки, а лучше найти человека с интересуемой фирмы и черкануть на почту?
>>897178 Нет, просто чирканув на почту ты наврятли чего-то вообще добьёшься (вот сам представь — тебе пишет незнакомый хуй из интернетов тебе пишет на почту, просит протолкнуть под жопу эйчарке).
>>897208 Окай.. а можешь подсказать еще, в реальных скала-проектах код читабельный для среднего разработчика? Или часто используют спец. либы для хард функционального программирования, к примеру, scalaz?
>>897234 "Обычный скала проект" зависит только от команды которой пишется. Где-то как в мире плюсов используют очень ограниченное кол-во фич и даже травят линтеры на нарушителей, где-то и округлые котята на монадах.
>>897236 Кароч, смотря какая роль - пользователя всей этой магии (которая под капотом, наверное, всех популярных библиотек), либо кортим-разработчика. Если у каждого разработчика прикладного кода свой собственный dsl over scala, и метапрограммирование на shapeless, это как-то стремно.
Изучаю вот эту страницу: https://www.scala-exercises.org/cats/semigroup и нифига не понимаю, для чего нужен этот Semigroup, и по какому правилу он вычисляется (в гугле нифига). Подскажите?
>>902676 Для саморазвития. После появления в джаве лямбд, на гитхабе развелись проекты (к примеру, functionaljava), предоставляющие скаловский способ работы с данными. Там, в том числе, и эта структура есть. Видать, что-то важное, раз даже в джаву попытались мигрировать.
>>902644 >>902662 >>902664 >>902676 Ебаные дебилы что вы здесь делаете? Функциональщики, говно жрут, что такое полугруппа -- не знают. Ну охуеть вообще!
>>902747 >Моноид >Полугруппа с единицей >Снабжаешь ебаную полугруппу одним ебаным нейтральным элементом и получается блядский моноид Что ещё спизданешь, мудило?
>>902757 Давай лучше за NoSQL перетрем. Чому его так форсят? Я postgres всю жизнь использую (over slick как в склаебы заделался), а монгу ни одного повода изучить не было. Все ли так я делаю?
>>902769 Потому же, почему подворачивают штаны или отращивают бороду, лел. Использовать нереляционные БД там где можно использовать реляционные --- долбоебизм чистой воды
>>902788 Примерно так и думал. Вот у меня есть проект, где классически в БД лежат всякие сущности, и их отношения (а мордой джанга выступает). Но, вместе с тем, есть и сервис со сбором событий (и хитрой аналитикой в отчетах) на акке, где журнал весь такой из себя схеммалесс, но ссылающийся на вышеупомянутые сущности. Так вот, мне не впадлу написать миграцию, если журналирование требует каких-то изменений. Ну и понятно, что со временем, нагрузка таки может возрасти, и всю эту аналитику из отдельной схемы БД придется переносить в какое-то новомодное хранилище с шардингом, но бай дефолт монгу сувать туда я не стал.
>>902847 А же говорил, что пишу гуй на scalajs и асинхронщину на AkkaHTTP/Slick (иначе фигачил бы на торнадо), причем год только как подсел. Экосистемы не знаю, да. Зато вот от тебя, няша, узнал полезное.
Аноним02:39:14 Турдас, 29-й день Вечерней звезды#388№902880
Братья, я вам тут годноту про implicit-based паттерны принес, нубам — в обязательном порядке к прочтению.
>>902880 Имплиситы какое-то невероятное говнище. Экономится пара лишних символов (ну охуеть, теперь вместо того чтобы в каждый метод передавать контекст, или, что еще лучше, один раз передать его в конструктор объекта, мы заведем новую фичу языка), зато код делается некопируемым. Нельзя просто взять, скопировать кусок когда из документации или стековерфлоу и чтобы он заработал. Так как внезапно откуда-то нужно взять кучу имплиситов, которые могут еще и внезапно нетривиально создаваться. Короче наравне с перегрузкой операторов это квинтэссенция подхода "ты никогда не угадаешь что делает этот код просто глядя на него, пока сука не сходишь в IDE по всем методам, операторам и вообще всему окружению"
>>903335 В статье как раз описано, для чего это делается. Если так бугуртишь, и сравнивай на джавке строки через equals, там такого "говнища" не завезено. ровные посоны пишут в ide, посмотреть значения имплиситов - одна кнопка. расширяемость языка - бесценна
>>903337 >и сравнивай на джавке строки через equals А я так и делаю. Скала мне нравится многими вещами, но все-таки этот язык содержит очень много способов сделать код абсолютно непонятным и нечитаемым. И если перегрузка операторов - вещь в целом полезная (и холиварная) и способна повысить читаемость и понятность кода, то имплиситы - какая-то невнятная поебень, нужная только чтобы сэкономить пару символов. Впрочем учитывая что многие адепты скалы обожают абсолютно ложное утверждение что "короткий код = понятный код" то ничего удивительного.
>>903335 >нельзя просто взять, скопировать кусок когда из документации или стековерфлоу и чтобы он заработал. Пиздец какой-то. А так вообще можно? И внутренние импорты в проекте не помешают? >нужная только чтобы сэкономить пару символов. Пиздос. Даже обьяснять лень
>>903977 >И внутренние импорты в проекте не помешают? Импорты стандартных классов IDE сама проставит. А вот всякие нетривиальные имплиситы - хуйз.
>>903959 >>903977 Неглубоки, но пока что я не видел ни одного использования имплисит параметров (я именно про них, имплисит преобразования в целом я нахожу полезными) которое нельзя было бы сделать добавлением пары символов и явной передаче аргумента.
>>904149 Вот и прочитай про статью про тайпклассы, там, например, разобран JSON сериализатор, расширяемый через ваш любимый Open/Closed принцип. Что за порода, им принесешь информацию на блюдечке, а они вместо чтения начинают, нытье про ненужно.
>>904188 Поддерживаю твою сорону, но не поддерживаю твою аргументацию.
Немного джуночувств. Вот такое я оче не люблю: [CODE]def sosi(implicit name: String) = "Sosi " + name ......sovsem drugoy fayl.... implicit val n = "Scalahater" ............mnogo strok......... sosi [/CODE] Хотя такая вот нравиттся: [CODE]class Pidor(val name: String) object Pidor { implicit val pidor: Pidor = new Pidor("Scalahater") } ......sovsem drugoy fayl.... def sosi(implicit pidor: Pidor) = "Sosi " + pidor.name[/CODE]
>>767431 (OP) объясните пожалуйста, как исправить эту ошибку? я создаю в intellij idea проект maven, потом нажимаю на "create from archetype", и выбираю scala, и у меня даже не получается запустить этот шаблонный проект. Объясните, в чём дело пожалуйста.
Настало время глупых ошибок. У меня, вот, идея не запускает свежесозданный sbt проект по стандартному create шаблону (scala-плагин установлен и без sbt все работает збс). Ошибки: ClassNotFoundException Product0, либо Function0. Погуглив, понял, что идея не видит Scala (не совсем понимаю, что это значит, и как исправить). Кто-нибудь сталкивался с такой проблемой?
>>908951 С JS прыгнул на Scala, на Java до этого почти не кодил не считая пару сложных хеловордов. Ну в целом конечно только умные джависты идут на скалу, а тормоза остаются в жабе, факт.
>>908992 Нет, Scala язык не самый просто для новичка, да, ты можешь писать на нём как Java, только нахуй тебе тогда учить Scala, обычно скалу выбирают как раз из-за его богатых возможностей функциональной парадигмы, а это определенные правила и стиль программирования, которые во-первых накладывают ограничения при программировании (за переменную линейкой бы у меня на работе ебнули по рукам), ну и императивный стиль почему-то для большинства легче
>>908996 Ну просто я реально не понимаю. Вот задача. Есть теоретический (!) скала синьор с пятилетним опытом и джава синьор с таким же опытом, только-только изучивший скалу. Как каждого из них называть, если будут работать в одной команде над скала-проектом?
>>909000 Если проект на монадах и котятах — синьером будет только опытный скалист-фпшник. Иначе — похуй абсолютно, такая же жава, с чуть менее вербозным синтаксисом.
>>909909 Мне кажется что это какой-то хуевый scalatags. C scala.js все нормально. В меру популярный для сложных интерфейсов. >>909919 Иди на курсеру проходить proglang. Все поймешь.
>>912426 Если тебе просто хочется уметь во всякие эти списки-деревья-сортировки то читни какого-нибудь Кормена "Алгоритмы построение и анализ", это классика, это знать надо.
Вообще реализовывать тебе вряд ли что-то придется самому, если ты только не дохуя хайлоад будешь делать (что вряд ли в ближайшем будущем) или науку пилить. Хватит краткого перечня основных алгоритмов и структур данных и основ анализа сложности чтобы понимать хуле у тебя удаление из ArrayList так долго работает. Главное знать ключевые слова, по которым потом гуглятся детали
>>914189 Нужна диспечеризация по типу. Для одного типа аргумента один метод, для второго -- другой. Не через instanceOf же чекать? Что за хуйня и почему я с ней до сих пор не столкнулся?
>>914426 Паттернматчинг. Кстати, если диспетчеризация нужна по типу параметра дженерика (как у тебя List[Int], List[String]), наткнешься на жвмопроблемы, кури тайптеги
>>914496 Во-первых, кто "ты"? Нас здесь двое как минимум. Во-вторых, с чего ты взял что я не читал книг? Просто такая: case y: List[Int] => ??? конструкция как-то мимо меня прошла
>>914517 Я третий. Про книги не я писал, но как бы основное применение паттернматчинга в других языках, откуда он пришел, именно в том чтобы матчить типы и адт, а не для обычного свитча на стероидах. Так что пиздуй читать про моноидные функторы, йопт
>>914517 >с чего ты взял что я не читал книг? >не знать про матч по типу >не знать про тайп эрейже Хуй знает. Наверное, от то, что абсолютно не понимаешь, что делаешь.
>>914527 >В этом вашем хаскеле такой хуйни нету, например Ты очень хуйово смортишь, причем везде. зануда мод: скала от эмэлей синтаксиса написалась, не от хачкеля >в скале это не работает А тут ты не та то валишь.
>>914538 >>914540 Ладно, я соснул. Не понимаю, правда, как из этого абзаца можно сделать такие далеко идущие выводы. Может книжка хуёвая? Рассказывайте, что за годноту читали
>>914554 >Scala in Depth Не знаю, может и хуевая. Я изучал по "Scala для нетерпеливых", там последовательно разложены аспекты языка, и примерно указано, где какие подводные камни.
>>914550 >Ты очень хуйово смортишь, причем везде А где это в хаскиле паттерн-матчинг по типу? Или в окамле? Или в смл? Или в фешарпе? Я вот что-то не припоминаю. Ты же не имеешь в виду ручное теггирование через адт?
Анон, подскажи, как можно реализовать следующую хрень
Хочу написать функцию которая принимает два аргумента одного и того же класса, что-то вычисляет и возвращает результат, который является обьектом этого же класса
def compute(a: T, b: T): T = ...
Что бы она произвела вычисления у класса T должны быть методы +, -, , : Double
Знаю, что можно сделать интерфейс с этими методами и задать T <: Interface или через implicit обьект ComputeOps[T] с методами add(a: T, b: T) и тд, но этот метод мне не оч нравится, потому, что и так громоздкое выражение внутри функции превратится в совсем пиздец, если вместо a + b придется писать fooOps.add(a, b).
Мне нравится следующая идея: если я хочу использовать compute для некоторого класса Foo, то мне надо "довесить" необходимые методы используя implicit class не засоряя основное определение Foo, и внутри compute просто писать a + b * a.... и тд.
Можно ли так сделать, и если да, то как? Это вообще норм идея, или глупость?
>>917587 Про генераторы прожектов типа скалатра хуиты я знаю, но вот все эти Джава лайк подходы: директория/ещё директория/100 уровней вниз/Опача.scala меня не очень радуют. Я понимаю, что это вкусовщина всё, и можно делать как хочешь, но есть ли другой, альтернативный и популярный подход?
>>918056 Нету. И самое веселое, что тот же sbt из коробки поддерживает именно жява-стайл. Ну а чо ты хотел, она на жвм крутится, со всем вытекающим говном, вроде нпе, стирания типов и вот этого вот.
>>918056 >директория/ещё директория/100 уровней вниз/Опача.scala >директория/ещё директория src/(main|test|it)/(scala|java|resources) - это нормально, что тут еще можно придумать >100 уровней вниз А это уже на твоё усморение. Не хочешь под каждый пакет делать директорию - не делай. Другое дело что когда у тебя 100 пакетов, с соответствующей иерархией в файловой системе как-то удобнее. Ну и я не знаю как IDE дружат с неиерархичным представлением, в смысле рефакторинга например.
Cап, анон, нужна твоя помощь: есть модель - case class Model(... field: Option[Long] ...) нужно используя слик (3 версия, если это важно) взять из базы первый попавшийся экземпляр у которого field == None, обновить ему значение field и вернуть обновленный экземпляр
как-то так def findAndUpdate(value: Long): Future[Option[Model]] // value - значение которое надо установить в field, Option[Model] - потому что в базе может не оказаться сущностей с field = None
>>924960 Там не такие сильные изменения что прям все ПИЗДЕЦ ВСЕ ГОРИТ ПЕРЕПИСЫВАЙ ЧИСТИ ВИЛКОЙ. Если тебе не завтра на собеседование йоба-перформанс-инжинер — вообще не парься.
>>926176 Хули ты в Скалу лезешь, если даже такой простой вопрос нагуглить не можешь? Ты же с таким проглотом отсосешь, что позавидует даже самая опытная колумбийская шлюха.
>>929065 Во-первых, интеропабельностью с жявой. Во-вторых, в нормальных языках трейты не позволяют хранить вообще никакого реализационного кода, в скале все же уступили перед напором энтерпрайз-макакенов. В-третьих, несмотря на второй пунки, в трейтах все полностью иммутабельно. Отличие в том, что в плюсах можно наследовать любую залупу от любого спидозного хуя и это никак нормально не разграничивается в отличие от скалы (ну это про систему типов в целом в общем-то).
>>929065 Тем что абстрактный класс совместим с джявой, имеет конструктор, и можно наследоваться только от одного абс-го класса.
>>929715 >Во-вторых, в нормальных языках трейты не позволяют хранить вообще никакого реализационного кода Как раз в этом их фишка по сравнению с интерфейсами (в джяве потому и спиздили её).
>В-третьих, несмотря на второй пунки, в трейтах все полностью иммутабельно. trait Govno { var mocha = "" mocha = "blevota" }
>>930170 Да нет, это в скале они просто реализованы в угоду хуяк-хуяк, а не хачкелю. Про трейты, очевидно, имелось в виду что нельзя менять их если унаследоваться от них.
Посоны, обчитался двача и решил выучить скалу. Пишу вообщем простую программу:
import scala.language.higherKinds trait Proxiable { def source: String } trait Proxy[+T <: Proxiable] { def source: String } case class Data(source: String) extends Proxiable case class Stuff[+P[PP <: Proxiable] <: Proxy[PP]](content: P[Data])
Компилятор выдаёт
sandbox/test.scala:9: error: kinds of the type arguments (Proxy[PP]) do not conform to the expected kinds of the type parameters (type P) in class Stuff. Proxy[PP]'s type parameters do not match type P's expected parameters: trait Proxy has one type parameter, but type P has one case class Stuff[+P[PP <: Proxiable] <: Proxy[PP]](content: P[Data]) ^ one error found
>>897118 > Ага, ахуенно, только вот рантайм 50мб на мобилках тебя опечалит Без какого-нибудь proguard максимум 2-2.5 мб выйдет. А с ним и подавно меньше. Не стоит об этом вообще беспокоиться. Куда большая проблема — система сборки. SBT не подойдёт, поскольку плагин андроида завязан на Gradle очень сильно и сделать что-то сложное просто не получится (всякие сложные работы с манифестами и прочее, что могут использовать сторонние библиотеки). Есть всего один плагин для скалы под андроид, сделанный энтузиастом, но он на него забил походу, так что придётся заморочиться. И со временем плагин может устареть настолько, что с ним нельзя уже будет работать, если никто не возьмётся за его поддержку.
// If the c1 is declared before c2, it compiles fine // or if the implicit's result type is specified explicitly implicit def c2(s: Date)/ : TT[Date, TDate] / = c1.create(s)
implicit val c1 = new TTFactory[Date,TDate] { def create(v: Date): TT[Date,TDate] = sys.error("") def sample = new Date } }
Посаны, а какие есть ресурсы с новостями по скале? Типа как если бы я подписался на тэг scala на stackoverflow, только я хочу чтобы были статьи/новости вместо вопросов. Живу в коробке если че, всегда читал только книги по кампухтер саенсу и доки, а сейчас решил, что определился с выбором языка, и хочу следить за его жизнью.
>>827902 > жду таких дохуя умных на собес >буду жестко наказывать вас анально, при джунах вся суть этих ваших собесов унизить всех вокруг, чтобы возвысится
понабирают в команду самовлюбленных онанистов и вместо работы все нюхают собственный пердеж
Анон, нужна помощь. Такой вот кусок кода: http://pastebin.com/RTSL4kwG. При этом я пытаюсь добиться того, чтобы при вызове minByFeature не нужно было явно указывать параметры типа. Но у меня нихуя не получается
Существуют ли какие-то реальные примеры проектов на Spring + Scala? Хочу попробовать скалу, но отказываться от спринга для меня пока что слишком радикально.
>>958909 Я знаю, что есть такая функция если ты заметил, моя реализация немного пизданутая. Всё потому что я не собираюсь это использовать, я просто хочу понять чому нужно явное указание типа в моем примере и почему нельзя без него обойтись
>>959727 У нас на работе есть микро проект на спринге и скале. Но вообще использовать джавовую инфраструктуру со скалой не имеет смысла, так же как и использовать скалу как джаву++, только дополнительных проблем отгребешь. Либо преезжай полностью, либо не выёбывайся и пиши на джаве.
Скопировал хелловорлд из доки по akka-http http://doc.akka.io/docs/akka-http/current/scala/http/introduction.html#using-akka-http , через консоль билдится нормально, а в идее почему-то подчеркивает красным > complete(HttpEntity... > expected: ToResponseMarshallable, actual: HttpEntity.Strict Решил понять, как оно конвертируется в ToResponseMarshallable, и не смог. Думал там какие-то имплиситы подрублены, через которые конвертируется. Что я пытался сделать: 1) Запустил activator console, импортнул все, что в коде, прописал :implicits, написало > No implicits have been imported other than those in Predef. 2) В sbt прописал scalacOptions += "-Xlog-implicits", при конпеляции выдало > [info] .../hello-akka-http/src/main/scala/com/example/WebServer.scala:22: server.this.RoutingLog.fromActorContext is not a valid implicit value for akka.http.scaladsl.server.RoutingLog because: > [info] hasMatchingSymbol reported error: could not find implicit value for parameter ac: akka.actor.ActorContext > [info] val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)(materializer)
Как все-таки HttpEntity превращается в ToResponseMarshallable?
Выбираю между Скалой Питоном Го и Тут ещё на хаскель предложили посмотреть для многопоточной обработки геоданных: парсинг -> поиск координат и маршрутов.
В активе только php, delphi/pascal, ruby. Стоит скала того? А то куча статей о миграции на Го (а с го на хаскель)
>>978254 Причём здесь осилю-неосилю. Мне нужен эффективный инструмент, который поможет обрабатывать большие массивы данных. И не заебусь ли я потом (через год-два) разработчика искать для поддержки?
Лучшая книга по Скале: http://www.ozon.ru/context/detail/id/31921731/
Учебник по Скале на русском: http://twitter.github.io/scala_school/ru/index.html
Второй учебник по Скале на русском: http://twitter.github.io/effectivescala/index-ru.html
Курс по fp на Скале для слоупоков: https://www.coursera.org/course/progfun
Список годноты: https://github.com/lauris/awesome-scala
Скала за пределами JVM: https://github.com/scala-native/scala-native
Два недавних форка компилятора, один от тайплевела и второй от баттхертнутого:
https://github.com/typelevel/scala (https://github.com/typelevel/scala/wiki/Differences)
https://github.com/paulp/policy