Сколько видосов не смотрю, все называют val константой. Но это не так. val - это read-only переменная. Для того чтобы объявить константу в котлине нужно использовать const val!
@@sergsuper открой официальную документацию, там чёрным по белому написано, что "read-only local *variables* are defined using the keyword val. They can be assigned a value only once." И отличие там существенное. Константа задаётся во время компиляции, а val можно задать во время выполнения.
"разработчики пытаются вытеснить джаву и потому постарались сделать так, чтобы миграция проектов с котлина на джаву была максимально простой". причем и в субтитрах так
"отсутствие геттеров и сеттеров" прямо сейчас изучаю котлин на JetBrains Academy и в данный момент как раз на теме "Геттеры и Сеттеры" :D вроде как они есть, или я чего то не понял)))
А это новое видео? Как бы в java всё это давно присутствует. var есть, Unmodifiable списки есть, авто-геттеры через record, функциональное программирование через lambda. По сути, Kotlin - это просто java без legacy, но и без обратной совместимости. Обвешанный свистоперделками, но ни одна из них не может действительно сделать Kotlin лучше, так как работа над ядерным кодом JVM всё-таки в основном направлена на java. Вот выходит Loom через 10 дней и Continuation котлиновские тоже можно выбрасывать. Понимаю, многим нравится Kotlin, но он всё же дитя тёмных лет Java, когда язык развивался медленно, а сейчас разработка OpenJDK даёт прикурить не только JVM-языкам.
По поводу типов в kotlin спорно, вроде бы он имеет только ссылочные типы данных (Представлен классами), но на уровне компилятора там идет адаптация под примитивный тип, который храниться целеком на стеке.
Дело не в совместимости. Классы вообще-то и в Java есть, как и в Kotlin. Итак, все примитивы в Kotlin это неизменяемые классы с соответствующими названиями. Но в теории компилятор может их менять на настоящие JVM примитивы. Так что в Kotlin нет доступа к примитивам.
@@BeBr0 За счёт простаты синтекса котлина его "трудные фичи" по типу экстеншенов и DSL даются куда проше чем в том же C++ или Паскале. Так же сильно помогает адекватная дока с примерами по языку
Котлин предназначен для android ... И как бы все. язык с динамической типизацией не способен тащить большие проекты. Убрать типизацию и поменять синтаксис это не значит сделать продолжение java- это значит сделать другой язык.
Он не простой, а запутанный Требует опыта, тогда как на джаве кодить проще в плане фундаментального понимания кода То есть на джаве быстрее освоишься, но если ты уже программист то котлин для тебя будет простым в том плане что писать будешь код быстрее
1995 - "я тогда еще не родился" т.е. тебе меньше 27 лет, но при этом в каком то ролике говорил "у меня 7 лет опыта преподавания" это типа не закончив бакалавр с 20 лет преподавать начал?) чет где то свистишь походу
@@Raven-lg7td а что не так, с 20 лет преподавать? Я с 14-ти лет программирую, начинал вообще с дельфи. В чём проблема? В чём суть претензии? Я это делал "абы как", а он мог целенаправленно подтягивать свои навыки и в 20 лет уже заниматься этим. Не всем же аболтусам быть
Насчет геттеров и сеттеров "Для каждого объявленного свойства Kotlin сгенерирует поле, метод чтения (геттер) и, если надо, метод записи (сеттер).Прямо объявить поле в классе нельзя. Kotlin инкапсулирует поля, защищая данные в поле и открывая доступ к ним через методы свойств. Метод чтения свойства определяет правила его чтения. Методы чтения создаются для всех свойств. Метод записи определяет правила присваивания значения свойству, поэтому он генерируется только для изменяемых свойств, - другими словами, если свойство объявлено с ключевым словом var" пример class Rectangle(val height:Int, val width:Int) { val isSquare:Boolean get() = height==width }
@@BeBr0, это ведь логичное нововведение. Зачем нужно каждый раз генерировать геттеры и сеттеры, если в 99% они просто возвращают переменную, либо просто присваивают новое значение? Разумнее писать их только тогда, когда они отличаются от стандартного поведения. Читаемость кода выше.
Я рассматривал языки без надстроек. Зачем использовать ломбок, если можно не использовать? Ну и я надеялся, что мои зрители увидят в этом ролике очевидный посыл - любое сравнение языков программирования необъективно Всегда будут люди которым нравится джава и те, кому нравится котлин, не вижу в этом никаких проблем, особенно учитывая их совместимость
@@BeBr0как по мне котлин уже лучше и практичнее джавы, минус - это компиляцию примерно на 20-25 процентов дольше, но оно того стоит. Код начинает писаться намного быстрее и чище
не я на котлин не пойду, я только начал разбираться в java кодю уже 1.5 года а тут БАЦ ТЕБЕ котлин вылиз блин... только один вопрос, пока они делают котлин они про java не забудут?
джава еще будет жить и жить. на твой век хватит точно. говорю как человек мимо проходящий и ничего общего с программированием не имеющий. но по факту это так....
Java не умрет т.к она используется в очень многих сферах кроме Android, а Котлин же чисто под андроид подходит. Возможно там он её и заменит потом, но полностью яву не забудут)
Я сначала выучил полностью питон за месяцев так 7-8, потом джаву на 85% за месяц. Потом через пару месяцев узнал про котлин и перепрыгнул на него с джавы за неделю.
«Единственный минус Котлина - это его сложность». Котлин это свой мир, со своим компилятором - там свои баги тоже есть, с кучей стыковок с джавой - где не все гладко бывает также, хоть и заявляется почти полная совместимость - она на 99% есть, но если вы столкнетесь с этим процентом будет вам проблема лишняя, в котлин не так мало проблем, как вы думаете. Хоть и не так много как в той же скала!
Почему то когда сравнивают джаву и котлин , у всех поголовно какое то сравнение с 8 версией джавы. Где нету варов, нету рекордов и еще много всего .Даже на курсах по котлину , везде говорят одно и то же. Хоть про корутины бы кто рассказал
У тебя примитивы хранятся в стэке , всегда , как более быстрый способ достать из памяти. Ты не можешь получить напрямую доступ к переменным, потому в heap тебя никто не пустит , даже объекты оставляют указатели на себя в стэке, где хранятся метаданные, че за объект , и где его адресное пространство в heap
Имею удовольствие поддерживать крупные kotlin проекты, так вот, это жуть как неприятно по сравнению с java проектами, сильно сказывается отсутствие декомпилятора для котлин и т.д. Крупным компаниям, заинтересованным в развитие и поддержке проекта я бы крайне не рекомендовал использовать котлин.
Какие ограничения вызывает отсутствие декомпилятора? Котлин проекты, написаные на JVM можно декомпилировать в Java byte code. Kotlin native можно декомпилировать
@@arctan-k у вас есть реальных опыт декомпиляции проектов на котлине ? Если есть, поделитесь опытом. У нас такой опыт был не очень удачный - много специфического нечитаемого текста + встречаются пустые методы, которые декомпилятор не смог разобрать. Пробовали разные декомпиляторы от jad до fernflower и добавлю, отсутствие декомпилятора не единственная причина некомфортной поддержки котлин проектов, просто не сильно интересно делиться техническими подробностями и бодаться потом с котлин-фанатами.
Не думаю что Kotlin будет полностю заменть Java , почему ? да потому что уже моногое написно в Java , И большенство комании ищеть Java разрабов имменоо по этому !
@@Das.Kleine.Krokodil По умолчанию классы в контлин являются final - от них нельзя наследоваться. Это сделано для того, чтобы разработчики отдавали предпочтение композиции
Круть 👍
Запомните, детишечки, разработчик языка Java - Sun Microsystems, а не Oracle. 😀
А ещё чё? Никто ведь ничего не покупал, верно? А оракл тут просто типо как хер с горы? Апдейты судя по всему тоже Sun Microsystems выпускают...
Сколько видосов не смотрю, все называют val константой. Но это не так. val - это read-only переменная. Для того чтобы объявить константу в котлине нужно использовать const val!
какая же она переменная если она read-only?
@@sergsuper открой официальную документацию, там чёрным по белому написано, что "read-only local *variables* are defined using the keyword val. They can be assigned a value only once."
И отличие там существенное. Константа задаётся во время компиляции, а val можно задать во время выполнения.
@@sergsuperval может изменить значение под капотом, но сам ты не можешь изменить его
@@sergsuperнайди выступление Михаила Левченко котлин, на 5:57
val = java final. Ты не сможешь изменить значение ссылки или значение примитива
понятно и интересно)
чотко объяснил, лайк от СЕООНЛИ
"разработчики пытаются вытеснить джаву и потому постарались сделать так, чтобы миграция проектов с котлина на джаву была максимально простой". причем и в субтитрах так
Круть, прям четко и понятно что такое колин, а можешь расскрыть темы React Native - Vue всякие e;ectron, кросплатформеность..
"отсутствие геттеров и сеттеров"
прямо сейчас изучаю котлин на JetBrains Academy и в данный момент как раз на теме "Геттеры и Сеттеры" :D
вроде как они есть, или я чего то не понял)))
По факту их нет, но это только на первый взгляд, потому что в реальности они просто скрыты
А это новое видео?
Как бы в java всё это давно присутствует. var есть, Unmodifiable списки есть, авто-геттеры через record, функциональное программирование через lambda. По сути, Kotlin - это просто java без legacy, но и без обратной совместимости. Обвешанный свистоперделками, но ни одна из них не может действительно сделать Kotlin лучше, так как работа над ядерным кодом JVM всё-таки в основном направлена на java. Вот выходит Loom через 10 дней и Continuation котлиновские тоже можно выбрасывать.
Понимаю, многим нравится Kotlin, но он всё же дитя тёмных лет Java, когда язык развивался медленно, а сейчас разработка OpenJDK даёт прикурить не только JVM-языкам.
По поводу типов в kotlin спорно, вроде бы он имеет только ссылочные типы данных (Представлен классами), но на уровне компилятора там идет адаптация под примитивный тип, который храниться целеком на стеке.
Это скорее для совместимости с джавой
@@BeBr0 И для этого тоже, но еще оптимизация неплохая
Дело не в совместимости. Классы вообще-то и в Java есть, как и в Kotlin. Итак, все примитивы в Kotlin это неизменяемые классы с соответствующими названиями. Но в теории компилятор может их менять на настоящие JVM примитивы. Так что в Kotlin нет доступа к примитивам.
@@ЛюблюТактики-ъ1к Посмотрел во что компилиься котлин. Везде где можно польщуется примитивным типом
Впарил человеку который не разу не полил котлин. Он за 2 недели освоился и спокойно без джавы пишет Майнкрафт моды. Какой у черту трудный.
Основы простые хоть на паскале, хоть на с++
Идея в глубоком погружении
@@BeBr0 За счёт простаты синтекса котлина его "трудные фичи" по типу экстеншенов и DSL даются куда проше чем в том же C++ или Паскале. Так же сильно помогает адекватная дока с примерами по языку
Котлин предназначен для android ... И как бы все. язык с динамической типизацией не способен тащить большие проекты. Убрать типизацию и поменять синтаксис это не значит сделать продолжение java- это значит сделать другой язык.
Котлин не динамически типизирован)
Как раз об этом я и сказал в видео. Котлин не имеет ничего общего с динамической типизацией и многие этого не понимают. Увы
Котлин "динамической типизацией" такая же как джава со словом var или C++ с auto
откуда люди взяли, что котлин только для андроид? Типа на другое он не способен?
Не могу только понят kotlin сложний или нет бо в одном відео аргументи були ті самі но язик називали простим
Он не простой, а запутанный
Требует опыта, тогда как на джаве кодить проще в плане фундаментального понимания кода
То есть на джаве быстрее освоишься, но если ты уже программист то котлин для тебя будет простым в том плане что писать будешь код быстрее
1995 - "я тогда еще не родился" т.е. тебе меньше 27 лет, но при этом в каком то ролике говорил "у меня 7 лет опыта преподавания" это типа не закончив бакалавр с 20 лет преподавать начал?) чет где то свистишь походу
Великолепные математические способности, молодой человек
@@BeBr0 ну и в чем я неправ? ты типа решил иронично сьехать от ответа
@@Raven-lg7td а что не так, с 20 лет преподавать? Я с 14-ти лет программирую, начинал вообще с дельфи. В чём проблема? В чём суть претензии?
Я это делал "абы как", а он мог целенаправленно подтягивать свои навыки и в 20 лет уже заниматься этим. Не всем же аболтусам быть
@@aquinary. так он же высрал язву типа я неверно посчитал, и я не пойму где я неправ по расчетам
Тот самый момент, когда начинаешь изучать котлин с нуля🥲
Не зная ООП☠️
Прошло 2 месяца. Как успехи?)
@@parviz_77 забросил видимо) как и большинство с подобными комментариями
а как тут не забросить
@@СтраусТруп-с5н
Найс ролик
Программирование, ооп в джаве нужно знать не меньше, чем в котлине
Насчет геттеров и сеттеров "Для каждого объявленного свойства Kotlin сгенерирует поле, метод чтения (геттер) и, если надо, метод записи (сеттер).Прямо объявить поле в классе нельзя. Kotlin инкапсулирует поля, защищая данные в поле и открывая доступ к ним через методы свойств. Метод чтения свойства определяет правила его чтения. Методы чтения создаются для всех свойств. Метод записи определяет правила присваивания значения свойству, поэтому он генерируется только для изменяемых свойств, - другими словами, если свойство объявлено с ключевым словом var" пример
class Rectangle(val height:Int, val width:Int) {
val isSquare:Boolean
get() = height==width
}
Ты прав, мне нужно было выразиться более точно, сказав "в большинстве случаев неявное объявление геттеров и сеттеров"
@@BeBr0, это ведь логичное нововведение. Зачем нужно каждый раз генерировать геттеры и сеттеры, если в 99% они просто возвращают переменную, либо просто присваивают новое значение? Разумнее писать их только тогда, когда они отличаются от стандартного поведения. Читаемость кода выше.
@@vladyslavtymofieiev4213 как котлин разработчик, полностью с тобой согласен
Полугодовые обновления джавы для автора шутка? Ломбок для автора шутка?
Шутка)
Я рассматривал языки без надстроек. Зачем использовать ломбок, если можно не использовать?
Ну и я надеялся, что мои зрители увидят в этом ролике очевидный посыл - любое сравнение языков программирования необъективно
Всегда будут люди которым нравится джава и те, кому нравится котлин, не вижу в этом никаких проблем, особенно учитывая их совместимость
@@BeBr0как по мне котлин уже лучше и практичнее джавы, минус - это компиляцию примерно на 20-25 процентов дольше, но оно того стоит. Код начинает писаться намного быстрее и чище
не я на котлин не пойду, я только начал разбираться в java кодю уже 1.5 года а тут БАЦ ТЕБЕ котлин вылиз блин...
только один вопрос, пока они делают котлин они про java не забудут?
У этих языков разные разработчики
Лучше Rust, все остальное хрень...
джава еще будет жить и жить. на твой век хватит точно. говорю как человек мимо проходящий и ничего общего с программированием не имеющий. но по факту это так....
Java не умрет т.к она используется в очень многих сферах кроме Android, а Котлин же чисто под андроид подходит. Возможно там он её и заменит потом, но полностью яву не забудут)
Я сначала выучил полностью питон за месяцев так 7-8, потом джаву на 85% за месяц. Потом через пару месяцев узнал про котлин и перепрыгнул на него с джавы за неделю.
«Единственный минус Котлина - это его сложность». Котлин это свой мир, со своим компилятором - там свои баги тоже есть, с кучей стыковок с джавой - где не все гладко бывает также, хоть и заявляется почти полная совместимость - она на 99% есть, но если вы столкнетесь с этим процентом будет вам проблема лишняя, в котлин не так мало проблем, как вы думаете. Хоть и не так много как в той же скала!
Почему то когда сравнивают джаву и котлин , у всех поголовно какое то сравнение с 8 версией джавы. Где нету варов, нету рекордов и еще много всего .Даже на курсах по котлину , везде говорят одно и то же. Хоть про корутины бы кто рассказал
Var поддерживается в Java
Ну конечно, у Котлина украли 😁
На уровне метода онли🙃
Спасибо. Теперь все встало на свои места.
1:27 Процессору подавай не байт-код, а машинный код.
У тебя примитивы хранятся в стэке , всегда , как более быстрый способ достать из памяти. Ты не можешь получить напрямую доступ к переменным, потому в heap тебя никто не пустит , даже объекты оставляют указатели на себя в стэке, где хранятся метаданные, че за объект , и где его адресное пространство в heap
Имею удовольствие поддерживать крупные kotlin проекты, так вот, это жуть как неприятно по сравнению с java проектами, сильно сказывается отсутствие декомпилятора для котлин и т.д. Крупным компаниям, заинтересованным в развитие и поддержке проекта я бы крайне не рекомендовал использовать котлин.
Какие ограничения вызывает отсутствие декомпилятора? Котлин проекты, написаные на JVM можно декомпилировать в Java byte code. Kotlin native можно декомпилировать
@@arctan-k у вас есть реальных опыт декомпиляции проектов на котлине ? Если есть, поделитесь опытом. У нас такой опыт был не очень удачный - много специфического нечитаемого текста + встречаются пустые методы, которые декомпилятор не смог разобрать. Пробовали разные декомпиляторы от jad до fernflower и добавлю, отсутствие декомпилятора не единственная причина некомфортной поддержки котлин проектов, просто не сильно интересно делиться техническими подробностями и бодаться потом с котлин-фанатами.
Котлин сложнее джаваы? ))) Хорошая шутка, запишу.
Поглубже в него погрузись и поймешь почему
@@BeBr0 Ну так и про джаву можно сказать, если прям погрузиться во все существующие аспекты то тоже высота за облаками.
Сложнее потому что много под капотом, а у джавы как есть всё пишется
@@Das.Kleine.Krokodil Не правда)
И сколько там библиотек?
столько же, сколько и джавы😅
Огонь! Котлин прекрасен ☺️ (Java тоже в моём сердце 🤣)
то есть для того чтобы кодить на kotlin не надо изучать java, а то большинство сайтов прям орет о том что без java вам не выжить!!!
Не обязательно, но желательно потому что он сложнее
А вопрос такой, хочу андроид с чем писать Java & Kotlin?
месяц изучал дарт но там документация фиговый оказался!
Kotlin
Java
Питон
Фотошоп
html
4:19 Ключевое слово var есть в Джаве ещё с Джавы 10(если не ошибаюсь)
Да, это как сок в пивном баре. Вроде бы есть, вот только нахуя никто не знает, потому что все приходят за чем-то более соответствующим этому месту
Хм... После фразы про то, что байткод - это нули и единички напрягся)) Дальнейшая адекватность ролика оказалась под вопросом.
Жесть, как я мог такое сказать
Ошибка в сценарии, с кем не бывает
ну так то по факту, вся информация в двоичной эвм это нули и единицы
@@user-wf6lc5jz9x да но, я сказал сначала про байт код, значит не совсем верно говорить про нули и единицы в этом контексте
тут все видео такие
Кайфуля
Не думаю что Kotlin будет полностю заменть Java , почему ? да потому что уже моногое написно в Java , И большенство комании ищеть Java разрабов имменоо по этому !
Минус Явы ещё и в том, что каждый класс тащит за собой огромный хвост предков, что утежеляет конечный артефакт, зато, конечно, проще Котлина.
Чего? Вообще-то наследование уменьшает дублирование кода
А в котлине нет предков?
@@Das.Kleine.Krokodil По умолчанию классы в контлин являются final - от них нельзя наследоваться. Это сделано для того, чтобы разработчики отдавали предпочтение композиции
@@ill4374 вопрос в другом был
Что выполняется быстрее?
Нельзя дать точного ответа, в некоторых местах Java, в некоторых Kotlin
То, под что заточена JVM наверное.
Благодарю, посмотрел на одном дыхании. Хотелось бы больше здесь, а не на Бусти, но понимаю, что есть свои причины. Подписка и лайк)
Может быть ролик про гитхаб
Ну у Java есть более легкий вариант. JavaScript😁😁
JavaScript для сайтов
@@swenly8735 и не только.
@@Айбек-г3е ну для говно программ
@@swenly8735 Это не от языка зависит а от того, кто им пользуется.
@@flance911 ну хз, возможно. Но врятли ты напишешь спокойно жоскую 3д игру с пост проуессингами на javascript и чтобы это скомпилилось в exe
Котлин это внебрачный сын джавы опенсорсный
😂😂