世界需要一种什么样的语言?
——《JavaScript语言精髓与编程实践》精简版·序
· 要有光
=====
我从未停止过对语言的思考。
曾经很长的一段时间里,在临入睡前我的脑海中总会响起一种声音“我解决了语言问题”,而睡醒时,
我仍觉得自己是无知小儿。编程十余年,我写过《Delphi源代码分析》,我从中看到了一门语言如何
从代码变成操作系统中可以运行的程序。我也写过《大道至简——软件工程实践者的思想》,我在其
中说“语言不过是(工程的)细微末节”,而成书之后,我便又投入了新的、当前你所看的这本书的
撰写之中。
语言于我,是一个死结。我一直在寻求尽头,或展望于将来,或求源于过往。我在一道大河的中间,
前后观望,时而俯首所得的,不过是一掬破碎的倒影。
倒影中,还是我的迷惘。
我也在实现着一种语言,我用JavaScript来做这件事情。我选择它只是因为熟悉,以及它足够的表现
力。我用它来做面向对象、面向切面、面向接口编程等等的尝试,也用它来模拟操作系统的调度机制,
或构架业务系统的技术框架。在另一些代码中,我也看到过用JavaScript代码来模拟CPU的指令流水线,
或者实现真实的虚拟机……但我认为没有必要向您去解说一种语言是何等的强大(或者专业、优秀与
特异),完全没有必要。
因为,它不过是一种语言。一种语言只是一种思想的表现,而不是思想本身。
什么才是决定语言的未来的思想呢?或者我们也可以换个角度来提出这个问题:世界需要一种什么样
的语言?
特性众多、适应性强,就是将来语言的特点吗?我们知道现在的C#与JAVA都在向这条道路前进。与特
定的系统相关,就是语言的出路吗?例如曾经的VC++,以及它面向不同的平台的版本。当然,在类似
的领域中,还有C,以及汇编等等……
我们回顾这样的例举,其实都是在特定环境下的特定语言,所不同的无非是环境的大小。这其实也是
程序员的心病:我们到底选Windows平台,还是Java平台,或者Linux系统,再或者是……我们总是在
不同的厂商及其支持的平台中选择,而最终这种选择又决定了我们所使用的语言。这与喜好无关,也
与语言的好坏无关,不过是一种趋利的选择罢了。所以,也许你是在使用着的只是一种“并不那么‘好’”,
以及并不能令你那么开心地编程的语言。你越发辛勤地工作,越发地为这些语言摇旗鼓噪,你也就离
语言的真相越来越远。
当然,这也不过是一种假设。但是,真相不都是从假设开始的么?
语言有些很纯粹,有些则以混杂著称。如果编程世界只有一种语言,无论它何等复杂,也必因毫无比
较而显得足够纯粹。所以只有在多种语言之间比较,才会有纯粹或混杂这样的效果:纯粹与混杂总是
以一种或多种分类法为背景来描述的。我们了解这些类属概念的标准、原则,也就回溯到了种种语言
的本实:它是什么、怎么样,以及如何工作。这本书,将这些分类回溯到两种极端的对立:命令式与
说明式,动态与静态。我讲述了除开静态语言(一般是指类似C、C++、Delphi等的强类型、静态、编
译型语言)之外的其它三种类型。正是从根底里具有这三种类型的特性,所以JavaScript具有令人相
当困扰的混合语言特性。分离它们,并揭示将它们混沌一物的方法与过程,如历经涅磐。在这一经历
中,这本书就是我的所得。
多年以来,我在我所看不见的黑暗与看得见的梦境中追寻着答案。这本书是我最终的结论,或结论面
前的最后一层表象:我们需要从纯化的语言中领悟到我们的编程的本质,并以混杂的语言来创造我们
的世界。我看到:局部的、纯化的语言可能带来独特的性质,而从全局来看,世界是因为混杂而变得
有声有色。如果上帝不说“要有光”,那么我们将不能了解世象之表;而世象有了表面,便有了混杂
的色彩,我们便看不见光之外的一切事物。我们依赖于光明,而事实是光明遮住了黑暗。
如同你现在正在使用的那一种、两种或更多种语言,阻碍了你看到你的未来。
· 语言
=====
(略,同于原书)
· 分类法
=====
(同上)
· 特性与技巧
=====
(同上)
分享到:
相关推荐
至于文档中提到的“LabVIEW”,这是美国国家仪器公司(National Instruments,简称NI)开发的一种图形化编程语言,常用于数据采集、仪器控制以及工业自动化等领域。LabVIEW主要面向工程师和科学家,提供了一种快捷...
编程工作往往需要长时间集中精力,沉浸在代码的世界里,这需要一种静心专注的能力。静不下心来的人很难在这个领域取得成就,因为他们无法深入到问题的核心,找到有效的解决方案。 其次,程序员需要有良好的熬夜能力...
”常问问题问:为什么要使用另一种语言? 答:语言是我自己的游戏引擎的一部分。 我使用Lua作为主要脚本语言。 Lua苗条而灵活,与它一起工作总是很有趣的。 但是有时候,我会错过静态语言提供的功能,例如类型检查,...
电脑建模作为一种新兴的研究工具,在演化语言学中发挥了重要作用。它不仅可以帮助语言学家模拟语言变化的过程,还可以用来验证假设、预测未来趋势。具体应用包括: - **模拟语言演变**:通过设定不同的参数(如人口...
“全世界儿童是一家”这份大班语言PPT课件,是一种富有创意和前瞻性的教育工具。它将语言学习与全球化教育相结合,通过互动和体验式学习,不仅提升了孩子们的语言能力,更在他们心中播下了全球视野、跨文化理解力和...
在瑞吉欧教育理念中,教师的倾听不仅仅是一种技能,更是一种对儿童表达的尊重和肯定。倾听能够使教师走进儿童的内心世界,理解他们的想法和感受。例如,当一名小男孩阻止老师吃“冰淇淋”时,教师通过倾听小男孩的...
### 论网络语言的特征 ...总之,网络语言作为一种新型语言现象,不仅体现了互联网时代的语言特色,也在一定程度上影响着现实世界的语言使用习惯。了解和研究网络语言的特征有助于更好地理解和适应现代社会的交流方式。
在Java编程语言中,"对象"是核心概念之一,它代表了现实世界中的实体或抽象概念。本视频教程将深入探讨Java中的对象是如何创建、表示和使用的,这对于理解和掌握Java编程至关重要。 首先,理解Java对象的基本构成至...
R语言是一种数据分析语言,它是科学的免费的数据分析语言,是凝聚了众多研究人员心血的成熟的使用范围广泛全面的语言,也是学习者能较快受益的语言。在R语言出现之前,数据分析的编程语言是SAS。当时SAS的功能比较...
1. 符号性:语言是一种符号系统,其中的每个符号(如词汇)与其所代表的意义之间存在任意性和稳固性的关系。符号的任意性是指符号和意义之间的关联是人为约定的,而非自然界固有的;稳固性则指这种关联一旦形成,就...
Transformer是一种在自然语言处理任务中广泛使用的神经网络结构,它能够高效地处理序列数据,理解和生成复杂的语言模式。ChatGPT通过海量文本数据的无监督学习,学会了理解语境、推理逻辑、甚至模拟人类对话的能力。...
它是一种高级语言,语法简洁,易于学习,同时支持面向对象编程,能够构建复杂的应用系统。 #### JAVA和C/C++的比较 - **基本语法**:JAVA在语法上与C/C++有相似之处,如条件语句、循环语句等,但JAVA去除了C/C++中...
Python 语言是一种面向对象、解释型计算机程序设计语言,具有非常强大的功能和可拓展性。 Python 语言的诞生可以追溯到 1989 年圣诞节期间,在阿姆斯特丹,Guido van Rossum 创造了 Python 语言。Python 名字来源...
LOGO语言作为一种教学语言,它被设计得既先进又简单易学,非常适合少年儿童使用。它的主要特点是直观、形象,并且具有强大的功能。LOGO语言具有丰富的图形和数学计算功能,这些特点使它在培养学生的想象能力和创造...
D语言,由沃德·坎宁安(Walter Bright)创建,是一种现代、高性能的系统编程语言,它结合了C++的效率和现代编程语言的特性,旨在解决C++的一些遗留问题,同时提供更强大的工具支持。 首先,D语言的语法设计十分...
高级语言在不同的操作系统上看起来都差不多,但作为一种低级语言,不同操作系统上的汇编就是不同的世界。所以,既然Windows和DOS是两个完全不同的操作系统,我们就必须抛弃DOS汇编中的大部分概念从头开始学习Win32...
Java是一种广泛使用的面向对象的编程语言,其代码规范通常遵循Oracle的Java Code Conventions。格式化工具可以帮助将Java代码中的缩进、空格、换行等按照标准进行调整,使得代码结构清晰,易于阅读。 HTML(超文本...
1. **汇编语言基础**:汇编语言是一种低级编程语言,每条指令直接对应计算机硬件的机器码,具有高效性和直接控制硬件的能力。学习汇编语言首先要理解基本的指令集,如加法、减法、逻辑运算、转移指令等。 2. **寻址...