
{.__.__.}
25.08.2018
10:28:05

Mikhail
25.08.2018
13:03:04

AleksanderSh
25.08.2018
13:03:48

Ivan
25.08.2018
13:05:16

Google

Mikhail
25.08.2018
13:06:02
Вот это вбросил
Не нуачо, отсутсвие raw типов, generic variance, data class, final by default, var/val, лямбды. Это все штуки, которые давным давно надо было добавить в java

AleksanderSh
25.08.2018
13:06:46

Quantum Harmonizer
25.08.2018
13:07:13

AleksanderSh
25.08.2018
13:09:49

Quantum Harmonizer
25.08.2018
13:10:17

Roman
25.08.2018
13:10:37
Всё так. Kotlin это Java 2.0 _by design_, хоть ему так никогда и не суждено называться. Кому интересна история, можете почитать как в 2010 в community обсуждалось что пора бы делать Java 2.0 и какие фичи там должны быть: http://blog.joda.org/2010/09/next-big-jvm-language_964.html Однако, авторы Java этот призыв не услышали и вот теперь мы видим как Kotlin (т.е. Java 2.0 но только от людей которые не могут использовать Java trade mark), который практически всё это воплотил, завоевывает мир

Quantum Harmonizer
25.08.2018
13:10:51
а вообще, там уже, наверное давно, догорело, зато теперь тут начало)

Mikhail
25.08.2018
13:14:16
что в этом радостного? я юзал wait/notify
и меня вот напрягает, что в котлине нет тернарного оператора

Quantum Harmonizer
25.08.2018
13:15:08
ой, началось

Mikhail
25.08.2018
13:15:17
=D

Roman
25.08.2018
13:16:13
То что какую-то конструкцию кто-то юзал еще не повод её там иметь. Дазиайн хорошего языка в первую определеяется не теми фичами которые там есть, а теми, которых там нет. Я вот начинал программировать на бейсике и всегда там юзал GOTO. Я в современных языках его нет. И это хорошо.

Google

Mikhail
25.08.2018
13:20:46
но тернарный то оператор за что выпилили?

Bogdan
25.08.2018
13:22:45

Roman
25.08.2018
13:23:24
Правильный вопрос не "за что", а "почему". Поэтому что в Kotlin есть if-expression (в отличие от Java и его предков по C/C++ линии) и его вполне хватает для решения тех практических проблем, для которых в C/C++ использовался тернарный оператор.

Mikhail
25.08.2018
13:25:00
хватает, только выглядит вырвиглазно

Roman
25.08.2018
13:25:10
(там еще есть вагон побочных соображений дизайнового характера, но вот то что я написал — это саоме главное).

Igor
25.08.2018
13:26:06

Nameless
25.08.2018
13:26:22

Roman
25.08.2018
13:26:35
У меня есть подозрение, что если вам часто приходится такой "вырви глаз" код, то вы что-то делаете не так. Может быть вам не хватает пары-тройки специфичных для вашего домена функций, который сделают ваш код более понятным для читателя и более приятно выглядишим.

Mikhail
25.08.2018
13:26:38
а зачем выпилили поддерку вот такого кода while ((i += 2) < 10)?

Igor
25.08.2018
13:26:50

Roman
25.08.2018
13:27:10

Nameless
25.08.2018
13:27:14
так и вижу программистов которые с хаскеля\сложуры начинают)

Mikhail
25.08.2018
13:28:10
просто странно видеть новый язык, в котором не добавляются фичи, а удаляются

Artem
25.08.2018
13:29:16

Roman
25.08.2018
13:29:31

Artem
25.08.2018
13:29:54
Вы как-то не так просто смотрите на котлин)

Mikhail
25.08.2018
13:30:13
а как надо на него смотреть?

Ivan
25.08.2018
13:30:48

Mikhail
25.08.2018
13:31:30
да там вообще пипец, но корутины есть

Google

Хекс
25.08.2018
13:31:40
горутины

Nameless
25.08.2018
13:32:01

Mikhail
25.08.2018
13:32:23
да как-то применять эти новые фичи негде

Roman
25.08.2018
13:32:27
При дизайне языка Kotlin не стояла цель соревноваться в CodeGolf с C/C++. Не стояло цели получить "zero-cost" abstractions. Код вида while ((i += 2) < 10) намного понятней читается в виде for (i in 0 until 10 step 2) Компилятору-то все-равно, а вот человеку, читающему такой код, намного понятней что будет происходить с переменной i именно во втором варианте.

Mikhail
25.08.2018
13:33:20
for да лучше читается, я меня больше волнует чтение из стрима и сразу сравнение с -1

Nameless
25.08.2018
13:34:30

Igor
25.08.2018
13:34:40
это хаскели\сложуры?
Кстати, когда у тебя не императивные стейменты, а экпрешены - то компилятор может больше помочь (типа авто-рефакторинг на extract-method или проверить все кесы).
Постоянно на работе "борюсь" с людьми, которые пришли из java и юзат when как swift или сначала создают список, а потом добавляют элементы.

Roman
25.08.2018
13:34:57
да как-то применять эти новые фичи негде
Может вы просто пытаесь использовать Котлин для чего-то не того? Если вы пишете чего-то низко-уровневое/системное, то посмотрите на Rust. Я для прикладных задач Котлин очень хорош. Все его фичи как раз и заточены под решение тех или иных прикладных задач.

Mikhail
25.08.2018
13:35:24
я пишу бекед веб-приложения

Nameless
25.08.2018
13:35:28

AleksanderSh
25.08.2018
13:35:57
Я бы все-тут остановился на том, что это другой язык, отпачкованный от джавы, а не 2.0

Maxim
25.08.2018
13:36:06

AleksanderSh
25.08.2018
13:36:20
В 2.0 джаве появится package-private модификатор?

Roman
25.08.2018
13:37:36
я пишу бекед веб-приложения
И вам часто приходится читать из стрима и сравнивать сразу с -1? Может один раз написать для этого функцию? Кстати, в стандартной библиотке уже есть несколько готовых решений как раз для случаев чтения из стрима. Если приведете пример вашего кода, то здесь вам смогут подсказать как его улучшить.

AleksanderSh
25.08.2018
13:37:41
У меня, может, джава головного мозга, но каждый раз начинаю тупить, когда пишу in, out в дженериках или циклы.
Хотя оно вроде упрощать должно

Mikhail
25.08.2018
13:38:52
еще все никак не могу привыкнуть писать сначала название переменной, а потом тип, хотя уже год пишу на котлине

Sergey
25.08.2018
13:40:27

Google

Roman
25.08.2018
13:40:48
Ну вот у меня тоже бывают ситуции когда мне было бы удобней сделать GOTO, а не заводить boolean переменную и делать break из цикла. Но я не прошу вернуть GOTO. Лучше я иногда напишу на пару строк больше, зато не будут страдать от чтения чужого спагетти-кода, напичканого GOTO в разные места.

Ivan
25.08.2018
13:41:00

Mikhail
25.08.2018
13:41:38

AleksanderSh
25.08.2018
13:43:11
Я все ещё топлю против "java 2.0", а не против котлина. Котлин шикарен, но в java вся ее многословность и простота это фича.

Igor
25.08.2018
13:48:46

Anna
25.08.2018
13:48:53

Roman
25.08.2018
13:50:40

Admin
ERROR: S client not available

Igor
25.08.2018
13:53:09

Anna
25.08.2018
13:53:35
Или я что-то путаю уже

Al
25.08.2018
14:11:18

Ivan
25.08.2018
14:21:50

Иван
25.08.2018
15:04:28
@relizarov мне вот больше интересно, почему вместо val не взяли let?
Или const

Quantum Harmonizer
25.08.2018
15:06:26
const char *args
auto const something = ...

Google

Иван
25.08.2018
15:07:49
Что-то страшное

Dmitry
25.08.2018
15:08:31

Quantum Harmonizer
25.08.2018
15:08:33
мне кажется, нет никакой разницы, одни три буквы или другие три буквы (Бреслав рассказывал, что можно было var назвать mut)

Anna
25.08.2018
15:12:56

Quantum Harmonizer
25.08.2018
15:13:32

Anna
25.08.2018
15:14:06

Boris
25.08.2018
15:15:13

Иван
25.08.2018
15:15:21
Ну это же только на слух?

Quantum Harmonizer
25.08.2018
15:16:14

Anna
25.08.2018
15:17:13

Boris
25.08.2018
15:18:46
Наверняка это создаёт какому-то неудобства, но не столько серьезные как использование джавы ?

Anna
25.08.2018
15:19:45

Dmitry
25.08.2018
15:19:50
Просто устно называете полное название и не паритесь
You can define it as value or variable

Quantum Harmonizer
25.08.2018
15:20:06
варью и варьябл :)

Mikhail
25.08.2018
15:20:22

Quantum Harmonizer
25.08.2018
15:21:18

Anna
25.08.2018
15:23:35

Mikhail
25.08.2018
15:23:50
При этом я много работал с легаси кодом в большой распределенной команде, никогда не было таких багов

Boris
25.08.2018
15:24:20

Quantum Harmonizer
25.08.2018
15:25:35
У меня «почему не как в джаве?!» в первые месяцы сменилось радостным «хорошо, что это исправили»

Ivan
25.08.2018
15:26:06