Это копия, сохраненная 1 августа 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
>Что имеем:
У нас есть синтаксический сахар поверх джавы, немного ФП (удобные лямбды), корутины с асинхронщинной, DSL и многое другое.
В синтаксисе можно встретить много WTF-решений (как же без них), но в целом, плюсы перевешивают минусы. Так-то, во всех языках есть что-то что раздражает.
Параллельно jvm платформы пилятся kotlin-js (котлин для javascript) и kotlin-native (компилируемый в нативный код котлин), а возможность языка в DSL позволяет писать на HTML и CSS (типобезопасно), если кому-то это надо.
Котлин имеет полный интероп с джавой, от чего его не совсем корректно сравнивать его со scala.
>Хайп:
Язык был подкреплен гуглом в связки мобильной разработки, а с недавних пор рекомендован как основной язык для андроида, из-за чего начался рост популярности языка.
Также для языка был создан фонд, чтобы в случае покупки создателей не повторилась судьба с джавой. Вероятно условия гугла.
В связи с этим, котлин очень популярен в мобильной разработке, порой даже раздражает, что весь свежий контент пишут именно о телефонах. Но нужно помнить, котлин это та же джава и сейчас мы видим, многие фреймворки предлагают решения сразу на двух языках (как минимум пишут примеры, но в целом котлин имеет хороший интероп и так).
>Производительность.
Не забываем, что java (с JIT) одна из самых производительных платформ. Она делит топ 10 наравне с многими другими производительными платформами. Также у джавы хорошо оптимизированный драйвер базы данных, что видно по тестам.
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query
Нередко именно база-данных является узким местом в веб-приложениях.
>Q: Котлин это что-то про разработку на андроиде?
A: Нет, не только. Объем разработки на JVM высок, но в основном где-то на галерах. Смотрим статистику:
https://www.jetbrains.com/ru-ru/lp/devecosystem-2019/kotlin/
>Q: ...кококо, котлин уничтожит джаву!
A: Нет. Котлин сильно завязан на джаву и не заменяет её, а скорее дополняет (как typescript дополняет javascript). Джаву никто и ничто не заменит в ближайшие 10-15 лет, у этого языка чрезвычайно огромный капитал написанного кода, поэтому переживать за неё не стоит. В любом случае конкуренция это хорошо, джава стала развиваться (попутно завозя годноту в байткод).
>Q: Стоит ли сразу вкатиться в котлин минуя джаву?
A: Нет. Не стоит. Есть точка зрения, что котлин позиционируется как "удобная/лучшая джава", подразумевая то, что ты хочешь писать на джаве, но более современно и практично. Да и глупо игнорировать джавоский мир, который является в топе по числу библиотек и решений, где тебе все равно придется погрузиться когда-то в его синтаксис.
>Q: Но если меня интересует только разработка под андроид, стоит ли вкатываться в джаву?
A: Стоит. Доки старого API на джаве, кодогенерация, байткод близкий к джаве. Ну и легаси, оно тоже на джаве.
>IDE - среда разработки.
Бесплатная community edition - обычно более чем достаточно (и работает шустро), но можете попробовать триал-версию.
https://www.jetbrains.com/idea/download/
>Официальный сайт и там же чтиво
https://kotlinlang.org/docs/reference/
>Тоже с переводом (на первый взгляд, ру-перевод впервые выглядит не заброшенным):
https://kotlinlang.ru/
>Котлин в примерах
https://play.kotlinlang.org/byExample/overview
>Koans
https://play.kotlinlang.org/koans/overview
>Try Kotlin (пробуй и кодь)
https://try.kotlinlang.org/
>Knowledge map
https://hyperskill.org/knowledge-map/209
>Онлайн компилятор (вставить код или просто что-то потестить)
https://play.kotlinlang.org/
>Awesome (либы близкие к kotlin, но не стоит забывать про java решения)
https://kotlin.link/
или
https://github.com/KotlinBy/awesome-kotlin#libraries-frameworks-web
>kotlin для питонистов [eng]
https://github.com/Khan/kotlin-for-python-developers
>Telegram
В телеге есть чаты по котлину. Это полу-белорусское комьюнити, которое клонирует пачками чаты (раньше про джаву - JavaBy и KotlinBy в Gitter). Крайне не рекомендую посещать это рассадник из ЧСВ макак. В чатах лобызаются одни и те же лица и если ты им не понравишься (а ты им не понравишься) будут постоянно тебя подстрекать пассивной агрессией или принуждать к анальным правилам, которые они вспоминают только тогда, когда пишешь ты. Конечно, ты можешь терпеть и сидеть в этой помойке, но если не хочешь словить негатив и получить ложное представление о ру-комьюнити, не рекомендую посещать этих ребят. Лично видел как токсично слили пчела за расспрос про api java.
Если можешь в ангельский, лучше сразу нырнуть в слаку.
https://kotlinlang.org/community/#kotlin-online-resources
Но лично я рекомендую не заниматься херней в чатиках, а спрашивать сразу на StackOverflow, тем самым ты сразу поможешь тысячи другим пользователям (и себе в будущем, если забудешь):
https://stackoverflow.com/questions/tagged/kotlin
Там можно спрашивать даже банальные вещи (кроме неопределенных), они потом хорошо гугляться и превращаются в простой справочник. Серьезно, анон, прекращайте спрашивать на древних форумах, бестолковых чатах, и даже двачах. Если уж совсем плохо с английским и не можешь в переводчик, то там есть ру-язычная версия сайта, но это так себе идея
>РАЗНОЕ
>Шпаргалки.
https://ibb.co/yRSzLsS
https://ibb.co/dB2m4nN
https://ibb.co/McTbJk0
>Шпаргалка по run, let, apply, also
https://pbs.twimg.com/media/EENzl8CWwAApP3W?format=png
или статья по теме
https://www.rockandnull.com/kotlin-let/
На практике, если точно не уверены, можно просто кликнуть и посмотреть исходник функции (игнорируя там контракты).
>Шпаргалка (общая)
https://simplecheatsheet.com/tag/kotlin-cheat-sheet/
>Контент
https://youtu.be/xH-RZ9YlxH0
Если вам нравится kotlin или java и вы умеете читать документацию сами, то можете просто кидать в тред годный контент, новости и прочее из мира jvm.
ну а без него нужен установленный питон
как и нужна установленная java для jar
нет никакого "жава у всех стоит по дефолту"
Это верно, поэтому будущее за Net Core, который может кросскомпилиться со всеми зависимостями.
Кстати, еще один момент, в установке питона есть. Во время установки пункт добавления себя в PATH не активен. Юзер может по твоей просьбе поставить по принципу "далее... далее... далее..." и ничего работать не будет.
В общем, питон он только в маня фантазиях удобен, в реале даже поднасрать в установке может.
Я уже сам в него не верю. Тут даже раст не выстрелил, а в нем усилий на порядок больше вложено. Ну еще мне думается, они переоценили свои усилия. Слишком все медленно идет, лучше бы все усилия сосредоточили на jvm и удобных батарейках.
Не пытаюсь тут ныть, но мне, субъективно, стало казаться, что котлин забуксовал в развитие и росте популярности.
Да, вроде, у них как-то все неплохо. Тоже думал что это загон по типу свифта, но потом полазил и мнение немного поменял.
Если бы мне сейчас представился выбор между Net Core и JVM, я бы выбрал нет кор или я просто от жабы выгорел, хз
protected open fun <T> toArray(array: Array<T>): Array<T>
Fills the provided array or creates new array of the same type and fills it with the elements of this collection.
это ж как ее вызвать нужно, чтобы оно "or creates new array"?
> Крайне не рекомендую посещать это рассадник из ЧСВ макак. В чатах лобызаются одни и те же лица и если ты им не понравишься (а ты им не понравишься) будут постоянно тебя подстрекать пассивной агрессией или принуждать к анальным правилам, которые они вспоминают только тогда, когда пишешь ты. Конечно, ты можешь терпеть и сидеть в этой помойке, но если не хочешь словить негатив и получить ложное представление о ру-комьюнити, не рекомендую посещать этих ребят
Лол, в телеграм-чатиках по Скале та же фигня. Какие-то раки хуже чем в /b/. Видимо такой способ общения чем-то привлекает
этот специфический контингент
Вполне вероятно, что часть тех же токсичных лиц может сидеть и там.
Вообще, не редко возникает эта проблема в ру-чатах, было даже еще в эпоху irc. Ру говорящее айти (и не важно белорус, украинец, русский итд...) чрезмерно, почему-то, высокомерно и одновременно не очень культурно образовано (быдло), и почти всегда возникает местная тусовка и чисто инстинктивно пытается доминировать (потому как уровень культуры на уровне стада), а как доминировать, когда нужно показательно вести себя культурно (поддерживать эту иллюзию)? Только пассивной агрессией, задевая всех кто "не свой".
Ну такой вот
return RequestB(
cardInfo = CardInfo(cardNum = requestA?.myInfo?.myInfo2?.cardInfo?.cardNum?.pan),
custAddr = CustomerAddress(requestA?...//и тут тоже длинная строка ),
//Тут по аналогии ещё новые тэги и ещё больше вложенности
)
Например в классе CardInfo запилить метод build(), который даже хз что будет делать, принимать объект и извлекать из него нужную инфу, возможно. И так со всеми классами
Я и спросил, может есть нормальные способы. Хотя бы более читаемым код сделать.
Ну как минимум делаешь метод, в котором прячешь все эти кишки и в которую передаешь A, а на выходи получаешь B
Потом убрать все эти A и B и назвать вменяемо, хотя бы Old и New
convert(OldRequest): NewRequest
Это понятно все, ну ладно, потом подумаю.
Разраб на Ноде, думал перекатиться на бэкенде в ЯП со статической типизацией, Котлин вроде выглядит неплохо. Зашел посмотреть вакансии, почти во всех где нужен бэкенд разраб Котлин идет в паре с Жавой или С#, че захрень?
Котлин всплыл совсем недавно и в первую очередь для андроида. А старые джава-проекты никуда не делись. Вот и юзается котлин не в чистом виде, а в связке с джавой.
Ещё есть Go. раз перекатываешься с ноды, он может тебе зайти, но те, кто пишет на статике, от го блюют.
Ну и ещё есть скала, со своими заморочками.
>Котлин идет в паре с Жавой или С#
Странное сочетание сишарпа и котлина.
Но вообще, если по честному, нет нормального статического типизированного языка. Джава, кусок древнего говна, котлин, это свежее попытки, но поверх древнего говна и не все так гладко в синтаксисе. Шарп, не уверен что будут все нужные либы кросс, в общем, неожиданный вендор лок, я думаю, ожидаем. Го, мог ворваться в этот рынок победителем, но нельзя бегать и какать на ходу.
Поэтому грызи либо ts. Либо оставайся в динамике, всякие jsdoc вполне выполняют ту роль, которая требуется от статики сейчас, все зависит от твоей организованности, но нода это кусок говна.
Чёт все языки по-своему хуёвые, что статические, что динамические. Ни один не вызывает у меня восторга.
> Го
Засилье interface{} никак не тянет на нормальную статику. Да и наверняка в результате получится та же жаба. Гоферы говорят о простоте, но и жаба - один из простейших языков, и всё сложность в тоннах легаси, просто на го это не так незаметно, пока легаси мало.
> ts
Те, кто его тыкал, говорят, что там ненастоящая статика, то ли из-за any, то ли там можно вызвать несуществующий метод, хуй знает.
мимо
Идею долго запускать.
Не, я в целом про статические языки
Как говорят мои товарищи, языки не имеющие полноценную кросплатформенность, языками программирования называть нельзя.
Возможно, но это не отменяет ненужность таких языков в наши дни. Тем более на свифте, как слышал, часто кладут на обратную совместимость, что вообще делает язык не пригодным в промышленном программирование.
А какие имеют полноценную кроссплатформенность?
На каких я одновременно напишу приложения на иос и андроид?
Да, может
Я не про мобильные платформы, туда всякое говно конвертится и так.
да конечно! жизненный цикл этой хуйни приходит к концу.
эту еболу прокатили жиды, получили профиты, больше она нахуй не нужна им. ща новую будут пилить, чтоб вам её скормить.
типа "смузи-новейшая-секси-технология"
вон hr уже в вакансиях пишут не "у нас хорошие зп и бонусы", а
"наша вакансия - отличная возможность перейти на ТЕХНОЛОГИЯ-НЕЙМ"
У нас в легаси-проект на работе в одно время было впилили котлин, но недавно выпилили и переписали обратно на 8 жабу.
Присоединяюсь к вопросу, даже мои шизофантазии ограничивают догадки.
Понятно что ты залетный школьник. Но мне просто интересно, какие могут быть причины, резко взять и переписать на 8 жабу? После котлина, жабу вообще противно трогать.
> пик 2
В чём прикол?
Я в этот участок проекта не лез, просто слышал, что там были какие-то проблемы с версиями зависимостей. Один разраб впилил, другой выпилил.
> После котлина, жабу вообще противно трогать.
Это твоё личное мнение. Не все считают, что котлин - это лучший язык всех времён и народов.
inb4: ряяя врёти
Какие профиты? Чем учить чужую хуйню и зависеть от её создателей/корпораций, круче придумать свою и подсадить всех на неё. Типично жидовская тема, кстати.
>Не все считают, что котлин - это лучший язык всех времён и народов
Никто так не считает, после любого языка убирающего бойлерплейт, будет противно на жабу.
Мне в свое время говорили учи шарп, потом если надо легко на джаву переедешь. А я потом оплювался жабу трогать.
Если бы мягкие не были в свое время такими муднями, сейчас бы вообще вопроса не стояло, какой ЯП на тяжелый бэкенд брать.
Судя по сленгу и причине в которой котлин никаким местом не причастен, ты мимозалетный фантазер.
> А я потом оплювался жабу трогать.
Надуманно. Я спокойно слез с питона и js на жабу.
> Судя по сленгу и причине в которой котлин никаким местом не причастен, ты мимозалетный фантазер.
Сука, ты читать умеешь?
> Я в этот участок проекта не лез, просто слышал
За что купил - за то и продаю. Я о котлине и его мирке вообще ничего за исключением того, что он подключается через плагин мавена и компилится в классы. И о том, какие там могут быть проблемы с зависимостями, знаю ещё меньше тебя. Но факт остаётся фактом - выпилили под предлогом проблем с зависимостями, действительно это так или нет.
>подключается через плагин мавена
Неожиданно, жаба там тоже подключается. Так как изначально задумывали как универсальные сборщики независящие от языка классический задержавшийся юношеский максимализм, у взрослых дядей
Ты это байду про версии в этом треде и вычитал, где чел говорил что не мог два подпроекта объединить (довольно редкая и решаемая другим путем задача). Так что иди самоутверждайся в другом месте.
> Ты это байду про версии в этом треде и вычитал,
Заявляя, что я фантазёр, ты превзошёл самого себя и начал фантазировать сам.
> где чел говорил что не мог два подпроекта объединить (довольно редкая и решаемая другим путем задача).
Я в это не сильно вчитывался, но если под проектами понимаются модули мавена, то я даже придумать не могу, откуда там проблемам взяться.
Вот какого хера, енум не может заимплеменитить интерфейс в котором есть метод String name()? Почему в яве это отлично работает, а тут ошибка компиляции?
вот такая табличка готовится чтобы показать работодателю, хочу на котлине писать, добавьте чего-нибудь в обе стороны, что вам нравится в обоих языках
спасибо котлин тред вы у меня самые лучшие!
Тоже не понял этого пункта.
мне не приходилось этого делать а пока не приходится - нахуй надо знать=)
это проблема точно не моя, а языка. функциональные интерфейсы - худшая попытка спиздить функциональщину переделав под ооп...
в общем вместо того чтобы гадости писать предложили бы чего интересного.... =(
=)))))))))))))))
> функциональные интерфейсы
Сразу видно, что о лямбдах в котлине ты знаешь только то, что они есть.
>modern syntax
Что в нем модернового, если они полностью слямзили вдохновились у других языков?
Что вообще является современным синтаксисом, какой критерий?
все то, что есть в котлине, но нет в джаве
все то, что есть в шарпе, но нет в джаве
чел ты доебался до ничего, ты очень глупый
>>1836470
мне без разницы как они реализованы до того момента, пока я могу описать тип лямбды через ахуеннейший синтаксис котлина, благодарен великим русским разработчикам за то, что мне не приходится трогать уебищные функциональные интерфейсы джавы
жесть блин вы меня расстроили, попросил пунктиков накинуть а вы мне гадостей написали, хуй с вами короче, отдам как есть
Потому что на самом деле котлин тебе не нужен, не выдумывай.
Все котлинисты такие тупые?
Это у него вообще про джаву написано, вторая колонка же.
хули ты на джаве пишешь, сойбой? на ассемблере хуярь, лол, или слабый?
Я то думал, откуда такой наркоманский дизайн некоторых моментов языка, а оказывается Бреслав просто шизик
А чего график протухший. Он же ещё Январский.
С подключением.
Забавно, когда впервые листал синтаксис, была такая же мысль.
Имхо, нельзя разрешать дизайнить язык одному человеку.
В январе дарт вообще сосал.
Я как-то тыкал скалу и увидел, что в котлине многое взято именно из неё. Так что часть претензий насчёт упоротого дизайна можно обратить к создателям самой скалы.
так они могли не брать этот хуевый дизайн
я мимокрок, сам очень люблю абсолютно все что есть в котлине, ни одна фича не кажется убогой (пока что)
Котлин заявляет более лучший (по сравнению со Скалой) интероп с джавой, однако в Скале
val m: java.util.Map[String, Any] = java.util.HashMap[String, Any]()
работает как и ожидается, а вот соотвествующий аналог в Котлине
val m: java.util.Map<String, Any> = java.util.HashMap<String, Any>()
не скомпилится.
В итоге мы имеешь,
-хер пойми какое объявление конструкторов (считаю это эпик проёб)
-просрана короткая запись для списков [] и мап {}
-избыточный загон по мутабельности и не мутабельности в языке
-изуродован static в виде компаньюнов каких-то.
-непродуманные дата-классы с мелкими подводными, в том числе отсутствие наследования
-не такой уж и прям честный 100% интероп.
-dsl, который, для меня, не так и гибок как хотелось бы.
-беднейшая стандартная библиотека.
-избыточные непонятные экстеншены в стандартной библиотеки (взять ту же строку, херова туча непонятной херни)
-зачем они сделали отсебячину с корутинами, хотя уже их критиковали за это.
-100500 зарезервированных ключевых слов
-Вводить дополнительные подтипы для null, имхо, не лучше дизайн. Теперь null типы проблемны и неудобны. Не так много проблема NPE приносил, как привносить проблемы нуллабл типы. То есть, от null вообще надо отказываться (делая какие-то спец исключения или еще что-то), а не в типы его засовывать.
А ещё companion object, который спёрли из Скалы не разобравшись. В итоге в Скале это просто идиома, а в Котлине - зачем-то часть синтаксиса.
> не брать за основу jvm, а взять llvm сразу
То есть высрать очередной язык без инфраструктуры, в котором нет ничего, кроме сахарочка и громоздких жаба-подобных идентификаторов? Какой-нибудь Go хотя бы поддерживается гуглом, а котлин бы родился уже мёртвым.
Куда более гибко создавать язык с нуля, чем фиксить джаву. Имхо, котлин даже с джава либами не особо востребован.
Котлин как раз и создавался с целью пофиксить жабу, а не создать очередной инновационный язык, которых и так десятки тысяч.
В определённых кругах он всё же востребован, на андроиде это основной язык, а в бэке уже на уровне скалы почти нулевом.
Логично фиксить джаву должна сама джава. Зачем тащить говно и потом побеждать его, когда говна можно просто не брать. Ну ладно, хер с ним, так то понятно зачем им ЯП на джаве. Нужно известное имя чтобы продвигать продукт.
Но зачем они в нейтив полезли и тем более в js? Почему не делать котлин еще лучше? Там уже жаба догоняет их.
>В определённых кругах он всё же востребован
У нас по началу дали команде поиграться, всем зашло, но остальные отказались, мол хера писать тоже самое только еще синтаксис учить и новые подводные камни осваивать, в итоге снова java, здравствуйте.
Но вот для своих проектов я бы новый яп взял, но не на базе jvm (и точно не го, раст для бизнес логики сложен, динамика сосёт, шарп вроде кажется продуманей, но хз).
> Логично фиксить джаву должна сама джава
Джава, как видишь, добавляет фишечки очень неохотно. Но даже если и добавит, все по-прежнему из-за легаси будут сидеть на древних джавах, где этих фишечек нет. А котлин позволяет хоть прям сейчас юзать сахарочек, ничего при этом не ломая.
> Нужно известное имя чтобы продвигать продукт.
Вот только груви, цейлон и кложура что-то не особо продвигаются, хотя имя вроде бы известное.
> Но зачем они в нейтив полезли и тем более в js?
Могут - вот и полезли. JVM всё равно остаётся в приоритете.
В какой-нибудь хипстерской команде в стартапе, наверное, было бы легче продвинуть котлин. Это в легаси все с коболом смирились.
>Джава, как видишь, добавляет фишечки очень неохотно
Есть такой эффект в программирование, хз как называется, пускай будет эффект Семёна. Дело в том, что чаще популярные яп тащат в свои языки идеи, а новый инноватор тухнет на обочине.
Яркий пример руби и рельсов, или фп фич.
>не особо продвигаются
Глупенький, наоборот, котлин нужен чтобы популизировать продукты жопбрейнс. Собственно это и объясняет желание засунуть его везде. Чтобы сиял повсюду.
>Могут - вот и полезли
И увязли.
>JVM всё равно остаётся в приоритете.
Ничего нового толком и не пилится, стандартная библиотека выглядит как обертка копипаст, ни пакетного менджера, ни веб плюшек (полноценных фреймворков удобных, раз уж даже в js полезли), вообще отсутствие флагманских проектов. Даже у дарта там тормозной флаттер есть.
> популярные яп тащат в свои языки идеи, а новый инноватор тухнет на обочине
Джава, скорее всего, и будет развиваться с оглядкой на котлин, который выкинут, когда он перестанет быть особенным. В этом ничего плохого нет.
> котлин нужен чтобы популизировать продукты жопбрейнс
Это с точки зрения жетбрейнса. Но они создали сравнительно удобную технологию, и странно отказываться от её использования только потому, что жетбрейнсу от этого может быть профит. Вон Go тоже создавали для внутренних нужд гугла, но теперь его пихают куда не лень.
> И увязли.
Их проблемы. В JS-мирке хорошо не бывает, а проблемы с нейтивом не могут решить даже те, кто целенаправленно создаёт языки для него.
> обертка копипаст
Лучше сложно что-то придумать.
> ни пакетного менджера
Мавен, градл, ант. Или ты предлагаешь и здесь всё с нуля делать вместо использования готового? Это уже на NIH похоже.
> ни веб плюшек
Ktor, Spring, EE, и прочее из джава-мирка.
Складывается ощущение, будто ты веришь, что котлин - это самостоятельный язык, а не на подсосе у жабы.
Какое шаблонное мышление, одно и тоже, каждый тред, как попугаи блин. Вы можете сами анализировать? Я хочу видеть ваши мысли, а не конспект.
> 2 + 2 = 4
> Какое шаблонное мышление, конспект из начальной школы!
> Ладно, давайте выскажем свои мысли. Может, это 5? Хотя нет, была такая гипотеза, и она опровергнута. Хорошо, посчитаем на пальцах. Всё-таки 4.
Такой анализ хочешь?
>Мавен, градл, ант, Spring, EE
Так зачем мне тогда твой котлин?
>странно отказываться от её использования только потому, что жетбрейнсу от этого может быть профит.
Кто это сказал? Зачем ты подстраиваешь мой ответ под свои мысли? Тут речь о том, что у их конкретный профит не связан с профитом среднестатистического разработчика. А раз у нас вектор разный, рано или поздно мы разойдемся в интересах.
>Лучше сложно что-то придумать.
Там ничего нет, хватит подменять понятия.
>будто ты веришь, что котлин - это самостоятельный язык
Тогда зачем мне учить новый синтаксис и иметь в поддержке сразу два языка?
> Так зачем мне тогда твой котлин?
Сахар. Если он тебе не нужен, то и котлин не нужен.
> Кто это сказал? Зачем ты подстраиваешь мой ответ под свои мысли?
Потому что ты не умеешь их формулировать, и непонятно, что хотел сказать.
> конкретный профит не связан с профитом среднестатистического разработчика. А раз у нас вектор разный, рано или поздно мы разойдемся в интересах.
Тогда все вернутся обратно на жабу.
> Там ничего нет, хватит подменять понятия.
И не должно быть.
> Тогда зачем мне учить новый синтаксис и иметь в поддержке сразу два языка?
Не хочешь - не учи, тебя никто не заставляет. Продолжай писать на джаве, всё равно котлин через время исчерпает смысл своего существования.
>Зачем ты подстраиваешь мой ответ под свои мысли?
>Потому что ты не умеешь их формулировать
"Ты говоришь не под мое шаблонное мышление, поэтому я скорректировал чтобы оно совпадало с ним". Так будет правильнее.
>Сахар. Если он тебе не нужен, то и котлин не нужен
За какой-то сахар, я должен тратить время на переучивание? Странная цена.
Остальные ответы уровня пятиклассника - не нравится, не делай. Интеллектуальный дисскус это не твоя стезя, лучше больше не влезай в него.
> Так будет правильнее.
Нешаблонное мышление - это отрицание очевидных фактов? Я тебя понял.
> За какой-то сахар, я должен тратить время на переучивание? Странная цена.
Да там и учить нечего, не кресты.
> Интеллектуальный дисскус это не твоя стезя, лучше больше не влезай в него.
Ты придумал себе манямирок из-за непонятой сути котлина и ещё хочешь каких-то "дисскусов". М-да.
Нашел до чего доебаться. Используй kotlin.collections.MutableMap вместо java.util.Map.
> Или вот пример с пропертями и приватными сеттерами и публичными геттерам.
Ну так ведь так можно сейчас делать (и можно было начиная с 1.0 точно).
В чем твой поинт? В том что жб слушают фидбек и делают фичи, когда появляются реальные юз-кейзы?
людская лень. один из челов, которые тут наспорили, говорил
>Тогда зачем мне учить новый синтаксис и иметь в поддержке сразу два языка?
ты недооцениваешь эту ебанутую лень, которая не позволяет перстроиться с говна на конфеты
Просто не все жрут маркетинг не пережевывая и для многих это размен говна на говно.
мимо джаваскрипт господин.
> костыли поверх древнего синтаксиса
> джаваскрипт
То есть ты не пользуешься бабелем и полифиллами, чтобы транслировать новейший EcmaScript в старые стандарты, поддерживающиеся у большинства, а сразу хуяришь на прод, чтобы открывалось только в самых свежих браузерах?
Хром обновляется по кд, а кто сидит еще на XP или каком-нибудь IE, они не платежеспособны и не интересны бизнесу в котором я работаю.
Собственно именно поэтому стал ненужен ts. Js впитал уже все лучшее, а типизации хватило на уровне jsDoc. на самом деле, по нашему внутреннему исследованию, типизация нужна лишь для автокомплита в IDE, подсветки ошибок там же и рефакторингу. Если всех заставить писать jsDoc, то динамико-пораша становится удобной и главное шустрой. Пока ты компилишь свой код, js код скорее всего уже исполнился.
Но это другая ветвь развития, тут даже не старайся понять или дискутировать, ибо действительно жаба и шарп это отдельным мир. И вот, возвращаясь к сказанному, если выбирать между жабой, прокси языком по типу ts - котлином и шарпом, я выбрал бы шарп, просто потому, чтобы не нужно скакать по костылям синтаксиса джавы и её поверхностными фиксами, в виде котлина с новыми костылями и подводномы.
>подводномы
жуть какаяподводными камнями
тебе приходится юзать стдлибу котлина чтобы пользоваться котлином, чел.
У котлина нет стдлибы, у него сахарок поверх стдлибы явы. Но местами он карамелизовался и перекрыл доступ к стдлибе явы.
Не то, чтобы прям проблема-проблема, но неприятно. Косяки интеропа с явой - это реальная проблема для миграции существующих проектов.
ну так это же вполне можно назвать стдлибой
а про миграцию печально да, но косяки правятся, все предусмотреть невозможно, учитывая что они многие вещи сделали по-своему, так что либо терпим и переносим на котлин, либо терпим еще больше но на жабе
Либо плаваем в большом бассейне с водой, либо терпим и черпаем ложкой в новый бассейн "котлин"
https://kotlinlang.org/docs/reference/data-classes.html
>Data classes cannot be abstract, open, sealed or inner;
При этом такой код компилируется и работает
class Foo {
data class Bar(val x: Int, val y: Int)
}
Как так?
Это не inner, это nested. Отличие в том, что inner имеет доступ к экземпляру содержащего класса.
Иными словами Nested - это аналог static класса в джаве.
Спасибо.
Всем привет, неофит в треде
Есть один цикл
Есть массив из нескольких элементов
Мне нужно по определенному принципу часть элементов отсеять и перенести в другой массив
Выглядит это примерно следующим образом
https://pastebin.com/rN7457Re
Для каждого type будет несколько элементов i, которые нужно выкинуть
И всё работает
Но что, если для какого-то type будет 100 элементов. Запись и так выглядит громоздко. Как можно авторитетно и по красоте написать?
В идеале это всё в функцию засунуть, и потом просто вызывать эту функцию, да? Как это лучше сделать? В другом файле и импортировать функцию?
>Для каждого type будет несколько элементов i, которые нужно выкинуть
Вот это, непонятно. Как тип связан с элементом массива?
>>1843094
type никак не связан, это сторонняя переменная, которая приходит из другой части кода.
Если будет удобнее, это сигнал от свитч-кнопки. По замыслу творца выключение свитч-кнопки должно убрать из общего пула (речь про массив) несколько значений, которые имеют определенный индекс в массиве (как раз несколько значений i)
Я бы объявил
val filters = mapOf<Type, Set<Int>>()
Где Type это енум с типами кнопок, который можно нажимать. А Set<Int> это значения которые связаны с конкретным типом.
Извините, я неофит
А можно какой-то пример с картиночкой?
Желательно к этому же самому примеру
Просто mapOf - это же пара ключ-значение, много пар, вернее. >дубликаты ключей не допускаются, значения могут быть одинаковыми
Из документации, а у меня на 1 ключ (у тебя в примере type стоит как раз на месте ключа) будет прямо много значений
Хотя, если подумать, можно как ключ использовать i, а значение - значение type.
Звучит вроде бы даже логично, только не очень понятно, как теперь жить с этим.
Извините за тупость, но я нихуя не понял
enum class Type {
TYPE1,
TYPE2
}
Но ведь у каждого type (в моем примере) два значения 0 или 1, в зависимости от которых и выполяется / не выполняется условие
>fun filter
Я слишком слаб, но я не понял ничего после этого
Но там нет if, и нет while
Получается, что это только функция, для дальнейшего использования её в цикле?
Глобально: есть ли какие-то способы (желательно простые, как показывает практика) сделать вот это
>>1843019
Продублирую ещё раз пастебин
https://pastebin.com/rN7457Re
как относительно лаконично записать это, если количество i будет не 3, как в примере, а 100?
Всем привет
Есть такая конструкция:
name1 = nameplayer1.getText().toString()
color1 = spinnerplayer1.getSelectedItemPosition()
По сути нужно писать подобное + еще пару переменных для каждого игрока.
Есть ли способ как-то сократить это? Например, foi i 1..x name$i -=..
Но такую запись не принимает.
Как модно молодежно сделать?
Пока писал, посетила мысль забить всё в массив и доставать по номеру игрока. Норм тема?
Даже если бы такая возможность была - нахуя? Как потом такой код читать, чтобы в нем разобраться? Какие-то переменные, которые хуй пойми откуда взялись. Пиши нормально, как у тебя сейчас в посте.
Тебе тут нужно работать со списком.
тут вопрос к дизайну твоего приложения, че это за хуйня
а вообще есть прикол с декомпозицией, но он опять же работает только с нормальным дизайном
val a, b, c = objectThatGetsDecomposed
как-то не очень по индексу из массива доставать конкретных игроков, а если где-то ошибся и вбил не туда данные другого игрока, например?
как можно поменять проджект-нейм без помощи гредл.сеттингс?
как может получатся разный artifactId когда я вызываю publish и publishToMavenLocal ? всю репу засрал уже.
конкретно: мне нужно в артифакт-ид указать версию некой либы, ее я храню в buildSrc, поэтому в gradle.settings не могу просто прописать
rootProject.name = "myname-${Vers.liba}"
(т.к. сеттингс подгружаются раньше билдсрц)
Ну окей, я в MavenPublication указываю artifactId какой мне надо, на локали публикуется все как надо, а при деплое в удаленную репу (gradle publsih) используется имя из гредл-сеттингс
Покажи код, где ты объявляешь публикацию в удалённую репу
Пример https://pastebin.com/wmg8wZar
хотелось бы избавиться от matchGroup потому что посл создания регекспов она уже не нужна. Можно конечно через let сконвертировать в регулярки, но получается нечитаемая ебанина в реальном коде, логики больше.
Почему шиза то? Есть явный вызов анонимной функции, все норм вроде
Насколько я понимаю, сейчас есть две книги которые есть смысл читать.
1 - Kotlin in action (норм)
2 - Kotlin. Программирование для профессионалов (такое себе)
Волшебство Kotlin :-)
котлин победил дно
> корутины с synchronized работают через жопу
> интероп с джавой через жопу (см. MutableMap)
> говнище в синтаксисе вида companion object
> ахах ваша скала мертвая)) в котлине лучше интероп с жавой))
Каково это, пользоваться поделием шизика в медицинском смысле Бреслава?
Сейчас тебе скажут, что хабр помойка, что там все говноеды и вообще не правы.
> корутины с synchronized работают через жопу
Ну так они работают, потому что разработчики Котлина ленивые жопы. А так-то препятствий нет, можно даже на этапе компиляции заменять @Synchronized на synchronized() {}.
На самом деле, что не может сделать Котлин так это блокируюший IO заменить на неблокирующий. А вот Project Loom - может. Но Котлин тут и уже работает, а Loom там далеко и неизвестно когда будет.
Блин, они эту жопу 5 лет писали. При том что новых идей то и не было.
Мимо слился с котлина, когда увидел какую жопу они с асинк авей придумали и понял, что они намеренно будут делать всегда по другому, по своему и максимум под IDE.
Ну вот, вероятно из-за твоих постов заменили руководителя проекта по котлину
https://blog.jetbrains.com/kotlin/2020/11/roman-elizarov-is-the-new-project-lead-for-kotlin/
Правда котлину это уже не поможет.
Появилась вкусная возможность перекатиться на шарп что я и сделал. И решил полностью выкинуть экосистему джавы из своей жизни. Поэтому перекатывайте этот котлин сами.
Фулл-перекат получился не по причине фанатизма к новой платформе, а просто потому, что выгорел и в какой-то момент осознал, что вокруг жабы создан переоцененный пузырь восхваления, не соответствующий действительности.
Жидбрейнс пишут на расте.
>>1862656
>и в какой-то момент осознал, что вокруг жабы создан переоцененный пузырь восхваления, не соответствующий действительности.
Даже интересно стало, через сколько лет ты в .Net разочаруешься. Думаю 2-х лет хватит, чтобы понять что это то же самое говно, только обильно посыпанное сахаром.
>Жидбрейнс пишут на расте.
Сейчас бы в 2020 до сих пор не знать о способе пиара на модных и молодежных языках, чтобы твою компанию где-то чаще упоминали.
>...то же самое говно, только обильно посыпанное сахаром
Тут речь не про синтаксис и сахар, а то что технология сидит на легаси в тырпрайзе и востребована только по инерции ну еще андроид палкой теребит.
В итоге получаем 100500 кривозадейзаненных с оверхед кодом библиотек с мантрой о том что память дешевле разработчика.
>.Net разочаруешься
По крайней мере мягким не пофиг на свое детище, сам шарп активно развивается.
Предатель. Сначала в джава-треде котлин пропагандировал, теперь в собственном треде за дотнет топит. Дальше будешь пайтон форсить, а потом жс. Перебежчик!
Кому пиариться? Такого аутиста, который пишет на Яве/Котлине и не знает жидбрейнс еще поискать надо. Плюс не ты ли заявлял
>Раст уже так загубили.
?
>>1863899
>Тут речь не про синтаксис и сахар, а то что технология сидит на легаси в тырпрайзе и востребована только по инерции ну еще андроид палкой теребит.
>В итоге получаем 100500 кривозадейзаненных с оверхед кодом библиотек с мантрой о том что память дешевле разработчика.
Так при чем тут язык, это на любом проекте так может быть. Смотри на компанию, проекты, отношение к коду. Или ты такой наивный, что веришь что язык волшебным образом решает проблемы с разработкой?
>По крайней мере мягким не пофиг на свое детище, сам шарп активно развивается.
Что принципиально нового появилось в последней версии? Сахар не в счет.
Коботлин.
Питон уже давно ненавижу. У этого говна пузырь куда больше чем у джавы. Жс же, говно прибитое к браузеру, куда без него.
>Так при чем тут язык
Язык как всегда не причем, это программисты плохие. К сожалению джава действительно не плохой язык, но отделить его уже от текущего стека, почти не реально. только на андроиде какие-то свои велосипеды сделали
>Сахар не в счет.
Синтаксис, наверно тоже не в чет, лол?
А вообще, объединение всех веток .NET под общий опенсорс.
Тред посетил гуру маркетинга, вы получаете +15 к харизме.
Чел ты по одному скриншоту делаешь выводы, что на самом деле раст не используется, а упомянут просто для пиара. Извини конечно - но ты полный мудак.
>>1865118
>Язык как всегда не причем, это программисты плохие.
Не программисты, а отношение к разработке - проджект менелжмент и все такое.
>К сожалению джава действительно не плохой язык, но отделить его уже от текущего стека, почти не реально.
Так стек это как раз вин - у тебя есть фреймворки и библиотеки на все случаи жизни. Например сравни билд тулы в яве и дотнете, дотнет так и сидит на копии Анта.
>Синтаксис, наверно тоже не в чет, лол?
У тебя десяток способов отфильтровать список и каждый использует что ему нравиться а еще там есть всякие подводные камни по части перфоманса. В результате в коде разброд и шатание.
>А вообще, объединение всех веток .NET под общий опенсорс.
Ну это как переезд явы на гитхаб - круто конечно, но простому разрабу до лампочки.
>Тред посетил...
Ппц ты тупой и никто не говорил что они не используют.
В предыдущей компании, несколько лет назад писали какой-то йоба-микро-сервис на го, чисто чтобы потом чел поехал на конференцию в мухажопинс и посветил там компанией.
Звездец, какие нынче программисты тупые и далекие от реальности, ты наверно еще и пони трахаешь? Ты из этих, одаренных? Да?
Если совсем тупой, поясню. Смысл в том, что у новых языков тесное сообщество и потом мимохер может сказать что, эта йоба-компания использует го. Как минимум они эту хрень хорошо запоминают, это что-то вроде внутренней победы, когда новый язык кто-то еще берет в свои ряды.
>В предыдущей компании, несколько лет назад писали какой-то йоба-микро-сервис на го, чисто чтобы потом чел поехал на конференцию в мухажопинс и посветил там компанией.
Пчел, ты хоть открой хх прежде чем писать такую хуйню. Го — это новый пхп, количество вакансий на нём прирастает чуть ли не по 20% каждый год. Хотя в реалиях какой нибудь челябы где самая новая технология это дельфи 7, наверно это вообще эзотерика.
>>1865869
Ну, не все в курсе реалий твоего мухожопинска, держи в курсе, очень интересно.
ЖБ — явно та компания, которая нуждается в такой хуйне. Там же не работает куча народу, и какая нибудь команда не захотела просто пощекотать себе анус, ведь им манагер запретил бы как тебе в твоей галере на 7 человек, ты наверно вот так мыслишь?
>>1865291
>Ну это как переезд явы на гитхаб - круто конечно, но простому разрабу до лампочки.
Пока он не захочет поковыряться в исходниках, с тем, как они показывали исходники раньше, можно было разве что анус себе поковырять. Хотя у тебя программирование наверно заканчивается на крудах.
>В предыдущей компании, несколько лет назад писали какой-то йоба-микро-сервис на го, чисто чтобы потом чел поехал на конференцию в мухажопинс и посветил там компанией.
Пиздец маняпроекции - где-то, когда-то использовало язык потому что модно, и теперь из этого следует что все так делают.
>Пока он не захочет поковыряться в исходниках, с тем, как они показывали исходники раньше, можно было разве что анус себе поковырять.
Не ослил склонировать проект из меркуриала, но всем пиздит что правит баги в JDK.
> в реалиях какой нибудь челябы
Не гони на челябу, у нас тут даже на Скале одна контора пишет например правда руководство там пидарасы, кидающие при увольнении на деньги
>но всем пиздит что правит баги в JDK.
Я написал "почитать", а не "контрибьютить". Ты возможно язык плохо знаешь, но залезти на гитхаб и поскролить файлики и вдрачиваться в проект для работы — это дохуяразные вещи.
>>1866185
Да не использовали там из-за этого, просто кто-то взял и затащил. Если бы реально хотели пиарится — сразу бы на гитхаб выложили и пошли по конференциям, а не выжидали бы несколько лет, лол.
>>1866254
>у нас тут даже на Скале одна контора пишет например
А в дс 300 таких вакансий, перегнали, чего сказать.
>правда руководство там пидарасы, кидающие при увольнении на деньги
Вот это кстати звучит как план — заманиваешь хипстерскими технологиями и не платишь бабулес.
>Я написал "почитать", а не "контрибьютить". Ты возможно язык плохо знаешь, но залезти на гитхаб и поскролить файлики и вдрачиваться в проект для работы — это дохуяразные вещи.
Это прям какой-то феерический уровень аутизма, быть достаточно тупым чтобы не суметь сделать hg clone, но при этом поскролить файлики на гитхабе где нет даже go to declaration нет и что-то там понять.
>Сказал так, будто его пидоры загубили а не оптимизация зп сео расходов в мозиле.
Тут какой-то анон ванговал в раст тредах (года 4 назад), что скоро вышвырнут всю эту хипстер компашку, которая проедает бюджет. Так, собственно и вышло, только не так сразу.
Ну раз уж ты скозал.
>где нет даже go to declaration нет
Вот это я понимаю жавадауна прорвало.
>и что-то там понять
Скажу тебе больше — я половину времени вообще в виме работаю, кек.
>>1866692
Анон в треде просто пердел, подобные вещи угадать невозможно тащемта. Можно с тем же успехом так срать про все новые технологии и потом сказать "а я знал!1" когда 1 из 100 осталась без финансирования.
Алсо, судя по регулярным обновлениям
https://github.com/rust-lang/rust/blob/master/RELEASES.md
спонсоров хватает и всё у них в порядке.
master в main так и не переименовали в основном репозитории)0 или зеленоволосых лгбт-борцунов выгнали нахуй уйдя из мозиллы?
-Хипсторы постоянно гробят чужой бизнес, просерая все полимеры.
-Мозила набирает толпу хипстеров для нового проекта.
-Последствия предугадать невозможно, это ультра сложная логика, анон просто угадал.
Я как-то смотрел конфу, там хистероды рассказывали как взяли на нагруженный проект питон. И блин, неожиданно, спустя мясацы и тонны денег заказчика, оказалось, все тормозит и жрет ресурсы аки монстр.
Но хистеров было не остановить, они там что-то подкрутили, что-то заменили и таки смогли на последнем пуке заставить пистон работать, о чем собственно и конфа.
Самое забавное, они даже не поняли где их ошибка в ДНК и зачем они вообще сову на глобус натянули.
>Скажу тебе больше — я половину времени вообще в виме работаю, кек.
Я ему говорю, что через веб морду репозитория нихуя толком не посмотришь, он мне рассказывает что сидит в виме, в котором и go to definition и прочие функции по работе с кодом есть. Ну не мудак ли, а?
Ладно иди в хуй аутист, не буду дальше с тобой спорить.
>ммаааааммм ну я жи скозааал!11
>go to definition и прочие функции по работе с кодом есть
Без изъёбств по превращению его в иде там go to definition уровня браузера с ctrl-f, что ты несёшь-то, уебан?
>Ладно иди в хуй аутист, не буду дальше с тобой спорить.
Сказал так, будто можешь спорить а не серить себе штаны.
Когда все начали массово переписывать андроид-проекты с котлина обратно на жабу.
Пруфы?
С приходом вебассембли и полной замены html на этот вебассембли, ты эти перделки и не вспомнишь.
Но суть не в этом, а в том, что современную вебу они не нужны. Как бы это не было странным, но современный html и жопоскрипт самодостаточен и не требуется каких-то фреймворков которые как-то по своему тупо хранят состояния и реализуют jsx, который один в один как html.
> С приходом вебассембли и полной замены html на этот вебассембли, ты эти перделки и не вспомнишь.
Ещё лучше.
> Но суть не в этом, а в том, что современную вебу они не нужны. Как бы это не было странным, но современный html и жопоскрипт самодостаточен и не требуется каких-то фреймворков которые как-то по своему тупо хранят состояния и реализуют jsx, который один в один как html.
Суть хуякта в том, чтобы делать любые действия на странице, вообще её не перезагружая. Отсюда вытекает любимый жопаскриптерами "компонентный подход", который лишь следствие того, чтобы обозначить, что именно переренеривать на странице при обновлении, причём таким образом, чтобы не получилась неподдерживаемая лапша. Ну а jsx - это просто сахар, чтобы вместо document.createElement() писать </>. Конечно, всего можно добиться без хуякта, но через время выяснится, что в проекте он просто изобретается с нуля.
>Суть хуякта в том, чтобы делать любые действия на странице, вообще её не перезагружая
Некуясе, а парни то не знали это, перезагружали раньше страницы без ректала. Как такое может быть?
>компонентный подход
Тебе уже дали более менее нормальный ООП в жс.
>но через время выяснится, что в проекте он просто изобретается с нуля
Макертинговый буллшит. Ладно этим деньги платят, вы то зачем бесплатно это разносите.
Коклин?
Пишу из 2023. После того как майкрософт стал спонсором фонда и основным контрибьютером раста, все пишут только на нем. С++ вымирает. Дизайн веба происходит только на вебассембле, HTML DOM даже не вспоминают. И кстати нормально портировать JVM на новую мобильную платформу так и не получилось.
Мимо, пилю 3D сайт в браузере на вебассембли.
как вам?
org.telegram:telegrambots - либа
https://pastebin.com/ybREecd1 - рабочий жаба код
Это пиздит. Я из 2025, и ещё года три назад с растом все закончилось тем, что из него в кресты притащили опциональный боров-чекер, и на этом моменте раст перестал быть нужен
Готовыми либами такое хоть в крестах легко сделать, так что будем дальше хейтить кокотлин.
ты хоть на скрины бы посмотрел, дурной. тут видно что джава-код работает без проблем. а при абсолютно таком же кейсе котлин заглатывает + не компилируется.
Там дженерики нахер не вперлись, у метода сигнатура
execute(Method method)
дженерики в возвращаемом значении, которое тут не используется.
Загнется html DOM, загнется и js, утянет и typescript.
Будет, конечно, попытка с продвинуть с .Net, но будет как всегда поздно.
Конечно, работа то еще будет по старому html и прочему, но кому это надо, когда у тебя интерактивный сайт или почти полноценная сетевая игрушка в браузере.
С++ по инерции долетает последние десятилетие. Скоро станет ясно, что раст или ему подобные языки делают разработку большого ПО надежнее, а значит дешевле.
Нет, не станет :) Просто вы, бесплатные долбоёбы, как всегда сделаете за серьёзных дядек всю грязную работу по написанию библиотек, чтобы они потом пришли на всё готовое. А потом эти дядьки вместо вас, капризных, наймут за объедки с айтишного стола вьетнамских макакенов, которые наводнят ваши репозитории таким отборным говном, что у вас попчанские сожмут водород в гелий и вы из своих растов разбежитесь в слезах.
Бери да используй. У тебя bounded type parameter который не зависит от аргументов. А в твоем коде косяк именно с аргументами.
Ты сконвертил автоматом код из явы в котлин, там что-то не так сконвертилось и ты побежал радостно пищать, какой отстой котилн.
вместо пердежа лучше предложи решение. я с этой проблемой еблась 2 дня если что перед тем как на джаву переписать и забить на этот котлин)
>я с этой проблемой еблась 2 дня
давай фото грудей публикуй и марш на кухню!
дженерики-хуерики, понимаешь...
фак затроллили....
>пусть твой YobaAction интерфейс возвращает просто Method
так Method это дженерик typevariable
небольшой сниппет выпиши пожалуйста, прошу
Фронтендир не человек пытается вкатиться в серверную разработку почти с нуля. Изначально выбор пал на ноду, но чем больше с ней работаю, тем меньше нравится. Одно дело какие-то фронтендо-тулзы, другое кодать сервера на ней. Короч сейчас думаю попробовать запилить небольшой проект в учебных целях. Веб сокеты, полсотни юзеров, база данных и круд уровня списка товарных позиций. В моём случае проблема ещё в том, что хотелось бы чтобы это всё крутилось на недорогом VPS в докере. Собственно вопрос хватит ли Котлину 2Gb оперативки под обозначенную выше задачу или JVM не об этом?
Или лучше не тратить время и оставаться нододебилом?
Собираюсь задать тот же вопрос в Го-треде
Ну ты выложи хоть какой нибудь пример который можно в IDE вставить, подкоючить библиотеки и проверить. А ты выложила скриншот и ебитесь.
>Собственно вопрос хватит ли Котлину 2Gb оперативки под обозначенную выше задачу или JVM не об этом?
На какой нибудь условный петшоп - хватит.
так пейстбин же ну...
https://github.com/VayKekaz/telegram-bot-test
скретчи не включила, они уже на пастбине лежат
https://discuss.kotlinlang.org/t/type-mismatch-capturedtype-expected/20205
апдейт. проблема решена костылем. к котлину после этого я конечно же больше не вернусь.
алсо зацените две пикчи. смешной язык коклин.
Мне было лень читать, но как я понял, проблема была в том, что ты перепутал нуллабл тип с не нуллабл? Причем тут котлин, когда главная ошибка это ты?
Но я согласен что котлин просто не нужен.
так если тебе лень читать зачем ты мне хуйню какую-то пишешь? лишь бы попиздеть не вникая в вопрос......
Не, такого я не чувствую к себе, а вот к тебе да.
Любой язык - калл, ибо невозможно сделать такой, который будет нравиться всем.
Но местных вкатывальщиков нужно дизморалить целенаправленно, потому что они не понимают назначение котлина и за каким-то хуем вкатываются в него первым языком.
>Но местных вкатывальщиков нужно дизморалить
Для меня это не первый язык...
но вобще, как первый язык этот получше тех же плюсов
Раз не первый, значит, уже понимаешь, что к чему, и есть иммунитет к толстоте "котлин говно".
Ну вот ts, как бы на пару моментов лучше js, но в реале в js многое пофиксили и типизации через доку хватает. То есть вроде и лучше и вроде и нахер не нужен.
Прокси языки обречены.
Elixir вытеснил Erland, Swift - Objective-C.
Вот доведут Kotlin native до ума, может Андроид постепенно откажется от совместимости с Java и будет полностью нативным.
>Elixir вытеснил Erland
Где-то, когда-то, ненужное говно вытеснило ненужное говно.
Ну офигеть истории успеха.
>Swift - Objective-C
Лол, там на чем скажут, на том и будешь писать.
Если котлин вытеснит джаву, джава за собой утащит все jvm языки.
>Вот доведут Kotlin native до ума
Осталось немного потерпеть. Подумаешь, прокси язык делали 5 лет, через 15 и на нейтиве попишем!
>может Андроид постепенно откажется от совместимости с Java
А может когда-нибудь Юпитер поменяется местами с Сатурном.
>будет полностью нативным
Тут раст не могут натянуть на плюсовиков, а вы еще криво-фиксо-синтаксическую джаву им хотите дать. Ага. Успехов.
Рыночная доля андроида... легион готовых специалистов на текущей платформы... тоны кода и приложений... тьма хардварных и софтверных компаний заточенную под андроид.
-А, давайте, все помножим на ноль и поставим фуксию?
Нет, бро, так это не работает. Fuchsia - реально тестовый полигон. Иначе ваш андроид еще и форкнут. поэтому туда всякую экзотику и тянут типа дарта и раста
>Elixir вытеснил Erland
Да нихуя он не вытеснил, просто новые проекты пишут на элексире охотнее.
>Swift - Objective-C
Та же ^ ситуация, но если проект писался 3-5 лет назад, есть жёсткие требования по размеру приложения (или это SDK, у которого они есть по умолчанию) или необходимость бриджить плюсовый код — то и новые проекты даже в 2к20 пишут на obj-c, лол.
>Где-то, когда-то, ненужное говно вытеснило ненужное говно.
>Я не слышал - значит ненужное говно.
>>1884655
>Лол, там на чем скажут, на том и будешь писать.
Сейм шит с Андроидом, скажут что ART деприкейтед и через 5 версий дропнем - будешь писать на чем скажут.
>>1884657
>Осталось немного потерпеть. Подумаешь, прокси язык делали 5 лет, через 15 и на нейтиве попишем!
Ты юзаешь какой-то сайт или приложуху, но ты же не знаешь что там за код. Котлин JVM уже достаточно широко распространен в бекенде, что бы ты каждый день юзал что-то написанное на котлине.
>Тут раст не могут натянуть на плюсовиков, а вы еще криво-фиксо-синтаксическую джаву им хотите дать. Ага. Успехов.
Наверное потому что они и не ставили перед Растом цели занять нишу С++ за 3 года.
>>1885463
>Да нихуя он не вытеснил, просто новые проекты пишут на элексире охотнее.
Ну так это и означает что вытеснил, понятно что легаси говно мигрировать на Эликсир никто не будет.
Тот момент когда вроде пытался ответить, но поговорил сам собой.
1) В мире непопулярного экзотического говна, может происходит все что угодно. Нормальный же пример популярного прокси языка, который смог потеснить, но не вытеснить это С и С++.
И то, это было в эпоху бедности самих нормальных языков и доступных инструментов.
2) То что у эпла там свой мир разработки, это факт. Ты просто привел неуместную аналогию, вместо контр аргумента.
>Ты юзаешь какой-то сайт или приложуху, но ты же не знаешь что там за код
Как это вообще пересекается с темой котлин нейтива? Какая-то шиза.
>Котлин JVM уже достаточно широко распространен в бекенде
Я видел данные что распространен в бэкенде php и asp. Джава же томиться в тырпрайзе, на уровне кобола со своим представлением бэкенда и со своими правилами большого бизнеса.
>Наверное потому что они и не ставили перед Растом цели занять нишу С++
Ну еще нам расскажи чего нового.
Ты серьезно веришь что котлин нейтив сможет встать в противовес расту?
Попытка котлина полезь в нейтив, вместо того чтобы делать свой бэкенд инструментарий, чтобы не тянуть легаси либы джавы. Это провал. Теперь котлин и не в бэкенде и не на нейтиве. А поезд хайпа уже ушел.
Да и вообше кому нужен фиксо-синтаксис джавы людям из нейтива и не нужен. только если в противовес свифта поставить
Операционные системы очень долго пишутся.
У Евгения Федотова спрашивал?
>Как говорят мои товарищи, языки не имеющие полноценную кросплатформенность, языками программирования называть нельзя.
Для бэкенда Swift вполне кроссплатформенный. Примерно на уровне Go.
>>1827734
>Те, кто его тыкал, говорят, что там ненастоящая статика, то ли из-за any, то ли там можно вызвать несуществующий метод, хуй знает.
Нормальная там статика в strict режиме. Получше чем в Java с её null'ами. Да, из-за того что TypeScript по-дефолту компилируется в JS почти без оверхеда (в runtime только enum'ы остаются) у него нет нормального RTTI, но во-первых его можно добавить, во-вторых RTTI у многих языков со статической типизацией нет по-умолчанию, начиная с того же Haskell.
>Для бэкенда Swift вполне кроссплатформенный
На бумаге есть для маркетинга, а на деле такие костыли, что ну его нафиг.
>Нормальная там статика в strict режиме
Это статика бесполезна, так как сам js это не какой-то байт-код. И вообще не надо путать байткод и промежуточный язык.
>почти без оверхеда
Обычно на этих "почти" все просадки и получаются.
>Получше чем в Java
Компетентность просто зашкаливает хотя не удивительно, js девелопер
Дефайн "полноценность" кроссплатформы.
Вот жава/пхп/питон — кроссплатформа же? Но на iOS приложения на них не попишешь (а если и попишешь — то будет что-то уровня свифта под виндой). Это делает их полноценнее/неполноценнее?
У того же котлин/нейтива просто пиздец с многопоточностью (и костылями с моделью памяти иж жавы, вроде крашащихся констант в рантайме) примерно везде, костыли тоже требуются адские. Он "полноценно" кросплатформенный, или "с пиздец какими костылями", как свифт?
Всех с наступившим!
Котлинисты, помогайте
Неофит, вкатился недавно, пытаюсь разобраться
Подскажите по arraylist-у
Дабы не захламлять кодом
https://pastebin.com/iTa1kq7A
Хотя бы направление, был бы очень признателен
МБ написал скомканно, да и не поменял всё, подправлю:
Интересно, почему на этапе
private var mObjectListStart: ArrayList<Object>? = null
for (Objec in mObjectListStart!!) {
if (Objec!!.part ==2) { //тут пишет, что все норм, и 2 == 2
mObjectListEnd?.add(Objec) <<<<<<<<<<<<<<<
}
интересно, почему на последнем этапе этот самый add не происходит, и mObjectListEnd все так же null
Выражение mObjectListEnd?.add(Objec) означает следующее:
- взять объект mObjectListEnd
- если он не null, вызывать его метод add, передав ему Objec
Поскольку у тебя изначально в переменную mObjectListEnd присваивается null, и никога после не присваивается ничего другого, то ее значение так и остается null, и следовательно метод add никогда не выполнятся.
Присвой переменной не null значение вначале:
private val mObjectList: ArrayList<Object> = ArrayList<Object>()
Поскольку оно объявлено как не-нуллабл ArrayList, то и ?. теперь не нужно использовать для вызова его методов.
>Обычно на этих "почти" все просадки и получаются.
Ты ведь не знаешь как и во что компилируется TypeScript? Компиляторы TS генерируют объекты для enum, больше они не генерируют ничего.
>Нормальная там статика в strict режиме
>Это статика бесполезна, так как сам js это не какой-то байт-код.
Статика нужна для контроля ошибок на этапе компиляции. Если ты думаешь что итоговый JS код будет медленнее работать из-за того, что какой-нибудь V8 не будет иметь гарантии того, что тип не может поменяться в рантайме, то можешь успокоится. Все современные движки считают по умолчанию, что тип переменной не меняется. И только при изменениях в типе делают песcимизацию отдельной функции.
>Компетентность просто зашкаливает хотя не удивительно, js девелопер
У тебя сервер с NPE упал, подними. За три года на джаве я насмотрелся на её типизацию.
Как можно стать тобой?
Хочу что-то простое осилить в Андроиде.
Учил длительное время с перерывами питон, все ок, но перспектива роста туманна. Начал с++, но почитал про Котлин и загорелся. Какой шанс, что я обосрусь и скипну на начальном этапе Котлин не зная джавы?
где бы скачать курс? по котлину в андроид
Знание джавы вообще необязательно, синтаксис начнешь понимать сам постепенно (возможно вообще сразу как в котлине освоишься), а писать тебе на ней и не придётся.
Преграда тут только в мотивации. Если ты часто что-то с горячей головой начинаешь и быстро заканчиваешь (сам раньше такой был), то книжки тебе пока противопоказаны. Переходи как можно быстрее к практике. Смотри базовые видосы на ютубе и сразу делай что-то свое, коряво, из говна и палок, но делай чтобы хотя бы запускалось — ты должен видеть результат. Что не получается — сразу в гугл. И да, юзай только новые источники, минимум с конца 2018 года, не спрашивай почему.
Эта фича понравилась, в питоне выход через несколько циклов только через флаг вроде.
В общем, читаю Котлин для питонистов из шапки, пока всё нравится. Синтаксис прям очень походит на с++.
>Статика нужна для контроля ошибок на этапе компиляции.
Дрессированные ИТ-макаки, все у них ошибки с типами кругом мерещаться. Хватить уже распространять эту догму. Js это вообще пляска вокруг json данных (бесконечных хэш-мап/ассоциативных массивов). Это тебе не жаба где важно не перепутать одну фабрику с другой.
Часто пишете код в который работает с любой мапой? Код, которому нужны конкретные кючи в мапе уже имеет неявные типы, которые ты должен трекать сам, без помощи компилятора. Я за последний год работы с кложурой нажрался динамической типизации, спасибо.
>Эта фича
Эта фича из Явы скорее всего, они её придумали, чтобы уйти от гоуту, который в C/C++ часто использовался как раз для этой цели.
В принципе жаль, что во многие другие языки эту возможность не подогнали.
Потому что не надо ассоциативные массивы юзать как структуры (объекты). У тебя дерево данных и ты тупо просто берешь/кладешь туда данные, без необходимости куда-то что-то прокидывать (сами же деревья описываются при описание json'ов).
Можно как-то перефразировать, а то я нихуя не понял на что ты отвечаешь?
думаю он имел ввиду, что вместо того чтобы использовать мапы нужно использовать классы.
Не нужно ассоциативные массивы (мапы, словари), использовать как объекты (классы).
Динамическим языка вообще ООП не нужен (так как типизации переменных нет вообще).
Например, в пхп есть интерфейсы, причем появились еще до тайп-хайтинга. Зачем? А хз, модно, молодежно.
И тут вот когда статико-макака приходит в мир динамичного программирования, он начинает писать как умеет в статике и естественно начинает страдать, потому что (ВНИМАНИЕ) динамичная типизация это не статичная.
>Не нужно ассоциативные массивы (мапы, словари), использовать как объекты (классы).
Что ты предлагаешь использовать когда тебе нужна коллекция именованых значений? В питоне для этого есть классы, в кложуре их нет, и там идиоматично использовать мапы в которых ключи - keywords ({:x 1 :y 2}).
>он начинает писать как умеет в статике
Да идиоматичную кложуру писал, при чем здесь статика?
>>1911818
Вроде нет, хотя все еще сложно понять что он сказать хочет.
Кто тебе сказал что надо отказаться от мап? Тебе сказали, выкинуть ООП мышление и использовать мапы как дерево данных. Забавно, в java сейчас есть правила делать состояния без поведения, а поведение без состояний. Получается такое процедурное (или как модно - функциональное) программирование.
У меня в 2006 году на пхп был подобный проект. В динамических языках туго с параллельностью и они могут себе позволить такие глобальные состояния.
У этого подхода свои плюсы и минусы, но именно так изначально задумывались динамические языки.
Конечно, сейчас набегут дрессированные макаки, которые скажут что глобальные состояние это плохо (но не один не объяснит почему), но на самом деле ты так или иначе используешь их в своих программах. Даже питонщик или гофер может подключать модуль с состоянием, или жабер использовать синглетоны, или же сервис с состоянием, или же инжект объекты из DI (IoC), что тоже завуалированное глобальное состояние.
>Хотя все еще сложно понять что он сказать хочет.
Конечно сложно понять, вы же новое поколение узко-мыслящих ваннаби-программистов.
Вы же ~2010 году снова открыли no-sql базы данных и протанцевав на граблях повторили путь программистов из восьмидесятых. Ваша эволюция идет по кругу, не удивлюсь, если кто-то запустить тему из динамических языков нулевых и скажет как это круто. А потом следующие поколение придет и навяжет ООП.
>Кто тебе сказал что надо отказаться от мап
>Не нужно ассоциативные массивы (мапы, словари), использовать как объекты (классы).
Да хуй с этим классами, что мне использовать для колелкции именованых значений? По ключам в мапе значения брать?
>инжект объекты из DI (IoC), что тоже завуалированное глобальное состояние
Ты что там, пьяный блять?
>no-sql базы данных из восьмидесятых
Расскажи, интересно же.
>коллекции именованных значений
Что ты за этим термином выдумал?? Коллекция, то есть набор, это же и есть мапа? Не именованная коллекция это список, именованная словарь/мапа. Вот как у тебя голове?
>что мне использовать для колелкции именованых значений? По ключам в мапе значения брать?
либо классы-репрезентации этих структур данных, либо мапы, да.
>>инжект объекты из DI (IoC), что тоже завуалированное глобальное состояние
>Ты что там, пьяный блять?
обалденный ответ на абсолютно правильное утвеждение, di по своей сути является использованием глобальных переменных, то есть глобального состояния
> di по своей сути является использованием глобальных переменных, то есть глобального состояния
я другой анон. но ты точно пьяный
>обалденный ответ на абсолютно правильное утвеждение, di по своей сути является использованием глобальных переменных, то есть глобального состояния
Я тоже другой анон, но мне кажется ты или ебанат, или работаешь на проекте с ебанатами, которые занимаются каргокультным макакингом, не понимая сути.
Как DI вообще связан со стейтом? D::D:DW;DDD
Достоин ли он быть better java в любой сфере, там например крудичи или энтерпрузич пилить на нём реально, или ебень? Или котля онли для мобилок?
Реально конечно. Только вот энтерпрайз — самое закостенелое говно, где ничего нового никому ни под каким предлогом не нужно, на что юзание кобола вэтой сфере 2к21 как бы намекает.
Короче, энтерпрайз почти полностью — это древняя версия жавы и лучшего там никому не надо, так что именно в энтерпрайзе ни котлин, ни любой другой язык не полетит.
>либо мапы
Ну так вот, у этого подхода (дефолтного в кложе), по сравнению с обычными структурами есть две проблемы
1) Тип выражения map["key"] не известен (ну да ладно, у нас же все равно динамическая типизация).
2) Мы не знаем, какие ключи есть в мапе. Это превращает в пиздец многие рефакторинги, которые были бы тривиальными со структурам, а также затрудняет понимание кода - по сути многие функции имеют сигнатуру map[keyword, object] -> map[keyword, object] и что там в действительности передается можно понять только заглянув в их код.
Это не выдумки, год это говно жрал (и иногда до сих пор прихлебываю). Хотя в теории это все элегантно и просто, на практике это работает только если ты можешь держать почти весь код проекты в голове, то есть если он не большой (не больше нескольких тысяч строк), ты работаешь почти исключительно с ним, и рядом с тобой рабоатет еще максимум одни человек, а желатедьно вообще никого. По сути, кложа очень хороший язык для каких-то пет проектов или утилит для личного пользования вроде https://github.com/jepsen-io/jepsen.
>Мы не знаем, какие ключи есть в мапе
Что мешает юзать спеки в функциях которые этот map принимают?
Причём, мне нравится идея, что нам не нужно всю картинку, каждая функция должна описывать что конкретно ей из этого map нужно.
Вообще реально хорошая речь
https://www.youtube.com/watch?v=YR5WdGrpoug
Ничего не мешает, много где и юзаем. Проблема в том что это эрзац системы типов - боилерплейта становится много, вывода типов нет, компилятор типы не проверяет, экосистема в целом типы не поддерживает - они именно для твоего кода и еще наверное забыл что-то. Единственное преимущество - можно проверять произвольные условия, но это отчасти решается в типизированных языках введением новых типов, которые поддерживают свои инварианты.
>Вообще реально хорошая речь
Хорошая. У него вообще много хороших речей и мыслей, но это не делает кложу оптимальным выбором для промышленной разработки. Может в команду звезд вроде него самого и зайдет, но это слишком высокая планка.
Че за шизик это придумал?
> Exceptions can be seen as GOTO statement
Сейчас у некоторых модно ругать эксепшены, вон в хипстерских язычках их уже вообще не реализуют. Попытка решить несуществующие проблемы, в результате всякие if err != nil вызывают ещё больше ненависти, чем checked exceptions. Даже заново изобретают стектрейсы через либы и кодогенерацию. Дивный мир.
Канонiчный пример от растошизиков (атмосфера лгбт-пидорасни прилагается): https://www.youtube.com/watch?v=rAF8mLI0naQ
Как обрабатывать иксэпшоны в котлине? Как не пропустить иксэпшон, ведь котлин отказался от разделения иксэпшонов как в джейве.
Это трап?
Я бы поняшил под хвост, лол. В жс вкатываться чтобы найти трапа не особо хочется, а вот раст мне уже начинает нравиться.
Только в котлине они все анчекд и компилятор тебя по рукам не бьет если ты забыл обработать иксэпшн...
Ну придумают какую-то магическую аннотацию @JvmChecked, хули, не впервой же. Ведь в джаве плохо сделали, надо все переделать.
Но моя изначальная претензия была не к этому. А к реально шизофренической хуйне в примере по ссылке.
Сюда редко заходят, потому что ничего нормального и не обсуждают. Скорее от скуки пытается кто-то что-то ответить.
Бэкенд на жабе, то еще жрущие ресурсы говнище, на котором еще и писать нудно долго. Адекватному анону такая шляпа вообще не нужна. Поэтому акромя телефон, котлин не интересен никому.
Если сама джава еще не плоха, то её бэкенд окружениепросто ужасно. Глупо поверх этого гуана писать прокси языки.
Э хватит, зачем я это учу тогда последние 2 месяца?
Кстати, на том же stackoverflow по котлину всего 55к вопросов, для сравнения, у java около 1.7кк.
В целом, мне язык нравится после питона, хоть ООП понял частично.
Для себя можно учить что угодно.
Если сравнивать питон и котлин, то котлин куда приятнее и удобнее (питон тот еще кусок перехайпленного говнища с одним системным потоком).
Если тебе для поиска работы на бэкенде, ну ты хоть спрос посмотри. Язык все еще "новый".
Если ты сам себе сайто-писарь. То я бы тоже котлин взял, нежели всякие го и шарпы.
Мне нравится котлин и джава как языки, хоть и джава устарела. Но мне крайне не нравится их окружения и некоторые де-факто стандарты в либах.
>Если тебе для поиска работы на бэкенде, ну ты хоть спрос посмотри. Язык все еще "новый".
Все последние вакансии которые мне присылали были Java/Kotlin. Да на чистом Kotlin не выедешь, но знание Kotlin это плюс, многие на него потихоньку мигрируют.
За долгие годы работы в компании я стал приверженцем того, что не нужно тянуть в рабочий стек все подряд, если это не даст ощутимый выхлоп. Котлин, кроме маркетинговых вскриков ничего не дает, вообще. Код, становится более путанный с кишками наружу из-за бесконечных лябд. Если раньше ты мог скипнуть метод по его названию и понять, примерно что он делает, то лесенку лямбд тебе придется прочитать всю, а это нереальный нагрузка читать все эти кишки алгоритмов.
Так что классическая джава даже лучше в сопровождение, несмотря на то что 60-70 кода это абстракции над абстракциями (что нормально для тырпрайза).
>Все последние вакансии
Слишком медленно это происходит и прошло уже много времени. Лично я вижу, что никакого чуда уже не будет, котлин займет какой-то минимум как скала или груви. может я и ошибаюсь, но все равно, нужно признать что все не так радужно. Когда они должны были бороться за бэкенд, они упоролись в нейтив, в js. Надо уже признать, что современный ЯП должен быть с богатой стандартной либой, а не страдать попыткой захватить все рынки
>За долгие годы работы в компании я стал приверженцем того, что не нужно тянуть в рабочий стек все подряд, если это не даст ощутимый выхлоп. Котлин, кроме маркетинговых вскриков ничего не дает, вообще. Код, становится более путанный с кишками наружу из-за бесконечных лябд. Если раньше ты мог скипнуть метод по его названию и понять, примерно что он делает, то лесенку лямбд тебе придется прочитать всю, а это нереальный нагрузка читать все эти кишки алгоритмов.
Как будто в Яве так нельзя если ты конечно не в сбертехе на 7-ке сидишь. Те же самые проблемы, недавно на код ревью принесли код где в Optional.ifPresentOrElse() на каждую лямбду был нормальный такой метод из 10 строк. И Ява никак этому не препятсвует, это вопрос качества кода, но он есть в любом языке.
Возможно, но у нас джависты старой школы и лямбды еще не прошли, а вот на котлине лямбды это веселом и молодежно, ставишь фигурные скобки и у тебя целая елочка если без иронии, то котлин это и есть лямбды, даже якобы целый DSL у них получился. Сейчас какую либу не откроешь, то везде лестница эта. В джаве если встречал лямбды, то это прям реально короткие однострочники (может мне везло)
Чувак, это монады! Антон выше уже примерно дал пример что это. Но в целом их нужно использовать, только когда собираешься эти ошибки показывать пользователю, примеру ресурса нету - 404. Но их не стоит использовать, как замену эксепшенов. Эксепшоны круто, особенно когда зафэйлится нужно быстро, а то монады они так и чейняться дальше, или выдавать системные ошибки. Тут вообще подробно описано:
https://fsharpforfunandprofit.com/posts/against-railway-oriented-programming/
Кстати, вероятно именно этот чувак популяризовал "шизу" с эксепшон монадами, но это не точно. На самом деле писать, если писать это, все становится понятней
Почему шиза-то? Обычная обработка ошибок в типизированных функциональных языках. arrow-kt вроде же как и делают для ФП на котлине.
Что ты тут забыл, сярпист?
Ну и тулинг, фреймворки?
Смотрю с дотнет-лагеря на ваш язык, внешне симпатичный, но необходимось в джаве отталкивает. Просто так учить скучно, лучше уж Раст или Хаскель попробовать, если как для хобби
>Котлин уже дошел до того, чтобы вакансии без него были?
Вакансия на котлин без котлина?
Или я не понял
Мне интересно
Ты не можешь внятно объяснить, что тебе надо. И хочешь, чтобы тебе с
>разнообразием конструкторов
и
>нормальные конструкторы делать
помогли. Иди ты нахуй с такими вопросами.
Ничего, язык больше не развивается.
Ничего и не случится. Мобилки остались за реактом найтив, а серверный рендеринг ушел в прошлое.
Это база
Очевидно на жопаскрипте
Есть современный шарп с .net core, хоть и вышел поздновато. Даже ОП свалил в шарп.
Слышал от своего упоротого линуксоида друга, что мс обратно объединили кор и общую ветку net framework, типа это прорыв и новая веха. Но на деле, он говорит, кросс платформы то нет и выглядит это так, что core просто закатали под шумок в net framework.
Не разбирался в этом, так как в реале всем насрать на этот net, в жизни видел его в мелких говноконторках где им конвертировали эксель таблицыв эксепшены и маня фантазии писать свои игры на чем играют инфоцыгани.
И да, видел жесть, как они xml/html теги ставят вокруг code doc комментариев. Более тырпрайзно надо еще придумать.
Мало xml, надо еще сделать вложение, я считаю
<dotnet>
....<system>
........<core>
........<mainSummary>
............<groupSummary_1>
.................<summary>
This is the method!
.................</summary>
............</groupSummary_1>
........</core>
....</system>
</dotnet>
> core просто закатали под шумок в net framework.
Лол, в огороде бузина, в Киеве дядька
> всем насрать
Вылези из своего деребаса
Причём с пачкой неймспейсов, которые никто не сможет запомнить и все будут копипастить.
Я другой анон, но скажу, что авторы не отрицали что они делают якобы хороший язык чтобы пиарить компанию.
И если убрать призму маркетинга, то видно что в язык просто натаскали вдохновились из других языков всякого модного говна, которое не очень иногда сочетается друг с другом ибо похрен.
>авторы не отрицали что они делают якобы хороший язык чтобы пиарить компанию
Не совсем компанию, а продукты которые она производит, т.е. IntelliJ IDEA и прочие ПХПШтормы. Котлин это язык-скам, лол.
Опенсорс
Помогло?
Я перекатился туда из-за перспектив и зп и даже вдохновился, как это бывает, но в итоге меня по факту обманули, так что уже слинял, причем без нахождения новой галлеры.
Не могу в целом судить язык по говноконторе, но шарп мне показался тем же динозавром что и java.
Надеюсь когда-нибудь наследование признают плохой практикой и забудем это говно ООП нет, конечно.
В действительности, сейчас нет не одного вменяемого и удобного языка, от которого можно получать удовольствие при разработке и сопровождении. И с учетом деградации индустрии программирования, такой язык мы увидим не скоро.
Пока есть деньги, думаю вообще слинять из кодинга, хз куда, но это неблагодарная профессия.
Но net core физически уже все. Никакой метафоры.
>сейчас нет не одного вменяемого и удобного языка, от которого можно получать удовольствие при разработке и сопровождении.
А как же божественный dartswift?
>фронтенд
С этими реактами и прочем, это раздутый пузырь. Да и там зумеров как говна, они сильно занижают стоимость работы при объеме знаний.
Нода выглядит больше как брак, зачем это брать добровольно в бэкенд и потом сопровождать? Ну поигрались и хватит.
Go, ну ты видел это? Столько бойлерплейта руками писать.
swift - популярен только в мак загоне, даже не смотрел на него.
dart - очередное непопулярное дно, вместе с го, котлином, растом и что там еще последнее время высрали. Зачем идти в непопулярные технологии?
>В действительности, сейчас нет не одного вменяемого и удобного языка, от которого можно получать удовольствие при разработке и сопровождении. И с учетом деградации индустрии программирования, такой язык мы увидим не скоро.
Детский сад.
>думаю вообще слинять из кодинга
А вот это здравая мысль.
>Детский сад.
Зачем отвечать пустым сообщением, не несущим никакой полезной информации, а лишь подчеркивая высокомерие на анонимном форуме?
Зачем самоутверждаться на анонимном форуме? пукнув и занюхав свои газы, выглядело бы куда интригующе
> Я перекатился туда из-за перспектив и зп и даже вдохновился, как это бывает, но в итоге меня по факту обманули, так что уже слинял, причем без нахождения новой галлеры.
Это как? Завтра собес, я даже не думал, что с ЗП могут опрокинуть. Съебу же
> Не могу в целом судить язык по говноконторе, но шарп мне показался тем же динозавром что и java.
Да, но новые фичи прикольные. Но свои минусы. Например, сделали шаблон служб, стандартный host проглатывает исключения и выкидывает их в main. Дебаг такого проекта – моё почтение. Резолв DI в таком шаблоне тоже с нюансами. Нахуя так делать? Вообще, ощущение, что многие вещи можно было сделать лучше
Это я так, набрасываю, потому что лучше холивара о языках в pr вряд ли что-то можно придумать
> Надеюсь когда-нибудь наследование признают плохой практикой и забудем это говно ООП нет, конечно.
Свои плюсы, свои минусы
> В действительности, сейчас нет не одного вменяемого и удобного языка, от которого можно получать удовольствие при разработке и сопровождении. И с учетом деградации индустрии программирования, такой язык мы увидим не скоро.
Скорее ты увидишь нейросеть, которая будет за тебя код писать. Языков куча, отличаются они мало в своих группах, выбирай, что ты хочешь, и дальше смотри, что больше зашло. Мне вот компайл-тайм проверки нравятся
> Пока есть деньги, думаю вообще слинять из кодинга, хз куда, но это неблагодарная профессия.
Мысль здравая, но я хз куда вообще слинять. Пока работаешь, забываешь, что большинство друзей вне айти либо работают за 25-45к, либо родители деньгами пробустили. Разве что трактор завести, чем я и занимаюсь потихой
Бывают конкретные претензии к языку: много бойлерплейта, много сахара который скрывает реализацию и приводит к протекающим абстракциям. А у тебя совершенно детские претензии
>вменяемого и удобного языка, от которого можно получать удовольствие при разработке и сопровождении
на которые нечего ответить кроме того - что ты инфантил, а в конце еще топнул ножкой:
>думаю вообще слинять из кодинга
>удовольствие при разработке и сопровождении
Ваши аргументы не аргументы, вот мои лучше!
Удобства от написания языка и удобства сопровождения, это самое важное из возможностей языка и вообще краеугольный камень. Если твой язык способствует лямбдо-писанине и ты потом видишь не внятные и удобные методы с понятными названиями, а вложенные лесенкой лямбды и их кишки наружу, которые нужно обязательно изучить, чтобы понять что в вообще тут происходит, то это серьезная проблема для языка прочитав название метода или его доку, чаще ты определяешь для себя что он делает и уже решаешь погружаться в него или идти дальше, с лямбдо-кишками так нельзя, изволь читать и понимать все
>что ты инфантил
Не имея возможности ответить по факту, ты спустился на планку ниже и сразу побежал определять личность, чтобы эта выдуманная для тебя личность помогла написать возвышающий ответ (опять самоутверждаемся на анонимном форуме). То есть, когда ты написал "Детский сад.", ты сам как ребенок недовольно брякнул, не имея полноценного взвешенного ответа, а когда я тебя этим подцепил, все что ты смог, это опуститься до личности.
Кстати про удобство написания, нередко приводят пример руби. Хз насколько это правда, а не высер фанбоев.
Нельзя дать полноценные взвешенный ответ, на высеры типа
>Удобства от написания языка и удобства сопровождения, это самое важное из возможностей языка и вообще краеугольный камень.
Удобство это на 90% дело привычки, ты привык к чему-то - тебе удобно, не привык - не удобно. Ты только сейчас, после того как тебя назвали инфантилом, ты смог что-то более менее конкретное назвать.
Лямбды - это инструмент который можно использовать не по назначению, как и любой инструмент. Тебе не нужно название метода для простой операции
.filter { it.rating > 0 }
а если ты начинаешь в лямбду пихать методы по 50 строк, то это твоя проблема, это ты пишешь плохой код, а не авторы языка. В любом языке можно написать нечитаемый код. Это трейдоф - чем больше возможностей тебе дает язык, тем больше способов использовать их неправильно. Чем меньше - тем больее многословный язык и менее выразительный, зато код читаться будет очень хорошо.
>все что ты смог, это опуститься до личности
Але чудик, это двач, не нравиться пиздуй на хабр.
Меня заебали ебланы, которые приходят сюда и ноют непонятно о чем. Одному конструкторы нормальные подай, другому удовольствие при разработке и сопровождении. Купите себе дилдаки и будет вам удовольствие.
>Удобство это на 90% дело привычки, ты привык к чему-то - тебе удобно, не привык - не удобно
Нет, не привычки.
>пишешь плохой код, а не авторы языка.
Классика, это программисты плохие, а язык хороший.
Нет, как раз лестницу лямбд я видел именно в котлине. В жабе я такого ни разу не встретил.
Да и вообще там много мелких моментов. Например импорт по звезде в других языках считается моветоном, так как на практике приносит некоторые трудности, но из-за непродуманности дизайна, в котлине это необходимость.
>после того как тебя назвали инфантилом
Как только ты спускаешься до личности и тем более к незнакомому тебе человеку, ты показываешь всю свою некомпетентность. Причем тебе уже два раза объяснили.
>Нельзя дать полноценные взвешенный ответ
Лол, так кто тебя вообще за язык тянул?
>Але чудик
Слив засчитан.
>Одному конструкторы нормальные подай, другому
Они еще там листы [] и мапы {k:v} красивые просрали. Теперь надо писать mutablelist и mutablemap. Как они вообще к этому пришли, лол.
100500 конструкторов. Спустя полгода я даже не вспомню как их все писать.
Такое ощущение что делали программисты без опыта работы, а потом начали присылать все возможные кейсы и они облепили вариантами.
Помню еще в первый день мне поднасрало отсутствие инициализации для родительского класса. Людям невдомек что для родительского класса нужно иногда сделать какие-то мелкие вычисления перед передачей в него параметров (пришлось прям в строчку загонять все это говно).
А, еще помню эту победу на статик полями. Сделали те же статик поля просто назвали по другому, по длиннее и неудобнее.
>Классика, это программисты плохие, а язык хороший.
Ты то точно.
>Нет, как раз лестницу лямбд я видел именно в котлине. В жабе я такого ни разу не встретил.
Я не встречал, значит такого не бывает - а потом обижается, когда его школотой называют.
>Как только ты спускаешься до личности и тем более к незнакомому тебе человеку, ты показываешь всю свою некомпетентность. Причем тебе уже два раза объяснили.
>Лол, так кто тебя вообще за язык тянул?
Тут можно мудака называть мудаком, это тебе не хабр или пикабу.
>Помню еще в первый день мне поднасрало отсутствие инициализации для родительского класса. Людям невдомек что для родительского класса нужно иногда сделать какие-то мелкие вычисления перед передачей в него параметров (пришлось прям в строчку загонять все это говно).
У тебя в голове полная каша и проблема с выражением мыслей.
В Яве а значит и в Котлине единственная инициализации для родительского класса это конструктор этого самого родительского класса. Если же тебе надо параметр переданный в конструктор как-то преобразовать для передачи в конструктор суперкласса, то можно просто объявить функцию.
>А, еще помню эту победу на статик полями. Сделали те же статик поля просто назвали по другому, по длиннее и неудобнее.
А что тебе религия не позволяет просто объявлять константы и переменные?
Как наивно.
Так в айти кроме чёрного и белого больше ничего нет
Котлинач, я чот тупой, и не могу представить - вот у меня есть многоуровневый массив ключ-значение, и есть нефиксированная строка типа "massiv[penis][lol][kek][2]". Как мне распарсить строку и получить доступ к этому последнему элементу массива, а если его нет, то вернуть null? В js, пистоне или php это просто, пушто это языки с динамической типизацией, а вот в яве и котлине я не смог разобраться.
Обмазывайся рефлексией, регулярками, antlr-ами и подобным.
Какую-то херню написал. Попробуй выразиться яснее.
Что за хурня
>многоуровневый массив ключ-значение
?
Что у тебя за строка
>massiv[penis][lol][kek][2]
что тут за члены и лолкеки? Тебе нехватает твердого, большого члена в жопе?
> многоуровневый массив ключ-значение
Это значит, что у меня есть ассоциавтивный массив, где в качестве значений выступают также ассоциативные массивы. К примеру, я json распарсил, и у меня получилось такое.
> Что у тебя за строка
> >massiv[penis][lol][kek][2]
Ну типа представь, что в massiv находится результат парсинга вот такого джейсон
{
"penis": {
"code": 12,
"value": [1, 2],
"lol" {
"kek":[15, 16, 17],
"kok":22
}
}
}
Результатом получения massiv[penis][lol][kek][2] будет число 17
Если строка будет, например, massiv[penis][code], то будет 12
Если строка будет, например, massiv[code], то такого значения там не будет, поэтому мы спокойно можем вернуть null
> нехватает твердого, большого члена в жопе
да
["key1"]maps["key2"]["key3"]
Если да, то с каким числом обхватов допустимо?
Не туда воюешь. Лучше подключи kotlinx.serialization или Jackson и сделай классов под свою жсонину, потом просто считай строку в нужный класс и всё заебись будет.
https://github.com/Kotlin/kotlinx.serialization#introduction-and-references
Да туда он воюет, его кейс просто максимально хуёво на статические языки ложится.
>>1973490
Переходи на обж-с, он тоже динамическая залупа, можно ебаться в жепу рефлексией и делать всё-всё в рантайме там можно написать [massive valueForKeyPath:@"penis.code.lol.kek"][2].
Вообще, можно попробовать вспомнить что такое рекурсия и написать генерик парсер для такой хуиты:
fun parse<K, V>(huita: Map<K, Any>, path: String) -> V? {
__return parse(huita, path.split("."))
}
fun parse<K, V>(huita: Map<K, Any>, path: [String]) -> V? {
__if path.count <= 1 {
____return huita[path[0]] as? V
__}
__return parse(huita, path[1...])
}
На котлине только хэдлвлоды писал, и код скорее всего прямо так не заведётся, но мысль должна быть понятна.
Мимо крокожу, но у меня вопрос:
Что на второй картинке справа? Это запрос к базе данных или запрос к локальному списку? В C# просто есть похожая вещь, называется LINQ. Но у нас в Шарпе один и тот же синтаксис и для БД и для локальных списков работает за счёт магии Expression'ов
И где это лежит? Map<String, Object> ?
Это конечно так просто не сделать. Тут 2 варианта
1. Kotlin script и еботня с ним.
2. Или распарсить строку регуляркой и выбрать все эти ["penis", "lol", "kek" , "2"] в массив, а затем map.get(), затем cast к Map и идем дальше.
В общем задача выглядит странно и есть подозрение, что ты что-то не то делаешь. Если распишешь поподробней, можно будет что-то посоветовать.
>Что на второй картинке справа?
>>1974059
>Что на второй картинке справа?
https://www.jooq.org/doc/3.0/manual/getting-started/jooq-and-kotlin/
> ты что-то не то делаешь.
Как мужик сверху заметил, я скорее решил не на том языке развиваться, а задача у меня вроде бы адекватная.
> распарсить строку регуляркой и выбрать все эти ["penis", "lol", "kek" , "2"] в массив
Насколько я знаю регэкспы, там повторяющиеся значения как-то сложно обработать
>задача у меня вроде бы адекватная.
Вопрос в том, почему все класть в ассоциативные массивы. Тут реально какой нибудь JSON/XML напрашивается и JSONPath/XPath.
>Насколько я знаю регэкспы, там повторяющиеся значения как-то сложно обработать
В теории графов это открытие будет в только 2023 году. Олег, прекращай нарушать диспозицию путешественника, от твоих шуток мы все вылетим с работы.
Олег, эта ветка вселенной закрыта от туризма, ты зря тратишь время. Ты не пират и не борец справедливостью, ты закрываешь пустые ветки от которых страдаем только мы, обычная обслуга.
Ой, да ладно. Перед любой мировой войной, любая ветка пользуется большим спросом.
Бросил эксепшен с этого
Не один из текущих. После развития машинного обучения в квантовых вычислениях и изменения самой архитектуры вычислительной техники, многие текущие проблемы уйдут на нет, при этом появятся новые задачи (проблемы?). В общем, писать низкоуровневый, условный, последовательный код станет практически непосильным трудом и очень трудозатратным для будущих потребностей, поэтому текущие программирование будет восприниматься как вехой в истории, примитивным способом написанием логический условий, приводящих к критическому числу ошибок, недопустимому для современных требований.
То есть, простыми словами, человек очень плохо подходит для написание больших и сложных алгоритмов, поэтому по сути "машины" начнут писать другие "машины", а само программирование уйдет на инженерно-научный уровень и главное оно будет другим и не будет популярно как у вас сейчас.
Да, если честно, это и не нужно. В будущем есть куда более интересные вещи чем написание последовательных команд. Одно только рисованное интерактивное меню в современном интернете настолько сложное и изящное, что чтобы написать такое текущими инструментами нужно будет потратить не один месяц и (я уже не говорю чтобы оно не имело ошибок).
Но не расстраивайтесь, грядущая серия масштабных войн, так сильно простимулируют разработку "умного" оружия (автономного/роботизированного), что выжившие из вас уже при своей жизни увидят первую веху новой вычислительной техники. И она очень интересна.
Грядущая серия масштабных войн простимулирует только новое темное средневековье, когда наука и технологии придут в упадок или будут запрещены для массового использования, а новый ренессанс неизвестно будет ли еще.
Война, это всегда плохо. Но угроза ядерного оружия будет нивелированная в первые сутки.
А коалиция победившая эту войну назовет её последней и освободительной (что в какой-то мере цинично, впрочем, как всегда).
Причина мотивации станет ясно спустя 12 лет. Есть технологии которые позволяют стимулировать организм к здоровой бесконечной жизни (тупо камера с подобием нанороботов, восстанавливающие организм и процедура которую проходим каждые 5-10 лет, причем мы все).
Требование владельцев этой технологии проста, прекращение паразитирование и угнетение любой жизни, в том числе и разумной (в данном контексте, разумная жизнь, та жизнь которая способна созидать) обеспечение её защиты и процветание. Этакий космический гуманизм. Причины почему так важная жизнь для этих существ, не ясна, но в целом, они не заставляют, а ставят перед условиями и существа выбирают сами.
Самое забавное что эти существа выходят на контакт при развитие телепатических мутаций и кто вышел у нас в глобальный телепатический "интернет", не известно, говорят какая-то вообще община в Тибете или какой-то мальчик в Индии, но задачу поставили, конечно, лидерам наций (и это не только государства). Естественно, не всем понравились новые условия и порядки "гуманизма", мол "нам и так хорошо", но кто их спрашивал, да?
Я думаю, понятно, что со стороны наша нация выглядит как паразит, причем угнетающая свой же вид. Какая космическая эпоха может наступить, когда огромная часть планеты голодает, страдает и вообще все живут, в какой-то степени в рабстве.
Мы в глазах инопланетных существ выглядим как какие-то ублюдки. И вот эти ублюдки хотят это исправить, но не ради тебя и меня, а ради этой вечной жизни.
После жабы только разучивать все.
Но сука компилятор, то почему падает! Нельзя было его по нормальному написать, без доступа через рефлексию ко всяким запрещенным местам? Тем более, что еще в момент выхода 9-ки сказали, не лезте своей рефлексией куда не надо, скоро мы вам будем бить по рукам.
> Не могу скомпилировать котлин на JDK 16
Обратная совместимость жаб в целом условная. Сразу после выхода новой ждк не надо спешить обновляться, лучше подождать минимум полгода, когда популярные либы обновят для новой жабы а лучше ждать следующей LTS
>Обратная совместимость жаб в целом условная.
Да нормально там с совместимостью. JDK 9 вышла осенью 2017 и уже тогда сказали - хватит лезть рефлексией во внутренние классы, мы это отрубим через несколько релизов. И все это время жидбрейз и не подумали убрать грязные хаки из компилятора.
А в тикете с багом пишу, что для 1.5 релиза пофиксят, а для 1.4 и 1.3 юзайте флаг --illegal-access и отстаньте от нас.
Как вы вообще пишите на этой параше? Я пишу на десятке языков, ебу байтики и менеджерю память руками сразу на куче платформ. И тут внезапно работодатели все как один, требуют знаний сабжа. Пытаюсь вкатиться, но кроме маркетоидных высеров я ничего не могу найти. Да и как мне писать на языке без нуллов, если даже в ссаном жабоскрипте оно есть? Блять, я в рот ебал ваш кошлин, мне надо ссаный собес пройти, но я не могу победить рвотные позывы. Ни то от самого языка, ни то от текста и "коммунити" языка. Как это вообще жрать?
Вот от такого мне блевать охота, но похоже ВСЯ инфа про кокотлин именно такая:
После того, как Kotlin стал официально поддерживаться для разработки приложений под Android, появляется все больше приложений и библиотек, использующих этот язык. Не буду в очередной раз упоминать про преимущества Kotlin — их у него много, и про это написано немало материалов, включая официальную документацию.
Kotlin или Java? Обычно сообщество выбирает подходящий вариант, основываясь не только на плюсах и минусах, но и на духе предлагаемого решения. Предположу, что именно поэтому Kotlin сумел так быстро завоевать симпатии многих разработчиков по всему миру и его выбирают чаще, чем Java. Много новых проектов начинается именно на Kotlin. В редких случаях начинают на Java, потому что это очень крутой язык до сих пор. Пусть и с некоторыми недостатками, но на нём с таким же успехом можно писать приложения. В Kotlin добавили более удобные возможности, убрали некоторые недостатки Java и сделали более лаконичный синтаксис. Но при этом, по моему личному мнению, нельзя сказать «не пишите больше на Java».
Выбор — скорее, дело вкуса, но для старта проекта сейчас всё чаще выбирают именно Kotlin.
нулл это вложеный булевый, учись щегол.
Создавай для динамической параши нул и будет у тебя все ок.
Какую-то хуюню высрал. Если ты уже знаешь хоть один язык программирования, то изучение нового ограничивается строго чтением справочника по новому языку, а не обзорных методичек и маркетингового булшита.
Скажи, тебе как "специалисту", что именно нужно, чтобы начать писать на языке, кроме описания языка на википедии, и документации по стандартной библиотеке этого самого языка?
Байтики он дрочит, без нула не может. Ахуеть просто.
>Если ты уже знаешь хоть один язык программирования
Груви или скалу, а так в котлине много непривычной отсебячины.
По поводу нуллов, это динамическое состояние системы (существует или нет) и это нормально для внешней среды. Проблема пришла, когда по чиху стали возвращать нуллы там где это не нужно.
В итоге победили нуллы, которые вроде как достали, но в тоже время они необходимы предметно. Не удивлюсь, что скоро победят какие-нибудь еще float и double типы но в реале, как и с нуллом, тупо ввидут еще одни костыли
>Если ты уже знаешь хоть один язык программирования, то изучение нового ограничивается строго чтением справочника по новому языку, а не обзорных методичек и маркетингового булшита.
Если я знаю хоть один язык, или хотя бы в общих чертах представляю как работает компьютер, то у меня уже есть какое-то критическое мышление и понимание, что такое хорошо и что такое плохо. Читая маны по новым языкам или фреймверкам, я обычно говорил себе: "ну, все как в моем любимом ЯЗЫК_НЕЙМ" или "Вау, вот это они круто сделали". А читая инфу про Скотлин, у меня возникают только рвотные позывы, начиная от синтаксиса, заканчивая общими концепциями, в которых сам Андрюшка (спасибо за видео из ОП-поста - первая вменяемая инфа по языку) не уверен.
>то именно нужно, чтобы начать писать на языке, кроме описания языка на википедии, и документации по стандартной библиотеке этого самого языка?
Стандартная библиотека не нужна - у меня жаба и ведро. Да и они не особенно нужны, так как у меня будет Сишечка и уход в ндк при первой возможности. Самое главное, чего мне нехватает - это таблеток, чтобы побороть блевотные рефлексы, чтобы просто смотреть на этот гибрид жабы, петухона и жопаскрипта.
А вообще, я начинаю понимать, чому я его так хейчу и почему оно мне ну никак не заходит: сам Андрюшка вдохновлялся Паскалем и его ответвлениями, а я как-то обошел их стороной, еще со времен доса. У меня даже были книжки по Турбо Паскалю, но я не мог их читать.
>Груви или скалу, а так в котлине много непривычной отсебячины.
Не знаю, и знать в общем-то не хочу. Как и, к примеру, Эрланг - я на нем немного покодил, и продолжать больше не хочу.
Я никогда не фанател от функциональщины, просто юзал там где она была, а если ее не было - ну ладно, это особенность языка, фиг с ней.
Вокруг меня же постоянно бились какие-то ебнутые на всю голову фанбои: сначала Груви, потом Скалы, и вот теперь Скотлин. Каждые 5 лет я слышу от них примерно следующее: "Вот, теперь появился Груви/Скала/Котлин, теперь твоя Жаба нахер не нужна и помрет скоро". А через 5 лет уже не найти ни этих фанбоев, ни каких-то вменяемых причин изучать эти недохайповые технологии. Вот сегодня, какой смысл в Скале или Груви? Для меня эти языки мертвы. Я изначально считал их хайпом и просто не обращал внимания.
Но со Скотлином все хуже: 5 лет почти прошло, а эта хуйня не только не сдохла, так еще и ХРюши стали повально требовать эту говнину. Спрашиваю: "а вам зачем?" - мне отвечают: "потому что Котлин - первичен для ведра". И все. Стена. Мотивация - уровня маркетингового буллшита. Я честно пытался найти хоть какие-то преимущества, но все сравнения написаны максимально безграмотными людьми, которые и жабу похоже не видели. А как еще победить в себе брезгливость и начать писать на этой параше?
Поймите, мне этот язык нахуй не усрался, мне надо тупо устроиться на работу. Получать грязные зеленые бумажки, а на охуенные идеи Андрюшки мне насрать с высокой колокольни. Я бы вообще все на Сишке бы писал.
Котлин все же отличный язык! Больше никто так не засирает уши маркетингом.
Уважаю.
Ты, очевидно, дурачок, и страдаешь от сурового Даннинга-Крюгера. Если бы ты умел в Джаву - или вообще, программировать - Котлин для тебя не был бы таким камнем преткновения.
>Вот сегодня, какой смысл в Скале или Груви?
Скала используется в Тинькофф, например.
>Если бы ты умел в Джаву - или вообще, программировать - Котлин для тебя не был бы таким камнем преткновения.
Если бы я НЕ умел программировать вообще, да и компьютер бы видел в первый раз в жизни, то наверняка бы проблемы не было. Тут вопрос не в том, что мне сложно или непонятно, а в том, что НАХУЯ и БЛЯТЬДАНУНАХУЙ.
>Скала используется в Тинькофф, например.
Очень круто. Какой банк, такие и технологии.
И мне конечно совершенно не насрать, что там используется в самом прекрасном наебательском банке, в котором я не работаю
Пожал руку, братишка.
GOвнобляди воняют не меньше скотлиноеблоидов
>Тут вопрос не в том, что мне сложно или непонятно, а в том, что НАХУЯ и БЛЯТЬДАНУНАХУЙ.
Я джавист и не работаю с мобилками, но на котлине тудушку на апи 10 версии андроида писал. Ничего сложного там нет, это просто синтаксический сахар над джавой. Можно писать код, просто поглядывая в документацию. Ну и твой вопрос "нахуя его требуют" слегка невменяем - ты думаешь они ради тебя будут уже готовую кодобазу с котлина на джаву переписывать, или что? Они пишут на котлине, ты идёшь на вакансию с котлиным и возмущаешься, почему они требуют котлин.
>Какой банк, такие и технологии.
Все банки дерьмо. Но Скала это реально используемый язык программирования. Есть два типа языков, те о которых спорят, и те, которые не используют.
>И мне конечно совершенно не насрать, что там используется в самом прекрасном наебательском банке, в котором я не работаю
Ты спросил, какой смысл в Скале сегодня. Вот ответ, Скалу используют на хайлоадах. Твиттер работает на Скале тоже, например.
>Можно писать код, просто поглядывая в документацию.
Методом копипастного программирования можно писать на чем угодно и под что угодно (наверное, кроме 1с - его на стековерфлоу наверное нет). Вопрос лишь в том, что ты об этом думаешь. Если ты новичек, то претензий к этому быть в принципе не может.
>ты думаешь они ради тебя будут уже готовую кодобазу с котлина на джаву переписывать, или что?
Я что, ебан? Ясен хуй, что если проект уже есть и он на Скотлине, то мне туда даже близко подходить не надо. Но на практике это выглядит так: "нам нужны красивые мальчики в белых рубашечках со знанием скотлина, все новые проекты мы будем писать на скотлине" - вот от этого у меня и разрывы.
> Вот ответ, Скалу используют на хайлоадах.
Хайлоад на виртуалке? Не смешно. Это как "хайлоад на пехапе" (хотя нынче пехапе уже не такое говно как раньше).
> В синтаксисе можно встретить много WTF-решений (как же без них), но в целом, плюсы перевешивают минусы. Так-то, во всех языках есть что-то что раздражает.
Вот блядь, идеально выразили мои мысли. Вроде начинали как неплохой язык, но скатили в какую-то хуйню. В том же Swift'е развивали язык более продуманно, обсуждали всем миром и в основном всё и сейчас лаконично и красиво. А я ведь мог остаться на котлетоне, если бы они не начали творить нечитабельную хуйню. Но в результате свалил в божественный Swift
>Методом копипастного программирования
Какого ещё, блядь, копипастного программирования. Что ты несёшь, чел. Читаешь доки, смотришь как там выглядят структуры данных и синтаксис, и решаешь задачи. То же самое происходит буквально со всеми остальными языками программирования. У тебя в голове каша. Возможно, ты ещё недостаточно опытен, чтобы не обращать внимания на то, на каком языке ты прогаешь вообще. Твои разрывы выдают в тебе дилетанта.
>Хайлоад на виртуалке? Не смешно.
Хуиртуалке, мань, кто ты такой, чтобы давать оценки подобным вещам? Попустись, чмоня.
Ахахахахах
Анон, как я тебя понимаю. Ищешь инфу по хуйнянейм, вылезает тысяча и одна статья от ебучих гуманитариев, которые с важным видом накидали баззвородов и воды. Так и хочется взять и уебать, когда видишь очередной материал от инфоцыганенка
>Как вы вообще пишите на этой параше
Хехе, JetBrains разве может высрать не уебище? Вопрос риторический.
Ахахах, хороший говоришь, а почему тогда он умер???))0)
Вы нахуя коту башку прорубили?
>сночала добейся!1
Арирую с долбоёба, хуйлоад у него на виртуалке.
Не такой там и хуйлоад, пока бизнесу легче залить проблему железом.
Писать хуйлоад на крестах я бы не хотел. На расте можно, но, говорят, страпуешься к мидлу. Остаётся го, но это такое себе удовольствие. На чем тогда?
мимо дотнетчик
>страпуешься к мидлу
На крестах тоже.
Вообще, зависит от компании. В тех же ФейсбукахАплахАмазонахНетфликсахГуглахМайкрософтах обычно берут "софтваре инжинеров", которые могут мигрировать в компании по технологиям как говно в проруби.
Алсо, такое возможно и на постсоветском пространстве, правда нужен ебический опыт в предметной области, чтобы язык там был десятым делом.
>Арирую с долбоёба, хуйлоад у него на виртуалке.
>Не такой там и хуйлоад, пока бизнесу легче залить проблему железом.
Ебать ты дебил!
Хайлоад это не про производительсноть с одного CPU, а про масштабируемость. Да вместо 100 серваков, купить 120 дешевле, чем пердолиться с С++.
>Хайлоад это не про производительсноть с одного CPU
Т.е. перформанс каждой машины по отдельности никак не аффектит перформанс кластера?
>а про масштабируемость.
И чем же жвм лучше нейтива в плане масштабируемости?
Ты в попытках заманяврировать куда-то не туда залетел.
>Да вместо 100 серваков, купить 120 дешевле, чем пердолиться с С++.
Пчел, даже если не байтойобить а написать более-менее оптимизированно на чистой жабе — у тебя выйдет 130-140 вместо 100, но ирл так никто не делает — все тащут раздутые спринги и ко и в жизни разница будет на порядок. А ещё мы говорили про скалу — половину фичей которой жвм нихуя не умеет оптимизировать, а ещё её обмазывают фп сверху (а даже если не обмазывают — все встроенные иммутабельные коллекции будут тормозить как говно в любом случае), что как бы намекает куда нахуй идёт перформанс.
>Т.е. перформанс каждой машины по отдельности никак не аффектит перформанс кластера?
Ты не можешь весь текст осилить? Я писал про это.
>вместо 100 серваков, купить 120 дешевле, чем пердолиться с С++.
>И чем же жвм лучше нейтива в плане масштабируемости?
Я не писал такого. JVM не хуже и не лучше, масштабируемость определяется архитектурой. А когда у тебя есть готовая архитектура, ты уже выбираешь язык (об этом далее).
>Пчел, даже если не байтойобить а написать более-менее оптимизированно на чистой жабе — у тебя выйдет 130-140 вместо 100, но ирл так никто не делает — все тащут раздутые спринги и ко и в жизни разница будет на порядок.
Совершенно пустопорожние рассуждения, надо смотреть на конкретную архитектуру и мерять перформанс. Есть хороший пример Netflix, они посчитали что раздача контента требует очень много ресурсов и заплатили nginx чтобы они соптимизировали сервер под их нужны. Но при этом остальные сервисы которые тоже хайлоад они пишут на яве, потому что там ебля с С++ не даст существенной экономии на серверах.
>А ещё мы говорили про скалу
А
>>2025443
>Арирую с долбоёба, хуйлоад у него на виртуалке.
кто писал?
Хуя душнила.
ЛИШЬ БЫ НЕ КАК В ДЖАВЕ
Спавняться в разных тредах, но при этом половина из них все равно не параллельны и ждут прерывания
Хочешь чтобы спавнились в одном треде - таскай main скоуп как зависимость по всему приложению
Шарить общее СОСтояние - это не КОРУТИН-WAY, туда же синхронизации, мьютексты это все НЕ НУЖНО - вот тебе каналы и дрочи их как хочешь
Контексты, хуексты, скоупы, джобы нихуя не понятно короче
помогите...
Loom придет - порядок наведет!
Скачай и играй, чо.
Как бы не вышла такая же залупа как и с модулями жавы 9, которые кроме проблем ничего другого не добавляют
Рисков на первый взгляд меньше, ничего не изменяется, только добавляется новая необязательная фича, не как с модулями, которые нельзя выключить.
https://www.youtube.com/watch?v=EbU15SvXlGk
Жаба победила безнаковые типы, котлин их вернул. Лол.
Можно в кратце что там нового, мотанул увидел константы min max, потом 6 говорящих голов.
Сам пока не досмотрел, этот лет ми спик фром май харт выбешивает. Так и хочется написать - да говори уже по русски дура!
Мелоч всякая. Интероп с новыми жвмовскими фичами. Что то стабилизировали. Что то нет. Основной хайлайт - автокомплит стал быстрее на 50% (на самом деле нихуя)
Насколько реально сейчас в России устроиться котлин-разрабом бэкенда? Через 3 недели будет ровно 1 год опыта, правда на джаве. Но также на работе чуть-чуть писал на реакте и даже давали недельку потыкать скалу.
Сейчас в свободное время изучаю котлин и с каждым днем он нравится все больше. Но в основном вакансии на хх требуют от 3 лет. Я в пролете?
А на западном рынке как с этим? Может еще поднакопить опыта и через пол года сразу пробовать на иностранный рынок подаваться?
Не знаю, насколько ещё для тебя актуально, но https://kotlinlang.org/docs/shared-mutable-state-and-concurrency.html
Вообще у ведроида свой тред https://2ch.hk/pr/res/1994880.html (М)
Для разработки под мобилки надо знать синтаксис джавы и джава кор, спринги и прочие кафки не нужны.
Я понять не могу, они пишут что @JvmInline депрекейтед, но не пишут что использовать вместо него и во всех примерах аннотация присутсвует. Это как?
Наверное ничего, может теперь просто value class.
> inline classes or the inline modifier is deprecated since kotlin 1.5, in favour of value classes
Если убрать @JvmInline, то выдает ошибку
Value classes without @JvmInline annotation are not supported yet
В лучших традициях жидбрейнс.
А какой практический смысл переката на better java, проще стартануть новый сервис на го или ноде.
Никакого, кроме как поднять настроение некоторым разрабам, типа они пишут теперь не на коболе, а на модном молодёжном языке. А по факту что в жабе абстрактные фабрики и размазывание логики, что в котлине, только присыпано сахаром и проблемами из-за неудачных попыток сделать сметану из говна.
Имею кусок кода как на пикриле. По сути это два листа с объектами у которых есть какой-то ключ. Мне нужно проверить элементы этих листов на совпадения ключей, и, если ключи совпали, то делать что-то.
Можно ли это как-то сделать какой-нибудь удобной и красивой котлиновской функцией, а не двумя ебучими циклами?
Есть forEachIndexed, indexOf дорогая операция.
То что ты наговнокодил имеет сложность O(n^2). Если ключи уникальный, то сконвертируй второй список в Map.
Вообще то в ^3, у indexOf фор луп под капотом
Там пока жаба перегонит в мапу, я думаю, высрется еще тонну объектов, включая саму мапу, которая в будущем будет уже не нужна.
Это нормально массив массивом перебрать, просто indexOf не к месту. А вообще почему нет такого метода расширения который не только проверял наличие значения, но возвращал бы индекс?
зато 100500 сомнительных методов-расширений есть, которые нужны раз в пол жизни
>А вообще почему нет такого метода расширения который не только проверял наличие значения, но возвращал бы индекс?
indexOf() и возвращает индекс
>А вообще почему нет такого метода расширения который не только проверял наличие значения, но возвращал бы индекс?
Если массивы на 10 элементов - да норм. А если 10к и более - то у тебя уже 100кк сложность получается если на forEachIndexed() переключиться
>А если 10к
А если 100к или 1000к? А? Че то ты рано в фантазии остановился.
Это не питон чтобы на холостых циклах провисать. Иногда лучше цикл пробежать, чем GC накормить.
>Иногда лучше цикл пробежать, чем GC накормить.
Сейчас бы переживать бы за GC. Вам кучу конкарент GC завезли, бери да юзай.
Да и Котлин сам по себе много мусорит - например те же лямбды у тебя внутренняя лямбда замыкается на внешнюю. Тогда уж начни с этой оптимизации.
>Сейчас бы переживать бы за GC
Ну да, а потом стоп-зе-волд в минуту, и ты смотришь в код и видишь, что там вообще ни в одной строчке не переживали за GC.
В нормальных приложениях болт не кладут на это. редко для джавы, но бывает.
Понятно, что если там 10к индексов, а в цикле еще дробилка какая-то, то конечно это не нормально. Но если у тебя 10 на 15 элементов и ты паришься за O^2, это уже клиника.
Начитаются своих вумных кнутов и натягивают везде свою оптимизацию на глобус.
>Да и Котлин сам по себе много мусорит
Не удивлюсь, к счастью еще полгода назад дропнули котлин. Не то чтобы язык плохой, но знать подводные камни джавы, jvm и потом еще котлина - такое себе, в плане человеко ресурсов.
Чел, ты половину фразы игноришь, а потом усираешься доказывая то, что было заигнорено. Тебе делать нехер?
>Если массивы на 10 элементов - да норм. А если 10к и более - то у тебя уже 100кк сложность получается
>Понятно, что если там 10к индексов, а в цикле еще дробилка какая-то, то конечно это не нормально. Но если у тебя 10 на 15 элементов и ты паришься за O^2, это уже клиника.
>Сейчас бы переживать бы за GC. Вам кучу конкарент GC завезли, бери да юзай.
>Ну да, а потом стоп-зе-волд в минуту
inb4: https://ionutbalosin.com/2019/12/jvm-garbage-collectors-benchmarks-report-19-12/
>ZGC struggles for as low pause times as possible (e.g. max 10ms) and is designed to scale incredibly better from smaller to big Heap sizes (i.e. from hundreds of MB to many TB).
>Shenandoah GC has similar goals as ZGC, it targets low pause times which are no longer directly proportional to the Heap size and is supposed to scale from tiny to big Heap sizes.
Да и вообще ты JOL то нюхал, рассуждаешь тут про
>Там пока жаба перегонит в мапу, я думаю, высрется еще тонну объектов, включая саму мапу, которая в будущем будет уже не нужна.
?
Тред по жаве мёртв, потому спрошу здесь.
Есть например такой код.
Сначала мы создали объект класса Car в классе Human.
Затем объект класса Human в классе Human.
Вопрос вызывает вот этот участок:
h1.c = new Car();
Что именно здесь происходит? В объекте h1 создаётся ссылка на с?
>>2109154
h1 - объект класса Human.
h1.c - поле у этого объекта.
h1.c = new Car() - создание нового объекта класса Car и присваивание этого объекта в то самое поле.
Доступ к полям объекта рассказываются буквально во втором абзаце любого справочника по синтаксису жабы.
Впрочем, чего еще ожидать от того, у которого
>Тред по жаве мёртв, потому спрошу здесь
там 1к постов за месяц, тут 500 за год
Есть же пастебин и куча других сервисов, нахуя-то картинку постить?
Выглядит как переусложнение, с одной стороны как-бы универсальный код, с другой специальные случаи для строк и интов. Ну и в целом непонятно что ты пытаешься сделать.
>Ну и в целом непонятно что ты пытаешься сделать.
Delegated property как в https://kotlinlang.org/docs/delegated-properties.html#storing-properties-in-a-map но с возможностью задать имя, дефолтное значение и с type safety. Помимо строк и интов там панируются кейсы под каждый тип.
Все, разобрался. Пиздец у вас тут тухляк.
В списке доступных есть, но как правило используются только кресты и иногда питон для нетребовательных к скорости задач. Программы не живут дольше пары секунд, поэтому на управление памятью поебать, освобождение памяти может быть вообще отключено ради скорости https://algorithmica.org/ru/no-deallocation
Есть такой пример из книги: https://pastebin.com/5hUR3JgR
В чем разница между
Button().showOff()
и
val b = Button()
b.showOff() ?
В джаве, насколько помню, через имя класса обращаются к статическому методу. А здесь что за "Button()", у которого мы вызываем метод? Что погуглить, куда почитать?
Спасибо!
> Button().showOff()
Создаёшь экземпляр класса Button и сразу вызываешь его метод show
> val b = Button()
> b.showOff() ?
Создаёшь экземпляр класса Button, сохраняешь ссылку на него в переменную b и через переменную вызываешь его метод show
> В чем разница
Только в присвоении ссылки, суть одна и та же
> В джаве, насколько помню, через имя класса обращаются к статическому методу.
Статические методы принадлежат классу, а не его экземпляру. Значит выглядело бы это как Button.show()
> А здесь что за "Button()"
Вызов конструктора класса, пустого в данном случае, чтобы создать экземпляр класса
> Что погуглить, куда почитать?
Главу про классы, конструкторы и статический доступ.
Желательно посмотреть как это выглядит в жаве, потому что котлиновский синтаксис делает многие вещи неявными. Как например с оператором new
Стоило открыть ссылку сначала.
Там в первом случае создаётся три разные кнопки и на каждой вызывается по одному методу.
Во втором, создаётся одна кнопка и на ней вызывается все три метода.
Спасибо, стало понятней. Всё еще непривычно создавать экземпляры без new.
Это копия, сохраненная 1 августа 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.