
Alexander
17.06.2018
07:39:22
Если оценивать ЯП с точки зрения бизнеса, то устанешь гоняться за хайпом.
Ибо бизнесу нужны программисты, которые будут решать проблемы, и ему не важно каким ЯП их будут решать. А программисты бывают ветренными, могут быть зависимыми от авторитетов, таких как гугл(или оракл когда-то). Да что уж говорить, если есть куча программистов, которые даже не совсем понимают, что такое система типов, термин тип-сумма вызывает у них недоумение и при этом они занимают позиции сеньёров и тимлидов.


hamper ?
17.06.2018
07:50:11
У работодателей еще есть небезосновательный аргумент, по той причине, что хороший разрабоотчик на одной работе обычно больше 2-3 лет не задерживается, то: "как легко будет потом найти человека, который будет поддерживать всё то, что написал этот разработчик".

Google

hamper ?
17.06.2018
07:50:43
И проще всего такое работает с чем-то типа nodejs потому что жсников как грязи.

Alexander
17.06.2018
07:51:29

hamper ?
17.06.2018
07:52:41
Ну или многие уже пишут на го, то и новых разрабов преимущественно на го будут искать, как и для любого другого языка, например в некоторые компании принципиально ищут программистов на до диезе, потому что на нем все там уже пишут, а менять или переучивать весь штат слишком затратно.

Fedor
17.06.2018
07:54:03

Alexander
17.06.2018
07:56:44
Или конечные автоматы на строковом/численном представлении состояния
Вообще, конечные автоматы без алгебраических типов данных - это сплошной набор костылей
А ещё парсеры без ADT - тоже очень творческая задача по придумыванию костылей разных форм и размеров

Pawel
17.06.2018
08:07:38


Fedor
17.06.2018
08:11:44
Я бы сказал, что типы суммы нужна там, где бизнесу необходимо сдать теории множеств злому лектору. А если сдавать не надо, или лектор добрый, то можно и без них обойтись

Alexandr
17.06.2018
08:11:44

Alexander
17.06.2018
08:12:51

Google

Alexander
17.06.2018
08:16:21

Igor
17.06.2018
08:16:38
Пайку доверять можно, опыт в Bell Labs, много OS экспериментов, много концепций, создатель UTF8, фантастический текущий проект upspin

Pawel
17.06.2018
08:16:54

Alexandr
17.06.2018
08:18:38

Alexander
17.06.2018
08:18:56

Igor
17.06.2018
08:21:07

Alexandr
17.06.2018
08:22:23

Alexander
17.06.2018
08:23:28
Много теперь где применяешь ?
Опять же не в рабочее время, ибо на работе языки, где их и в помине нет. Хотя часто вижу ситуации, когда нужен простой тип сумма, а вместо этого приходится городить костыль

Pawel
17.06.2018
08:23:55

Alexandr
17.06.2018
08:24:33

Igor
17.06.2018
08:25:10
И ни одного ЯП до 50+ лет.
Сразу заметно, критика из разряда “сам не читал, но не одобряю” ? Чтобы что-то или кого-то критиковать, надо иметь хотя бы какое-то представление ?

Alexander
17.06.2018
08:25:16
что за тип-сумма, чем знаменита?
https://ru.wikipedia.org/wiki/%D0%A2%D0%B8%D0%BF-%D1%81%D1%83%D0%BC%D0%BC%D0%B0
это?

Alexander
17.06.2018
08:25:46
type Either a b = Left a | Right b

Pawel
17.06.2018
08:26:23

Alexander
17.06.2018
08:26:36
это какая-то нечеткая логика?

Google

Alexander
17.06.2018
08:28:03
чет легче не стало от твоих подсказок
Это тип который может содержать значение одного из конечного числа типов. Типом суммой называется потому-что количество значений такого типа = количество значений 1 типа + количество значений 2 типа + ... + количество значений N типа

Alexander
17.06.2018
08:28:41
понял, спасибо

Alexandr
17.06.2018
08:29:47

Alexander
17.06.2018
08:29:50
Естественно что рядом собственно со значением должна лежать метка того, какой там лежит за тип. Иначе условие
> количество значений такого типа = количество значений 1 типа + количество значений 2 типа + ... + количество значений N типа
не выполняется

Pawel
17.06.2018
08:31:32
понял, спасибо
если бы вы видили в какой говнокод превращается работа со значениями таких типов на практике - развесистый паттернматчинг, ужасы с отбивкой пробелами при рефакториге, десяток враперов для простого инта и т.д. -, вы бы не благодарили

Alexander
17.06.2018
08:31:40
на вики пишут, что это Дизъюнктное объединение, то есть общая часть отбрасывается и остается то, чего нет в первой + то , чего нет во второй?

Alexandr
17.06.2018
08:32:03

Alexander
17.06.2018
08:34:15
конечные автоматы - тоже хороший пример
Ещё один канонический пример - AST

Alexander
17.06.2018
08:37:09

Alexandr
17.06.2018
08:38:41

Alexander
17.06.2018
08:39:41

Alexander
17.06.2018
08:39:42

Alexander
17.06.2018
08:40:03

Alexandr
17.06.2018
08:40:05

Alexander
17.06.2018
08:40:18

Pawel
17.06.2018
08:41:05

Google

Alexandr
17.06.2018
08:42:24

Pawel
17.06.2018
08:44:26
обычные проверки в сишном стиле вкупе с операторами if break return читаются на много проще чем паттерн матчинг типов сум. ФП в принципе не может ничего упростить - строго только усложнить. И для задач его применяют соответствующих

Vladislav
17.06.2018
08:44:41

Pawel
17.06.2018
08:45:25
нет, не видел. А что не так?

Alexander
17.06.2018
08:46:24

Vladislav
17.06.2018
08:47:56
Ну так посмотрите. Там объявление интерфейса с приватным методом, который ничего не делает. Потом на нужных типах эти методы «реализуют». И все для того чтобы в качестве аргумента можно было передать только конечное множество типов. А внутри касты интерфейсов к типам.

Alexander
17.06.2018
08:49:02
Даже в сишке это делается не так костыльно

Admin
ERROR: S client not available

Vladislav
17.06.2018
08:49:53
А в сочетании с утиной типизацией вообще невозможно найти все типы которые можно передать внутрь.

Alexandr
17.06.2018
08:49:53

Daniel
17.06.2018
08:51:06

Pawel
17.06.2018
08:57:25

Vladimir
17.06.2018
08:59:02
Свитчем?? И кастом значения из "* void*?

Daniel
17.06.2018
09:00:12
погодите
вам по-любому нужен там switch или пачка if

Pawel
17.06.2018
09:01:01
Вот именно. Можно подумать паттернамтчинг чем то лучше

Daniel
17.06.2018
09:01:07
потому как параметр вы получили, но на разные параметры вам нужна разная обработка, правда?

Google

Alexander
17.06.2018
09:01:41

Vladimir
17.06.2018
09:01:44
Так если тот же свитч, только безопасный, в чём не читабельность?

Pawel
17.06.2018
09:02:43
Я так регулярно делаю в случаях работы с деревьями с разнотипными нодами. Switch, даункаст из интрфейса (не пустого). Ни разу проблем не возникало. Никакие стат. гарантии на фиг не впёрлись. Проблема высасона из пальца

Daniel
17.06.2018
09:02:50
но вот то, как именно реализуется этот самый тип-сумма в го - это мерзко. я вот только что (позавчера) нарисовал сообщения, которые у меня уходят в канал, и каждое реализует пустой метод IAmCommand

Michael
17.06.2018
09:03:30

Alexander
17.06.2018
09:05:04

Vladimir
17.06.2018
09:05:31
Но ладно, раз стат гарантии не нужны - тут все понятно, зачем тогда вообще брать язык компилируемый? На питончике ж быстрее кодится, ещё меньше гарантий

Daniel
17.06.2018
09:06:42
коллега, хватит вот этого, а?
нет, на питончике не быстрее
и нет, не всем нужны эти самые гарантии

Pawel
17.06.2018
09:07:09

Daniel
17.06.2018
09:07:42
вожно понимать, зачем нам вообще нужна статическая строгая типизация
вот вам - зачем?

Alexander
17.06.2018
09:08:12

Vladimir
17.06.2018
09:08:20
вот вам - зачем?
Сильная типизация позволяет часть контрактов протолкнуть на уровень компилятора

Pawel
17.06.2018
09:08:40
Если вы меня спрашиваете - то мне проще код читать со стат. гарантиями.

Daniel
17.06.2018
09:08:41

Alexander
17.06.2018
09:09:21
это общие слишком слова
тогда
> Сильная типизация позволяет часть контрактов протолкнуть на уровень компилятора
благодаря этому мне проще писать, читать и поддерживать код, т.к. контракты описанные в документации устаревают(если они вообще описаны), а без контрактов в языке компилятор просто не скомпилирует код