编程语言是都一样的,吗?

目录

编程语言是都一样的,吗?

是的,编程语言都不一样

语言越高级就越好,吗?

繁多变种编程语言的衍生


编程语言是都一样的,吗?

 “编程语言都差不多的,会一种就等于全部”。这完全是一派胡言,所谓的 “触类旁通“ 不见得有效。毕竟各种语言是天差地别!

是的,编程语言都不一样

我们的讨论是基于高级语言的,绝大多数程序员在绝大多数时候都使用高级语言编程,现在很少有人使用汇编语言。程序员的时间要比计算机的时间昂贵得多,后者已经变得很便宜了,所以几乎不值得非常麻烦地用汇编语言开发软件。只有少数最关键的部分可能还会用到汇编语言,比如开发某个计算机游戏时,你需要在微观水平控制硬件,使得游戏速度得到最大限度的终极提高。

Fortran、Lisp、Cobol、Basic、C、Pascal、Smaltalk、C++、Java、Perl 和 Python,全都是高级语言。它们只是比较出名的几种而已。现在的高级语言大概有几百种之多。不同机器语言的指令集基本相同,但是高级语言就不一样、它们开发程序的模式差别相当大。那么,应该使用哪一种语言?

嗯,关于这个问题,现在有很多争论,部分原因是,如果你长期使用某种语言,你就会慢慢按照这种语言的思维模式进行思考。所以,后来当你遇到其他任何一种有重大差异的语言,即使那种语言本身并没有任何不对的地方,你也会觉得它极其难用。

缺乏经验的程序员对于各种语言优缺点的判断经常被这种心态误导,可能因为想炫耀自己见多识广,其些同行会告诉你所有高级语言基本相似。“所有编程语言我都用过”,某个看上去饱经风霜又酷的同行往酒吧里一坐,“你用什么语言并不重要,重要的是你对问题是否有正确的理解。代码以外的东西才是关键”。

这当然是一派胡言,各种语言简直是天差地别。比如 FortranI 和最新版的Perl 就是两种完全不同的语言,而早期版的 Perl 和最新版的 Perdl 之间的差别也大得惊人。但是,那个夸夸其谈的同行可能真的相信自己的这番话,的确有可能使用所有不同的语言写出了与用原始的 Pascal 语言写的差不多的程序。因为如果你吃过麦当劳,就会知道全世界各地的麦当劳的味道都几乎一样。

有些同行只喜欢自己用的语言,反感其他所有的语言。另一些同行则说所有的语言都一样。事实介于这两个极端之间。语言之间确实有差别,但是很难确定地说哪一种语言是最好的,因为这个领域依然还在快速发展。

语言越高级就越好,吗?

从表达性上讲,高级语言比汇编语言更接近人类语言,又比其他语言更进一步。举例来说,C 语言是一种低层次语言,很接近硬件,几乎堪称可移植的汇编语言,而 Lisp 语言的层次则是相当高,如果高层级语言比汇编语言更有利于编程,你也许会认为语言的层次越高越好。一般情况下确实如此,但不是绝对的。编程语言可以变得很抽象、完全脱离硬件,但也有可能走错了方向。比如,我觉得 Prolog 语言就有这个问题。它的抽象能力强得不可思议,但是只能用来解决 2% 的问题,其余时间你苦思冥想、运用这些抽象能力写出来的程序实际上就是 Pascal 语言的程序。

如果你非常关注运行速度,那么最好使用接近机器的语言。这时你会用到低层次语言的原因就是效率问题。大多数操作系统都是用 C 语言写的,这并非偶然。不过,硬件的运行速度越来越快了,所以使用 C 这样的低层次语言开发应用程序的必要性正在不断减少,但是大家似乎还是要求操作系统越快越好。

繁多变种编程语言的衍生

不同变种编程语言的衍生,表现着设计者的不同初衷,及各种分歧的解答方案。

语言设计者之间的最大分歧也许就在于,有些人认为编程语言应该防止程序员干蠢事,另一些人则认为程序员应该可以用编程语言干一切他们想干的事。Java 语言是前一个阵营的代表,Per 语言则是后一个阵营的代表。

由于防止程序员做蠢事有好几种方法,所以上面的争论逐渐分化成几个较小的议题。目前最活跃的议题之一就是静态类型语言与动态类型语言之争。在静态类型语言中,写代码时必须知道每个变量的类型,而在动态类型语言中,随便什么时候,你都可以把变量设为任意类型的值。

静态类型语言的拥护者认为这样可以防止 bug,并且帮助编译器生成更快的代码(这两点理由都成立)。动态类型语言的拥护者认为静态类型对程序构成了限制(这点理由也成立)。我本人更喜欢动态类型,痛恨那些限制我的自由的语言。但是,确实有一些很聪明的人看来喜欢用静态类型语言。所以,这个问题依然值得讨论,并没有固定答案。

推荐阅读:

Kafka 高吞吐、高性能核心技术及最佳应...

高并发服务中的智能流控...

Mysql 数据库优化秘籍...

数据库分库分表可扩展及数据倾斜/热点问题...

五分钟搭建基于Prometheus+Grafana实时监控...

猜你喜欢

转载自blog.csdn.net/qq_34417408/article/details/126135023