@kotlin_lang

Страница 959 из 982
Phil
19.10.2018
10:11:59
Ну, если идти по стопам Венката, то скорее важно, где будет больше сложности - в ФП или ООП ) И оно очень по разному )

Nick Senchurin
19.10.2018
10:12:06
сборник именованных костылей)
сборник советов скорее, типа если будете делать так, то у вас будет меньше боли

Phil
19.10.2018
10:12:16
Иногда вообще самый простой код - императивный )

Google
Nick Senchurin
19.10.2018
10:14:04
у меня просто крик души, я рефакторил всю последнюю неделю , выпиливая стэйты , геттер стэйт менял, хоспади прости ?

Quantum Harmonizer
19.10.2018
10:14:11
Phil
19.10.2018
10:14:44
Какой такой гришка?

Sergey
19.10.2018
10:14:52
ну вообще я б не сказал что книга бесполезная, просто многие вещи идут в котлине уже из коробки

Quantum Harmonizer
19.10.2018
10:15:09
Паттерны не нужны. Просто пишите код, который решает вашу задачу, без вопросов "а если мы завтра захотим".

Anna
19.10.2018
10:15:12
Про научно-обоснованное ооп: http://lucacardelli.name/Talks/1997-08-04..15%20A%20Theory%20of%20Objects%20(Sydney%20Minicourse).pdf

Nick Senchurin
19.10.2018
10:15:44
хм, ознакомлюсь

Anna
19.10.2018
10:16:18
Ну по крайней мере там имена, чьи статьи гуглить, а дальше по ссылочкам если что ?‍♀️

Andrey
19.10.2018
10:18:44
Банда четырёх вообще описывала, как при отсутствии концепции замыкания в языке (тогдашний C++) писать генерализованный абстрактный код. Практически все паттерны реализуемы через функции высших порядков, так что в языках, где есть лямбды, подобное абстрагирование не является проблемой, требующей написания целой книги.

Nick Senchurin
19.10.2018
10:19:49
❤️

Phil
19.10.2018
10:22:14
Тот же интерпретатор )

Igor
19.10.2018
10:23:57
Иногда вообще самый простой код - императивный )
... и тогда люди придумали монады/фри (что бы на двух стульях усидеть)

Google
Boris
19.10.2018
10:24:07
И вообще полезно посмотреть как можно подойти к решению ты или иной проблемы

Phil
19.10.2018
10:24:29
Угу, кто бы спорил, что полезно )

Igor
19.10.2018
10:26:55
Тот же интерпретатор )
Это вы про доклад Рунара?

Beholder
19.10.2018
10:33:43
Кто-то писал, "паттерны - это не догма, а размышления на тему "где в комнате делать дверь если в ней 3 окна""

Вообще слово "паттерны" из архитектуры пришло

imho считать что рекурсия и чистота функций есть неотъемлемое свойство ФП - это такая же ошибка, как считать что инкапсуляция и наследование есть неотъемлемое свойство ООП

Beholder
19.10.2018
10:37:56
ООП - это когда куча объектов передают друг другу сообщения

Kirill
19.10.2018
10:38:05
Beholder
19.10.2018
10:38:07
оно может быть и без наследования

Alexandr
19.10.2018
10:39:03
через сколько часов закончите? я выйду пока отсюда

Kirill
19.10.2018
10:39:18
А какие ещё есть? Любопытно

dimiii
19.10.2018
10:39:41
Эти вопросы были закрыты к 70-ым годам, ну что вы.

Beholder
19.10.2018
10:41:04
но вообще нефига натягивать сову на глобус. Котлин - практичный язык, на нём можно и нужно сочетать ООП и ФП

Kirill
19.10.2018
10:41:08
ООП - это когда куча объектов передают друг другу сообщения
Ну как... SmallTalk, с которого ООП и пошло (ЕМНИП), был основан на двух больших идеях: "всё объект" и "передача сообщений". Первую заметили и радостно заабьюзили. Вторая, хоть и не менее важна (по-моему, создатель языка считает её даже более важной), не так тепло принята

а лябда-исчисление не единственный вариант ФП
Приведите всё же пример, а? Интересно же

Beholder
19.10.2018
10:42:45
Приведите всё же пример, а? Интересно же
я теорией не увлекаюсь. но вообще это когда функции это first-class citizen

Andrey
19.10.2018
10:49:13
imho считать что рекурсия и чистота функций есть неотъемлемое свойство ФП - это такая же ошибка, как считать что инкапсуляция и наследование есть неотъемлемое свойство ООП
Комбинатор неподвижной точки выводится из аксим лямбда исчисления => рекурсия и есть неотъемлемая часть ФП парадигмы. Чистота функции - аксиоматика лямбда исчисления. Лямбда абстракции - математические функции, а в математических функциях нет концепции состояния и изменяемости. Другое дело, что в практических языках, кроме ФП зачастую реализуют и другие парадигмы, в которых концепция состояния имеется, но это уже не ФП парадигма, а мультипарадигменный микс.

Лямбда исчисление - теория ФП. В практических языках существуют разные её реализации, но они не противоречат аксиомам теории.

Google
Andrey
19.10.2018
10:53:58
Чистый ФП язык содержит исключительно какую-либо реализацию лямбда исчисления, иначе его уже не получится называть чистым ФП языком. Если язык при этом статически типизирован, то реализуется один из вариантов типизированного лямбда исчисления. Вообще, лямбда исчисление как раз и занимается тем, что формализует понятие функции, как first class citizen

Alexey
19.10.2018
10:54:07
Andrey
19.10.2018
11:17:13
Это я уже написал, я про фп спрашивал
Ну а смысл про ФП спрашивать, если перед началом дискуссии, судя по аргументам, человек не подтрудился даже статью на википедии про ФП почитать, чтоб иметь представление о предмете обсуждения?

Alexey
19.10.2018
11:31:24
я теорией не увлекаюсь. но вообще это когда функции это first-class citizen
это просто нам даёт функции высшего порядка, не больше не меньше

Alexandr
19.10.2018
11:32:10
короче пятница, никто не работает

впереди вечер

Alexey
19.10.2018
11:32:33
Типо нельзя работать и немного в чате писать?

Egor
19.10.2018
11:33:34
Эх, люблю Котлин-чат

Заходишь в него в любое рандомное время

А тут срач про ФП

Руслан
19.10.2018
11:33:59
А тут срач про ФП
Я вот за это его не люблю

Igor
19.10.2018
11:34:10
короче пятница, никто не работает
Так пишем на стат-типизированных языках - куча времени пока компилится.

Quantum Harmonizer
19.10.2018
11:34:32
Руслан
19.10.2018
11:34:37
Мне кажется он после этого сразу становится интересным 3 человекам, которые пришли из какого-то соседнего чата про фп

Andrey
19.10.2018
11:34:42
Не судите и не судимы будите ?
Я никого не сужу. Я просто подчёркиваю бессмысленность дальнейшей дискуссии при такой аргументации. Я и про ФП не говорил ни разу, хорошо это или плохо, потому как нет серебряной пули.

Andrey
19.10.2018
11:36:41
а Go считается статически типизированным? ?
Да, считается. Просто система типов в Go близка к https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BB%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5

Mikhail
19.10.2018
11:37:09
Мне кажется он после этого сразу становится интересным 3 человекам, которые пришли из какого-то соседнего чата про фп
очень редко просто с вопросами приходят люди. А поговорить за ФП и тернарный оператор всегда интересно

Google
Mikhail
19.10.2018
11:39:49
ну и вообще, Котлин дразнится поти хорошей поддержкой ФП, а не дает

Mi
19.10.2018
11:41:13
проблемы этих абстрактных парадигм в вакууме состоят в том, что это в чистом виде банально не удобно

а котлин вроде как разрабатывался для того, чтобы было удобно

Mikhail
19.10.2018
11:42:06
ну вот тут - то и собака зарыта

неудобно кому?

Quantum Harmonizer
19.10.2018
11:42:54
джавистам

Andrey
19.10.2018
11:43:16
ну и вообще, Котлин дразнится поти хорошей поддержкой ФП, а не дает
Ну в плане поддержки ФП у Котлина всё норм, как мне кажется, за исключением оптимизации хвостовых вызовов для взаимной рекурсии. Но это не особо нужно в языке, где есть циклы.

Mikhail
19.10.2018
11:44:11
под поддержкой я в той фразе понимаю поддерживание, т.е. помощь, а не совместимость

Egor
19.10.2018
11:44:44
(я жалуюсь)

Egor
19.10.2018
11:45:33
Так что это ещё поспорить можно, хорошая или не хорошая

Где такой?
да в слаке

Andrey
19.10.2018
11:46:42
там в соседнем чатике Arrow жалуются, что не могут инстанс аппликатива для мап сделать из-за типизации
Это уже не к поддержке ФП (лямбда исчисления), а к поддержке родов (higher order kind) в системе типов. Вроде на роды есть KEEP

Правда с родами не совсем понятно, чем Kotlin будет от Scala отличаться, как мне кажется.

Egor
19.10.2018
11:48:43
Про это тут тоже уже был срач

KEEP предлагает тайпклассы и поддержку имплиситов через них

Andrey
19.10.2018
11:51:34
KEEP предлагает тайпклассы и поддержку имплиситов через них
The goal of this proposal is to enable type classes and lightweight Higher Kinded Types in Kotlin to enable ad-hoc polymorphism and better extension syntax. Этот KEEP всё вместе предлагает.

Igor
19.10.2018
11:57:49
Помниться Бреслав, был против hkt и говорил что "тайпклассы и без них полезны"

Mikhail
19.10.2018
12:06:09
я тут недавно думал о multiple receiver functions

Google
Mikhail
19.10.2018
12:06:17
а ведь на самом деле клевая идея

и мне кажется, можно типоклассы и через нее завезти

Beholder
19.10.2018
12:07:12
только что они на практике дают?

Алексей
19.10.2018
12:07:43
multiple receiver functions?

Egor
19.10.2018
12:07:44
multiple receiver functions?
Это что-то а-ля fun Class1.Class2.someFunction( ... ) { ... }

Beholder
19.10.2018
12:08:35
тайпклассы

Egor
19.10.2018
12:09:10
а

Алексей
19.10.2018
12:09:15
apply { smthing.apply { ... } }

такое что ль?

Egor
19.10.2018
12:09:24
да

Quantum Harmonizer
19.10.2018
12:09:42
только что они на практике дают?
избавление от костылей member extension function, как в Anko

Sergey
19.10.2018
12:09:49
разве это не делается аннотацией чтобы ограничивать контекст?

Sergey
19.10.2018
12:10:25
ок, сорян)

Quantum Harmonizer
19.10.2018
12:10:54
ок, сорян)
тут про ситуацию, когда тебе нужен одновременно один явный и один неявный ресивер

Egor
19.10.2018
12:11:00
тайпклассы
Абстракцию над данными, причем круче, чем интерфейсы

Beholder
19.10.2018
12:11:02
избавление от костылей member extension function, как в Anko
заменой другими костылями? ладно, хотелось бы посмотреть как оно реально жизнь улучшает

псевдокод хотя бы

Egor
19.10.2018
12:11:30
заменой другими костылями? ладно, хотелось бы посмотреть как оно реально жизнь улучшает
Воу, воу, мультиресивер это вообще-то труъ, никакой не костыль

Страница 959 из 982