Linux程序员的悲哀

这是我之前发表在chinaunix上的一篇帖子。今天再把它只字不改的贴在这儿,并不表示什么,仅仅是一次收集的过程。如果您之前没有看过此帖,还对其中的某些观点有自己的话要说 -- 多半是急着否定-- 建议您先google一下看看原文中别人是怎么说的。

先申明一下,我不是什么高手。尤其是在linux c/c++方面,甚至是个非常的低手。在这儿,我不是故意大放厥词,来博取CUer们的注意。所有的都是认真思考过的。

1.谁懂得更多?

对于喜欢钻牛角尖的人来说,这个问题因人而异的。因为深喑技术细节的windows程序员多于牛毛,而像我一样的linux菜鸟同样大有人在。好多天前,我和一位在微软工作的朋友闲聊。当谈到windows程序员和linux程序员对技术细节的认知上,我也象一些有点底气的linux程序员那样,拍着胸口说"至于是怎么实现的,我比你知道得更多"。现在,我不得不为我愚蠢的表现付出更多痛苦的思考。我基本认同我那位朋友的观点--他的观点是:

(1)"管他c, c++,c#甚至Java,管他windows还是linux,写出好用的软件才是硬本事"。 (2)"即使你比我知道的更多,但我甚至可以比你写出更好用的代码"。

说实在话,我大概很早之前就认同他的观点,只是自己死不承认罢了。程序员就如建筑师。如果有人等着要住你建的楼,拿好砖瓦好钢筋做就是。但有些人不这么干,他们非要对砖块、钢筋的化学式了如指掌才肯动手。他们恨不得自己烧砖块、炼水泥、煅钢材。

2.你真的懂得更多?

其实这是第一个问题中没有回答完的。一些linux程序员对基于某种平台的特定接口或规范的编程不屑一顾,他们热衷于自己造轮子,迷失在自负中。他们学着Neil Matthew 和Richard Stones说对文件操作,只需要open, close, read, write和ioctl就够了。他们看到别人给他封装的接口就烦,虽然他们自己偶尔也去封装几个供自己用。在他们看来,用open打开文件比用诸如open_file打开更有水平,更接近上帝。其实,不论是系统调用、库函数还是封装接口。他们都只是"接口"而已。如果你还是觉得用open打开文件比用诸如open_file更高贵、更过瘾。那请问,你知道open在底层是怎么实现的吗?如果你不能清楚地回答,请放下自尊,改用open_file吧。毕竟对你来说,他们只是"接口",你甚至不知道他们真实的区别。做为一名linux程序员,你可以先虚伪的抵制windows,然后照样使用windows在CU里潜水、灌水,没人知道。问题是,不论在公司或研究机构,你平时几乎离不开windows。当和别人谈到windows时,你故意不说什么,装着一副高手的样子,其实是因为你确实说不出什么来。

3.想知道全部,但已不可能

这大概是个哲学问题。我们不可能搞清楚全部的细节,即使是一个有限的知识范畴。计算机科学发展到今天,已经成为一种庞大的知识体系。当我们摆出架势主攻某一方面的时候,发现不得不去了解一下其他的东西。最后的结果就是"知道的越多,精通的越少"。当Ken Thompson和Dennis Ritchie自娱自乐写UNIX时,他们不需要知道UNIX命令集,因为一切由他们自己说了算。因此,从某种意义上来说,我们知道的比他们更多。因为他们知道的,我们完全可以通过学习来获取。但我敢打保票,Dennis Ritchie应该不知道微元素在生物细胞中传递的实质过程---我不得不学习这些东西,因为这是我的工作所必备的知识。因此,随着计算机科学的发展,对于一个对计算机完全陌生的人来说,学习梯度将越来越大,以至于我们无法真正精通甚至某一方面的知识。如果你的目标不只是混口饭吃那么粗俗的话,那你就会领会到知识膨胀给你带来的痛苦。因为你会发现,知道的越多,就越发无知。

==========================================================================

写给支持或反对,甚至没有完全明白我的观点就胡乱支持、胡乱反对的人

我完全没有料到,这么多人会关注这个帖子.但这大概是件好事,至少说明大家对这个问题有共鸣之处或者有争论的热情.争论也是一种思考的过程.我之所以敢写这个帖子,是因为那是我真实的想法.所有观点都是基于我亲眼看到的,还有切身的感触.当然我不敢保证它们都是对的,甚至是错得离谱. 有版友在论坛里给我传邮件说,他认同我的观点,但受不了我拽拉巴几的说话方式,好像自己有多厉害似的.其实他只是说对了一半,因为就如我自己说的那样,我就一低手,一菜鸟.但我的说话方式,是我自己无伤大雅的风格.如果你不让我这么说话,还不如让我闭嘴算了. 关于题目.我之所以起这么个拉风的标题,或许一开始确实带点广告学的效果,但当真用上之后才发现,这个题目恰恰表达了我内心的真实的想法.说是linux程序员的悲哀,不如说是对linux程序员困惑的诉说.我们想要了解更多、需要了解更多.但现实表明:即使我们付出再多,也不过是比别人多揭开千层面纱中的一层而已.我们看不到真实的源泉.可我们不甘心,还拼命的学习,拼命的寻求,最后堕入细节的泥沼. 我们不是王垠(虽然他对我产生过影响).既然我们都崇尚Open Source,那就更应该要有接纳多种选择的Open的精神,而不是固步自封,闭门造车.虽然你完全可以本着学院派的精神,天天去争论诸如"维纳斯最应该断掉的是左手还是右手",但我们终究要面对现实.我们要搞清楚,学习更多的知识,仅仅是为了应付工作,还是为了在人面前炫耀满足虚荣,又或是为了自己诚实的理想. 我不去多说什么,不过我最后还是建议有人mail请求Raymond再写一篇诸如《回答的智慧》,免得看到更多如机器窗口一样只认yes or no的粗暴回复.

你可能感兴趣的:(2,-,Linux,3,-,感悟)