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 разве не создавался ли для запуска на любой платформе? Для этого же и нужны эти виртуальные машины.