【发布时间】:2014-11-22 04:37:06
【问题描述】:
当我们在 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版本似乎更接近程序员头脑中的原始思想:只是将两个数字相加并返回和的行为封装起来。
另一方面,在实践中,这些类型声明对减少错误有很大帮助,例如,如果我只想要两个数字的和,我不会将字符串传递给“add”函数。如果我传递两个字符串,编译器会将其视为错误。类型声明似乎是对这个例子中代码的保护。
但让我感到困惑的是,为什么这么多早期创建的语言需要对变量进行类型声明?为什么大多数带有类型声明的语言出现得更早,而大多数语法更简单的语言出现得更晚?
我知道我们无法判断哪种方法“更好”并且它们都是图灵完备的,但我只是好奇为什么早期的语言创造者没有选择更直观和更简单的语法,专注于实现功能 100%,但选择添加类型标识符作为语言的必需部分(问题 1)?另外,在早期,人们对代码应该是什么样子的印象非常模糊,所以我猜类型标识符的想法必须来自某个地方。我的第二个问题是类型声明的想法来自哪里(数学?实践?还是其他地方?)?如果我知道答案,我想我会对“类型”有更好的理解。
【问题讨论】:
标签: types programming-languages