Pulpcode

捕获,搅碎,拼接,吞咽

0%

这本来就很复杂

不知从何时起,优雅,简洁一词,一直充实着编程世界。

尤其那些跟python有关的项目,和开源的各种精神,一直想要表达一种:“编程其实很简单,这个世界其实很简单,是你们太蠢了,把他们想复杂了而已”的想法。

less is more,make it simple stupid,各种所谓的编程哲学,在unix编程中,你也可以看到大量这种想法。

如果你觉得这还不够酸,你就去读读《可爱的python》,这上面的人,打油诗写的足够多,就像酸秀才一样。充斥这各种优雅。

那么什么叫优雅,他们的意思就是把一个复杂的问题,用简单的方式解决了。

其实大多数优雅者,就像高科技环保设计一样。完全是耗费大量资源,制作了一个不怎么实用的环保型产品。

类似于百度一个牛逼的linux命令,然后试了半天,最后解决一个几十行的替换,还不如早点自己用手替换来的快

大多数的优雅解决问题,也就是精简了一部分模型,能解决比较针对性的问题之后,就觉得自己已经牛逼到上天了,然后给自己套了一个less is more的帽子。

其实我更加相信的是,大部分软件开发,当软件增长到一定级别时,用一些复杂的设计来hold住这个软件,已是不可避免的了.

高手的鬼把戏

高手会告诉你,你们觉得复杂的东西,其实很简单。

在高手眼里,他们必须批评面向对象,必须批评设计模式这种复杂的设计。

陈皓有一篇博客《如此理解面向对象编程》:其中就有这样一句话:

我以前给一些公司讲一些设计模式的培训课,我一再提到,那23个经典的设计模式和OO半毛钱关系没有,只不过人家用OO来实现罢了。设计模式就三个准则:1)中意于组合而不是继承,2)依赖于接口而不是实现,3)高内聚,低耦合。你看,这完全就是Unix的设计准则。

其实本文中的“oo大师”,人家本来就是在举例子而已,但是作者非要从例子出手,严厉批评这是过度设计。但到作为一个例子,非要复杂到让所有人都难以理解才好?
作者在最后又打出一张牌,以表达,设计模式很简单,三种就够了,只不过你们想复杂了而已。

其实在高手眼里,之所以觉得这些东西简单,只不过是因为他们的大脑,早将自己曾经走过的弯路和复杂的部分抽象了,是一种让自己觉得简单的假象罢了。

类似的,高手们还会告诉你go很优雅,python做事很优雅.

我告诉你go为啥优雅,因为go什么都没有,go有范型么?有oop么?没有吧,别担心,c#和java当年也是打着精简c++的旗号,然后一边打脸,一边把c++的特性移植到自己的语言中来。

类似于很多人一边批评IDE过于复杂,东西太多,启动太慢,一边又去把vim和emacs配置成一个ide。

在去看网上那些什么“ruby的web框架一家ror独大,python的web框架百花齐放。”的话。简直就是笑死我了,你去看看python的web框架,都标识这自己是什么轻量级框架,
什么是轻量级?就是什么都没有,简单的将url映射到handler,然后渲染模板,这就是python web开发的思路了。真不明白,pythoner们还觉得自己能和apache,ssh框架相比,到底是何来自信。

当然高手还会说“这不是工具的问题,而是人的问题”。如果只有你一种工具,你说是人的问题尚可,但是如果有两种工具,且另一种比你能更好的解决问题,这就不是人的问题了吧?

还有人会把表驱动和函数式编程,和其它另类的设计拿出来,说这件事做的优雅,得了吧,别的不说,函数式编程,能解决的优雅问题,太过局限性了。你去看看大多数软件开发到底是什么,你就明白了。

那些充斥linux简洁,windows过于复杂的人,大多也就是程序员而已,你去大街上随便抓个人,问问他知道linux不,你就知道了。所以你的linux到底解决了什么问题?才使他如此优雅。

结尾

等到有一天,你就不会好奇,c++为啥那么复杂,windows的sdk为啥这么多,为啥windows不像linux那么干净,为啥政府要做很多你觉得不对的事,为啥要做那么多看似折腾的事。

其实背后的事很复杂,原因很简单,就是这一切本来就很复杂。