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 в проекте.
>>3526941 > Такого рода функции для чего-то нужны? Чтобы бросить исключение. Nothing указывает на то, что ожидается, что функция завершиться раньше чем будет выполнена. Например из-за throw exception. > Они должны присутствовать в программе на котлине? Если у тебя есть логика, которой такое нужно, то да. В моей 5 летней практики пока ни разу не пригодилось.
>>3527037 >пока ни разу не пригодилось просто я раньше писал что-то подобное, но делал проще если встречается что-то неправильное то пишу сообщение во второй канал write(2, message, strlen(message)); exit(2);
>>3527073 Не уверен, что ты правильно понял значение функции возвращающей Nothing. В ней не предполагается никакого альтернативного выполнения кроме как ошибки. То есть это не то, что в функции вычисляющей 2+2 произошла ошибка. Это скорее то, что "нам нужно закрыть все ресурсы перед тем как бросить исключение и мы вызываем функцию закрывающую ресурсы и бросаем внутри неё исключение". Вот такая функция должна возвращать Nothing.
РЕШИЛ НАПИСАТЬ ПРИЛОЖЕНИЕ НА KMP @ ПИШЕШЬ И ДУМАЕШЬ КАКОЕ НЕУДОБНОЕ ГУМНО @ ГОВОРИШЬ ОБ ЭТОМ КОЛЛЕГЕ @ КОЛЛЕГА НЕ ПОНИМАЕТ ПОЛОВИНУ ТОГО, ЧТО ТЫ ЕМУ РАССКАЗЫВАЕШЬ @ "А ТЫ ЧТО НЕ НА МАКЕ СИДИШЬ? ТОГДА ПОНЯТНО У НИХ ПЛАГИН KMP ТОЛЬКО ДЛЯ МАКОСИ" @ ЧЕКАЕШЬ ЭТУ ИНФОРМАЦИЮ @ ОХУЕВАЕШЬ ОТ ТОГО, ЧТО ЭТО ПРАВДА
>>3537815 Как же хорошо, что я выполз из этого мира джава говна. Котлин слишком рано завендерлочился, еще показательно нагнул ру комьюнити. Тут даже самые ЧСВэшные смогли прочувствовать, что такое вендерлок.
Говно без души, натырили сахара, пытались в 1,5 студента попилить гига рынки, чудом скукожились до андроида, так же с максимализмом пытались попилить кроссмобильную разработку, не сделав для этого ничего (в отличие от команды дарта или js). Хз что там сейчас, но когда я варился в жабе, по ощущениям котлин практически не развивался.
Вот скажи анон, запилили они свой компилятор 2.0 и что пошла активная разработка?
>>3538158 Да запилили. На KMP переписали приложения Duolingo, McDonald's, и ещё несколько брендов. В целом всё хорошо, только всё что касается KMP помечено как экспериментальный апи и программировать под него то ещё удовольствие. Зато в отличии от флаттера действительно можно один раз написать код на котлине и он будет работать под все платформы. По крайней мере если ты готов использовать экспериментальный апи.
>>3538270 Если честно, не особо интересует что там на мобилках. Сейчас андроид есть, завтра его нет, туда же сразу улетит и котлин.
Я тот кто создавал первые треды по котлину (еще с тем долбо-котом и теребил жабистов в треде). Тоже думал что у яп есть будущее, но потом как вылез из жаба мирка, сразу все стало на свои места. поныл, забейте
>>3538458 Шарпунь + жс. Еще я с головой влез в геймдев (в свободное время). Хоть и начинал с юнити, но сейчас годот ковыряю. Не ожидал что будет так нравится.
>>3538524 > Шарпунь + жс. Шарпы ещё живы? Хотя и винда ещё жива, чего им умирать. > Еще я с головой влез в геймдев (в свободное время) Ох, желаю удачи. Я когда-то пробовал и понял, что геймдев это на 80 % рисование артов и анимаций.
>>3538527 >Шарпы ещё живы? Хотя и винда ещё жива, чего им умирать. Уже поднадоела эта тема, неткор как лет 10 существует, но все равно находятся люди не в теме. Современный дотнет очень хорошо показывают себя в бэкенде на линуксах, да и отполировали его норм так. Но, наверное да, все это может не в СНГ.
>что геймдев это на 80 % рисование артов и анимаций. Смотря что, можно играться с механиками. Да и само 3D моделирование, мне тоже интересно, я на моделинге вообще релаксирую (что не сказать про глаза).
>>3538547 > Но, наверное да, все это может не в СНГ. Я работаю на американскую компанию. У нас продуктов около десяти и ни один из них не написан на шарпе. В бэкенде или джава, или котлин, или го. При том, что каждая команда принимает самостоятельно решение на чём писать. > Смотря что, можно играться с механиками. Да и само 3D моделирование, мне тоже интересно, я на моделинге вообще релаксирую (что не сказать про глаза). Это хорошо.
>>3538601 Тогда к чему это? Есть области, где есть джава, где шарп, го, они могут пересекаться, а могут нет. У нас нет джавы, но это вообще ни о чем не говорит. Средний джавист вообще ходячий мем и может кроме жабы ничего в жизни не видеть. И это ЧСВ разогнано абсолютно искусственно, поверь. Так что к чему ты вообще высрал про свою работу? Что это должно было показать?
>>3541432 А смысл? Котлин вроде умеет компилироваться в бинарник или там нет поддержки корутин? Но опять же, можно взять graalvm + котлин с корутинами и получится +- го по производительности + поддержка ООП и всех фич котлина.
>>3541632 Проблема цветных функций (в го ее нет, асинхронность под капотом) и производительность (без всяких JIT прогревов и VM говна, кросскомиляция).
Котлин нейтив вообще непонятно что такое. Либо ты сразу дизайнишь язык без VM, либо ешь пародию на нейтив. Они сами говорили что производительность им не нужна, вся суть нейтив это залезть в айфон.
Тоже самое ко всяким graalvm - как всегда будет "можно, но..."
>>3552266 >как оно на arm пока пытался билдить на пк. java разве не создавался ли для запуска на любой платформе? Для этого же и нужны эти виртуальные машины.
>>3572441 Это не так. Я пишу бэкенд онли на котлине с 20 года, сейчас в 80% джава бэкенд вакансиях требуется котлин и все новое пишут на нем. Есть конечно скуфские компании, где из принципа не переходят - вк (бывший мейл ру) Про спринг тоже хуйню говоришь, есть куча других альтернатив, которые имеют нормальный такой объем рынка
Да все что угодно, кроме демонстрации профнепригодности. Я вообще не понимаю что это и почему оно не используется дальше в Снеге (или я в глаза долблюсь)
>>3634395 Просто найди способ компиляции 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 есть что-то аналогичное.
>>3634479 Чел, котлин не только jvm-based, он уже кучу лет умеет в js компилиться и даже в бинарник. >>3634395 Советую не ебать голову, а спросить ллм.
>>3634546 Я знаю, что его можно компилировать не только в jvm, но я предложил тот вариант, в работе которого я уверен: сам в 2020 делал компиляцию jar в wasm.
Но вернётся в изначальному: >котлин не только jvm-based А такое утверждалось мной? На такой вопрос можно ответить "да" или "нет". Если ты ответишь "да", то укажи, где я такое утверждал. Если ты ответишь "нет", то это будет означать, что ты где-то просто решил придраться к чему-нибудь.
>>3634567 Я сделал этот вывод из твоего хуевого и костыльного совета. Если ты дал такой совет, при условии того, что ты знаешь, что ктолин умеет компилится в js, то это показывает, что ты глупый человек.
>>3634571 >Я сделал этот вывод вывод твой неправильный.
>при условии того, что ты знаешь, что ктолин умеет компилится в js Но вопрос был не про комппиляцию в js, а про компиляцию в wasm. Вопрос прочитай нормально сначала. Несколько раз и без "я сделал вывод".
>то это показывает, что ты глупый человек. Ужасная попытка в оценку умственных способностей. Человек, который брякнет что-то, а потом отмазывается фразой "я сделал вывод" без точных фактов, который при вопросе о компиляции в wasm почему-то говорит про компиляцию в js, выглядит глупо.
Ты до сих пор не ответил на мой один вопрос. Если я глупый человек, то ты, неспособный ответить на один единственный вопрос, почему-то считающий, что в вопросе компиляции котлина в wasm надо обязательно затронуть тему компиляции в js, делающий выводы на пустом месте, кто в такой ситуации?
Один единственный вопрос. И на него ты не смог ответить.
Ты не просто сел в лужу, ты буквально нырнул в лужу и купаешься с голубями. Это смешно.
>>3634665 У меня из кучи вкладок эта открыта. И мне очень интересно давить таких озлобленных, долумывающих за других людей, уникумов, как ты. Так что? Ответ будет? Я позже загляну сюда. Думаю, ты не сможешь ответить на этот вопрос: признать свою неправоту тебе тяжко, а доказать, что ты прав, ты не можешь.
>>3634667 Ладно, даю наводку - котлин уже умеет компилиться в js. Потом подумай, что такое васм и его цель. Попытайся этот клубок раскрутить. Но я думаю, что ты не осилишь, иначе бы наш диалог закончился на моем первом сообщении.
>>3634700 Нужно знать возможности инструмента, правильно поставить задачу и выбрать самое оптимальное решение для этой задачи. Ты посоветовал городить костыли, хотя более правильное решение на поверхности.
>>3634704 В общем, у меня других дел полно, а отвечать дураку или нейронке бессмысленно. Большой текст ты не осилил(ты сам написал, что читать не будешь, но я понимаю, что ты просто не смог прочитать), а кратко описать всю твою проблему я не могу - настолько она велика.
Моё дело сделано: я дал хороший совет на вопрос про wasm, а ты обделался, пытаясь выдавать компиляцию в js как хороший совет, и сидишь в луже.
Успехов тебе. Больше так не обделывайся и перестань садиться в лужу.
>>3634708 Ты предложил максимально уебищное, костыльное, сложное и не оптимальное решение задачи. Это кстати многое говорит о твоем проблем-солвинг скилле, который является одним из ключевых не только в программировании, но и в жизни. Ты не удосужился капнуть глубже и посмотреть с другой стороны на задачу. А я вот дал пиздатый совет - не слушать всяких идиотов в интернете, как ты, а проработать вопрос с ллм. Но я рад, что до тебя спустя несколько часов доперло и ты принял единственное правильное решение для себя - слиться.
>>3634485 >спросить ллм Не, хуйня. Инфы в интернете на тему не то чтобы много, и она по десятому кругу начинает высираться решениями для Kotlin/JS, которые с таргетом wasm просто не работают. Нерабочие externals, наваливание экспериментального апи.
>>3644698 Сначала точно нужно джаву изучать и платформу, а потом котлин (но его после джавы очень просто освоить, разве что корутины посложнее даются, потому что в джаве нет аналогичной абстракции). Бэка достаточно есть на котлине, я вот уже 5 лет пишу бэкенд чисто на котлине.
>>3645175 > Сначала точно нужно джаву изучать и платформу, а потом котлин
Если например вкатываться в андройд и композ, то никто не мешает сначала изучать котлин с композом, а далее по мере углубления уже осваивать и джаву с платформой, туева хуча людей так вкатывается и ничего страшного