世界需要一种什么样的语言?

 

这一篇是我的一本迷你电子版书《动态函数式语言精髓》的序。这本书节选并增改自《Javascript语言精髓与编程实践》,后者看起来是一本主要讨论Javascript语言的书,但事实上有大量的内容是在讨论语言、多范型等等,而《动态函数式语言精髓》也正是该书的初衷。

本电子书通过InfoQ独家发布,请如下地址下载:
http://www.infoq.com/cn/minibooks/javascript-practise

序的部分内容同于原书,可以至如下地址下载其公开章节:
http://www.china-pub.com/38730

 

世界需要一种什么样的语言?


——《JavaScript语言精髓与编程实践》精简版·序


· 要有光
=====
我从未停止过对语言的思考。

曾经很长的一段时间里,在临入睡前我的脑海中总会响起一种声音“我解决了语言问题”,而睡醒时,
我仍觉得自己是无知小儿。编程十余年,我写过《Delphi源代码分析》,我从中看到了一门语言如何
从代码变成操作系统中可以运行的程序。我也写过《大道至简——软件工程实践者的思想》,我在其
中说“语言不过是(工程的)细微末节”,而成书之后,我便又投入了新的、当前你所看的这本书的
撰写之中。

语言于我,是一个死结。我一直在寻求尽头,或展望于将来,或求源于过往。我在一道大河的中间,
前后观望,时而俯首所得的,不过是一掬破碎的倒影。

倒影中,还是我的迷惘。

我也在实现着一种语言,我用JavaScript来做这件事情。我选择它只是因为熟悉,以及它足够的表现
力。我用它来做面向对象、面向切面、面向接口编程等等的尝试,也用它来模拟操作系统的调度机制,
或构架业务系统的技术框架。在另一些代码中,我也看到过用JavaScript代码来模拟CPU的指令流水线,
或者实现真实的虚拟机……但我认为没有必要向您去解说一种语言是何等的强大(或者专业、优秀与
特异),完全没有必要。

因为,它不过是一种语言。一种语言只是一种思想的表现,而不是思想本身。

什么才是决定语言的未来的思想呢?或者我们也可以换个角度来提出这个问题:世界需要一种什么样
的语言? 

特性众多、适应性强,就是将来语言的特点吗?我们知道现在的C#与JAVA都在向这条道路前进。与特
定的系统相关,就是语言的出路吗?例如曾经的VC++,以及它面向不同的平台的版本。当然,在类似
的领域中,还有C,以及汇编等等……

我们回顾这样的例举,其实都是在特定环境下的特定语言,所不同的无非是环境的大小。这其实也是
程序员的心病:我们到底选Windows平台,还是Java平台,或者Linux系统,再或者是……我们总是在
不同的厂商及其支持的平台中选择,而最终这种选择又决定了我们所使用的语言。这与喜好无关,也
与语言的好坏无关,不过是一种趋利的选择罢了。所以,也许你是在使用着的只是一种“并不那么‘好’”,
以及并不能令你那么开心地编程的语言。你越发辛勤地工作,越发地为这些语言摇旗鼓噪,你也就离
语言的真相越来越远。

当然,这也不过是一种假设。但是,真相不都是从假设开始的么?

语言有些很纯粹,有些则以混杂著称。如果编程世界只有一种语言,无论它何等复杂,也必因毫无比
较而显得足够纯粹。所以只有在多种语言之间比较,才会有纯粹或混杂这样的效果:纯粹与混杂总是
以一种或多种分类法为背景来描述的。我们了解这些类属概念的标准、原则,也就回溯到了种种语言
的本实:它是什么、怎么样,以及如何工作。这本书,将这些分类回溯到两种极端的对立:命令式与
说明式,动态与静态。我讲述了除开静态语言(一般是指类似C、C++、Delphi等的强类型、静态、编
译型语言)之外的其它三种类型。正是从根底里具有这三种类型的特性,所以JavaScript具有令人相
当困扰的混合语言特性。分离它们,并揭示将它们混沌一物的方法与过程,如历经涅磐。在这一经历
中,这本书就是我的所得。

多年以来,我在我所看不见的黑暗与看得见的梦境中追寻着答案。这本书是我最终的结论,或结论面
前的最后一层表象:我们需要从纯化的语言中领悟到我们的编程的本质,并以混杂的语言来创造我们
的世界。我看到:局部的、纯化的语言可能带来独特的性质,而从全局来看,世界是因为混杂而变得
有声有色。如果上帝不说“要有光”,那么我们将不能了解世象之表;而世象有了表面,便有了混杂
的色彩,我们便看不见光之外的一切事物。我们依赖于光明,而事实是光明遮住了黑暗。

如同你现在正在使用的那一种、两种或更多种语言,阻碍了你看到你的未来。


· 语言
=====
(略,同于原书)


· 分类法
=====
(同上)


· 特性与技巧
=====
(同上)

### 回答1: 现在世界上有许多种编程语言,包括计算机科学领域的高级语言和低级语言。高级语言是更容易让人理解的,因为它们更接近人类的语言,而低级语言更接近计算机能够理解的语言。 不同的编程语言有不同的用途,例如有些语言更适合开发操作系统,有些语言更适合开发应用程序,有些语言更适合开发网站,而有些语言则可用于多种不同的用途。 不同的编程语言之间也有联系,有些语言可以使用另一种语言来扩展功能,而有些语言则可以使用另一种语言来构建应用程序。还有一些语言可以相互转换,即可以将一种语言代码转换成另一种语言。 总的来说,编程语言之间是有联系的,但各有特点,可以用于不同的用途。 ### 回答2: 目前世界上存在着数百种编程语言,每种语言都有其独特的特点和应用领域。这些语言之间的关系可以大致分为以下几种情况: 1. 同一家族/衍生关系:许多编程语言是在已有语言的基础上进行开发或改进的。例如,C语言是许多其他语言的基础,如C++、C#和Objective-C。Java也衍生出了众多相关语言,如Scala、Kotlin和Groovy。这些衍生语言通常在原有语言的基础上加入了新的特性或功能。 2. 竞争关系:某些编程语言可能在相同的应用领域竞争,开发者可以根据自己的需求和偏好选择适合的语言。例如,Python和R都是用于数据分析和科学计算的流行语言,两者之间经常被比较和使用。 3. 专用领域语言:有些编程语言是专门为某个特定应用领域设计的,如Matlab用于数值计算和科学研究、SQL用于数据库管理、HTML和CSS用于网页设计。这些语言通常具有特定领域内使用的特殊语法和功能。 4. 多范式语言:还有一些语言是多范式的,即同时支持多种编程范式,如面向对象和函数式编程。常见的多范式语言包括Python、Java和C++,它们可以根据开发者的需求和偏好使用不同的编程范式。 总的来说,世界上存在众多编程语言,它们可以相互衍生、竞争或拥有不同的专用领域。选择使用哪种编程语言取决于应用需求、个人偏好、可用资源以及语言的特性和生态系统。 ### 回答3: 现在世界上有众多种编程语言,据统计,目前已经超过700种不同的编程语言被开发和使用。这些编程语言可以根据其功能、特性和应用领域进行分类和归纳。 首先,编程语言可以根据其用途进行分类。例如,有一些编程语言专门用于网页开发,如HTML、CSS和JavaScript;有一些用于移动应用开发,如Java、Swift和Kotlin;还有一些用于数据分析和科学计算,如Python和R等。 其次,编程语言可以根据其编程范式进行分类。编程范式指的是一种编程的风格或方式。常见的编程范式包括命令式编程、面向对象编程、函数式编程等。常见的编程语言如C、Java、Python等支持多种编程范式。 此外,有一些编程语言是在其他编程语言基础上进行扩展或改进的。这些编程语言通常称为"子集"或"超集",它们在原有语言的基础上增加了一些新的特性或功能。例如,C++是在C语言基础上增加了面向对象编程特性的语言;TypeScript是在JavaScript基础上增加了静态类型检查和其他特性的语言。 最后,编程语言之间也存在一些相互借鉴、相互影响的关系。有些编程语言会受到其他语言的启发,从而在语法、特性或设计哲学上有一些相似性。这种相互影响有时也会导致新的编程语言的出现。 综上所述,世界上的编程语言种类繁多,它们之间的关系是多样的。它们按功能、范式或基于其他语言的关系进行分类,同时也相互借鉴和影响。对于开发者而言,选择适合自己的编程语言是根据项目需求、个人喜好和学习能力等综合考虑的结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值