Size: a a a

2020 November 06

AB

Alex Bubnov in ErlangRus
Иванов Иванов
А для чего великого она еще требуется? Или ты противник?
да, наверное, противник. это цена, которую я не очень понимаю, за что имеет смысл платить.
источник

ИИ

Иванов Иванов... in ErlangRus
я тоже пока не обрел должного уровня просветления чтобы понимать зачем строгая типизация в erlang. тогда придется придумывать полиморфный код
источник

AB

Alex Bubnov in ErlangRus
Ilya Shcherbak
тут вопрос не только в корректности и выводе, но и в скорости бима. если на уровне байткода знать тип, то многое становится проще.
вот с этим полностью согласен, но это задача какого-то внутреннего шага компиляции. можно даже те же спеки затащить дальше по пайплайну компиляции, и из них уже вывести необходимое для оптимизаций.
для этого вовсе необязательно вводить по всему верхнеуровневому языку требование к покрытию типами, достаточно каких-то точечных аннотаций.
источник
2020 November 07

ML

Maksim Lapshin in ErlangRus
Alex Bubnov
1 - мне не нравятся подходы к разработке, которым нужна статическая типизация, а это как раз является очевидной целью для фб
2 - вопросы "что вывалится в json" можно решать гораздо менее радикальными способами, что в общем повсеместно и делается. у нас обоих есть по примеру - у меня трифт(и еще один парс-трансформ местами), у тебя - ваш парс-трансформ для рекордов.
3 - буквально все системы типов имеют недостатки. они либо недостаточно выразительны, либо слишком сложны в употреблении, самые мейнстримные - и то, и другое вместе.
Я наверное примерно понимаю о чем ты
источник

PK

Petr Kozorezov in ErlangRus
Интересно откуда у этого различия растут ноги? Мне, вот, лично когда проект становится больше 3-4 файлов (<1000 строк) уже просто не комфортно без типов, я не могу нормально думать без них. Мне нужно понимать, с какими сущностями работают функции и как они выглядят. Без типов лично я забываю это все моментально и в результате каждый раз приходится рыться по коду и понимать ак выглядит какой-либо тип. И выходит намного проще эти типы явно описывать.
Может у меня на столько плохая память, что мне они так нужны.
источник

ИИ

Иванов Иванов... in ErlangRus
Alex Bubnov
1 - мне не нравятся подходы к разработке, которым нужна статическая типизация, а это как раз является очевидной целью для фб
2 - вопросы "что вывалится в json" можно решать гораздо менее радикальными способами, что в общем повсеместно и делается. у нас обоих есть по примеру - у меня трифт(и еще один парс-трансформ местами), у тебя - ваш парс-трансформ для рекордов.
3 - буквально все системы типов имеют недостатки. они либо недостаточно выразительны, либо слишком сложны в употреблении, самые мейнстримные - и то, и другое вместе.
>опросы "что вывалится в json" можно решать гораздо менее радикальными способами

но это актуальная проблема достаточно и должна решаться в соврменном языке
источник

ИИ

Иванов Иванов... in ErlangRus
Petr Kozorezov
Интересно откуда у этого различия растут ноги? Мне, вот, лично когда проект становится больше 3-4 файлов (<1000 строк) уже просто не комфортно без типов, я не могу нормально думать без них. Мне нужно понимать, с какими сущностями работают функции и как они выглядят. Без типов лично я забываю это все моментально и в результате каждый раз приходится рыться по коду и понимать ак выглядит какой-либо тип. И выходит намного проще эти типы явно описывать.
Может у меня на столько плохая память, что мне они так нужны.
о типах приходится думать в любом случае. но как только ты введешь типизацию, сразу же потребуется инструмент для написания обобщенного кода.
источник

PK

Petr Kozorezov in ErlangRus
Иванов Иванов
о типах приходится думать в любом случае. но как только ты введешь типизацию, сразу же потребуется инструмент для написания обобщенного кода.
Алгебраические типы данных - это, имхо, просто must have в современном яп. Без них писать - это боль.
источник

ИИ

Иванов Иванов... in ErlangRus
по мне так erlang предметноориентированный язык. натягивать на него теорию программирования пустое
источник

ИИ

Иванов Иванов... in ErlangRus
Petr Kozorezov
Алгебраические типы данных - это, имхо, просто must have в современном яп. Без них писать - это боль.
какой профит от типов будет ? контроль ошибок во время компиляции + усложнение обобщенного кода. можно сделать на всё рекорды и попробовать как оно
источник

DR

Dmitry Russ (Aleksan... in ErlangRus
Иванов Иванов
какой профит от типов будет ? контроль ошибок во время компиляции + усложнение обобщенного кода. можно сделать на всё рекорды и попробовать как оно
В идеале типизация должна работать и без изменения кода. Т.е. просто находить ошибки вовремя компиляции и если хочется увеличить гарантии, то тогда прописать дополнительные типы и прочие усложнения.

Пример: typescript - компилирует javascript и находит в нём уже ошибки без указания типов.
источник

DR

Dmitry Russ (Aleksan... in ErlangRus
И тогда профит - нахождение ошибок без downside-ов, а уже прописывать типы для ещё больших гарантий - дело каждой комманды, каждого разработчика.
источник

ВВ

Вася Васечкин... in ErlangRus
Иванов Иванов
какой профит от типов будет ? контроль ошибок во время компиляции + усложнение обобщенного кода. можно сделать на всё рекорды и попробовать как оно
для генерации  edoc хорошо..
источник

PG

Pig Greenest in ErlangRus
Denis Fakhrtdinov
@define_null интересно как они решат проблему выгребания сообщений из мейлбокса, ведь там может лежать любой терм.
Можно возвращать из мейлбокса экзистенциональный тип: exists t : type, x : t
источник

วโ

วลาดิสลาว โควาเลนโก🐝... in ErlangRus
Petr Kozorezov
Алгебраические типы данных - это, имхо, просто must have в современном яп. Без них писать - это боль.
ADT это всего лишь крошечные определения. Этим подходом можно пользоваться практически в любом япе
источник

D

Dim in ErlangRus
С принудительной статической типизацией ерланг может превратиться в +1 энерпрайзно майнстримное г . Везде заборы из типов будут куда ни глянь.
Ну и смысл будет на нем писать, если писанины больше станет изза определения и контроля типов.
Тогда уж лучше будет на Rust переползать или на старый добрый C/C++.
источник

วโ

วลาดิสลาว โควาเลนโก🐝... in ErlangRus
Dim
С принудительной статической типизацией ерланг может превратиться в +1 энерпрайзно майнстримное г . Везде заборы из типов будут куда ни глянь.
Ну и смысл будет на нем писать, если писанины больше станет изза определения и контроля типов.
Тогда уж лучше будет на Rust переползать или на старый добрый C/C++.
В рабочий день программист по-нормальному думает три часа, а пишет код 15 минут. Щас бы увеличение писанины считать за минус, если пишешь по 400 слов в минуту на клавиатуре, а эта писанина спасает тебя от идиотских багов в джире и делает код не write-only
источник

วโ

วลาดิสลาว โควาเลนโก🐝... in ErlangRus
Если впадлу думать больше, то так и пишите, это тоже валидный аргумент
источник

วโ

วลาดิสลาว โควาเลนโก🐝... in ErlangRus
Denis Fakhrtdinov
@define_null интересно как они решат проблему выгребания сообщений из мейлбокса, ведь там может лежать любой терм.
Полунадуманный, полуподсмотренный вариант может выглядеть так.

0) Не тащим типы в рантайм, дженерики стираются. Для обратной совместимости байткода
1) Тип Pid имеет тайп конструктор. Для начала пусть принимает тип принимаемого сообщения. Pid[MyMessage]
2) Об ADT говорили выше. Простите за эликсир, возьму оттуда структурки, сделаю тип сумму и навешу тайп алиас
type MyMessage = MyStruct1 | MyStruct2 | MyStruct3

3) spawn расширяется на тип принимаемого сообщения. spawn(MyMessage, fn -> end)
4) С этого момента в компайлтайме невозможно отправить актору сообщение не из MyMessage
5) В скомпилированном виде не поменялось ничего, Pid[MyMessage] стал обычным pid
6) Добавление нового вида сообщения в общий тип роняет компиляцию, если не распаттернматчил его в кейсе. Потому что становится возможным и очень просто посчитать все возможные типы
источник

VS

Vladimir Sekisov in ErlangRus
Dim
С принудительной статической типизацией ерланг может превратиться в +1 энерпрайзно майнстримное г . Везде заборы из типов будут куда ни глянь.
Ну и смысл будет на нем писать, если писанины больше станет изза определения и контроля типов.
Тогда уж лучше будет на Rust переползать или на старый добрый C/C++.
ну да, придется думать,
а не копипастить половину
проекта из предыдущих,
потому как иначе сейчас
в Erlang никак.
Композиции, интерфейсы,
эффекты
разные выделять, писать
разработчикам, что пора
уже нормальный HKT
заиметь, ADT мало.
источник