Здравствуйте, VladD2, Вы писали:
VD>Справидливости ради надо заметить, что их множественное наследование так же требует ручного разрешения конфликтов. Если в у двух наследников есть один и тот же метод, то нужно его обязательно переопределить.
Но в Скале для этого сделали целый механизм трейтов, с кучей исключений и непоняток. В Котлине, зато, всё тупо и примитивно. А делегирование явно выделено в отдельный паттерн, а не вмешано в трейты.
C>>Case-классы я вообще в принципе ненавижу. Это запредельная кривость.
VD>А что ты предлагаешь? Варианты/объеденения как в классихческих ФП?
Мне не нравится явное выделение их в специальную сущность. В Скале они используются для:
1) Специальный случай для классов-значений, с автогенерируемыми hashCode, equals и т.п. Нафиг не надо — должен быть общий механизм.
2) Только для них, по сути, в языке и встроено деструктурирование для PM (ну ещё для списков). Что тоже должно быть доступно для всех классов, в том числе и legacy-бинов.
C>>В Scala PM на практике требует использования case-классов. В Kotlin оно реализовано, как я вижу, через деструктурирующие функции, в том числе для обычных бинов.
VD>По-моему ты ошибаешься. В Kotlin точно так же описываются классы с неявным конструктором, что аналогично кейс-классам (вид в профиль).
http://confluence.jetbrains.net/display/Kotlin/Pattern+matching Всё что требуется от классов для участия в PM — это иммутабельность. Ну и явная возможность задавать деструктуризатор, тогда как в Scala надо делать case-класс и implicit-конвертор в него.
A>>>Скала у всех на слуху, а взлетает долго. Мне кажется этот ещё дольше будет взлетать.
C>>Scala слишком кривая местами.
VD>Например?
Управляющие конструкции (в Kotline есть нелокальный return), trait'ы, case class'ы.
C>>Kotlin выглядит как почищенная от мусора Scala.
VD>Во многом так оно и есть. В прочем, местами перечистили. Лябды какие-то кривенькие.
Из примера в
http://confluence.jetbrains.net/display/Kotlin/Functions :
strings filter {it.length == 5} sortby {it} map {it.toUpperCase()}
Это ещё и получше будет, чем в Scala. Особенно учитывая наличие анонимных типов (aka "именованые туплы").
C>>Я, как программист на Scala, читаю программы на Kotlin вообще сразу — всё знакомое. Но при этом ВСЕ мои проблемы в Скале исправлены в Котлине.
VD>Дык описал бы эти проблемы и то как они решены в Kotlin.
Частично описал здесь:
http://rsdn.ru/forum/philosophy/4349959.aspxАвтор: Cyberax
Дата: 20.07.11
В общем, если эти товарищи сейчас не будут пытаться запихать незапихиваемое, то получится очень неплохой язык. С метапрограммированием лучше подождать, так как слишком уж опасная это штука. Как implicit'ы в Scala.