《代码的未来》——新一代程序员的未来

作者:松本行弘

松本行弘,编程大师,Ruby语言的发明者

关于本书

此书与《黑客与画家》风格类似,都是作者的个人优秀作品集,《代码的未来》只是其中的一篇文章。他从编程语言的本质出发探索和发现未来程序世界的可能发展。动态语言的不断涌现、大数据的持续火热、多核时代的到来,身处浪潮之巅的新一代程序员,我们到底该如何面对?从第一篇文章开始我就发现这一本书和以往的概念性书籍完全不一样,特别是语言方面,非常朴实,没有令人深刻的概念,如果有很难懂的东西要么就简单地讲,要么就干脆不讲。《黑客与画家》是属于上个世纪程序员的,而《代码的未来》则是给我们这一代程序员看的,书中介绍了很多最新的技术知识,当然不会深入讲解,但也可以带领我们来到时代变革的那扇门前。

关于编程

何谓编程?“创造出一种人类和计算机都能够理解的语言(编程语言),并通过这样的语言将人类的意图传达给计算机,这样的行为就叫做编程。”这只是作者所引用的一个观点而已,但他并不大赞同,我也这样觉得,我认为,编程本身是一个创造的过程,而且是一个创造生命的过程,现在我们编程和上一辈人的编程目的不大一样,虽然都是为了让机器能读懂,但我们更着眼于未来,更着眼于代码所给人类带来的实际好处。编程的本质在于“思考”。正如林纳斯·托瓦兹所说:“Just for fun”。码农、程序猿。。。有时候我很喜欢这些称谓,因为这些称谓不是别的行业给我们起的,而是我们自己对自己的一种嘲讽,嘲讽中带有一丝与众不同,这正是现代程序员的乐趣。程序员无疑是互联网上最会自嘲的一群人,但苦只有自己知道,乐也只有自己知道。

关于编程语言

大一时候的我,刚学完C语言就迫不及待去学习C++语言,以为从面向过程到面向对象就算是编程世界里最重要的一道坎,殊不知,在C和C++大门之外,世界上还有那么可爱、好用、强大、简洁的编程语言。通过微博和Github我学习了Python语言,真太美了,原来强大的语言不一定要C/C++那么严谨复杂,它也可以做得很简洁。从那以后,我就爱上了动态语言,爱上了脚本语言。很多人说动态语言虽然简洁,但性能上太差,呵呵,那只是曾经,现在的动态语言不仅本身进行了足够的性能优化,而且自己要是主动去进行优化,那性能绝对比得上C和C++写出来的程序。

Go、Dart、CoffeeScript、Lua、Lisp,虽然很多我都听过,而且也看到很多人在用,但由于目前我精力有限,暂时没有学习新语言的打算。作者的Ruby语言,我也未曾接触过,看完本书,我对其有了一定的认识,很强大,但我学过Python,我觉得世界上没有比Python更简洁的语言了,而且Python很重要的一个特性是强制缩进,所以看看网上的Python代码,几乎不会看见某些人所写的C/C++那种格式混乱的代码。在未来,如果有一门新的语言诞生并得到很好的发展,那么他一定是吸收了众多语言的优点,并在此基础之上拥有了自己独一无二的特性,比如垃圾回收,比如异常处理等。

关于未来

元编程、云计算、大数据、多核时代,挑战MySQL的NoSQL,随着摩尔定律渐渐地被颠覆,新的时代已经到来了。我们不可能掌握所有的技能,但所有技能我们都应该去学习一下

时代在召唤~~~~~

补充一下在书中所看到的我以前并未接触过的知识点:

  • DSL(Domain Specific Language,特定领域语言):XML、JASON、SQL、正则表达式等都属于外部DSL,而内部DSL是在现有语言中实现DSL,Programming is a rocess of designing DSL for your own application(编程就是为自己的应用程序设计DSL的过程)
  • 元数据:描述数据所具有的结构的数据,也就是关于数据本身的数据
  • 元编程:用程序来编写程序
  • Roma(Rakuten On-Memory Architecture):一种键-值存储数据库这种数据库把所有的数据都存放在内存中,采用环状的分布式架构,在运行中可自由增减节点
  • C10K问题:在同时连接到服务器的客户端数量超过10000个的环境中,即便是硬件性能足够,依然无法正常提供服务,这是“想当然编程”的副产品数据库的
  • ACID特性:Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)
  • NoSQL:是一种数据库的总称,主要代表有ROMA(Rakuten On-Memory Architecture)这样的键-值存储型数据库和MongoDB这样的面向文档数据库(存储的是拥有结构的文档)