Когда мы определим функцию в C/C++, мы вводим что-то вродеОткуда появляется объявление типа в языках программирования?
int add(int a, int b){
return a+b;
}
Однако реальная вещь, которую мы делаем в функции, чтобы получить сумму двух суммируемых вещей и возвращает его значение. Во многих ранних языках программирования, таких как Algol, C, pascal, вы должны объявить тип переменной перед выполнением некоторых операций над ней. Кроме того, это требуется на довольно многих основных языках, таких как Java, C# (хотя у него есть такие ключевые слова, как «var»).
Во многих языках динамического программирования, как Python, перепишем предыдущую функцию:
def add(a,b):
return a+b
без «идентификатор типа» функции и аргументов. Я думаю о том, что по сравнению с такими языками, как C/C++, версия Python, по-видимому, ближе к первобытной идее в уме программиста: просто инкапсулируйте поведение добавления двух чисел вместе и верните сумму.
С другой стороны, на практике эти объявления типов помогают мне с уменьшением ошибки, например, я не буду передавать строку в функцию «добавить», если я просто хочу получить сумму двух чисел , Если я передаю две строки, компилятор будет рассматривать это как ошибку. Объявление типа, похоже, является защитой кода в этом примере.
Но что меня пугает, так почему же так много ранних языков требуют объявления типа для переменной? Почему большинство языков с объявлением типа пришли раньше, и большинство языков с более простой версией синтаксиса появилось позже в истории?
Я знаю, что мы не можем сказать, какой подход «лучше», и они оба являются завершающими, но мне просто интересно, почему раньше разработчики языка не выбрали более интуитивно понятный и симуляторный синтаксис, который фокусируется на реализации функция 100%, но предпочла добавить идентификатор типа в качестве искомой части языка (вопрос 1)? Кроме того, в раннее время люди имеют очень неявное впечатление о том, какой код должен выглядеть, поэтому я предполагаю, что идея идентификатора типа должна откуда-то. Мой второй вопрос: откуда возникает идея объявления типа (математическая практика? Или где-то еще?)? Думаю, у меня будет лучшее понимание «типа», если я знаю ответ.
Спасибо, это именно то, что мне интересно. Кстати, мы часто видим обозначения, определяющие функции в математике, такие как f: R^2-> R, имеет ли это какое-то отношение с объявлением типа в программировании? – zhxchen17
@ sorrow17, ну да, теория типов (в вычислительной логике) была изобретена как основополагающая теория математики, как теория множеств, поэтому она естественно заимствовала нотацию. Оттуда он, вероятно, нашел свой путь в языках программирования, например, в лямбда-исчислении вы должны были написать 'f: R × R → R', а в ML' f: real * real -> real' как аннотации типов. –