>>1396499 (OP)МИНУСЫ- val, var- 100500 ключевых слов- Куча какой-то отсебятины - типа финал классы, нету статик, но есть аналогичные костыли, есть for, но он foreach, победили null, но накинули lateinit и т.д.- На конференциях кормят приятным джава-сахаром, на деле язык уже переусложнен всякой непонятной фигней привет шарпистам- Нету языковых конструкций для базовых структур, типа: списка [1, 2, 3] и мап {key: value} но дали какие-то костыли, mutableMapOf(1 to "x") лол- притянутая за уши проблема с NULL.- вызов кода из джавы, которого примерно 99%, не требует проверок на этот самый NULL просто эпик фейл- каскад из лямда кода, легко писать, но трудно сопровождать.- импорты звездой или тот факт что пакеты не обязательно соответствую категориям, или беззнаковые числа - те проблемы от которых убежали в прошлом - вернули снова.- де-факто привязка к IDE.- хайп вместо полезных инструментов или сытной стандартной библиотеки.- андроид эпидемия, большая часть контента, так или иначе о деве в телефонах.ПЛЮСЫ+ Сахар, если стало очень скучно именно так должна была выглядеть java 2.0, но не новый язык
>>1397147>де-факто привязка к IDE.А шо, в моём любимом vim'е нельзя?(Я вообще в тему не вникал, я бэкенд пишу.
>>1396499 (OP)Думаю, слово JVM должно говорить само за себя. Но из всех JVM-говн, Kotlin, пожалуй, наименее вонючее. В отличие от Scala, он не пытается быть полноценным функциональным языком, он содержит только что, что JVM позволяет полноценно реализовать. А писать на чистой Джаве в 2019, если ты в детстве менингитом не болел, пожалуй, не стоит.Из минусов - это, очевидно, не мейнстим. Скорее всего будет будет жить на андроидах, сомневаюсь, что энтерпрайз на него перейдёт.>>1397147>- каскад из лямда кода, легко писать, но трудно сопровождать.Когда я вижу подобную тупую хуйню, возникает зоопарк вопросов. А что проще сопровождать? Каскад из анонимных классов, которые являются прямыми аналогами лямбда-функций в Джаве? Почему их проще сопровождать? Потому что там требуется напедалить больше бойлерплейта? Но как это облегчает сопровождение, конструкции семантически эквивалентны. Что вообще подразумевается под сопровождением? Внесение изменений в код лямбды? Ну так в случае лямбд тупо меньше кода писать надо, как написание большего количества кода, который означает ровно то же самое, может облегчить сопровождение? Кто вообще измерял эту сложность и в чём?
>>1397287>А писать на чистой Джаве в 2019Таки ваши крутые IDE и делают это все удобнее, весь бойлерплейт в два клика раскрывается.Или ты из тех, кто руками в vim'е импорты прописывает?
>>1397287>А что проще сопровождать?ООП код конечно, который с каждым слоем кладёт абстракцию, позволяющие делать методы в 3-5 строк понятных вызовов.Или ты веришь, что вереница процедурного кода, но уже из лямбд - это наше будущее?Как только код становится больше чем пет-проект, эту лампшу уже не прочитаешь точнее надо читать всю, так как никакой абстракции.
>>1397287>сомневаюсь, что энтерпрайз на него перейдёт.То-то мало мальски нормальная контора сломя голову бежит от Скалы на Котлин, лол.
>>1396499 (OP)Нет, не новый мейнстрим язык, а "всего лишь" джава с человеческим лицом. Если ты уже не связан с JVM-энтерпрайзом или андроидом - проходи мимо./thread
>>1397383>бежит от СкалыИсторию успеха, сначала на скалу, потом со скалы на что-либо, можно вообще выносить как отдельный вид состязаний специальной олимпиады. О чем ты вообще?
>>1397444>а "всего лишь" джава с человеческим лицомЧто там у вашей джавы с лицом было? Или это просто очередное хайп-словечко?Есть ли уже какой-то флагманский проект у котлина, не в мобильной разработке?
>>1397766>Что там у вашей джавы с лицом было?Местные тралли такие забавные - сначала громко кукарекают о жабе как о древнем убогом коболе, потом в котлин-тредах спрашивают, что с джавой не так, и доёбываются до слишком легкого написания лямбд.
>>1397821Как-будто в /pr два человека сидят и оба джависты.Ну, а если серьезно, то 5 лет назад жаба писалась на ура в ваших IDE, думаю и сейчас так же все хорошо.Я так и не понял, что с лицом там у джавы.
>>1397931>жаба писалась на ура в ваших IDE, думаю и сейчас так же все хорошо.Если для тебя на ура, нет проблем, джаву не отбирают. А у тех, кому хочется чего-то послаще, более современного и продуктивного (но на том же стеке, что важно), с приходом котлина появилась интересная опция.>что с лицом там у джавы.Многие вещи получаются в разы более многословными, чем на более современных языках. И нет, речь не только о геттерах и подобном, с чем неплохо справляется IDE.
>>1397962>но на том же стекеНа том же стеке получается та же джава, не почувствовал я другого языка.Процедурщина в виде лямб меня вообще отталкивает. Я этой радости уже в js глотнул. Хорошо хоть, что некоторые решения в честный for код переводят.Помоги увидеть в котлине хоть какую-то серебряную пулю?!
>>1398042>Процедурщина в виде лямб меня вообще отталкивает.Что именно тебя в лямбдах не устраивает? Какой уж тот котлин, может ты тогда считаешь, что и джава 8 была не нужна? И что делать, если нужно список объектов отфильтровать по значению какого-то поля, потом результат сгруппировать по еще одному полю? С помощью ООП решать?
>>1398072>Что именно тебя в лямбдах не устраивает?То что цепочку из лямбд приходится читать полностью и вникать - всегда!, а вот увидев в коде input.readFromBuffer() - я уже примерно понимаю что там происходит не читая весь код (и решаю, пропустить или погружаться туда по стеку).
>>1398072>И что делать, если нужно список объектов отфильтровать по значению какого-то поляЧто тут фантастического? Циклы читаются удобнее, чем вереница магии. Но лямбдами действительно будет тут лаконичнее (за счет магии, которую можно было достичь и ООП). Лямбды удобны в некоторых случаях, но таких случаев немного.
>>1401266Ты удивишься, но код с лямбдами никто не запрещает декомпозировать на функции. Что императивный код, что декларативный ты можешь точно так же прятать внутрь условного readFromBuffer, в который можно и не погружаться. Если ты видел что-то нечитаемое из-за слишком длинных цепочек, это означает только то, что тот конкретный код был плох.
>>1401273>Циклы читаются удобнее, чем вереница магии.Пикрил из шапки скала-треда по соседству. Это еще очень простой пример, без вложенности и проверок на null. Ты всерьез считаешь, что вариант на джаве читается удобнее? Или может это такой случай, каких немного?
>>1401469>Ты удивишься, но код с лямбдами никто не запрещает декомпозировать на функции.Кто это будет делать и зачем все переводить в процедурный ад?>Если ты видел что-то нечитаемое из-за слишком длинных цепочек, это означает только то, что тот конкретный код был плох.Очередное "это не язык плохой, это программисты плохие".Тебе дают удобные лямбды и все начинают писать лапшу из лямбд, но конечно виноваты программисты.Импортировать звездой тебя тоже никто не заставляет, но это не реализация дизайна говно, это программисты сами так плохо делают.PS Только, по-моему, автор пайтона понял, какое это унылое говно и шаг назад, поэтому сделал лямбды только для максимально коротких случаев, где они и нужны.
>>1401486>Кто это будет делать и зачем все переводить в процедурный ад?Делать это будут те же люди, что в случае с твоим input.readFromBuffer(), а процедурность это вообще ортогональный вопрос, никто у тебя ООП не отбирает для случаев, где оно уместно. Но что с ООП, что без, где-то тебе все равно придется условно говоря отфильтровать список, и тут вопрос, в 1 строчку это удобнее делать или в 5.Мне уже кажется, ты толстишь.
>>1401476Говоришь такой, что лямбды удобны когда они лямбды - короткие и к месту, но обязательно найдется двуполярный гуманитарный мыслитель, который придет и покажет как удобны короткие лямбды, когда речь идет про лапшу из лямб в длинных вложенных цепочках.
>>1401476orders.getProducts(product); // когда можешь в свой объектmanager.getProducts(orders); // когда не можешь в этот объектselector(algorithm, orders); // когда понимаешь, что в джаве нет базисных структур данных и тем более нет нужный алгоритмов к ним, но надо жонглировать этими данными.А теперь вопрос, чем ты тут меня удивил? Что можно все упростить до 1 строки?
>>1401497Сманяврировали на то, что лямбды заставляют писать лапшу (вот то ли дело чистая императивщена, там никто лапшу не пишет), а потому, чтобы не дай бог не поддаться этому греху, будем превентивно пердолить в 5 раз больше кода на том же месте. Ясно понятно.
>>1401504>Сманяврировали>Привел пример правильных лямбд из питона, которые не позволяют программистам писать лапшу, из серии "это программисты плохие, а не язык".
>>1401508>Таки а реализацию за нас напишет стажер?flatMap() тоже кто-то написал.То что структуры данных списки, сеты, мапы... в жабе это беднейшее на алгоритмы виды данных, не виноват ООП.
>>1401729ООП совершенно точно не виноват. Там было два варианта реализации метода getProducts, вполне себе ООП-образного, как ты любишь, и вопрос - какой для прикладного программиста удобнее писать и читать. Как я понял, твой ответ - лучше на питоне. Ну ок.
>>1401740для getProducts - я жму кнопку и вижу описание (javadoc) и что получаю.А с лямбдой - мне надо знать что делает flatMap, знать как она с нуллами там живет и прочие нюансы, плюс мне надо прочитать сорцы лямбды (и хорошо если она в одну строчку и легко читаемы)А теперь представь каскад лямбд, их надо всегда читать, всегда. Я вот не привык каждый раз метод/функцию перечитывать.
>>1402588Вообще, это трудно объясниться, так как я не препод. Но вот ООП (или грамотный процедурный код) - позволяет сделать высокую абстракцию и фактически достичь декларативного уровня.А вот лямба - это кишки, когда она декларативна, в одну строчку с простым алгоритмом - это круто, но в противном случае это низкоуровневые кишки.
>>1402588>для getProducts - я жму кнопку и вижу описание (javadoc) и что получаю.Ох ё... Ты тролль или правда никак не поймешь? У нас в любом случае есть метод getProducts, с понятным названием, джавадоком, если нужно, всем остальным. На котлине и скале тоже можно и нужно делать методы. И на пике том, если что, для скалы было приведено именно что объявление метода (только без get, там так не принято).Но вот беда, реализацию написать тоже нужно, саму, чтоб её, полезную работу по вытаскиванию продуктов. И вот тут начинаются варианты. Можно написать одну строчку, декларативную и понятную, можно пять императивных. А может эта мега задача вообще достойна проектирования абстрактной фабрики стратегий извлечения продуктов?>надо знать что делает flatMap, знать как она с нуллами там живет и прочие нюансыПосмотри один раз и узнай. Ты сейчас фактически заявил "не буду использовать стандартную либо, потому что хз что она там делает, буду каждый раз все изобретать сам". Штуки вроде String.replace тоже стороной обходишь? Ну и не надо забывать, важно не только наличие flatMap в стандартной либе, но и возможно передавать в подобные функции что-то более изящное, чем анонимный класс.>мне надо прочитать сорцы лямбдыЛюбые сорцы надо либо читать, если они написаны "прям тут", либо можно не читать, если вынесены в понятный метод/класс. Лямбды тут ничего не меняют и не добавляют.>А теперь представь каскад лямбдНу да, твоя довольно экзотичная позиция сводится к тому, что лямбды с непреодолимый силой вынуждают написать всю программу одним гигантским каскадом, и этот их фатальный недостаток перевешивает все очевидные плюсы. Но почему-то все с этим живут, а не бегут с радостью обратно на java 6.>это трудно объясниться, так как я не препод.Я бы как раз скорее поверил, что ты препод, а не практикующий кодер. Потому что как иначе можно не понимать, что для рутины вроде трансформации списков "высокие абстракции" из чистого ООП уровня джавы 6, мягко скажем, непрактичны.
3 года пишу исключительно на Kotlin(бэк и андроид, плюс свои мелкие проекты). Искренне недоумеваю, почему люди до сих пор используют java(даже 8).
>>1402676>У нас в любом случае есть метод getProductsВ случае лямбды никакого названия и javadoc нет, есть только процедурные кишки.долбанутый декларативный пример с obj => obj.product не в счет, это и есть реальное и нужное использование лямбд>анонимный классНашел что вспомнить и с чем сравнить.Конечно это веха развития джавы.>flatMapЭто метод твоей коллекции, а не серебряная пуля.И да, очевидно что если такой штуки нет у тебя в стандартной библиотеке, то тебе её нужно писать ппц тут сложная логика у нас>String.replaceА ты вероятно из тех, кто бы вместо регулярных выражений дергал бы целое дерево лямбд?>А теперь представь каскад лямбдТак и не представил, но вывалил что-то непонятное и не по теме.>не практикующий кодерЯ уже привык что где-то 90% писарей это ваннаби программисты, которые не в курсе, что сопровождение кода важнее его скорости написания за редким исключением.И да, речь про каскад лямбд и подобие callback-hell. И да, в котлине это видел и пишут так модно, молодежно, поэтому не только в котлине. И да, всю эту лесенку лямбд надо прочитывать каждый раз, ибо кишки.
>>1402703>бэкСпринг-господин, или костылеваритель сырых http серверов на котлине?Я тут как-то один проект на котлине. Причем именно называли это проектом и писался он долго, но в реальности это было html-чудо времен .narod.ru
>>1402796>долбанутый декларативный пример не в счетАххаха, блять, ну конечно, нормальный пример (и вообще все что тебе говорят) не в счет, потому что тебе виднее, что на самом-то деле все пишут неподдерживаемое говно, причем что с котлином, что без.Ну и дальше ты уже вообще перестал читать то, на что отвечаешь.Все, закончили, ты либо толстоват, либо безнадежен.
>>1402857Тезисы-Ваннаби/гуманитарных программистов очень много. Они пишут или crud или унылые скрипто-подделки и чаще вообще не понимаю что нужно, поэтому впитывают маркетинг как есть. Поэтому кто там что делает, меня мало волнует-Лучшие лямбды в питоне, они сделаны так чтобы быть простыми, без вложенного лапшеварения.-Лямбда-лапша или лямбда-ёлка или лямбда-хелл - трудно читаемый код, точнее "ненужно" читаемый код кишки. В большом проекте оперируешь абстракциями.-Да сопровождение важнее написания для многолетнего большого проекта.-То что нет в либах или стандартных либах - да, приходится писать.Написать для бизнес-модели getProducts - это нормально.-Джава придумывалась с упором на многолетние проекты сейчас это видимо уже забыли с частыми релизами. Котлин же просто модник без души. За один только импорт звездой можно в топку бросать.
>>1403257>Бла бла бла и откровения уровня "хороший код это хорошо, а плохой код - плохо"Что сказать-то хотел? Что вася-говнокодер, сев за джаву 8 или котлин, не начнет по волшебству тут же делать конфетку? Вот это новость! Ну тогда остаемся на джаве 6.
Вчера писал очередную лесенку в javascript, сами попробуйте написать простое чтение из двух каталогов, сравнение файлов построчно и копирования новых файлов. Реально вложенная лапша получается, даже чтобы получить дату модификации, надо выпук сделать получается нечитаемый каллбэкхелл, за то асинхронно
>>1403630js-тред за углом, спроси там (или в гугле) о промисах. Здесь господа на корутинах могут вообще не понять о чем ты.
>>1403997А еще делают функции длиной в тысячи строк, с двадцатью параметрами и десятью уровнями вложенных условий и циклов. Но доебался ты почему-то только до лямбд. Что-то у тебя с ними личное, не иначе.
>>1404016>Приведено множество доводов в пользу лапшеварения.>Что-то у тебя с ними личное, не иначе.Типичный гуманитарный программист - без логики, но с богатым внутренним миром.
>>1404113>я вчера насрал, вышло говно>множество доводов>доводы в пользу лапшеваренияНайс затраллел, молодец
>>1404123Ну так по пунктам надо факты оспаривать, а не маневрировать в диалоге и потом сказать что все говно, а я дартаньян.Как вы вообще без логики код пишите??
>>1404135>факты оспариватьГде, какие факты? Что если сделать много длинных вложенных лямбд, будет плохо и нечитаемо? Так я согласен, и я могу еще таких фактов накидать.Если сделать длинный метод с пятью вложенными циклами, будет нечитаемо.Если сделать длинную иерархию наследования, она будет хрупкой и трудно поддерживаемой.Если насрать, останется куча говна.И хули дальше? Что сказать-то хотел?