Вы видите копию треда, сохраненную 14 июня в 14:23.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Kotlin — статически типизированный, объектно-ориентированный язык программирования, работающий поверх Java Virtual Machine и разрабатываемый компанией JetBrains. Язык назван в честь российского острова Котлин в Финском заливе, на котором расположен город Кронштадт.
Маскот котлина Коди.
Что имеем:
+Современный синтаксис (реально удобный).
+Совместимость со всей jvm инфраструктурой.
+Возможность писать статический DSL прямо на самом языке.
+Дополнительные возможности котлина. (делегаты, функции, расширения класса, вариативность и т.д)
+Возможность нативной сборки, сборки в js, андроид и ios.
+Корутины
Для тех, кто переходит из процедурных языков программирования, объектно-ориентированный подход (ООП) может показаться полной ерундой.
В интернете часто приводят какие-то высосанные из пальца примеры с кошками, собаками и всякой абстракщиной. Но в реальной жизни все не так просто, и эти детсадовские примеры ни о чем не говорят. Когда ты только начинаешь изучать ООП, то сложно понять, зачем вообще городить эту огромную телегу с классами, наследованием, инкапсуляцией и прочими заморочками.
Поэтому лучший способ въехать в ООП - это сразу погрузиться в изучение какого-нибудь фреймворка. Когда ты видишь, как все это применяется на практике, то сразу начинаешь понимать суть.
Почему следует изучить java перед котлин, а не сразу изучать котлин:
1.Java основа: Без знания java ты не будешь понимать, что происходит под капотом kotlin. Синтаксический сахар kotlin скрывает сложные операции, и ты можешь понять конечный результат, но не механизм его достижения. Это как нажимать кнопку на чайнике и видеть, что вода нагревается, но не знать, почему и как это происходит. Лучше всего понять что под сахаром это в intellij перейти tools -> kotlin -> show kotlin bytecode -> decompile.
2.Код на Java: Большинство библиотек написано на java. Без знания java ты не сможешь понять их код и, соответственно, эффективно использовать или модифицировать их в своих проектах на Kotlin.
3.Может быть что где-то будут куски кода на java в проекте.
Антивирус в windows также замедляет компиляцию, так что отключите, добавьте в исключения папку или же перейдите на gnu/linux, macOS:
https://intellij-support.jetbrains.com/hc/en-us/articles/360006298560-Antivirus-Impact-on-Build-Speed
Попробовать котлин -> https://try.kotlinlang.org/
IDE. IntelliJ IDEA Community Edition -> https://www.jetbrains.com/idea/download/
Документация котлин -> https://kotlinlang.org/docs/home.html
Перевод документации -> https://kotlinlang.ru/docs/kotlin-doc.html
Скачать Kodee asset ->
https://kotlinlang.org/docs/kotlin-brand-assets.html#kotlin-user-group-brand-assets
Предыдущий тред: >>3247263 (OP)
Зачем оставил шизу про ООП?
Терпи
fun fail1(message: String): Nothing {
throw IllegalArgumentException(message)
}
Такого рода функции для чего-то нужны? Они должны присутствовать в программе на котлине?
> Такого рода функции для чего-то нужны?
Чтобы бросить исключение. Nothing указывает на то, что ожидается, что функция завершиться раньше чем будет выполнена. Например из-за throw exception.
> Они должны присутствовать в программе на котлине?
Если у тебя есть логика, которой такое нужно, то да. В моей 5 летней практики пока ни разу не пригодилось.
>пока ни разу не пригодилось
просто я раньше писал что-то подобное, но делал проще если встречается что-то неправильное то пишу сообщение во второй канал
write(2, message, strlen(message));
exit(2);
Не уверен, что ты правильно понял значение функции возвращающей Nothing. В ней не предполагается никакого альтернативного выполнения кроме как ошибки. То есть это не то, что в функции вычисляющей 2+2 произошла ошибка. Это скорее то, что "нам нужно закрыть все ресурсы перед тем как бросить исключение и мы вызываем функцию закрывающую ресурсы и бросаем внутри неё исключение". Вот такая функция должна возвращать Nothing.
@
ПИШЕШЬ И ДУМАЕШЬ КАКОЕ НЕУДОБНОЕ ГУМНО
@
ГОВОРИШЬ ОБ ЭТОМ КОЛЛЕГЕ
@
КОЛЛЕГА НЕ ПОНИМАЕТ ПОЛОВИНУ ТОГО, ЧТО ТЫ ЕМУ РАССКАЗЫВАЕШЬ
@
"А ТЫ ЧТО НЕ НА МАКЕ СИДИШЬ? ТОГДА ПОНЯТНО У НИХ ПЛАГИН KMP ТОЛЬКО ДЛЯ МАКОСИ"
@
ЧЕКАЕШЬ ЭТУ ИНФОРМАЦИЮ
@
ОХУЕВАЕШЬ ОТ ТОГО, ЧТО ЭТО ПРАВДА
Жаль, что за пределами Андроида Котлин никому не интересен.
У нас бэк на нем написан. Знакомый на KMP запилил iOS приложение
Он и на Андроиде никому не интересен, кроме Гугли. Этакий Раст но без педиков но с русофобами.
Хз о чем ты, сейчас в 70% джава бэкенд вакансий хотят котлин или желание на него перейти
наверное, потому что это самый удобный и популярный jvm язык после самой джавы
Как же хорошо, что я выполз из этого мира джава говна.
Котлин слишком рано завендерлочился, еще показательно нагнул ру комьюнити. Тут даже самые ЧСВэшные смогли прочувствовать, что такое вендерлок.
Говно без души, натырили сахара, пытались в 1,5 студента попилить гига рынки, чудом скукожились до андроида, так же с максимализмом пытались попилить кроссмобильную разработку, не сделав для этого ничего (в отличие от команды дарта или js). Хз что там сейчас, но когда я варился в жабе, по ощущениям котлин практически не развивался.
Вот скажи анон, запилили они свой компилятор 2.0 и что пошла активная разработка?
Да запилили. На KMP переписали приложения Duolingo, McDonald's, и ещё несколько брендов. В целом всё хорошо, только всё что касается KMP помечено как экспериментальный апи и программировать под него то ещё удовольствие. Зато в отличии от флаттера действительно можно один раз написать код на котлине и он будет работать под все платформы. По крайней мере если ты готов использовать экспериментальный апи.
Если честно, не особо интересует что там на мобилках. Сейчас андроид есть, завтра его нет, туда же сразу улетит и котлин.
Я тот кто создавал первые треды по котлину (еще с тем долбо-котом и теребил жабистов в треде). Тоже думал что у яп есть будущее, но потом как вылез из жаба мирка, сразу все стало на свои места.
поныл, забейте
А что там вне жаба мирка? Веб на жс. Микроконтроллеры на Си/расте. Да и всё. Ну, ещё питон в мле.
Шарпунь + жс. Еще я с головой влез в геймдев (в свободное время). Хоть и начинал с юнити, но сейчас годот ковыряю.
Не ожидал что будет так нравится.
> Шарпунь + жс.
Шарпы ещё живы? Хотя и винда ещё жива, чего им умирать.
> Еще я с головой влез в геймдев (в свободное время)
Ох, желаю удачи. Я когда-то пробовал и понял, что геймдев это на 80 % рисование артов и анимаций.
>Шарпы ещё живы? Хотя и винда ещё жива, чего им умирать.
Уже поднадоела эта тема, неткор как лет 10 существует, но все равно находятся люди не в теме. Современный дотнет очень хорошо показывают себя в бэкенде на линуксах, да и отполировали его норм так.
Но, наверное да, все это может не в СНГ.
>что геймдев это на 80 % рисование артов и анимаций.
Смотря что, можно играться с механиками. Да и само 3D моделирование, мне тоже интересно, я на моделинге вообще релаксирую (что не сказать про глаза).
> Но, наверное да, все это может не в СНГ.
Я работаю на американскую компанию. У нас продуктов около десяти и ни один из них не написан на шарпе. В бэкенде или джава, или котлин, или го. При том, что каждая команда принимает самостоятельно решение на чём писать.
> Смотря что, можно играться с механиками. Да и само 3D моделирование, мне тоже интересно, я на моделинге вообще релаксирую (что не сказать про глаза).
Это хорошо.
Тогда к чему это? Есть области, где есть джава, где шарп, го, они могут пересекаться, а могут нет. У нас нет джавы, но это вообще ни о чем не говорит.
Средний джавист вообще ходячий мем и может кроме жабы ничего в жизни не видеть. И это ЧСВ разогнано абсолютно искусственно, поверь. Так что к чему ты вообще высрал про свою работу? Что это должно было показать?
Вот джава может похвастаться, что используется в истребителях F35?
https://www.reddit.com/r/dotnet/comments/1g5lmdb/does_anyone_use_netc_in_any_mission_critical/
Так что вылезай из пузыря и посмотри что в мире происходит (если бы джависты это делали чаще, быть может спринг не был бы таким говном)
Сам был таким жаба-снобом, все по факту.
https://habr.com/ru/articles/934648/
Взяли котлин/свифт синтаксис поверх го рантайма (вытесняющих горутин).
Кстати, в 2015 году некоторые аноны просили сделать "компатибилити" с го и там даже кто-то на хабре написал "возможно" ага
А смысл? Котлин вроде умеет компилироваться в бинарник или там нет поддержки корутин? Но опять же, можно взять graalvm + котлин с корутинами и получится +- го по производительности + поддержка ООП и всех фич котлина.
Проблема цветных функций (в го ее нет, асинхронность под капотом) и производительность (без всяких JIT прогревов и VM говна, кросскомиляция).
Котлин нейтив вообще непонятно что такое. Либо ты сразу дизайнишь язык без VM, либо ешь пародию на нейтив. Они сами говорили что производительность им не нужна, вся суть нейтив это залезть в айфон.
Тоже самое ко всяким graalvm - как всегда будет "можно, но..."
Вот кстати да. Выход Groovy 5 и то согрел душу больше чем выход новой версии коклина
На ассемблере компилится нативная динамическая библиотека с расширением .so и подключается через JNI.
Свой файл можешь скомпилировать
nasm -f elf64 -o libtest.o test.asm
ld -shared -o libtest.so libtest.o
Но вообще, если это JVM, гугли "JNI tutorial". Боюсь, там будет сложновато для новичка.
Нет, ожидаю быстродействие х3
>как оно на arm
пока пытался билдить на пк. java разве не создавался ли для запуска на любой платформе? Для этого же и нужны эти виртуальные машины.
Интересно, что я не один интересуюсь быстродействием.
>java разве не создавался ли для запуска на любой платформе
Раз у тебя jvm, гугли JNI, не еби мозги.
Еще у Kotlin есть native builds.
Перетолстил
Это не так. Я пишу бэкенд онли на котлине с 20 года, сейчас в 80% джава бэкенд вакансиях требуется котлин и все новое пишут на нем.
Есть конечно скуфские компании, где из принципа не переходят - вк (бывший мейл ру)
Про спринг тоже хуйню говоришь, есть куча других альтернатив, которые имеют нормальный такой объем рынка
Давно всё, увы.
java.net.http.HttpClient, лол
classPrototype
typeClass
classType
classData
kind
classKind
Да все что угодно, кроме демонстрации профнепригодности.
Я вообще не понимаю что это и почему оно не используется дальше в Снеге (или я в глаза долблюсь)
https://commons.apache.org/dormant/clazz/userguide.html
Записываем индейцев в профнепригодные
Ну я не увидел, что свифт, но там тоже
>Apache Software Foundation
Неофициальная мусорка для опенсорс проектов.
Там они могут писать как захотят.
Создателей джавы также записываем в профнепригодные.
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#asSubclass-java.lang.Class-
Ты откуда вылез вообще?
>Создателей джавы также записываем в профнепригодные.
Тут даже возразить не хочется. два дня исСнег?
Котаны, а что делать если я хочу вкатиться в WASM на котлине? Кто-нибудь вентилировал вопросик, какие книжки почитать?
Просто найди способ компиляции kotlin в wasm. И все. Если я правильно помню, то Котлин можно скомпилировать в class-файлы для jvm. Эти class-файлы можно собрать у jar. Graalvm даёт возможность собрать jar'ник или class-файл, если в нем есть точка входа main, в файл с wasm.
Далее просто посмотри, как работает api у js для работы с wasm. Просто поищи "js webassembly".
Вот ещё что: учти, что для работы с dom нужно какое-то api. Если бы ты писал на c/c++/rust, то я бы тебе дал совет посмотреть emscripten.h. Полагаю, что для java/kotlin есть что-то аналогичное.
Успехов тебе!
Ты какую то максимально костыльную уебищную схему предложил просто, как будто не знаешь, что котлин умеет компилится не только под jvm.
Я знаю, что его можно компилировать не только в jvm, но я предложил тот вариант, в работе которого я уверен: сам в 2020 делал компиляцию jar в wasm.
Но вернётся в изначальному:
>котлин не только jvm-based
А такое утверждалось мной?
На такой вопрос можно ответить "да" или "нет". Если ты ответишь "да", то укажи, где я такое утверждал. Если ты ответишь "нет", то это будет означать, что ты где-то просто решил придраться к чему-нибудь.
Я сделал этот вывод из твоего хуевого и костыльного совета.
Если ты дал такой совет, при условии того, что ты знаешь, что ктолин умеет компилится в js, то это показывает, что ты глупый человек.
>Я сделал этот вывод
вывод твой неправильный.
>при условии того, что ты знаешь, что ктолин умеет компилится в js
Но вопрос был не про комппиляцию в js, а про компиляцию в wasm. Вопрос прочитай нормально сначала. Несколько раз и без "я сделал вывод".
>то это показывает, что ты глупый человек.
Ужасная попытка в оценку умственных способностей. Человек, который брякнет что-то, а потом отмазывается фразой "я сделал вывод" без точных фактов, который при вопросе о компиляции в wasm почему-то говорит про компиляцию в js, выглядит глупо.
Ты до сих пор не ответил на мой один вопрос. Если я глупый человек, то ты, неспособный ответить на один единственный вопрос, почему-то считающий, что в вопросе компиляции котлина в wasm надо обязательно затронуть тему компиляции в js, делающий выводы на пустом месте, кто в такой ситуации?
Один единственный вопрос. И на него ты не смог ответить.
Ты не просто сел в лужу, ты буквально нырнул в лужу и купаешься с голубями. Это смешно.
Чел, я твой высер даже читать не буду, ты омежка, которую загнали в угол и она начала оправдываться.
Не читай.
Я так понимаю, один вопрос тебя загнал в такой ступор, что ты решил теперь просто молчать.
Это, кстати, самая лучшая тактика для тебя.
Тише-тише, а то ещё раздашь свои "охуенные советы" для создания костылей и велосипедов
Ты 24/7 ждёшь моего ответа? Хороший пёсель.
Ответь сейчас на моё сообщение в рамках 1 минуты.
Время пошло.
У меня из кучи вкладок эта открыта.
И мне очень интересно давить таких озлобленных, долумывающих за других людей, уникумов, как ты.
Так что? Ответ будет?
Я позже загляну сюда. Думаю, ты не сможешь ответить на этот вопрос: признать свою неправоту тебе тяжко, а доказать, что ты прав, ты не можешь.
Ладно, даю наводку - котлин уже умеет компилиться в js.
Потом подумай, что такое васм и его цель.
Попытайся этот клубок раскрутить.
Но я думаю, что ты не осилишь, иначе бы наш диалог закончился на моем первом сообщении.
Вопрос не про то, что там можно делать с кодом на котлине.
Ты или дурак, или очень хорошо делаешь вид, что ты дурак.
Нужно знать возможности инструмента, правильно поставить задачу и выбрать самое оптимальное решение для этой задачи.
Ты посоветовал городить костыли, хотя более правильное решение на поверхности.
Так ты даже не вопрос не ответил.
Тебе был задан один вопрос.
Сейчас я уверен, что ты или очень глупый, или со мной беседует очень плохая нейросеть.
В общем, у меня других дел полно, а отвечать дураку или нейронке бессмысленно. Большой текст ты не осилил(ты сам написал, что читать не будешь, но я понимаю, что ты просто не смог прочитать), а кратко описать всю твою проблему я не могу - настолько она велика.
Моё дело сделано: я дал хороший совет на вопрос про wasm, а ты обделался, пытаясь выдавать компиляцию в js как хороший совет, и сидишь в луже.
Успехов тебе. Больше так не обделывайся и перестань садиться в лужу.
Ты предложил максимально уебищное, костыльное, сложное и не оптимальное решение задачи. Это кстати многое говорит о твоем проблем-солвинг скилле, который является одним из ключевых не только в программировании, но и в жизни.
Ты не удосужился капнуть глубже и посмотреть с другой стороны на задачу.
А я вот дал пиздатый совет - не слушать всяких идиотов в интернете, как ты, а проработать вопрос с ллм.
Но я рад, что до тебя спустя несколько часов доперло и ты принял единственное правильное решение для себя - слиться.
>спросить ллм
Не, хуйня. Инфы в интернете на тему не то чтобы много, и она по десятому кругу начинает высираться решениями для Kotlin/JS, которые с таргетом wasm просто не работают. Нерабочие externals, наваливание экспериментального апи.
Какую используешь?
Включай thinking, иначе они генерируют полную хуету из несуществующего апи.
Локальная модель. Хотя может что-то и на сервере jb сейчас вычисляется.
Котлин не только jvm-based, он уже кучу лет умеет в js компилиться и даже в бинарник.
В руби например используют менее встратое klass
Лучше джаву, если не хочешь именно Андройдом заниматься. Хотя опыт +- взаимозаменимый.
Сначала точно нужно джаву изучать и платформу, а потом котлин (но его после джавы очень просто освоить, разве что корутины посложнее даются, потому что в джаве нет аналогичной абстракции).
Бэка достаточно есть на котлине, я вот уже 5 лет пишу бэкенд чисто на котлине.
> Сначала точно нужно джаву изучать и платформу, а потом котлин
Если например вкатываться в андройд и композ, то никто не мешает сначала изучать котлин с композом, а далее по мере углубления уже осваивать и джаву с платформой, туева хуча людей так вкатывается и ничего страшного
не пойму в чём отличие когда Employee пишут без круглых скобок, а Programmer() со скобками ?
А функция с телом `exit(0)` какой возвращаемый тип имеет? тоже nothing?
class Pair<T>(val first: T, val second: T)
val intPair(1,2)
val stringPair("hello","world!")
}
А всё сам нашёл
Сперва выкатись в Польшу, у хохлов работы нет.
Сам же говоришь, что вакансий нет. Как ты собрался лезть в то, что не существует?
Бекенд на котлине это как правило Java/Kotlin+Spring
Но другое дело что в восточной европе сейчас нигде работы нет, западные заказчики отвалились так как сами сидят вайбкодят, в целом модель аутсорса сдохла к хуям. Что в санкционной России где галеры, которые в 22-24 годах брали заказы от банков и госухи, сейчас подохли к хуям что в беларуси, сербии, болгарии, румынии. Работки тупо нет нигде нынче.
Для кого он выглядит интереснее? Для вебмакак? Нормальные люди уж точно на нём не станут писать.
>ktor
Нахуй он нужен если ты получаешь по сути тоже самое что и в голанге из коробки или в питоне fastapi.
Вы видите копию треда, сохраненную 14 июня в 14:23.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.