Kotlin - новый язык для JVM
От: QrystaL Украина  
Дата: 20.07.11 06:57
Оценка: 68 (2)
Kotlin

Интересно, займет ли он свою нишу?
Re: Kotlin - новый язык для JVM
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 20.07.11 09:01
Оценка: 1 (1)
Здравствуйте, QrystaL, Вы писали:

QL>Kotlin


QL>Интересно, займет ли он свою нишу?

Какую конкретно нишу?
Sic luceat lux!
Re[2]: Kotlin - новый язык для JVM
От: QrystaL Украина  
Дата: 20.07.11 09:05
Оценка:
Здравствуйте, Kernan, Вы писали:
K>Какую конкретно нишу?

The language way simpler than the most mature competitor – Scala.
Re[3]: Kotlin - новый язык для JVM
От: nau  
Дата: 20.07.11 09:47
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, Kernan, Вы писали:

K>>Какую конкретно нишу?

QL>The language way simpler than the most mature competitor – Scala.


Не похоже, что Котлета сильно проще.
В теории практика не отличается от теории, но на практике — отличается
Re: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 09:49
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Kotlin

QL>Интересно, займет ли он свою нишу?
Reified generics. Вау!!!!!!
Sapienti sat!
Re: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 10:05
Оценка: 3 (1)
Здравствуйте, QrystaL, Вы писали:

QL>Kotlin

QL>Интересно, займет ли он свою нишу?
Супер. Читаю доку.

Мне этот язык всё больше и больше нравится:
1) Pattern matching сделан более вменяемо, чем в Скале.
2) Нет implicit'ов, что я считаю большим плюсом.
3) Null-safety вмонтировано в язык. В Скале только уродский Option, который даже для Pattern matching'а использовать нормально нельзя.
4) Есть break и continue. Как ни странно, в Скале их нет и замены не всегда удобны.
5) Множественное наследование.
6) Мини-DSL для конструкторов.
7) Именованные параметры, в том числе для туплов.

Из того что в Скале есть, но чего не вижу в Kotlin:
1) Удобные конструкторы для списков и PM по ним.
2) Библиотеки коллекций выглядят менее развитыми.

В целом, супер! Жду релиза.
Sapienti sat!
Re[2]: Kotlin - новый язык для JVM
От: WFrag США  
Дата: 20.07.11 13:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

QL>>Kotlin

QL>>Интересно, займет ли он свою нишу?
C>Reified generics. Вау!!!!!!

А Gosu смотрел? Эти ребята им вдохновлялись, инфа 100%.
Re[2]: Kotlin - новый язык для JVM
От: avpavlov  
Дата: 20.07.11 13:58
Оценка:
C>5) Множественное наследование.

можно сказать, что они в Скале есть через трэйты

C>7) Именованные параметры,


Для кэйс классов в Скале поддерживаются даже дефолтные значения и копирование с изменением всего нескольких параметров, например

case class Address(bld:String, street:String, city:String, country:String)
val a = Address("1","Arbat","Moscow","Russia")
val a2 = a1.copy(bld="2")

C>в том числе для туплов.


вообщем, тоже есть

def getPoint = (1,2)
val (x,y) = getPoint
println(x)

C>Из того что в Скале есть, но чего не вижу в Kotlin:

C>1) Удобные конструкторы для списков и PM по ним.
C>2) Библиотеки коллекций выглядят менее развитыми.

Кэйс классы у них есть, но названия они им не дали, и именуют "classes that declare all their primary constructor parameters val"

C>В целом, супер! Жду релиза.


Скала у всех на слуху, а взлетает долго. Мне кажется этот ещё дольше будет взлетать.
Re[3]: Kotlin - новый язык для JVM
От: WFrag США  
Дата: 20.07.11 14:03
Оценка:
Здравствуйте, avpavlov, Вы писали:

C>>В целом, супер! Жду релиза.


A>Скала у всех на слуху, а взлетает долго. Мне кажется этот ещё дольше будет взлетать.


Это-то как раз неудивительно. Напихали фич.
Re[2]: Kotlin - новый язык для JVM
От: avpavlov  
Дата: 20.07.11 14:07
Оценка:
C>1) Pattern matching сделан более вменяемо, чем в Скале.
C>2) Нет implicit'ов, что я считаю большим плюсом.
C>3) Null-safety вмонтировано в язык. В Скале только уродский Option, который даже для Pattern matching'а использовать нормально нельзя.
C>4) Есть break и continue. Как ни странно, в Скале их нет и замены не всегда удобны.
C>5) Множественное наследование.
C>6) Мини-DSL для конструкторов.
C>7) Именованные параметры, в том числе для туплов.

ещё делегирование как альтернатива наследованию выглядит занятно

http://confluence.jetbrains.net/display/Kotlin/Classes+and+Inheritance#ClassesandInheritance-Delegation

Ещё они утверждают, что в Скале нет инлайн функций, но в пример приводят ровно то, что Скала прекрасно умеет делать

http://confluence.jetbrains.net/display/Kotlin/Functions#Functions-Inlinefunctions
Re[3]: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 14:08
Оценка:
Здравствуйте, WFrag, Вы писали:

QL>>>Kotlin

QL>>>Интересно, займет ли он свою нишу?
C>>Reified generics. Вау!!!!!!
WF>А Gosu смотрел? Эти ребята им вдохновлялись, инфа 100%.
Смотрел. Не понравилось.
Sapienti sat!
Re[4]: Kotlin - новый язык для JVM
От: avpavlov  
Дата: 20.07.11 14:13
Оценка:
WF>Это-то как раз неудивительно. Напихали фич.

В этом меньше, но их за это будут пинать, и они всё равно напихают
Re[3]: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 14:19
Оценка:
Здравствуйте, avpavlov, Вы писали:

C>>5) Множественное наследование.

A>можно сказать, что они в Скале есть через трэйты
Они кривые. Скажем, для них нет конструкторов и вообще их инициализация неудобна. Diamond-проблему trait'ы в Scala никак не решают, а просто задают детерминированный механизм разрешения конфликта.

Так что в Kotlin поступили правильно — взяли обычное множественное наследование, убрав разницу между интерфейсом и классом.

C>>7) Именованные параметры,

A>Для кэйс классов в Скале поддерживаются даже дефолтные значения и копирование с изменением всего нескольких параметров, например
Case-классы я вообще в принципе ненавижу. Это запредельная кривость.

C>>в том числе для туплов.

A>вообщем, тоже есть
Нету.
def getPoint = (1,2,3)
val t = getPoint
//t._1, t._2, t._3 вместо t.x, t.y, t.z

А хочется так:
def getPoint = (x=1,y=2,z=3)
val t = getPoint
t.x, t.y, t.z


Если тупл большой (4-5 элементов) — уже неудобно. И особенно неудобно это для конструкторов case-классов.

Ну и именованые туплы (т.е. анонимные типы, по сути) — шаг на пути к LINQ.

C>>2) Библиотеки коллекций выглядят менее развитыми.

A>Кэйс классы у них есть, но названия они им не дали, и именуют "classes that declare all their primary constructor parameters val"
В Scala PM на практике требует использования case-классов. В Kotlin оно реализовано, как я вижу, через деструктурирующие функции, в том числе для обычных бинов.

C>>В целом, супер! Жду релиза.

A>Скала у всех на слуху, а взлетает долго. Мне кажется этот ещё дольше будет взлетать.
Scala слишком кривая местами.

Kotlin выглядит как почищенная от мусора Scala. Я, как программист на Scala, читаю программы на Kotlin вообще сразу — всё знакомое. Но при этом ВСЕ мои проблемы в Скале исправлены в Котлине.
Sapienti sat!
Re[3]: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 14:21
Оценка:
Здравствуйте, avpavlov, Вы писали:

C>>7) Именованные параметры, в том числе для туплов.

A>ещё делегирование как альтернатива наследованию выглядит занятно
A>http://confluence.jetbrains.net/display/Kotlin/Classes+and+Inheritance#ClassesandInheritance-Delegation
А кстати да, не заметил сначала, но тоже жутко нравится.

A>Ещё они утверждают, что в Скале нет инлайн функций, но в пример приводят ровно то, что Скала прекрасно умеет делать

A>http://confluence.jetbrains.net/display/Kotlin/Functions#Functions-Inlinefunctions
Не совсем. Scala пытается инлайнить функции почти всегда. Там есть @inline-аннотация, которая выдаёт ошибку компиляции, если инлайнинг не получился.
Sapienti sat!
Re[5]: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 14:29
Оценка:
Здравствуйте, avpavlov, Вы писали:

WF>>Это-то как раз неудивительно. Напихали фич.

A>В этом меньше, но их за это будут пинать, и они всё равно напихают
Scala слишком эволюционно развивалась. Скажем, из-за ранних грехов нет возможности сделать break/continue в циклах. Или цикл for в Scala временами работает раз в 20 медленнее аналогичного цикла while (да, это полный WTF, я знаю). Trait'ы тоже получились откровенно неудачны.
Sapienti sat!
Re[4]: Kotlin - новый язык для JVM
От: avpavlov  
Дата: 20.07.11 14:38
Оценка:
C>Я, как программист на Scala, читаю программы на Kotlin вообще сразу

а мне вот ключевое слово fun режет глаза. Слишком плотная ассоциация с "удовольствие", прямо каждый раз как натыкаюсь, первая мысль "что за удовольствие? А, function"
Re[5]: Kotlin - новый язык для JVM
От: Cyberax Марс  
Дата: 20.07.11 14:38
Оценка:
Здравствуйте, avpavlov, Вы писали:

C>>Я, как программист на Scala, читаю программы на Kotlin вообще сразу

A>а мне вот ключевое слово fun режет глаза. Слишком плотная ассоциация с "удовольствие", прямо каждый раз как натыкаюсь, первая мысль "что за удовольствие? А, function"
Мне понравилось, наоборот Видимо, из-за опыта с OCaml'ом.
Sapienti sat!
Re[4]: Kotlin - новый язык для JVM
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.11 15:06
Оценка:
Здравствуйте, nau, Вы писали:

nau>Не похоже, что Котлета сильно проще.


Проще. Но главное, что он будет сильно удобнее явы. В дотент хотя бы шапр есть с лямбдами и линком. А в Ява мире только жуткая Ява и перенавороченная Скала.

Плюс к этому языку будет первоклассная IDE, от лучшего производителя IDE. Для Скалы, насколько мне известно, ничего качественного так и не было сделано.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Kotlin - новый язык для JVM
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.11 15:10
Оценка: 7 (1)
Здравствуйте, QrystaL, Вы писали:

QL>Kotlin


QL>Интересно, займет ли он свою нишу?


Не понял зачем было давать ссылку на мелкую заметку на Хабре, когда на jetbrains.net целый раздел этому языку посвящен:
http://confluence.jetbrains.net/display/Kotlin/

Для справки — это новый язык для платформы Java создаваемый Jetbrains. Язык очень похож на Скалу, но проще в дизайне (рассчитан на ява-программистов, а не на гиков-функциональщиков) и в чем-то даже приятнее.

Из самых интересных фич я бы выделил следующие:
* Общая "гражданская" направленность. Авторы не упиваются крутостью, а думаю о простых смертных.
* Множественное наследование (точнее его эмуляция).
* Отсутствие null по умолчанию и приятные фичи по работе необязательными данными.
* Билдеры. Эдакая попытка добавить в язык следства создания простеньких ДСЛ-ей не вводя метапрограммирования.

Минусы тоже есть, но о них пока говорить рано, так как дизайн языка еще не завершен.

Ах, да МП и макросы. Их похоже не будет, так как авторы их побаиваются. Но это опять же не окончательно. Так что если комьюнити нажмет, то... ничего не исключено.

ЗЫ

Сразу отвечаю на вопрос. в Jetbrains про Nemerle знают . Сплай-строки, например, похоже появились именно по его влинием. Хотя могу ошибаться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Kotlin - новый язык для JVM
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.11 15:30
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Они кривые. Скажем, для них нет конструкторов и вообще их инициализация неудобна. Diamond-проблему trait'ы в Scala никак не решают, а просто задают детерминированный механизм разрешения конфликта.


C>Так что в Kotlin поступили правильно — взяли обычное множественное наследование, убрав разницу между интерфейсом и классом.


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

C>>>7) Именованные параметры,

A>>Для кэйс классов в Скале поддерживаются даже дефолтные значения и копирование с изменением всего нескольких параметров, например
C>Case-классы я вообще в принципе ненавижу. Это запредельная кривость.

А что ты предлагаешь? Варианты/объеденения как в классихческих ФП?

C>В Scala PM на практике требует использования case-классов. В Kotlin оно реализовано, как я вижу, через деструктурирующие функции, в том числе для обычных бинов.


По-моему ты ошибаешься. В Kotlin точно так же описываются классы с неявным конструктором, что аналогично кейс-классам (вид в профиль).

C>>>В целом, супер! Жду релиза.

A>>Скала у всех на слуху, а взлетает долго. Мне кажется этот ещё дольше будет взлетать.
C>Scala слишком кривая местами.

Например?

C>Kotlin выглядит как почищенная от мусора Scala.


Во многом так оно и есть. В прочем, местами перечистили. Лябды какие-то кривенькие.

C>Я, как программист на Scala, читаю программы на Kotlin вообще сразу — всё знакомое. Но при этом ВСЕ мои проблемы в Скале исправлены в Котлине.


Дык описал бы эти проблемы и то как они решены в Kotlin.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.