语言的“水平”是一个移动的目标。 1973 年,PL/I 被认为是一种高级语言。今天,C 被认为(至少由语言专业人士)是一种低级语言 [见脚注]。一些原因:
- 公开数字的机器级表示
- “整数”算术可以溢出
- 对字符串没有真正的支持,或者至少,字符串不是一流的
- 手动内存管理
- 地址算术
- 不安全
高级语言可能包括
- 支持独立于目标机器的整数类型
- 除非机器内存不足,否则默认整数运算永远不会溢出
- 字符串作为一等值,例如内置连接
- 无需地址算法的自动内存管理
- 安全的
根据这个定义,一些候选“高级语言”可能包括 Icon、Scheme、Smalltalk 和一些您最喜欢的脚本语言。
早在我还是一个年轻的学者,恐龙在地球上漫游的时候,人们把Icon称为“非常高级的语言”。就在 15 年前,您甚至可以参加关于高级语言的学术研讨会。但这个词不再使用了。
为什么每个人都在提到高级语言和低级语言?
尽管“高”和“低”之间的区别不断变化,但上面列出的区别仍然很重要。而且有很多区别,以至于“高”和“低”这两个词可以成为有用的速记。但没那么有用——对于愤世嫉俗的人来说,高级语言看起来至少和我最喜欢的语言一样强大,而低级语言就是其他一切。换句话说,“级别”很容易退化为单纯的骂人。
脚注:很难找到专业会议上使用的术语的引用,尤其是当专业人士不使用术语“低级”和“高级”时,因为它们不是那么技术性。但丹本询问了引文,我找到了一对:
PS 不要过于依赖 Wikipedia 来获取有关编程语言的良好信息,尤其是在 Wikipedia 参考资料没有引用参考资料或来源的情况下