LINUX.ORG.RU

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

 ,


0

4

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

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

Ответ на: комментарий от wist512

Scala - полноценный функциональный язык, Java - полноценный императивный. А Kotlin - где то посередине. Только середина не золотая.

anonymous ()

Как к любому хайпу, если через пару лет ещё не сдохнет, можно будет посмотреть

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

Компилятор медленный, можно кофе спокойно пить.

Deleted ()

Я только начал переходить на котлин (после 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 ★★★★ ()

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

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

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

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

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

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

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

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

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

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

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

Deleted ()

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

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

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

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

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

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

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

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

anonymous ()

Kotlin/JVM отличный язык, рекомендую использовать его в любом проекте. Насчёт остальных инкарнаций опыта использования нет.

Legioner ★★★★★ ()
Ответ на: комментарий от 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 ★★★★★ ()

Java сложно исправить, но эти хотя бы немного пытаются.

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

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

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

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

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

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

О, так можно в 3-е-питоне писать List[int] и он будет проверять, что в списке только инты?

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

Не в курсе, PyCharm такие штуки курить умеет? То есть подсветит, если не тот тип в функцию передашь?

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

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

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

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

Ну я там накосячил, тупо нашел код на swift и переделал его как мне казалось на Kotlin. var red, green, blue: Double - оказалось что так в Kotlin делать нельзя.

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

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

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

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

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

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

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

dave ★★★★★ ()

Котлину будет очень сложно выделиться, потому что в этой конюшне JVM и так хватает кандидатов, взять ту же Scala

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

только табы

Зачем тебе 8 позиций на отступ? Разве плохо, когда код во всех редакторах выглядит одинаково?

grem ★★★★★ ()

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

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

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

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

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

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

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

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

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

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

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

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

Если бы ты похвалил другие языки, то нарушил законы термодинамики.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от grem

Это было «к примеру».

Сам я практически везде юзаю пробелы.

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

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

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

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

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

Где я был против котлина? Я всгда был, есть и буду есть против скалы.

Deleted ()

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

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

Откуда это вообще пошло?

Из математики. Это сишный стайл пошет от наркомании создателей си. Везде еще до си всегда было так:

value: Type

vlad9486 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.