Тут сегодня в debian-russian кто-то высказался, что де у C++ есть плюсы и минусы. Минусов больше. Не могу не согласиться. Я знаю целых два плюса C++. Оба - в названии.
А это означает, что переменные - не типизированные. Сейчас хранишь строку, через три строки - число, потом - ссылку на структуру. Или в двух соседних элементах массива хранишь разнотипные значения. А само значение - вполне типизированное. И зачастую ещё и интроспекцию допускает.
Вообще говоря, для нормальных контрактов функций типизации мало. А то фукнция sqrt ждет, что параметр будет положительным, а ей прилетает отрицательное число.
На практике почему-то эта страшилка случается очень редко. Есть одно комичное исключение -- когда функция ждёт последовательность строк, а ей прилетает строка, которая, о боги!, в питоне является последовательностью односимвольных строк. Но это Гвидо довыпендривался, в более других случаях почему-то не прилетает. Не тот вид ошибки, который кодеры реально делают. Не знаю уж почему, но не делают. Вот страшилка времён фортрана, про опечатку в имени переменной, изжила себя потому, что кто ж их сегодня руками целиком набирает? А почему не реализуется страшилка про словарь вместо строки -- не знаю, но вот не реализуется почему-то.
В питоньих библиотеках как раз попадались функции, которые могли один и тот же параметр разного типа жрать. Внутри, естественно, проверка типа вручную через isinstance и т.п. Еще сей длинный и чешуйчатый язык одноэлементные кортежи без спросу разворачивает при передаче их как параметра, если после элемента запятую не влепить.
no subject
Date: 2012-10-18 11:11 am (UTC)no subject
Date: 2012-10-18 11:16 am (UTC)no subject
Date: 2012-10-18 01:48 pm (UTC)Угу. Функция ждет, что в параметре строка, а ей прилетает словарь, например.
no subject
Date: 2012-10-18 02:47 pm (UTC)no subject
Date: 2012-10-18 10:13 pm (UTC)... Identical to supernatural ...
no subject
Date: 2012-10-19 04:19 am (UTC)no subject
Date: 2012-10-19 04:23 am (UTC)Еще сей
длинный и чешуйчатыйязык одноэлементные кортежи без спросу разворачивает при передаче их как параметра, если после элемента запятую не влепить.no subject
Date: 2012-10-19 04:37 pm (UTC)no subject
Date: 2012-10-19 04:26 am (UTC)