Просьба откликнуться: Хочу стать Web-программистом

nafanja
а вообще статическая типизация ни как не связана с логической нужностью и не заменимостью, а связана с практической - выделение памяти, компилятору это нужно знать.
Как бы по моему это скорее вещь удобная и компилятору и человеку. Нет, насчет незаменимости даже не спорю, писать можно хоть на брейнфаке и машине Тьюринга. Просто есть концепции более естественные и удобные, а есть менее естественные и удобные. С типизацией в частности если рассматривать это дело на самом низком уровне, любой объект это не более чем хранилище байтов. Т.е. как раз тот самый произвольный тип. Но он для нас абсолютно бесполезен, если мы не знаем что там храниться и как с этим работать. Поэтому всегда, даже работая с динамическими типами, мы подразумеваем, что в конкретный момент времени данные имеют совершенно определенный тип. Так не проще ли указывать это явно ? По крайней мере текст программы это сделает намного яснее. Комментарии конечно рулят. Но по-моему лучше возложить это дело на механизмы самого языка.

nafanja
найдется не спорю, но в умной IDE есть хорошие инспекторы которые если найдут ошибку выведут предупреждение перед коммитом в систему контроля версий. (та же предварительная компиляция)
Видите, получается что Ваша безопасность зависит от того, насколько умна IDE и насколько хорошо кто-то пишет документирующие комментарии, понятные IDE. Кстати да, тут продукты от JB на высоте. Но по-моему это не более чем костыли для негодной концепции самого языка.
eugenk
Поэтому всегда, даже работая с динамическими типами, мы подразумеваем, что в конкретный момент времени данные имеют совершенно определенный тип. Так не проще ли указывать это явно ?
tmp = '4'
какой тип данных в tmp? правильно символ, зачем явно объявлять что tmp имеет тип символ, да еще и запрещать потом в tmp поместить число?
tmp = 1
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Или строка?
Если символ, то занимает,скорее всего слово.
Если строка, то уже массив со всеми вытекающими.
Теперь попробуйте изменить тип данных на фиксированное число - освободить память, создать новую структуру, проверить и реорганизовать ссылки, собрать мусор и т.д.
А если новое значение - float, double...?
Поэтому интерпретаторы и работают медленне
nafanja
tmp = '4'
какой тип данных в tmp? правильно символ, зачем явно объявлять что tmp имеет тип символ, да еще и запрещать потом в tmp поместить число?
tmp = 1
Элементарно. Символ это не есть число. Даже если мы говорим о байтах, а не о строках, '4'=0х34 в ASCII-кодировке. Число 4 это 0x04. Поэтому если мы даже говорим о байтах, всё равно им требуется некоторый механизм интерпретации. На С мы просто говорим char. И можем присваивать сюда хоть 0х34='4', хоть 4, хоть 1. Под личную ответственность.
вообще я говорил о неявной, но очевидной записи типа
tmp = '4' (в кавычках)
tmp = 1 (без кавычек)

corner
Или строка?
Если символ, то занимает,скорее всего слово.
Если строка, то уже массив со всеми вытекающими.
совершенно верно, строка = массив символов, символ = строка с одним компонентом.

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

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

суть в том что интерпретатор знает какой тип у данной переменной в любой промежуток во время выполнения, а чистый бинарник не знает, в него уже заложены жесткие параметры. а все завязано на работе с памятью как выше заметил corner, поэтому интерпретируемому языку не нужно статическое определение типов.
описание типа нужно только человеку и IDE, в результате чего и придуманы форматы комментариев.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.