一个道家程序员的心路历程

前  言

道    家

在神奇的中华大地上,一个穿越7800多年前的思想传承。而今天我们所熟知的宗教流派,也只不过传承2000多年,可以说道家思想传承,甩这些牛逼哄哄的宗教流派好几条街,好不夸张来讲,在中华大地上,不管你是什么信仰,你骨子里的流着基本都是道家思想。

程序员

在这个神奇的星球上,一些牛逼的人类,发明了计算机。随着计算机技术的发展,就有越来越多的人,参与到计算机技术应用开发之中,这样子就诞生了“程序员”这种职业,就是开发计算机的程序。

思维共性

一、基本原理

道:一阴一阳谓之道。程序:一零一呦谓之程序。天地阴阳二气相交,互相激荡,慢慢地生成万物。可以说世间万物皆道的“物化”而已。而计算机由电子的逻辑电路,到程序的表达,均采用零呦的二进制法则,来呈现与虚拟现实,可以说计算机万物皆程序的“物化”而已。

 二、运行机制

道的运行程序的过程,我们是没有办法参与进去,并且直观的观察到他所产生变化的过程。我们只能通过观察有形事物的变化,来观察道的运行结果。
程序的运行过程,我们也是没有办法参于进去,去直接查看他具体的运行机制,我们只能调试跟踪其中的一些元素(变量)的值,来观察程序的运行结果。

三、业界人士

悟道之人,拥有坚韧不拔的意志,拥有天马行空的开放思维、拥有追求自我逍遥的境界,不愿意为尘世为困。
程序员,也拥有坚韧不拔的意志,拥有敢创新,不断给自己挖坑的决心,追求自我的技术成就感,不愿意为客户而妥协。

为什么要创业?

每个人的思想,是随着经历而不断成长与变化中,但是真正的造就每种思想,真正的是每个人与生俱来的天性而注定了。

为什么这么说呢?那就从北冥想创业的思路开始分析起,起初想着创业是担心说:如果年龄大了,找不到工作,这样子最初的忧患意识开始想起,慢慢想自己去独立去做点事情,而不是消极与被动等着东家来主宰未来的路。

既然有这个想法,那就要落实,发现自己除了有技术的资源,就没有任何有效的资源了,那就只能扎根下去,做个历害一点的技术员。

只是没有想到,后面却越来越追求技术了,这种结果,看上去没有办法解释,实际上也可以按上面的忧患意识来解释,就是越学技术,越希望能掌握里面的东西,比如看到很多软件厂商开发的产品,那些开发原理,与程序怎么写,都是封闭的,外面的人是没有办法接触到,比如Windows操作系统。因为有了这种想法,后面就遇上了FreeBSD Unix就这样子死磕上了,后面就围绕着FreeBSD Unix的系统操作、各种服务构建与应用,以及现在的各种服务开发方面展开了。

因为从技术的角度上来看,最少是一条完全开放的空间,任何程序,你都可以得到源码。这样子参考与学习是不成问题,反而是自身的技术实力,成为自己深度学习的最大瓶颈。要想完全弄明白一个操作系统的工作原理及实现,几乎是一个不可能完成的任务。因此在技术追求上,就陷入到了一个由史以来最大的坑之中了。

最后的创业的思路就变了,就变成了完全是围绕自己技术提升而展开。做任何系统架构,一定会往这个方面去靠。还好就是FreeBSD Unix算是比较强大的后盾,虽然是自身偏执的追求,但是在真正地项目实施中,FreeBSD Unix的确发挥了重要作用。有时候我甚至在想,正是因为我遇上了FreeBSD Unix让我慢慢变成了与众不同的程序员。
可以说现在或者未来的创业,对于我来讲,就只有三个任务。一是提升自己,让自己不断往自己想要走的路去走。二是利用这些优秀的开源系统,构建高性能,并且完全开放的系统架构。三是利用上面两点任务(一、二)来打造一个真正好的产品,能将这些技术优势发挥出来。如果创业的方向,不能满足这三点,再怎么能赚钱的项目,也不是我想要走的路。当然如果真正能达到这三个点,打造出来的产品,肯定会与众不同的,至于赚钱只不过水到渠成的事情而已。离开目前的东家,也是因为这三个点,已经慢慢不能满足了,因此才是到了要离开的时候。

由修道的角度来看,也是需要创业,修道的必要条件:法侣财地,法:好的老师(学习资料)、侣(道侣,共同修道的人,不要误解为双修,实际上一起修道的人就可以,当然有男女搭配,把握好会更快)、财(金钱与资源,不说财富自由,最少需要将现实的事情安排,不然这些基础的条件达不到去修道。那些自以为是的煞笔,老是以凡人的角度来评估你,说看不起你什么的,实际上从修道人的角度,看着这些可怜的凡人,每天都在消耗自己的生命力,为了尘世的身外之物,不断向死路去走。实际上十道九医,每个人修道人的基本能力,就是能修复自己的鼎炉[肉身],让他保持健康,不然钱还没有搞到,鼎炉就废了,那不是本末倒置。因此修道人在尘世绝对懂得抽身 之道,永远不会傻逼的去等死)、地(安身之所,不说创建一个道场,最少有一个属于自己的独有空间,可以自由修道)。这些基本条件,都需要一定的财力与资源来实现,因此创业这条路与修道没有冲突,可以合二为一。同时不断提升计算机技术,这个也是对自我心性的淬炼,也是与修道没有冲突,这样子创业、提升计算机技术、修道三者就合一了。突然领悟到了修道的思路,就是将尘世间的万象领悟,不断融入识神之中,然后淬炼提纯,然后去修补我们的元神。最终元神圆满,道就自然修成了。

世界是进步,还是退步?

一、道的演变

道家由7800多年之前的文明传承,随着文明的普及,世界不断的进步,他的思想传承,他的思想不断地影响着一个个朝代,一个个时代。一直到了2000多年前,那个众多圣人诞生的时代,包括道教在内的等各种宗教流派的产生,道家的思想,也变成了道教的内核,被包在宗教流派之中,成为了许多人不可触及的思想,这是一种进化,也是一种退化。由道教传承的外在表现,与道家传承的内在动力,一阴一阳也合道,也是必须道家思想需要经历的过程。只是道家思想已经不能独立地,剥离出来来传承了,要学道家思想,就要必须从传承道教开始。

二、程序员的演变

在计算机不断发展的时代,大部份的人,都在说计算机在不断地变化之中。但是从另外一个角度来分析,当代计算机的发展,实际上还是在一个量变的过程之中,并没有真正达到一个质变的突破。

为什么这么说?

解释的理由有两个:一是计算机的硬件结构,还是原来的体系结构。虽然电子器件有在不断地升级中,但是整个构架没有大的变化。二是计算机软件系统的底层架构,比如说象FreeBSD Unix系统,发展几十年了,虽然应用软件有根据不同的时期有变化,但是底层的开发语言与编译器,没有大的变化。如果变化比较大的,就算是苹果公司与FreeBSD Unix开发团队,开发出Clang的C语言编译器,代替Gcc。让苹果系统与FreeBSD Unix操作系统拥有了自己的编译器。从此就不用看gcc脸色过活了。

现在互联网牛人越来越多,发明了很多神器。可以让许多,不需要知道javascript为何物的人,也能借助框架成为了程序员。可以让许多,不需要知道进程间的共享内存为何物的人,也能借助框架成为了高级程序员。而象丹尼斯·里奇、林纳斯(Linus)这样子的大神也只是程序员啊?好吧,看来程序员这个概念已经堕落了,就如“黑客”这个词的堕落一般。如果北冥实在偏执,我愿意称:丹尼斯·里奇为“神级程序员”,而林纳斯(Linus),则可以称为“亚神级程序员”。虽然林纳斯(Linus)也写出了操作系统内核,但是毕竟是大量参考了Unix的技术实现,同时使用的神器(开发程序用的语言是C)是丹尼斯·里奇大神打造的,也是因此林纳斯(Linus)只能称为“亚神级”。

编程之道

很多年之前,一个朋友介绍我看梁肇新大神写得一本书《编程高手箴言》,我看完为他讲到【 高手成长的六个阶段】为所吸引,但是历史条件与时代不同,我最终将这个高手成长阶段的应用环境,就全部应用到FreeBSD Unix操作系统上面,围绕这个点展示编程之道的修炼之路。由最基础的网络服务应用、操作系统内核编译、再到网络服务守护进程开发、驱动程序程序、内核模块开发、系统级别的主动防御系统、再到驱动级别的主动防御系统,以及负载均衡系统开发。结合开源通讯协议,开发双无线路由器、云打印机、智能云锁系统等。一切的努力与开发,仅仅为了达到那个传说中的高手阶段了,可惜天资有限,努力了很多年,还是一个技术小白。下面引用大神书中的原话:

程序员怎样才能达到编程的最高境界?最高境界绝对不是你去编两行代码,或者是几分钟能写几行代码,或者是用什么所谓的可视化工具产生最少的代码这些工作,这都不是真正的高手境界。即使是这样的高手,那也都是无知者的自封。
我认为,一个程序员的成长可分为如下六个阶段。

Ø 第一阶段

此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。

Ø 第二阶段

此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。

Ø 第三阶段

此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑”。

Ø 第四阶级

此阶段能直接在平台上进行比较深层次的开发。基本上,能达到这个层次就可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改。

这时已经不再有语言的束缚,语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。一般来说,从第三阶段过渡到第四阶段是比较困难的。为什么会难呢?这就是因为很多人的思想转变不过来。

Ø 第五阶级

此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段以后,能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定会设计出来。

Ø 第六阶级

此阶段也是最高的境界,达到“无招胜有招”。这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的。也就是“手中无剑,心中也无剑”。

此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用。这就是真正的大师级的人物。这时,Win 32或Linux在你眼里是没有什么差别的。

每一个阶段再向上发展时都要按一定的方法。第一、第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习。

要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境。例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段。但是,有些人到达第三个阶段后,常常就很难有境界上的突破了。他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能。其实,这时如果遇到大的或难些的软件,他们往往还是无从下手。

现在我们国家大部分程序员都是在第二、三级之间。他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,完成一些软件的模块。

但是,也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB,做程序时,去找一堆控件集成一个软件。
现在一种流行的说法是,中国软件人才现在是一个橄榄型的人才结构,有大量的中等水平的程序员,而初级和高级程序员比较少。而我认为,现在中国绝大多数都是初级的程序员,中级程序员很少,高级的就更少了。

在这个编程之道的修炼路上,我最感谢我一个道家徒弟,虽然他叫我师傅,但是我们两个人之间实际上亦师亦友的状态,如果对大道至简的领悟,我也许比他深。但是在逍遥的领悟,他就比我深了。为什么最感谢他呢?因为他是我这个编程之道的修炼路上,第一个真正相信与肯定这个追求的人,也是第一个真正意义上,请我做系统构架师,相信我可以构建一个牛逼系统的人。也许是道缘吧,在我自身角度来看,与其说是一种技术追求,不如说是修道。因为我已经入这个行了,自然就着眼于这个现实开始修炼。

另一个感谢就是最近这次的东家,虽然我们有特殊关系,但是他也是相信我能构建一个好的系统的人,甚至在最近这两年中,让我没有太多的开发任务,专注研究一些技术,实际上我都用来研究FreeBSD Unix操作系统了,上述那些研究开发技术,也在这两年中都做了实验与验证,尤其C语言应用的层次有很大提升,虽然还是小白,不过也慢慢有了一些领悟。

尤其是最近这段时间在构架与开发一个智慧云控系统,将各种技术都融合起来。因为没有开发任务的要求,我每天写得程序代码量很少,每个功能函数模块,有的是自己写,有的是参考以前的写的代码,我都做了注解与认真整理。在开发的过程中,对于功能模块的开发,就象小时候得到一份好吃的食物,舍不得吃一般,每天拿出来舔一下的感觉,我现在开发每个模块,就感觉在品尝美味食物一般,不想草草的结束,都是用心地领悟第一段代码,第句代码,甚至每个函数的调用。

最近竟然在写得过程中,慢慢领悟到了那些解释型脚本的编译器的开发思路。比如v8引擎、node.js及PHP的开发思路。后面估计这个开发思路,可以用在智慧云控的接口模块中进行相关控制指令的语法分析器之用。

结   束

每次写感悟,都有一种全身心被抽空的感觉,这种感觉就是用来放空自己的,也是用来释放自身情绪,表达自我意志的方法。最后我们以成龙大哥的一首歌来收尾吧。

不要认为自己没有用

很多时候我们都不知道,
自己的价值是多少?
我们应该做什么?
这一生才不会浪费掉?
我们究竟重不重要?
我们是不是很渺小?
深藏心中的那一套,
人家会不会觉得可笑?

不要认为自己没有用,
不要老是坐在那边看天空,
如果你自己都不愿意动,
还有谁可以帮助你成功?
不要认为自己没有用,
不要让自卑左右你向前冲,
每个人的贡献都不同,
也许你就是最好的那种…………