Главная | Настройки | NSFW
Тема:
Доски


[Ответить в тред] Ответить в тред

[Назад] [Обновить тред] [Вниз] [Каталог] [ Автообновление ] 16 / 1 / 8

Статическая типизация - нахуя? Anonymous No.1945
_20180119_01191[...].JPG (58 KB, 480x818)
Объясните, люди действительно такие мазохисты? Вот нахуя нужна эта статическая типизация? Это говно принципиально не вклинивается в реальный мир. Посудите сами.
Допустим я делаю библиотеку для создания парсеров, допустим я делаю это на nim(типичный статик тайп яп). Это омерзительно. Вместо того, чтобы писать код, я описываю типы на каждый ебучий чих, блядь. Схуяли я вообще должен их указывать. Если я хочу, чтобы функция возращала или false(boolean) или массив и любых значений. Массивы в nim - отдельный пиздец. Забудьте про парсинг в nim, здесь вы без костылей AST не построите.

Нахуя нужны типы в принципе, когда есть объекты, классы, компоненты, которые гибче, лучше, и вообще позволяют писать без еботни?
Anonymous No.1946
Статическая типизация позволяет исключить некоторые трудновылавливаемые ошибки, которые возможны при работе с динамической типизацией.
Если программу пишет новичёк и использует язык с динамической типизацей, то код очень часто превращается в говно.
Anonymous No.1947
>>1946
>Статическая типизация позволяет исключить некоторые трудновылавливаемые ошибки, которые возможны при работе с динамической типизацией.
Что мешает их вылавливать функциями типа mustbe? mustbe(myVar,string) // если myVar есть строчка - все ок, иначе TypeError
Anonymous No.1948
>>1947
>Что мешает их вылавливать функциями типа mustbe?
Это что ещё за костыли? Зачем их вылавливать, когда можно просто объявить им тип?
Anonymous No.1949
>>1948
>Это что ещё за костыли? Зачем их вылавливать, когда можно просто объявить им тип?
В итоге ты так больше костылей наплодишь. Ибо напоминаю, в большинстве случаев в массивах находятся разнородная информация, а функции могут(и должны) возращать значения разных типов.
Ни один статически типизированный язык не умеет так:
function HelloWorld(arg)
{
switch(arg)
{
case "Hello": return "World"
case "Bye": return "bye-bye"
default: return false
}
}
Anonymous No.1950
>>1949
>в большинстве случаев в массивах находятся разнородная информация
Значит беда с архитектурой приложения. В массивах надо стараться хранить значения одинаковых типов, как и функция должна возвращать значение определённого типа.
Твой пример выше, когда в случае по умолчанию возвращается false, исключение - это иногда бывает удобно. Я говорю про случаи, когда функция возвращает в одном случае строку, в другом - массив или чило, вот это зло и антипаттерн, так делать не надо.
Anonymous No.1951
>>1950
> В массивах надо стараться хранить значения одинаковых типов
А если этот массив - дерево?
Anonymous No.1952
>>1945 (OP)
> нахуя нужна эта статическая типизация?
Чтобы при каждой операции со значениями не дрочить хитровыебанную логику выяснения способа реализации этой операции в зависимости от типа значения, а сразу её делать не глядя.
Чтобы каждую переменную хранить не как значение + описание, а просто как значение.

Чтобы вкурить программирование не поверхностно, рано или поздно нужно обязательно пройти на нижний уровень и разобраться с тем, как всё это делает процессор, научиться основам языка ассемблера.
ОП No.1955
>>1952
> Чтобы вкурить программирование не поверхностно, рано или поздно нужно обязательно пройти на нижний уровень и разобраться с тем, как всё это делает процессор, научиться основам языка ассемблера.
Это собственно и делаю. Изучаю nim, тк он самый приятный из байтоебских императивных языков. Но система типов это ужас какой-то. А ведь в nim они даже не выводятся(как в хаскелле). Я так привык, что везде основа - объект / функция, что с этими типами я век не сдружусь.
Anonymous No.1956
>>1945 (OP)
У ЯП без и со статической типизацией есть свои преимущества и недостатки. Аноны выше (в т. ч. и ты) уже их описали.
От себя добавлю, что при статической типизации может быть удобно работать с большими массивами однотипных данных типа картинок, видео, потому что быстро.
Anonymous No.1972
Ну нахуй этот nim. Я заебался. Даже
MyComponent = {id:0}
не работает, что это за язык такой?
Anonymous No.1973
>>1956
>удобно работать с большими массивами
Смотря, что понимать под удобством.
Anonymous No.1974
>>1972
>что это за язык такой?
Типичный представитель хипсторских языков. Один из таких обсуждается в соседнем треде.
Anonymous No.1975
>>1974
Если ты про лайси, то там скорее всего можно было бы сделать что-то типа hashtable(valuetype,keytype) dict := [a : b,c : d];
Это статическая типизация и придётся выбрать тип для значения и ключа. Вместо hashtable мог бы быть также какое-нибудь дерево или другой ассоциативный массив.
Anonymous No.1976
Чем-то напомнило чей-то вопрос про методы, почему все методы по умолчанию не виртуальные и в языке вообще присутствуют обычные статичные...
Anonymous No.2006
>>1976
>методы по умолчанию не виртуальные
В смысле мультиметоды / динамическая диспетчеризация, которые не привязаны к какому-либо объекту?

[Назад] [Обновить тред] [Вверх] [Каталог] [ Автообновление ]
16 / 1 / 8

[Ответить в тред] Ответить в тред

15000

Ответ в тред No.1945
Настройки
Избранное
Топ тредов