
Sergey
20.09.2017
10:14:59
переписывал целый модуль с пхп на котлин, говорю по опыту

gxwin
20.09.2017
10:15:24
Ну хз [x + 1 for x in myList]

Sergey
20.09.2017
10:15:40
myList.map { it +1 }

gxwin
20.09.2017
10:18:00
не знал что в котлин радости ФП завезли. Но в целом кода все равно меньше. Чаще можно встретить одну функцию с параметризированными данными, а в джаве это будет как минимум два класса уже (один с этим методом, другой набор геттеров и сеттеров).

Google

Igor
20.09.2017
10:18:22

gxwin
20.09.2017
10:18:25
как в котлине будет обработка строк в файле
это будет очердной поток потока или же как в питоне?

Quantum Harmonizer
20.09.2017
10:19:24

Igor
20.09.2017
10:19:42

Quantum Harmonizer
20.09.2017
10:20:03
listOf(1, 2, 3).map(1::plus)
Back-end (JVM) Internal error: Couldn't transform method node: <init> (Ljavax/script/Bindings;)V:
ALOAD 0
ALOAD 1
INVOKESPECIAL org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.<init> (Ljavax/script/Bindings;)V
ALOAD 0
L0
LINENUMBER 1 L0
ALOAD 0
IC...
[RESULT TOO LONG (5599)]

DarkMentat
20.09.2017
10:20:18
кстати про размер кода, ГОшники часто хвастаються скоростью разработки, но кода там дофига, причем адского бойлерплейта хуже джавы

Igor
20.09.2017
10:20:39

Quantum Harmonizer
20.09.2017
10:20:44

Sergey
20.09.2017
10:21:44

Quantum Harmonizer
20.09.2017
10:22:02

Google

Igor
20.09.2017
10:22:17
Попробуй JS

gxwin
20.09.2017
10:22:22
не, как открыть файл в 50гигов и построчно прочитать

Митко Соловец?
20.09.2017
10:22:39

Quantum Harmonizer
20.09.2017
10:22:39
там нормальное ленивое чтение

gxwin
20.09.2017
10:24:48
а как файл открывать? Как в джаве?

Евгений
20.09.2017
10:25:35
Добрый день! Господа, кто-нибудь сталкивался с проблемой в Realm, когда вылазит ошибка %ObjectName% is not part of the schema for this Realm ? Никак не могу разобраться.

Sergey
20.09.2017
10:25:49

gxwin
20.09.2017
10:26:15
нёв ПотокРидер(нёв ПотокСБуферами(нёв ПотокПрост))

Sergey
20.09.2017
10:26:27
а под копотом будет
BufferedReader(InputStreamReader(FileInputStream(this), charset)).forEachLine(action)

gxwin
20.09.2017
10:26:33
вооо да

Sergey
20.09.2017
10:26:34
это из стандартной либы

Quantum Harmonizer
20.09.2017
10:26:36

gxwin
20.09.2017
10:27:30
форейч будет по строкам читать - или всю коллекцию из 50гб файла?

Quantum Harmonizer
20.09.2017
10:27:57
там нормальное ленивое чтение

Sergey
20.09.2017
10:28:03
Buffered же

Quantum Harmonizer
20.09.2017
10:28:32

Sergey
20.09.2017
10:29:34
в java 8 же можно еще Files.lines(Paths.get(fileName))

Google

Sergey
20.09.2017
10:29:34
и вернут тебе стрим

gxwin
20.09.2017
10:39:28
File("...").forEachLine { ... }
Ну вот та же стезя динам языков выходит, без документации и не разобраться как работает (хотя можно прокликать и сорцы почитать, лол).
То что сделали фасад - круто, и даже короче чем в питоне, но это тупо фасад, а не нативный интерфейс работы.
То есть к чему я, в том же питоне все библиотеки будут стремиться к простому интерфейсу и за счет динамичности достигать это будет еще проще. То есть там, в целом, API не фасады (может быть и фасады где-то глубоко, но изначально интерфейс дали как-есть-удобный)
Фасад это всегда магия, а магия это стезя динам языков

Quantum Harmonizer
20.09.2017
10:40:11

Sergey
20.09.2017
10:40:20
и эт не фасад
это файл и экстеншен к нему

gxwin
20.09.2017
10:40:33
В динам языках тоже все типы и явно заданны
просто необязательны

Quantum Harmonizer
20.09.2017
10:43:21
если у выражения нет compile-time типа, о каких явно заданных типах речь?

gxwin
20.09.2017
10:43:53
Я конечно звучу не убедительно, просто надо на динам языках (нормальных, не js) пописать и тогда станет понятно, что за определенную долю усилий количества полезного действия в динам языке выходит больше

Quantum Harmonizer
20.09.2017
10:44:33
Какие есть нормальные динамические языки? Python, Clojure, Erlang?

gxwin
20.09.2017
10:44:47

Quantum Harmonizer
20.09.2017
10:46:14
я бы сказал, что JS лучше, чем PHP, особенно последние версии

gxwin
20.09.2017
10:47:28
я же говорю, каждому тут свое. Я тут чисто про противостояние статик vs динамик языки

Pavel
20.09.2017
10:48:32
Парни, что-нить подобное есть в котлине? Не смог загуглить
http://simplecat.tk/shots/shot-170920-134759-688844.png
Типа сложная inline-инициализация

Quantum Harmonizer
20.09.2017
10:49:37
у выражения же тип () -> DecimalFormat

Pavel
20.09.2017
10:50:41
Я присвоить хочу не колбэк, а результат этого колбэка. Если так можно выразиться.

Igor
20.09.2017
10:50:43

Google

DarkMentat
20.09.2017
10:50:51

Quantum Harmonizer
20.09.2017
10:50:55

DarkMentat
20.09.2017
10:52:04
как-то так идиоматично

Pavel
20.09.2017
10:54:12
И init { } чистый.

Igor
20.09.2017
10:56:02

Quantum Harmonizer
20.09.2017
10:56:50

gxwin
20.09.2017
10:58:35
Это ни разу не магия, у всех этих функций явно заданы типы.
Про магию, я тут не про типы, а про то что функция в стиле magicSomething()
То есть включает в себе какую-то магию, которую не раскрыть без документации (ну откуда тут догадаться что она на себя берет цикл и выборку, и главное зачем почему бы не foreach(line : File.nextLine()) {}

Quantum Harmonizer
20.09.2017
10:59:26

gxwin
20.09.2017
11:00:25
ну согласись что мой код явно говорит сам за себя, чем стиль File.magicCode() в один магически метод

Quantum Harmonizer
20.09.2017
11:00:50

gxwin
20.09.2017
11:01:03
Это печально)

Quantum Harmonizer
20.09.2017
11:01:36
для меня магия — это динамичность, рефлексия, непредсказуемость

gxwin
20.09.2017
11:04:16
File(...).forEachLine() .
for(String line : File.nextLine())
Я думаю человек без знания доков спокойно поймет и прочитает второй код и поймет что идет чтение построчно, а вот первый вариант нарушение SRP
Первый вариант ближе к динам языкам
там как раз один метод может сделать туеву тучу действий, прочитать файл и параллельно спасти мир

Mi
20.09.2017
11:05:44
тут уже спор не в разнице динамических и статических языков
а в разнице процедурных/ооп и функциональной парадигм

Quantum Harmonizer
20.09.2017
11:06:21

Google

gxwin
20.09.2017
11:06:54
Когда я беру статик язык, я хочу чтобы код говорил сам за себя, если мне нужна магия в одну строку я возьму питон или жс.
Это имхо

Quantum Harmonizer
20.09.2017
11:07:23
Ты понятие магии так и не определил.

gxwin
20.09.2017
11:08:41

Quantum Harmonizer
20.09.2017
11:09:09
Где указатель хранится? В самом объекте File? Что он там делает? Это нарушение SRP.

Mi
20.09.2017
11:09:11
File(...).forEachLine({ line ->
...
})
for(String line : File.nextLine()) {
...
}
в чём разница?

Quantum Harmonizer
20.09.2017
11:09:33
А когда файл закончится, nextLine будет возвращать null? Чтобы считать файл заново, нужно сбросить состояние? Что за процедурщина?!

gxwin
20.09.2017
11:13:07
Ты понятие магии так и не определил.
Магия кода - это совокупность проблем при прочтение/написание кода, где явным образом нарушается как принцип SRP, так и другие принципы, которые препятствуют прямому восприятию кода без дополнительного изучение документации тех или иных API-решений в коде.
Сойдет?

Quantum Harmonizer
20.09.2017
11:14:18
Нет. В вызове функции для каждой строки я не вижу нарушения SRP. Вижу это нарушение в хранении состояния чтения прямо в File. Вижу сломанную инкапсуляцию и неприкрытое изменяемое состояние. Вижу процедурщину.

gxwin
20.09.2017
11:14:39
Сама функция берет на себя роль цикла и выборки
я понимаю что это ФП стиль, но это нарушение принципа

Quantum Harmonizer
20.09.2017
11:15:00

gxwin
20.09.2017
11:16:33