LINUX.ORG.RU

Java vs Kotlin [не мобильники]

 ,


0

4

Какое ваше отношение к котлину, стоит ли он того хайпа, который вокруг него сейчас происходит (или хайп искусственен для вас)? Почему бы вы не рекомендовали или наоборот рекомендовали котлин?

Вопросы касаются любых отраслей кроме мобильной разработки (можно даже kotlin-native, kotlin-js, но не мобильники)

Я только начал переходить на котлин (после 10+ лет на java), очень приятный язык. ИМХО котлин это что-то вроде TypeScript для Javascript, вся «магия» реализована очень простыми подходами, например property, при компиляции создается поле класса плюс геттер и сеттер; extension методы, это когда можно для любого типа определить доп методы (пример 101.isOdd()), создается статический метод, объекты «расширенного» типа передается в качестве аргумента в этот метод. И так во всем. Я вот параллель с TypeScript привел не случайно, нужно понимать как под капотом работает, иначе магия сбивает с толку, не понимаешь ограничений, что можно сделать а чего нельзя.

Aber ★★ ()

Смотря чего ты хочешь, кому-то и JEE хлеб. Собственно познания в JMM тебе в любом случае будут нужны.
Вокруг скалки сейчас больший хайп, хотя если тебе не нужен недохаскель в JVM или ты не отбитый типоориентированный программист, то и скалка не нужна.
Собственно не самый плохой кандидат для единого языка (вебня, бэк, мобилки), но и пока никакой фантастики и распрекрасных фич.

Deleted ()

Какое ваше отношение к котлину, стоит ли он того хайпа, который вокруг него сейчас происходит (или хайп искусственен для вас)?

какой еще хайп? что за котлин?

waker ★★★★★ ()

Kotlin похож на Delphi и Pascal упоротым синтаксисом задания типов аргументов.

стоит ли он того хайпа, который вокруг него сейчас происходит

Разве он происходит? Это вокруг Rust, Swift все вертятся.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Kotlin похож на Delphi и Pascal упоротым синтаксисом задания типов аргументов.

А ты хоть код swift и rust смотрел?

var red, green, blue: Double

func greet(person: String) -> String {
    let greeting = "Hello, " + person + "!"
    return greeting
}
а теперь внимание:
var red, green, blue: Double

fun greet(person: String): String {
    val greeting = "Hello, " + person + "!"
    return greeting
}
Где тут Swift а где Kotlin?

Aber ★★ ()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от EXL

От парсинга, типы стали необязательны, часто их можно вывести из контекста и постоянно их прописывать в коде нет нужды. Например val index = 10 или for ((k,v) in map) {...}

Aber ★★ ()

Удобнее и быстрее в разработке, чем ява. Смешивать - неудобно, вылезают костыли. А вот чисто на котлине проект, или юзающий явовывые либы - норм.

В потрохах рефлекшена там засада, непродумано местами, но если не заниматься кулхакерством, то всё отлично.

subwoofer ★★★★★ ()
Последнее исправление: subwoofer (всего исправлений: 1)
Ответ на: комментарий от EXL

Да и нет, немного прочитал. Как я понимаю питон проверяет эту информацию о типах не в runtime, правильно? Т.е. проходит препроцессор который производит валидацию типов. Можно допустить, что левая библиотека вернет Long вместо Str и все упадет. Это типа как генерики в java, есть в коде, нету в в момент исполнения. А swift, kitlin это языки со статической типизацией, типы можно опускать только в случаях когда их может вывести компилятор, например ты объявленной переменной присваиваешь объект определенного типа, значит никакой неоднозначности нету.

Aber ★★ ()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от subwoofer

В потрохах рефлекшена там засада, непродумано местами, но если не заниматься кулхакерством, то всё отлично.

У меня такое мнение сложилось, что частое использование рефлекшена отражает провал языка. Объясню, мы через api начинаем манипулировать виртуальной машиной, чтоб сделать проще то, что сложно/невозможно сделать средствами языка. Так что если котлин действительно неплох, то и потребности в рефлекшене должно быть меньше.

Aber ★★ ()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Aber

У меня такое мнение сложилось, что частое использование рефлекшена отражает провал языка.

Открою тайну. Любая вещь хороша. Рефлекшен нужен для автоматизации рутинных операций. Там собрать все классы с аннотацией, и засунуть в Map. Или выдернуть информацию о типах аргументов метода, и конвертнуть из жисона в них. Да тысячи вариантов.

Просто рядовые девелоперы с этим не сталкиваются, потому как всё написано за них, и думают: аа рефлекшен, это провал, злые хакиры писали сей поганый код!

subwoofer ★★★★★ ()

может я пропустил какое событие, но Котлин был хайпом 2-3-4 года назад. Призванный завалить/потеснить/подвинуть..но что-то несклалось

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

может я пропустил какое событие, но Котлин был хайпом 2-3-4 года назад. Призванный завалить/потеснить/подвинуть..но что-то несклалось

В ~2003-2004 году писали что век Java уже прошел, пора закапывать, а я как раз книжку по java приобрел.

Я код swift и kotlin уже привел в пример, на habrahabr была статья о kotlin там было много комментов типа - «Так этож swift!!!... Скопировали c#???... в чем отличие от scala?», мне это сказало только об одном, сингулярность! Сингулярность языков программирования, можно предложить как будет выглядит следующий БОЛЬШОЙ язык и на что он будет похож.

Aber ★★ ()
Ответ на: комментарий от Aber

Сингулярность языков программирования, можно предложить как будет выглядит следующий БОЛЬШОЙ язык и на что он будет похож.

как очередной сахар над ассемблером?

anonymous ()
Ответ на: комментарий от tailgunner

Currently, the type checker will examine every object in a list. This means that for large structures performance can be a nightmare.

Но тесты вполне можно в это завернуть.

Вообще обмазал свой текущий проект целиком typehint`ами с помощью monkeytype, править их пришлось минимально. Теперь pycharm автодополняет всё везде и подсвечивает если я что-то не то пытаюсь передать или вернуть. mypy тоже отлично работает.

pawnhearts ★★★★★ ()
Ответ на: комментарий от Aber

Котлин снизу.

Определил по var и val.

А ещё я, не понял, начерта вне метода изменяемые глобальные переменные. val и инициализацию на месте для глобальных переменных надо.

И да, код на котлине вижу третий раз в жизни. Предыдущий раз - в понедельник на паре по Android'у. Увидел там геттеры и сеттеры из шарпа, усмехнулся.

Deleted ()
Последнее исправление: merhalak (всего исправлений: 2)
Ответ на: комментарий от pawnhearts

Мечтаю о том дне, когда люди поймут, что для Python 4 нужна будет строгая статическая типизация с тем же синтаксисом.

Ну и фашистские отступы (не на выбор: пробелы/табы, а только что-то одно, например только табы).

Deleted ()
Ответ на: комментарий от subwoofer

Рефлекшен нужен для автоматизации рутинных операций. Там собрать все классы с аннотацией, и засунуть в Map. Или выдернуть информацию о типах аргументов метода, и конвертнуть из жисона в них. Да тысячи вариантов.

В Котлине можно почти совсем не испобьзовать аннотации, а вместо них использовать delegated property и писать что-то вроде:

val bean: Bean by inject()
либо
val button = lazy { findElementById<Button>(R.id.button) }
такой код легче поддерживать (в том смысле, что тот же DI без всякой магии и кодогенерации и достаточно прост, в отличае от Dagger того же) Так что в Котлине можно в большинстве случаев обойтись и без мета программирования.

Int64 ★★ ()
Последнее исправление: Int64 (всего исправлений: 1)

Какое ваше отношение к котлину, стоит ли он того хайпа, который вокруг него сейчас происходит (или хайп искусственен для вас)?

Пока не заметил никакого хайпа. Что-то было на андроиде, но так, всплеск интереса небольшой

dave ★★★★★ ()

Какое ваше отношение к котлину

Отрицательное из-за фрагментации и усложнения Java экосистемы. Например, недавно подключил в зависимости MapDB в Eclipse, решил кое-что глянуть в сырцах MapDB, а там какое-то месиво непонятного кода.

стоит ли он того хайпа, который вокруг него сейчас происходит (или хайп искусственен для вас)

IDEA в нём вся измазана (из коробки), зайдешь в какую-нибудь менюшку, а там котлин котлином погоняет. Поэтому им может и удастся затуманить разум части джава разрабов. Но по хорошему хотелось бы судьбы груви для этого выскочки.

foror ★★★ ()
Ответ на: комментарий от Aber

например property, при компиляции создается поле класса плюс геттер и сеттер

За дешево вас купили...

extension методы, это когда можно для любого типа определить доп методы (пример 101.isOdd())

Даже жабаскрипт хипстеры условились, что это хреновая идея

Я вот параллель с TypeScript привел не случайно

Вы не понимаете зачем был сделан TypeScript - ваша параллель с котлином неверная.

foror ★★★ ()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от Int64

В Котлине можно почти совсем не испобьзовать аннотации,

Шо бы я без тебя делал. Не скажешь, где я писал про твой любимый DI?

А потом расскажи, ещё почему ты путаешь DI и SL, хотя, нет мне это не интересно.

subwoofer ★★★★★ ()

Kotlin выглядит поприятнее Java. Пожалуй, он нужен. В конце концов, не у всех хватит ума осилить Scala. Но это же не повод издеваться над людьми, заставляя их писать код на Java.

Zenom ★★★ ()