这一篇是我的一本迷你电子版书《动态函数式语言精髓》的序。这本书节选并增改自《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. 编程语言哪家强?4种数据分析领域语言优缺点对比

    来源:大数据DT(ID:hzdashuju)本文约2600字,建议阅读5分钟"哪门语言更好"?本文介绍了4种数据分析领域语言的优缺点. 编程语言的好坏及排行之争由来已久." ...

  2. mysql是面向对象的语言吗_php一种面向对象的语言,那么什么是面向对象呢?

    php一种面向对象的语言,那么什么是面向对象呢? 传统的面向过程的编程思想: 相信很多人第一次接触编程都是c语言,c语言就是非常典型的面向过程的编程语言,将要实现的功能描述为一个从开始到结束的连续的& ...

  3. python是面向什么的计算机程序设计语言_Python是一种计算机程序设计语言,python到底该怎么学习...

    1.首先我们要了解python是什么: Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell)随着版本的不断更新和语言新功能的添加,越来越多被用 ...

  4. 会c 学plc编程语言,想学PLC编程?先弄清5种PLC专用语言!

    PLC目前有5种标准的编程语言,包含图形化编程语言和文本化编程语言. 图形化编程语言包含:梯形图(LD-Ladder Diagram).功能块图(FBD - Function Block Diagra ...

  5. JavaScript:世界上最被误解的语言

    JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的编程语言之一.事实上世界上的每一台个人电脑都安装并在频繁 ...

  6. JavaScript: 世界上最被误解的语言|Douglas Crockford

    这篇文章是javascript大牛Douglas Crockford 写的,实习的时候曾读过,现在再读,又有了不同的理解,特此转载. 原文地址:JavaScript: The Wrrrld's Mos ...

  7. FOSS社区可以拯救197种濒临灭绝的印度语言吗?

    2008年1月21日,玛丽·史密斯·琼斯去世. 她的死不仅是一个人的丧生,而且是埃亚克语的最后一位讲者. Eyak在阿拉斯加中部南部使用. 由于我们有限的语言多样性,我们永久失去了一种颜色. 使用一种 ...

  8. html是最美的开发语言,世界公认3大最美语言

    在全球,每个地方都有各自的语言,即使在中国,虽然是通用普通话,但也有一些独特的语言.而每一个地方的语言,就像是一件古老的艺术品,神圣不可侵犯.接下来小编要给大家介绍的就是世界公认3大最美语言! 世界公 ...

  9. PHP是一种垂死的语言吗?

    似乎这个问题每年都会被问到,因为出于某种原因,人们对 PHP 的看法是它是业余爱好者使用的一种语言,或者是一种垂死的语言--一种正在消亡的编程语言. 在我们了解"PHP的使用率是否越来越低& ...

最新文章

  1. 学历高和学历低的眼界差距有多大?
  2. 一步一步教您打印出自己大脑的3D模型
  3. Ubuntu10.10源
  4. Eclipse构建路径
  5. POJ-3268-最短路(dijkstra算法)
  6. oracle怎么捕获表上的DML语句(不包括select)语句)
  7. Android AsyncTask用法介绍
  8. setHeadAndPropagate
  9. ssh 登陆错误后禁止ip再次登陆_macOS破坏SSH默认规则,程序员无法登录Web服务器...
  10. IOS初始化控制器的两种方法
  11. Vue 服务端渲染(SSR)、Nuxt.js - 从入门到实践
  12. 通信算法之三十:Turbo仿真链路开发基于《低压电力线宽带载波通信互联互通技术规范第4—1部分物理层通信协议》
  13. Java类加载机制--类加载过程(加载)
  14. 如何把图片压缩到200k?怎么压缩图片大小kb?
  15. amap和amapcrap使用
  16. PDF技术(三)-Java实现图片转PDF文件
  17. Qt之快速生成缩略图thumbnail
  18. Linux Realtek RTL8723BE驱动掉线重连不上问题解决
  19. 每日优鲜完成新一轮4.5亿美元融资,自有品牌商品占比j将提升至50%
  20. Android利用Cookie实现码源登录效果

热门文章

  1. 线性可分支持向量机,实例,例题:给定三个数据点:x1=(3,3), x2=(4,3), x3=(1,1),. 其中x1,x2为正例,x3为负例,求线性可分向量机。为什么a1=a3=1/4而不是1/5
  2. nodejs nodemailer 使用
  3. 小程序毕业设计 基于微信点餐外卖小程序毕业设计开题报告功能参考
  4. 学习笔记17 差分方程
  5. Arduino UNO的线路跟随机器人车,L298N驱动器,红外传感器
  6. 查看Windows XP是否已激活的方法
  7. POJ3744 Scout YYF 题解
  8. oracle i_obj4,【案例】Oracle报错ORA-08102产生原因和MOS官方解决办法
  9. 企业级nginx基础、负载、读写分离技术
  10. HOG人体特征提取+SVM分类器训练进行人体检测