若是哲学家是程序员

尽管没那么明显,但至少对我而言,哲学与编程有很深入的关系。你想一想看,软件代码无非是反应了开发者看问题的视角和解决方案。在开始编码以前,开发人员会花时间反复思考待解决的问题,明确该问题的要点以及它们之间关系,这种过程正好反应了他们看待这个世界的哲学。

若是哲学家是程序员

译者:紫牛原文做者: developeronline.blogspot.com 
发布:2013-08-26 21:34:35 挑错 | 查看译者版本 | 收藏本文

尽管没那么明显,但至少对我而言,哲学与编程有很深入的关系。你想一想看,软件代码无非是反应了开发者看问题的视角和解决方案。在开始编码以前,开发人员会花时间反复思考待解决的问题,明确该问题的要点以及它们之间关系,这种过程正好反应了他们看待这个世界的哲学。一样地,哲学家们都在不停地琢磨他们所关心问题的重要特征,好比生命、良知或者上帝。html

那么依此来看,咱们能够将程序语言背后的思惟与哲学家们多年的思想很好地关联起来。咱们彻底有足够的理由将程序语言视为一个虚拟世界中的各类不一样流派的哲学,在这个虚拟世界中存在交互的实体。即便是最基本的哲学命题都有有趣的转换:好比,“什么是自我意识?”转换为“什么是反射?(reflection)程序员

接下来是更有趣的问题:“若是哲学家们是程序员?那么他们会使用哪一种程序语言呢?”好吧,下面是个人答案!编程

苏格拉底:硬派汇编程序员

苏格拉底是哲学的奠定者之一,但这并非惟一相同之处(汇编是一切程序语言之祖)。苏格拉底自创了一种明智的方法论,能够赢得每次辩论。他依靠不断地提问,直到(回答者)自相矛盾。好比,当有人声称“道德是重要的”,苏格拉底则问道“那么,你如何来定义道德呢?”编程语言

一样地,汇编程序中的任何(符号)都意味着问题。没有什么是预先设定好的(至少对纯汇编而言,而不是那些混杂了库和其余东西的汇编),而且全部的东西必定有很是清晰的含义。若是你和程序员苏格拉底在一块工做,而且给他看了相似这行的代码“var x = null;”,你的这位搭档必定会开始问到“什么是var”!函数式编程

亚里斯多德:大牛 C 程序员

亚里斯多德对西方哲学有巨大的影响,建立了不少科学领域,从物理学到生物学。他第一个仔细研究实体是万物之本质命题;与柏拉图的抽象造成了对比。他的哲学采用了中庸的方法去得到道德或者是理解生活(物质与形式)函数

C语言对其余程序语言有着同等规模的重要影响,在语法层面尤为如此。并且,在70年代早期的时候,C语言被视为所谓的高级语言和汇编语言的中庸之道:既能够编写机器独立的程序,也具有访问底层的能力。学习

柏拉图:理想的 C++ 传教士

柏拉图是哲学中一个大人物,他是苏格拉底的学生,也是亚里斯多德的老师。那么,我要向你解释一个明显的疑问:C++(柏拉图)怎么会在C(亚里斯多德)以后?让我来解释。柏拉图以他的形式或理念而闻名,引出了咱们周遭万物所存在的理念世界。所以,你桌子上的茶杯不过是理念世界中具备椭圆形状的对象的一个影子。用编程的行话来说就是,它是茶杯类的一个实例。编码

一样地,C++做为C的扩展,是第一门尝试在任何实现以前,就提供给程序员抽象问题的能力的语言。这自己是巨大的进步,即便解决问题的代码未写一行,对问题的分类和建模显得易懂且有用。你也许奇怪为何柏拉图不用Java,他固然能够,不过这个故事另有隐情:柏拉图对用符号去表达他的形式理念不是那么有信心,并且他偏心对话体(参见斐多)。一样地,C++不是很自信它的发展方向,因此仍然保留C做为其子集,并彻底地向后兼容不那么理想的C语法。spa

斯多葛学派:快乐的 Perl 学派

斯多葛和他们的哲学(斯多葛学派)对西方哲学,乃至世界哲学和文化都有着潜移默化并且深远的影响。有意思的是,他们不是一我的,而是相互协做的群体。斯多葛拒绝任何非物质的东西,而且试图使用命题逻辑解释这个世界。所以,斯多葛学派拒绝任何理念,而专一于道德:他们让咱们远离任何没法控制的事物,而不是经过自我审思得到真智慧。斯多葛学派拒绝政治体制和形式主义,并提倡苏格拉底的公民社会。人们要成为兄弟,消除差异,为友爱的社会贡献本身(世界各国之共同法律)。你应当注意到他们对大宗教,好比基督教和佛教的影响。3d

最有意思的是,Perl是在80年代发明的,在这个年代里面逻辑/函数式编程最终找到了它们在程序语言世界中的位置。然而,Perl社区(和语言)和斯多葛学派有着惊人的类似。Perl做为一门语言,易扩展又灵活。事实上Perl世界中最流行的话是“不止一种方式”,简称为TIMTOADY(there is more than on way to do it)。Perl背后的哲学拒绝语法上的约束,给程序员们编码时足够自由的风格,但同时鼓励他们共享和参与社区。Perl的强大源于CPAN社区的存在,里面的模块和软件被全球的Perl程序员快乐地分享着。这门语言一直在默默影响编程世界,其深远非立见。能够一提的是Perl对脚本编程、动态类型编程和函数式编程的强烈影响,但总之能够简单地归结为一句在Perl粉中广为流传的笑话:下一轮市场崩盘将由某个Perl脚本中的bug所引起。

勒奈·笛卡尔:真正的 Java 大师

笛卡尔是反对经典古希腊哲学的第一位西方哲学家。他的核心思想在他的《哲学原理》中著名的第七章有所说起,该书基于我思(理性自我)这一律念。笛卡尔相信怀疑是存在的证实,我思是怀疑的原由,所以得出了著名的“我思故我在”。我思并非咱们进行的一项活动,而是咱们的全部活动。因此,咱们所要、所想和所感,经过我思均可以直接得到,笛卡尔几乎“证实”了上帝的存在,理由是人们可以思考上帝存在之必要这一问题。事实上,任何理念或者形式均可以经过我思来得到。笛卡尔在哲学中的另外一重要贡献是:从他开始,哲学尽可能避免模糊的抽象之论,去追求简练而近于几何理论的形式。笛卡尔以近乎定理的形式阐述了他的思想。

笛卡尔绝对是完美的Java大师。Java是第一门强类型语言,它的每同样东西在使用以前必须有一个类型(或哲学地说,它们共享一种形式),这很是符合笛卡尔关于他精确言谈的努力。笛卡尔的我思是柏拉图形式的再现,区别在于,笛卡尔认为理念存在,是由于咱们思考,并且它并不存在于另外一个宇宙。他的哲学能够说是纯面向对象的,是咱们获得的解决方案,也是咱们智慧的直接产物。

伊曼努尔·康德:首位 Python 程序员

康德找了通往哲学殿堂的“简易”方法:放弃采用笛卡尔的我思和经验主义这两种对立、相反的学说中的任何一种,而大喊“都要”。康德审视了人类的理性,声称被先验理性过滤的经验能通向真理。当他的哲学成熟后,开始研究美学,试图理论化解释人的审美。康德极端精准的性格,痴迷于整洁和精确,在天天固定的时刻作固定的事情,以致于他的熟人居然将他“用于”计时。

一样地,Python是一门尝试将各类解决方案组合在一块儿的新程序语言。它是多范式的程序语言,从面向对象编程到基于契约的编程。Python程序员拒绝像Perl同样自由表达的形式,同时又从它借鉴了很多特性。Python强调简洁和清晰的代码。Python太“痴迷”于此,以至将空白缩进做为代码块的分隔符。在“Python之禅”的19条教义中首条即是“美胜于丑”。康德对美和艺术的追求,让他成为名副其实的首位Python程序员。

路德维希·维特根斯坦:天才 Haskell 程序员

维特根斯坦犹如苏格拉底的辩经,深入地革命了西方哲学。他的札记般的哲学著做《逻辑哲学论》堪比逻辑学艰深的研究生数学读本。维特根斯坦指出语义和符号形式是一切这些问题的根源,剩下的均可明确地归为科学的范畴。依靠纯逻辑,他推导出语言内在的歧义性决定了哲学不过是在重复它本身,而且以这句“但凡不可言说,务必保持沉默”的旷世名言结束了本书,同时声称解决了全部的哲学问题。

维特根斯坦是天生的 Haskell 程序员。Haskell 不是第一门函数式编程语言,而是在80年代后期出现的,并被视为最为重要的函数式语言。Haskell 并非适合全部人,就像《逻辑哲学论》同样。如维基百科中所写,它有严格的数学和逻辑形式。Haskell 是纯函数式程序语言,它从新定义了程序员使用抽象数据类型的方式,正如维特根斯坦像苏格拉底的辩论法同样,革新了现代西方哲学。

上面这些听起来也许有点奇怪,可是对程序员来讲,很容易意识到它们之间深层次的联系,但我不肯定哲学家们是否持有相同的观点。不管如何,至少是如今能够理解,为何在维基百科中每一篇关于程序语言的文章中,都有“语言哲学”这特别的一节。


【译注】
毫无疑问,这种比较令程序员兴奋,却无可避免地牵强。但文章开头提出的想法却颇有意思,也的确如此。语言,无论什么语言,究竟是一种见解(opinion),有些颇有见解(好比 Python 或者 Java),有些没啥见解(好比 C 或者 Lisp)。哲学家们莫不如此,企图用概念和观点重建整个世界,此等野心程序员有之,大独裁者更有之,区别在于前者对机器,后者对人。观念很好,不可滥用。若是让我只保留一种观念,我宁愿是“容许存在不一样的观念” 这个 meta 观念。换句话说,就是我喜欢苏格拉底之针刺,亚里斯多德之博学,柏拉图之纯粹,斯多葛之真诚,笛卡尔之完美,康德之理性,和维特根斯坦之变革。

相关文章
相关标签/搜索