前言
我的脾气古怪。我会抱怨很多东西。这个星球上大多数技术我都不喜欢。
PHP不仅使用起来尴尬,还有要嘛我想要的不适合,要嘛不是最令人满意,要嘛违背我的信仰。我可以告诉你关于一门语言,所有我想避免的好方式,所有我喜欢的坏方式。来吧,问吧!谈话会很有趣!
php是唯一的例外。几乎php抽象的所有东西都是支离破碎的。包括语言,框架,整个生态系统都一塌糊涂。我几乎不能单独列出咒骂的事情,因为它全身都坏了。每次我打算编辑一堆杂乱如麻的php抱怨清单的时候,我都被一些琐事打乱,越深入就越会发现其它令人震惊的事情。
php让人难堪。它是如此的破碎,但那些被培训的业余爱好者,却对它称赞不已。php在做一些徽不足道的挽回措施,但我选择忘记它。
不过我得让我的系统摆脱这些东西,也就这样了,这是最后一次尝试。
打个比喻
我只是随口和Mel抱怨下,而她却坚决让我发表出来。
我甚至说不出来PHP到底怎么了,因为—还好。想想你有一个,嗯,工具箱吧。一堆工具。看起来还好,有标准的东西。
你拔除螺丝钉,它怪异的有三个头。OK,好吧,这对你不太有用,但你猜迟早有天会有用。
你拿出榔头,被震住了,两边都有是尖爪。但它仍然能用,我的意思是,你可以用两头的中部斜着敲。
你拿出老虎钳,但它们没有锯齿面。表面平而光滑。这没多大用,但依然能用,没什么。
你可以继续。工具箱的东西都是怪异和琢磨不定的,但又不能说毫无价值。整体看没什么大问题;它的工具都齐全。
现在,想象有很多使用这些工具的木匠,它们和你说:”这些工具有什么问题呢?我们都用过,它们工作都很好啊!”。工匠们给你展示他们建的房子,每个门都是五边形的而屋顶是癫倒的。你敲前门,它向内倒榻了,而他们却抱怨你打破了他们的门。
这就是PHP的问题。
立场
我认为下面的特质对于一门语言的生产力和可用性是重要的,而PHP在大范围破坏它们。如果你不同意这些,好吧,我无法想像,我们永远不会达成一致。
一门语言必须是可预见的。它是將人类的思想反映给计算机执行的媒介,因此它的关键是,人类对程序的理解实际要正确。
语言必须一致。相似的东西就要看起来相似,不同的就是不同。学习了语言的部分知识,就应能很容易理解剩下的部分。
语言必须简洁。新语言应该减少继承旧语言的不好的形式。(我们也可以写机器码。)新语言当然应努力避免织入新的特有的形式。
语言必须是可靠的。语言是解决问题的工具;应尽量避免引入新问题。任何”陷阱”都会大量的分散注意力。
语言必须是可调试的。当出错的时候,程序员必须修正它,我们需要获得我们想要的帮助。
我的立场是:
PHP到处处充满惊奇:mysql_real_escape_string,E_ACTUALLY_ALL
PHP不一致:strpos,str_rot13
PHP需要特别形式:error-checkingaroundCAPIcalls,===
PHP古怪:==。for($fooas&$bar)
PHP晦涩:默认无栈跟踪或fatals,复杂的错误报告
我不能就单个问题解释为什么它归为这些类,否则將会没完没了。我相信读者自己会思考。
不要再和我扯这些东西了
我知道很多有利的论点。我也听到很多反驳的论点。这些都只能让谈话立即停止。不要再跟我扯这些东西了,求你了。
不要和我说”好的开发者能用任何语言写出好的代码”,或者坏开发者。.吧啦吧啦。这毫无意义。好的工匠可以用石头或锤子驾驭钉子,但你见过有多少工匠用石头的?成为一个好开发者的标准之一就是善于选择工具。
不要和我说熟记上千个例外和古怪行为是开发者的职责。是的,这在任何系统中都是必要的,因为电脑是傻的。这不意味着,系统能疯狂的接受而没有上限。PHP有的只是异常,这是不行的,一旦和语言摔角决斗,你实际编写程序就要花费更多的努力。我的工具不能为我创建应用产生积极作用。
不要和我说“那就是CAPI的工作方式”。这星球上高级语言存在的目的是什么,它们能提供的一切仅仅是一些字符串助手函数和一堆C的包装器?如果是这样,那就用C!这里,甚至还有为它准备的CGI库。
不要和我扯“搞出奇怪的事,是你活该”。如果存在两个特性,总有一天,某些人会找到一起使用它们的理由。再次强调,这不是C;这里没有规范,这里不需要“未定义行为”。
不要再和我扯Facebook和Wikipedia就用的PHP.我早知道了!它们也能用Brainfuck写,但只要他们足够陪明,不断折腾这些事情,他们总能克服平台的问题。众所周知,如果使用其它语言编写,开发时间可能会减少一半或加倍;单独拿出这些数据毫无意义。
上帝保佑,不要再和我扯任何东西了!如果列出的没有伤害你的PHP的观点,无所谓,因此请停止在网上做无意义的争论,继续开发高帅富酷的站点来证明我是错的。
偷偷告诉你:我非常喜欢Python.我也很乐意对它说些你不爱听的话,如果你真想的话。我并不要求它完美;我只是想扬长避短,总结我想要的最佳东西。