
Oleksandr
07.12.2016
19:21:07
она тебе не нужна
а либописателям нужна

Pavel ?
07.12.2016
19:22:01
Видимо ты один из них

Google

Oleksandr
07.12.2016
19:22:06
кстати, как в котлине сделать такое:
case class Board(length: Int, height: Int) {
case class Coordinate(x: Int, y: Int) {
require(0 <= x && x < length && 0 <= y && y < height)
}
val occupied = scala.collection.mutable.Set[Coordinate]()
}
val b1 = Board(20, 20)
val b2 = Board(30, 30)
val c1 = b1.Coordinate(15, 15)
val c2 = b2.Coordinate(25, 25)
b1.occupied += c1
b2.occupied += c2
// Next line doesn't compile
b1.occupied += c2
case class читать как data class (ну или наоборот, хехе)

Руслан
07.12.2016
19:22:56
ты объясни словами что тут происходит
а про либы, это смешно) mylib_2.11)

Pavel ?
07.12.2016
19:23:17
Вово)))

Oleksandr
07.12.2016
19:25:11
то есть шаг в сторону dependent types, если проще

Руслан
07.12.2016
19:26:33
Эмм. Т.е. в компайле тайме оно проверяет значения у объектов?
Типо поле x должно быть меньше 15

Oleksandr
07.12.2016
19:27:21
что-то вроде
ну кусок кода выше делает совсем не это, конечно

Руслан
07.12.2016
19:27:40
Круто, но я могу пожертвовать этой фичей ради скорости компиляции

Google

Руслан
07.12.2016
19:28:27
И все равно это очень маленький процент ошибок, т.к. в основном все данные приходят извне в рантайме
а как насчет

Oleksandr
07.12.2016
19:30:02
я согласен, что все-все пытаться считать в компайлтайме не надо, это фанатизм
но есть определенный предел (для каждого проекта свой), где это дает максимальный профит
скала дает возможность двигать эту границу

Руслан
07.12.2016
19:31:10
Вот куда более полезная фича.
val map = getMap()
map["test"].foo() // compile error, map[] returns nullable type
Которая будет все время работать
И без райнтайм пеналти

Oleksandr
07.12.2016
19:32:05
оо, любимый срач, опшны против наллабл типов
оно, или я не так понял?

Руслан
07.12.2016
19:32:27
Ну это реально плюс котлина
Конечно

Oleksandr
07.12.2016
19:33:01
плюс в том, что он как-то анализирует внешние сорцы и добавляет этот ?
так-то опшны строго круче

Руслан
07.12.2016
19:33:56
Как лишняя обертка может быть лучше :)

Oleksandr
07.12.2016
19:34:31
не, сугубо с точки зрения теории
аллокация вполне себе удаляется компилятором

Руслан
07.12.2016
19:35:04
Компилятором - вообще никак

Oleksandr
07.12.2016
19:35:09
скалы

Google

Руслан
07.12.2016
19:35:14
jit - в некоторых случаях сможет

Oleksandr
07.12.2016
19:35:32
мм, что ему мешает взять и заменить кусок аст на ту же портянку с наллами, что и в котлине?

Руслан
07.12.2016
19:36:58
Ему нужно просто выкосить оптионалы тогда
А не на что-то заменить
Если тип не наллабл
Только вот откуда у скалы такое знание?

Pavel ?
07.12.2016
19:37:44
У скалы обвес вокруг ждк
Нет прямого интеропа

Oleksandr
07.12.2016
19:38:17
что конкретно ты имеешь в виду?
интероп шикарный

Руслан
07.12.2016
19:40:01
напиши класс с имплиситом и дерни из джавы

Руслан
07.12.2016
19:40:29
Или уже второй раз за день: дерни gatling из джавы

Pavel ?
07.12.2016
19:40:59

Oleksandr
07.12.2016
19:41:27

Руслан
07.12.2016
19:42:11
А почему тогда у гатлинга
Gatling.fromArgs(gatlingCLArgs, scala.Option.apply(simulation), Gatling.fromArgs$default$3());
Вот так убого всё

Oleksandr
07.12.2016
19:42:47
то есть в гатлинге есть херовый код, а виновата скала?

Руслан
07.12.2016
19:43:08
Ну да

Google

Oleksandr
07.12.2016
19:43:09
в всяких акках, плеях и спарках почему-то живут нормально

Руслан
07.12.2016
19:43:24
Найди либу с котлином которая предоставляет такой говно API
Там это невозможно

Pavel ?
07.12.2016
19:43:55
Так во что инт то компилится

Oleksandr
07.12.2016
19:44:01

Руслан
07.12.2016
19:44:22
https://kotlin.link/

Pavel ?
07.12.2016
19:44:30
Во что компилится явно или неявно созданный инт

Oleksandr
07.12.2016
19:44:36
я могу сейчас написать говнолибу на котлине
как он мне помешает

Admin
ERROR: S client not available

Pavel ?
07.12.2016
19:44:50
Байт код скинь
Херню ты ответил какую то

Руслан
07.12.2016
19:45:58
Я посмотрю

Nikolay
07.12.2016
19:46:18
я смотрю у вас серьезный замес. лямбды -> Option/nullable -> Int-ы -> байткод, какой следующий шаг?

Pavel ?
07.12.2016
19:46:31
Ты все надоедать начинаешь назойливой попыткой фалометрии
Так как будто есть комплексы

Oleksandr
07.12.2016
19:47:23
выражайся культурнее, во-первых
я не надоедаю, а поддерживаю дискуссию

Google

Pavel ?
07.12.2016
19:48:23
Так я еще ничего и не сказал бестактного)

Руслан
07.12.2016
19:48:51
Не нужно поддерживать дисскусию ради дисскусии

Oleksandr
07.12.2016
19:49:02
Байт код скинь
байткод конкретно чего?
scala.Int часто и в обычный int мапится, на уровне байткода

Pavel ?
07.12.2016
19:49:45
Пнимаешь Олександр)

Руслан
07.12.2016
19:49:54
Из документации быстрее)

Pavel ?
07.12.2016
19:50:00
Тут разговор слепого с немым)
Один пытается показать мощность и говорит что это круто)) а второму эта мощность как шило в заднице, потомучто понимает к чему она может привести)
Чуешь ситуэйшн?)

guga
07.12.2016
19:52:44

Oleksandr
07.12.2016
19:53:23
я даже с этим согласен

Pavel ?
07.12.2016
19:53:41
У скалы на весах язык ради языка, 100500 вариантов написания одного и того же как в руби, в котлине все наоборот, язык строгих кейсов, необходимых рынку для решения продакшен задач)
Что тут еще можно написать

Oleksandr
07.12.2016
19:54:02
весь вопрос в возможности выбора, какая именно мощность тебе надо

Митко Соловец?
07.12.2016
19:54:24
рынку иногда необходимы крутые проекты с крутым бэкендом
что-то тут котлин ничего дать не может
а скала - это акторы, это акка

Pavel ?
07.12.2016
19:54:41
Ну епть...давай поговорим о том как мапятся инты у обоих языках, вот только смысл какой

Митко Соловец?
07.12.2016
19:54:42
это особая парадигма параллелизма

Oleksandr
07.12.2016
19:54:45
можно диктатурно заявить "дженерики не нужны", и в этом есть свой резон

Nikolay
07.12.2016
19:55:15