Происхождение статической типизации (смотри пост ниже). В стародавние времена, программисты работали на машинном языке, в котором нельзя манипулировать числами произвольной длины. В машине все числа имеют фиксированную разрядность. Так вот, никто еще не догадался, что числа могут иметь произвольный размер, но была проблема с нечисленными данными, например строками. Как же их представить в машине, где все должно иметь фиксированный размер. Pascal делал это так - в первый байт (строки в Паскале - последовательности байт) строки обозначает ее длину. При создании строки в памяти выделяется 255 символов. Таким образом длина строки может варьироваться от 0 до 254 символа. Далее возникает проблема с присваиванием. Перемещение числа из одной ячейки памяти в другую не представляет трудности, тогда как строки приходится копировать полностью. Но можно вообще не копировать большие объекты, а работать со ссылками и копировать их. Ссылка - число фиксированной длины, поэтому проблем не возникает. Если применить такой подход ко всей программе, то она засорится операциями разименования (перехода по ссылке). Некто из команды разработчиков Lisp понял, что можно выбросить операцию копирующего присваивания и заменить ее на операцию присваивания ссылок, при этом обращение к переменной включает в себя операцию разыменования. После Лиспа такой подход использовался в языках Smalltalk, Python, Ruby. При выполнении операции копирующего присваивания, необходимо, чтобы при присваивании место, в которое происходит копирование, имело определенный размер, отсюда и возникает идея статической типизации. Когда мы переходим к присваиванию ссылок, то идея, что имена имеют тип (размер) утрачивает смысл. В таких языках переменная - это пара вида (имя . адрес), а размер объекта определяется самим объектом при помощи тега. Никто не запрещает на имя навесить еще и тип, но подумайте должны ли имена иметь тип в естественных языках. Имя Оля может соединяться только с человеком женского пола, а имя Саша может обозначать как мужчину так и женщину. Пол - категория типа в естественных языках. При правильном планировании языка (например, эсперанто) категория пола исчезает. Наш разум протестует, когда кто-то называет собаку человеческим именем, но есть ли на то реальные основания?