185 похожих чатов

На практике от статической типизации лишь проблемы с ручным привидением

типов, это должен делать компилятор, а не программист. Кто может объяснить, зачем в языке с неизменяемыми переменными нужны статические типы данных? Для выбора шаблонов вполне достаточно и атомов в качестве первого аргумента.

13 ответов

104 просмотра

Статическая типизация и проверка типов на компиляции нужна чтобы с человеческой черепушки снять лишнюю когнитивную нагрузку.

> Кто может объяснить, зачем в языке с неизменяемыми переменными нужны статические типы данных? Ловить ошибки. И теоретически это может доползти до оптимизации в BEAM

Denis
Статическая типизация и проверка типов на компиляц...

и затем нагрузить эту же черепушку написанием бойлерплейт функции для конвертации двух почти одинаковых типов между собой. если в ерланге ограниченное количество типов, то следовательно и огр. кол-во операций, которые могут быть произведены. В языках с системами типов их тысячи, и для каждого типа свои операции, и в каждой операции свои подводные камни, которые нужно помнить. Как это разгружает черепушку?

Pavel Buranov
и затем нагрузить эту же черепушку написанием бойл...

> В языках с системами типов их тысячи, и для каждого типа свои операции, и в каждой операции свои подводные камни, которые нужно помнить Так и в Erlang и Elixir есть по пачке функций для каждого типа. То о чём ты говоришь, это не свойство статической или динамической типизации, а скорее свойство слабой или сильной. То есть это в JavaScript ты плюсиком и строки склеиваешь и числа складываешь. Как это хоть что-то упрощает?

> знать что делает что нужно именно программисту Так у тебя и в Erlang/Elixir нужно знать что что делает. Если ты в статически-типизированном языке вызовешь функцию/оператор/метод над переменной того типа, который с этой функцией не работает, статически типизированный язык в компайле упадёт, а динтипизированный в рантайме. Конечно, иногда может быть каламбур типов, и у тебя компилятор схавает >> и подвинет байты вместо вывода с cout, но в происходит несравнимо реже, чем вызов maps:get над каким-нибудь {ok, Result} в Erlang

Волька- Автор вопроса
Denis
Статическая типизация и проверка типов на компиляц...

Как раз наоборот получается, когда требуется приводить числовые типы к одному, да или даже стоку к числу, много лишних движений.

Волька- Автор вопроса
Lama Lover
> Кто может объяснить, зачем в языке с неизменяемы...

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

Волька
От ошибок это не спасает, разве что только от джун...

Причём тут джун или не джун? Мне кажется, что конечно количество ошибок с опытом уменьшается, но все мы регулярно баги выдаём, причём довольно часто очень тупые типа null check (aka none check в Erlang или nil check в Elixir). Статически типизированный компилятор именно такие ошибки и ловит (и ещё много других)

Волька- Автор вопроса
Lama Lover
Причём тут джун или не джун? Мне кажется, что коне...

Ну не знаю, в том же Go задолбало приводить типы, даже внутри числовых, чувствуешь себя не человеком, а компьютером, точнее его винтиком, как Нео в Матрице.

Волька
Ну не знаю, в том же Go задолбало приводить типы, ...

Это скорее уже к дизайну языка вопросы. Есть статически-типизированные языки, где всё это приводить не нужно, например Java, Kotlin

Волька- Автор вопроса
Lama Lover
Это скорее уже к дизайну языка вопросы. Есть стати...

Что в Kotlin, что в Nim, не говоря уж про Go, статика надоедает, подходит лишь для самого нижнего уровня, которым сейчас являются микроконтроллеры, но в нормальных языках её меньше, где есть автоматическое приведение типов, и более-менее свободное использование числовых типов. А какие есть проблемы с динамическими типами данных в языке с неизменяемыми переменными? Я заметил лишь проблемы с тем, что в Erlang повторное использование переменной вызывает ошибку, так как уже используется сопоставление, а не присвоение, в Elixir это элегантно исправили.

Волька
Что в Kotlin, что в Nim, не говоря уж про Go, стат...

> А какие есть проблемы с динамическими типами данных в языке с неизменяемыми переменными? Такие же как и везде. Можно написать и написать код, который никогда не сработает нормально, и никто тебе об этом никогда ничего не скажет. Например, где-нибудь ошибиться в case-ах и вернуть просто Result вместо {ok, Result}. А потом поймать это в проде, а не во время компиляции > Elixir это элегантно исправили. Я бы не сказал что исправили. Это скорее дело вкуса. Эрлангистам вон просто нравится писать State1, State2, State3, State4, State5 и т.д.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта