为什么我要称自己为Javascript程序员,为什么说

作者: 网络编程  发布:2019-09-06

尝试百度"PHP是最好的语言",发现指向较多的是那个关于程序员的笑话。 但是如果这个梗来自于这个笑话的话,那么为什么在笑话里这个程序员不说C++/python/haskell或者别的什么语言是最好的而要说PHP是最好的呢?

Aaron Griffin写了一篇精彩的牢骚文章,主要是关于各种框架和它们能把程序员从主要业务编程中抽离出来的功能特征。概括一下他的主要论点,当你成为了一个“Rails程序员”,你使用的是一种易于理解但不通用的东西,它是从易于理解且通用的东西,如HTTP,SQL上抽象出来的一种东西。Rails上的知识是不通用的,如果你转向使用一种新的框架,你只得扔掉你现在的技能。Rails和你的新框架上没有交集的知识。

「为什么在笑话里这个程序员不说 C++ / Python / Haskell 或者别的什么语言是最好的而要说 PHP是最好的呢?」——因为说任何其他语言「最好」都并不好笑啊。

 

任何掌握超过两种以上非 PHP 编程语言且具有一定常识的程序员都会本能地意识到 PHP 的问题所在,曾经有一篇汇总性的文章在此: PHP: a fractal of bad design / fuzzy notepad (译文版可见:五大受损, 全面解析PHP的糟糕设计,但翻译得很烂),历陈 PHP 破败之处,激荡深远。

Aaron的论点有很多可以讨论的,他干的不错,我不想再总结了,你可以自己去阅读一下。

如果你没时间去读那篇长文,那我告诉你一个简单的例子来说明 PHP 有多匪夷所思:PHP 的核心函数命名很不一致,有 「strptime」这样类 C 函数的名字,有「nl2br」这样的简写,却也有「htmlspecialchars」这样的长名。

 

后来人们发现这种不一致并非偶然,而是当 PHP 还是只有不到一百个函数的小语言的时候,其作者决定用函数名的字符数量——来作为函数的 hash。由于这个愚不可及的决定,PHP 的函数名长度要尽可能地长短有秩、均匀分布,影响一直延续至今[0]。甚至有好事者将上述文中:

但我要谈一个小插曲。在文中,他说:

这一句严肃对待,做了一把 PHP 锤子:

有太多太多太多的‘开发人员’喜欢愚蠢的把自己标榜为 – “PHP程序员” 或 “Ruby程序员” 或 “C++程序员” – 这毫无意义。编程语言只是一种工具。各自都有各自专长的问题领域。称自己为“C程序员”就像是在说你是个“锤子木匠”,一个只会使用锤子的木匠。我们都知道这听起来有多傻。

图片 1

我想说的是,“这是在他所有的精彩观点中一个明显不对题,不合适的说法。”我觉得他比喻的问题的级别完全不对等,“C程序员”这个词语所蕴含的知识和经验跟“锤子木匠”所表达的东西完全不在一个重量级上。如果我们要找相同级别的东西,我们可以找到一些跟这个行业工具相关的头衔:起重机操作员,火车司机,数控设备操作员。

试想你走进五金从业者公会的啤酒馆,看到墙上挂着从钉子到电动螺丝刀的各式工具当作陈列品,而你在端详一阵之后指着其中的这样一把锤子,说「啊,这是最好的工具」,你觉得酒馆里的人会是什么反应呢?

但这个问题并不重要。我同意Araon所说的人们把工具和任务混淆了。只做为一个工具专家,而不是任务专家,会使你在工作中有些偏跛。成为一个工具专家会使你在有工具使用时工作效率非常的高,但当你需要离开这个工具环境,或者更糟糕,需要使用其它的环境时,你就显得有些无能为力了。

如果你不懂关系型数据库和SQL(现行的标准语言),当你从ActiveRecord转向LINQ时,你会发现那是相当的痛苦,因为你需要在LINQ和ActiveRecord之间找映射关系,而不是从LINQ和SQL之间找。Aaron这点说的很对。

上面的段落中我认为把”C程序员”的称呼和“锤子木匠”相比较有问题。我还发现了另外一个问题,这个问题使我更接近了Aaron的视角。我不认为编程语言是一种工具,我认为它是思想的记号。如果说我们有什么东西能和木工业做类比,我认为语言是编程建筑中的木材.

C不能比作锤子,C应该是木头。所以,一个C程序员应该是个木匠。你精通所有木工上的技艺并不能表示你的技艺可以通用于处理电线电缆,光线铺设,或铝制品。但对于做各种的木制品工作却是足够胜任的。

用于处理木材的工具就是我们用的IDE。如果你称自己为一个“Eclipse程序员”,在不需要知道它在做自动编译和自动反射,不知道如何使用git或SVN或不知道它的那些插件…的情况下你开发出来程序,那么,你就很像是个锤子木匠了。

我就是这么认为的。感谢Aaron。不错的讨论。

本文由王中王开奖结果发布于网络编程,转载请注明出处:为什么我要称自己为Javascript程序员,为什么说

关键词:

上一篇:Python编程语言如何进行模块化修改
下一篇:没有了