Straybird’s Blog

A blog for life and study

语言的哲学

最近在看”programming ruby”这本书的时候,被序言深深吸引,也解答了我心中最近一直存在的一些疑问。

回想起,从大学到现在,接触过的语言和技术,不分先后地包括:汇编,C, C++, Java, Javascript, python, Objective-c, ruby, ruby on rails, mysql, node.js, coffeescript, html/css, php, swift, JSP,编译原理, R, Tweak, Cycript, 密码学,http/https等等。有些在在校期间学习的,有些是工作中的需求,有的是自我督促学习的。这一年,在自我和被逼学习的过程,心中的疑问确是越来越多,为什么要学习这么多不同的语言?似乎也派不上用场?甚至,为什么这个世界上要有这么的不同却又如此相似的语言,如果全部来个大统一,不是所有人都开心?

第一次看到有人这么正式地说到此问题,是在看编译原理公开课的时候,为什么需要这么多不同的语言?教授的解答是,不同的平台有不同的需求,比如涉及到硬件,就需要c这种方便与底层交互的,涉及到强大的数据处理,就需要R语言这种的。当时看到这的时候,发现,其实这些我也都明白,也承认有一些主流的语言,主流的平台确实有其存在的道理,但为什么还是有一些新语言不断的出现,关键是他们看起来跟已有的语言区别并没有那么大呢?

在不断学习放弃的过程中,我逐渐认识到,其实学会什么语言,什么技术都是次要的,关键是你可以拿你学到的东西去做点什么,而不断的去学习一些新东西,一方面是日后需要的时候有备无患,而另一方面则是技术更新换代速度太快,是应该局限于当前,还是应该开放视野,拥抱变化呢?

对,变化,我们每个人在学习语言技术的时候,很容易机械地去学习一些表面上看起来一样的语法,无非就是控制流程,面向对象,翻来覆起几个词说得都要烂掉,而其实真正应该关注的是语言和技术的背景是什么样的,是基于一种什么样的需求的产物,而不应该是语言本身。回想起我自己学过的这些东西,其实每一样都是一些特殊时代,特殊需求的产物,汇编和C就不用说了,python和ruby,一直以来对比良多,我之前也一直苦于该学习哪个,但其实两种语言本身的哲学就不一样,根据需求,根据个人喜好,一切都有答案,想起最开始接触objective-c的时候,被它的语法搞得很崩溃,但竟慢慢地喜欢上这么语言,惊叹于如此强大的runtime实现,而一开始的时候一直都不认为那些类,方法等面向对象的概念与c++有什么不同,实在是有点对不住这两门语言,而再慢慢被这门语言吸引的时候,苹果却又推出了swift,一直有点抵触,觉得之前花那么大精力学的是不是白学了,可事实上是,这个时代就是变化的,每个平台,都种技术都在努力完善更新,应该用下心来去了解新技术,了解技术背后传达的思想和哲学。我们知道的永远都是浅显的,我们所学习的也永远只是一角,最近学node.js才知道,原来javascript已经可以脱离浏览器运行,但自己却还活在javascript是前端脚本语言的世界里。技术的世界又怎么可能有个大统一?大统一何来进步?这天下都合久必分,分久必合,还指望技术的世界一成不变?

这篇文章叫语言的哲学,其实已经完全偏题了,开始想表达的跟最终写出来的竟如此差别之大。其实最近的感觉和ruby书的序言告诉我们的,千言万语汇成如下几句: 这个世界是不会停止变化的,技术的世界更加如此,如果想要在技术的世界中行走的更远,那么就用心去了解技术背后传达的思想和哲学,与之为友,而不是机械地灌输。先用心踏实地用已有的知识汇聚成面,做点实事,然后保持open heart 以及 keep learning。

Comments