Программирование


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
63 8 19

Kotlin - хайп или тема? Аноним 09/05/19 Чтв 18:20:47 13964991
image.png (294Кб, 1200x1200)
1200x1200
Котлин - это раздутый, пустой шум хайп или реально новый мейнстрим язык?
Кто что думает?
Аноним 10/05/19 Птн 16:37:47 13970172
Аноним 10/05/19 Птн 17:31:40 13970673
>>1397017
Зачем ты нам сюда этого динозавра принёс?
Аноним 10/05/19 Птн 17:50:08 13970884
>>1396499 (OP)
>Котлин - это раздутый, пустой шум
Аноним 10/05/19 Птн 17:56:00 13970935
>>1396499 (OP)
Ну, гуголу понравилось использовать котлин для андроид-разработки, это уже кое-что
Аноним 10/05/19 Птн 19:01:39 13971476
image.png (37Кб, 200x289)
200x289
>>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,
но не новый язык

Аноним 10/05/19 Птн 19:02:28 13971517
>>1397093
Гуглу и го нравится, о чем ты вообще.
10/05/19 Птн 20:21:26 13971818
>>1397147
>де-факто привязка к IDE.
А шо, в моём любимом vim'е нельзя?(
Я вообще в тему не вникал, я бэкенд пишу.
10/05/19 Птн 20:23:35 13971829
Аноним 11/05/19 Суб 00:15:06 139728710
>>1396499 (OP)
Думаю, слово JVM должно говорить само за себя. Но из всех JVM-говн, Kotlin, пожалуй, наименее вонючее. В отличие от Scala, он не пытается быть полноценным функциональным языком, он содержит только что, что JVM позволяет полноценно реализовать. А писать на чистой Джаве в 2019, если ты в детстве менингитом не болел, пожалуй, не стоит.

Из минусов - это, очевидно, не мейнстим. Скорее всего будет будет жить на андроидах, сомневаюсь, что энтерпрайз на него перейдёт.

>>1397147
>- каскад из лямда кода, легко писать, но трудно сопровождать.
Когда я вижу подобную тупую хуйню, возникает зоопарк вопросов. А что проще сопровождать? Каскад из анонимных классов, которые являются прямыми аналогами лямбда-функций в Джаве? Почему их проще сопровождать? Потому что там требуется напедалить больше бойлерплейта? Но как это облегчает сопровождение, конструкции семантически эквивалентны. Что вообще подразумевается под сопровождением? Внесение изменений в код лямбды? Ну так в случае лямбд тупо меньше кода писать надо, как написание большего количества кода, который означает ровно то же самое, может облегчить сопровождение? Кто вообще измерял эту сложность и в чём?
Аноним 11/05/19 Суб 07:41:42 139737411
>>1397287
>А писать на чистой Джаве в 2019
Таки ваши крутые IDE и делают это все удобнее, весь бойлерплейт в два клика раскрывается.
Или ты из тех, кто руками в vim'е импорты прописывает?
Аноним 11/05/19 Суб 07:46:21 139737512
>>1397287
>А что проще сопровождать?
ООП код конечно, который с каждым слоем кладёт абстракцию, позволяющие делать методы в 3-5 строк понятных вызовов.

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

Аноним 11/05/19 Суб 08:47:07 139738313
>>1397287
>сомневаюсь, что энтерпрайз на него перейдёт.
То-то мало мальски нормальная контора сломя голову бежит от Скалы на Котлин, лол.
Аноним 11/05/19 Суб 11:53:06 139744414
>>1396499 (OP)
Нет, не новый мейнстрим язык, а "всего лишь" джава с человеческим лицом. Если ты уже не связан с JVM-энтерпрайзом или андроидом - проходи мимо.
/thread
Аноним 11/05/19 Суб 17:46:05 139773715
>>1397383
>бежит от Скалы
Историю успеха, сначала на скалу, потом со скалы на что-либо, можно вообще выносить как отдельный вид состязаний специальной олимпиады. О чем ты вообще?
Аноним 11/05/19 Суб 18:12:35 139776616
>>1397444
>а "всего лишь" джава с человеческим лицом
Что там у вашей джавы с лицом было? Или это просто очередное хайп-словечко?
Есть ли уже какой-то флагманский проект у котлина, не в мобильной разработке?
Аноним 11/05/19 Суб 18:14:27 139776717
Снимок экрана о[...].png (54Кб, 733x300)
733x300
раз такой тред, помогите нубу
ЧЯДНТ?
Menu это просто
interface Menu : Iterable<MenuItem>{}
Аноним 11/05/19 Суб 18:28:38 139777518
>>1397767
а, я довн, случайно MenuItem из java.awt импортнул
Аноним 11/05/19 Суб 19:45:54 139782119
>>1397766
>Что там у вашей джавы с лицом было?
Местные тралли такие забавные - сначала громко кукарекают о жабе как о древнем убогом коболе, потом в котлин-тредах спрашивают, что с джавой не так, и доёбываются до слишком легкого написания лямбд.
Аноним 11/05/19 Суб 21:12:36 139793120
>>1397821
Как-будто в /pr два человека сидят и оба джависты.
Ну, а если серьезно, то 5 лет назад жаба писалась на ура в ваших IDE, думаю и сейчас так же все хорошо.

Я так и не понял, что с лицом там у джавы.
Аноним 11/05/19 Суб 21:13:25 139793321
>>1397767
Потому что у тебя светлая тема. Сейчас тру - это черная тема на белом маке.
Аноним 11/05/19 Суб 21:51:34 139796222
>>1397931
>жаба писалась на ура в ваших IDE, думаю и сейчас так же все хорошо.
Если для тебя на ура, нет проблем, джаву не отбирают. А у тех, кому хочется чего-то послаще, более современного и продуктивного (но на том же стеке, что важно), с приходом котлина появилась интересная опция.

>что с лицом там у джавы.
Многие вещи получаются в разы более многословными, чем на более современных языках. И нет, речь не только о геттерах и подобном, с чем неплохо справляется IDE.
Аноним 11/05/19 Суб 23:08:20 139804223
>>1397962
>но на том же стеке
На том же стеке получается та же джава, не почувствовал я другого языка.

Процедурщина в виде лямб меня вообще отталкивает. Я этой радости уже в js глотнул. Хорошо хоть, что некоторые решения в честный for код переводят.

Помоги увидеть в котлине хоть какую-то серебряную пулю?!
Аноним 11/05/19 Суб 23:57:06 139807224
>>1398042
>Процедурщина в виде лямб меня вообще отталкивает.
Что именно тебя в лямбдах не устраивает? Какой уж тот котлин, может ты тогда считаешь, что и джава 8 была не нужна? И что делать, если нужно список объектов отфильтровать по значению какого-то поля, потом результат сгруппировать по еще одному полю? С помощью ООП решать?
Аноним 16/05/19 Чтв 17:48:04 140126625
>>1398072
>Что именно тебя в лямбдах не устраивает?
То что цепочку из лямбд приходится читать полностью и вникать - всегда!, а вот увидев в коде input.readFromBuffer() - я уже примерно понимаю что там происходит не читая весь код (и решаю, пропустить или погружаться туда по стеку).
Аноним 16/05/19 Чтв 17:56:41 140127326
>>1398072
>И что делать, если нужно список объектов отфильтровать по значению какого-то поля
Что тут фантастического? Циклы читаются удобнее, чем вереница магии. Но лямбдами действительно будет тут лаконичнее (за счет магии, которую можно было достичь и ООП). Лямбды удобны в некоторых случаях, но таких случаев немного.
Аноним 16/05/19 Чтв 22:05:55 140146927
>>1401266
Ты удивишься, но код с лямбдами никто не запрещает декомпозировать на функции. Что императивный код, что декларативный ты можешь точно так же прятать внутрь условного readFromBuffer, в который можно и не погружаться. Если ты видел что-то нечитаемое из-за слишком длинных цепочек, это означает только то, что тот конкретный код был плох.
Аноним 16/05/19 Чтв 22:14:46 140147628
15361265895070.png (49Кб, 602x537)
602x537
>>1401273
>Циклы читаются удобнее, чем вереница магии.
Пикрил из шапки скала-треда по соседству. Это еще очень простой пример, без вложенности и проверок на null. Ты всерьез считаешь, что вариант на джаве читается удобнее? Или может это такой случай, каких немного?
Аноним 16/05/19 Чтв 22:26:27 140148629
>>1401469
>Ты удивишься, но код с лямбдами никто не запрещает декомпозировать на функции.
Кто это будет делать и зачем все переводить в процедурный ад?

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

PS Только, по-моему, автор пайтона понял, какое это унылое говно и шаг назад, поэтому сделал лямбды только для максимально коротких случаев, где они и нужны.
Аноним 16/05/19 Чтв 22:36:04 140149330
>>1401486
>Кто это будет делать и зачем все переводить в процедурный ад?
Делать это будут те же люди, что в случае с твоим input.readFromBuffer(), а процедурность это вообще ортогональный вопрос, никто у тебя ООП не отбирает для случаев, где оно уместно. Но что с ООП, что без, где-то тебе все равно придется условно говоря отфильтровать список, и тут вопрос, в 1 строчку это удобнее делать или в 5.

Мне уже кажется, ты толстишь.
Аноним 16/05/19 Чтв 22:41:23 140149731
image.png (23Кб, 200x172)
200x172
>>1401476
Говоришь такой, что лямбды удобны когда они лямбды - короткие и к месту, но обязательно найдется двуполярный гуманитарный мыслитель, который придет и покажет как удобны короткие лямбды, когда речь идет про лапшу из лямб в длинных вложенных цепочках.
Аноним 16/05/19 Чтв 22:48:47 140150232
>>1401476
orders.getProducts(product); // когда можешь в свой объект
manager.getProducts(orders); // когда не можешь в этот объект
selector(algorithm, orders); // когда понимаешь, что в джаве нет базисных структур данных и тем более нет нужный алгоритмов к ним, но надо жонглировать этими данными.

А теперь вопрос, чем ты тут меня удивил? Что можно все упростить до 1 строки?
Аноним 16/05/19 Чтв 22:49:41 140150333
>>1401502
>FIX
orders.getProducts(); // когда можешь в свой объект
Аноним 16/05/19 Чтв 22:49:55 140150434
>>1401497
Сманяврировали на то, что лямбды заставляют писать лапшу (вот то ли дело чистая императивщена, там никто лапшу не пишет), а потому, чтобы не дай бог не поддаться этому греху, будем превентивно пердолить в 5 раз больше кода на том же месте. Ясно понятно.
Аноним 16/05/19 Чтв 22:52:49 140150835
>>1401502
>getProducts
Таки а реализацию за нас напишет стажер?
Аноним 17/05/19 Птн 11:10:16 140172436
>>1401504
>Сманяврировали
>Привел пример правильных лямбд из питона, которые не позволяют программистам писать лапшу, из серии "это программисты плохие, а не язык".


Аноним 17/05/19 Птн 11:16:49 140172937
>>1401508
>Таки а реализацию за нас напишет стажер?
flatMap() тоже кто-то написал.
То что структуры данных списки, сеты, мапы... в жабе это беднейшее на алгоритмы виды данных, не виноват ООП.
Аноним 17/05/19 Птн 12:04:01 140174038
>>1401729
ООП совершенно точно не виноват. Там было два варианта реализации метода getProducts, вполне себе ООП-образного, как ты любишь, и вопрос - какой для прикладного программиста удобнее писать и читать. Как я понял, твой ответ - лучше на питоне. Ну ок.
Аноним 18/05/19 Суб 20:01:04 140258839
>>1401740
для getProducts - я жму кнопку и вижу описание (javadoc) и что получаю.
А с лямбдой - мне надо знать что делает flatMap, знать как она с нуллами там живет и прочие нюансы, плюс мне надо прочитать сорцы лямбды (и хорошо если она в одну строчку и легко читаемы)

А теперь представь каскад лямбд, их надо всегда читать, всегда. Я вот не привык каждый раз метод/функцию перечитывать.
Аноним 18/05/19 Суб 20:27:09 140260540
>>1402588
Вообще, это трудно объясниться, так как я не препод. Но вот ООП (или грамотный процедурный код) - позволяет сделать высокую абстракцию и фактически достичь декларативного уровня.
А вот лямба - это кишки, когда она декларативна, в одну строчку с простым алгоритмом - это круто, но в противном случае это низкоуровневые кишки.
Аноним 18/05/19 Суб 22:46:23 140267641
>>1402588
>для getProducts - я жму кнопку и вижу описание (javadoc) и что получаю.
Ох ё... Ты тролль или правда никак не поймешь? У нас в любом случае есть метод getProducts, с понятным названием, джавадоком, если нужно, всем остальным. На котлине и скале тоже можно и нужно делать методы. И на пике том, если что, для скалы было приведено именно что объявление метода (только без get, там так не принято).

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


>надо знать что делает flatMap, знать как она с нуллами там живет и прочие нюансы
Посмотри один раз и узнай. Ты сейчас фактически заявил "не буду использовать стандартную либо, потому что хз что она там делает, буду каждый раз все изобретать сам". Штуки вроде String.replace тоже стороной обходишь? Ну и не надо забывать, важно не только наличие flatMap в стандартной либе, но и возможно передавать в подобные функции что-то более изящное, чем анонимный класс.

>мне надо прочитать сорцы лямбды
Любые сорцы надо либо читать, если они написаны "прям тут", либо можно не читать, если вынесены в понятный метод/класс. Лямбды тут ничего не меняют и не добавляют.

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

>это трудно объясниться, так как я не препод.
Я бы как раз скорее поверил, что ты препод, а не практикующий кодер. Потому что как иначе можно не понимать, что для рутины вроде трансформации списков "высокие абстракции" из чистого ООП уровня джавы 6, мягко скажем, непрактичны.

Аноним 18/05/19 Суб 23:15:41 140270342
1345633681843.png (31Кб, 442x442)
442x442
3 года пишу исключительно на Kotlin(бэк и андроид, плюс свои мелкие проекты). Искренне недоумеваю, почему люди до сих пор используют java(даже 8).
Аноним 19/05/19 Вск 01:41:33 140279643
>>1402676
>У нас в любом случае есть метод getProducts
В случае лямбды никакого названия и javadoc нет, есть только процедурные кишки.долбанутый декларативный пример с obj => obj.product не в счет, это и есть реальное и нужное использование лямбд

>анонимный класс
Нашел что вспомнить и с чем сравнить.
Конечно это веха развития джавы.

>flatMap
Это метод твоей коллекции, а не серебряная пуля.
И да, очевидно что если такой штуки нет у тебя в стандартной библиотеке, то тебе её нужно писать ппц тут сложная логика у нас


>String.replace
А ты вероятно из тех, кто бы вместо регулярных выражений дергал бы целое дерево лямбд?

>А теперь представь каскад лямбд
Так и не представил, но вывалил что-то непонятное и не по теме.

>не практикующий кодер
Я уже привык что где-то 90% писарей это ваннаби программисты, которые не в курсе, что сопровождение кода важнее его скорости написания за редким исключением.
И да, речь про каскад лямбд и подобие callback-hell. И да, в котлине это видел и пишут так модно, молодежно, поэтому не только в котлине. И да, всю эту лесенку лямбд надо прочитывать каждый раз, ибо кишки.
Аноним 19/05/19 Вск 01:45:25 140279844
>>1402703
>бэк
Спринг-господин, или костылеваритель сырых http серверов на котлине?
Я тут как-то один проект на котлине. Причем именно называли это проектом и писался он долго, но в реальности это было html-чудо времен .narod.ru
Аноним 19/05/19 Вск 09:33:16 140285745
>>1402796
>долбанутый декларативный пример не в счет
Аххаха, блять, ну конечно, нормальный пример (и вообще все что тебе говорят) не в счет, потому что тебе виднее, что на самом-то деле все пишут неподдерживаемое говно, причем что с котлином, что без.
Ну и дальше ты уже вообще перестал читать то, на что отвечаешь.

Все, закончили, ты либо толстоват, либо безнадежен.
Аноним 19/05/19 Вск 15:56:03 140325746
>>1402857
Тезисы
-Ваннаби/гуманитарных программистов очень много. Они пишут или crud или унылые скрипто-подделки и чаще вообще не понимаю что нужно, поэтому впитывают маркетинг как есть. Поэтому кто там что делает, меня мало волнует

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

-Лямбда-лапша или лямбда-ёлка или лямбда-хелл - трудно читаемый код, точнее "ненужно" читаемый код кишки. В большом проекте оперируешь абстракциями.

-Да сопровождение важнее написания для многолетнего большого проекта.

-То что нет в либах или стандартных либах - да, приходится писать.
Написать для бизнес-модели getProducts - это нормально.

-Джава придумывалась с упором на многолетние проекты сейчас это видимо уже забыли с частыми релизами. Котлин же просто модник без души. За один только импорт звездой можно в топку бросать.
Аноним 19/05/19 Вск 23:15:15 140353147
>>1403257
>Бла бла бла и откровения уровня "хороший код это хорошо, а плохой код - плохо"
Что сказать-то хотел? Что вася-говнокодер, сев за джаву 8 или котлин, не начнет по волшебству тут же делать конфетку? Вот это новость! Ну тогда остаемся на джаве 6.
Аноним 20/05/19 Пнд 08:25:22 140363048
image.png (78Кб, 400x400)
400x400
Вчера писал очередную лесенку в javascript, сами попробуйте написать простое чтение из двух каталогов, сравнение файлов построчно и копирования новых файлов. Реально вложенная лапша получается, даже чтобы получить дату модификации, надо выпук сделать получается нечитаемый каллбэкхелл, за то асинхронно
Аноним 20/05/19 Пнд 09:17:04 140364449
>>1403630
js-тред за углом, спроси там (или в гугле) о промисах. Здесь господа на корутинах могут вообще не понять о чем ты.
Аноним 20/05/19 Пнд 11:52:02 140368950
>>1403644
Тут речь про лямбды, одарённый ты наш.
Аноним 20/05/19 Пнд 13:03:10 140371951
>>1403689
Забавный ты мой, кто тебя заставляет делать асинхронность через вложенные колбэки?
Аноним 20/05/19 Пнд 17:28:21 140388552
>>1403719
Асинхронность и заставляет.
Аноним 20/05/19 Пнд 18:33:26 140390853
>>1403885
Пойди почитай о способах делать без "лесенок"
Аноним 20/05/19 Пнд 21:03:41 140397154
>>1403908
Про промисы или уже можно про асинки?
Или я просто возьму го и буду писать как есть?
Аноним 20/05/19 Пнд 21:22:19 140397755
>>1403971
Это ты уже сам выбери, не маленький
Аноним 20/05/19 Пнд 21:58:09 140399756
>>1403977
Ты же понимаешь, что гадят лямбдами не только в асинхронном-говне?
Аноним 20/05/19 Пнд 22:37:50 140401657
>>1403997
А еще делают функции длиной в тысячи строк, с двадцатью параметрами и десятью уровнями вложенных условий и циклов. Но доебался ты почему-то только до лямбд. Что-то у тебя с ними личное, не иначе.
Аноним 21/05/19 Втр 08:02:41 140411358
image.png (93Кб, 751x521)
751x521
>>1404016
>Приведено множество доводов в пользу лапшеварения.
>Что-то у тебя с ними личное, не иначе.
Типичный гуманитарный программист - без логики, но с богатым внутренним миром.
Аноним 21/05/19 Втр 08:02:42 140411459
Аноним 21/05/19 Втр 08:04:49 140411560
Аноним 21/05/19 Втр 08:41:51 140412361
>>1404113
>я вчера насрал, вышло говно
>множество доводов
>доводы в пользу лапшеварения
Найс затраллел, молодец
Аноним 21/05/19 Втр 09:56:54 140413562
>>1404123
Ну так по пунктам надо факты оспаривать, а не маневрировать в диалоге и потом сказать что все говно, а я дартаньян.
Как вы вообще без логики код пишите??
Аноним 21/05/19 Втр 10:19:27 140414063
>>1404135
>факты оспаривать
Где, какие факты? Что если сделать много длинных вложенных лямбд, будет плохо и нечитаемо? Так я согласен, и я могу еще таких фактов накидать.

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

И хули дальше? Что сказать-то хотел?


Аноним 21/05/19 Втр 11:16:41 140416064
>>1404140
>Что сказать-то хотел?
Золотые, бессмертные слова соси хуй, быдло
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов