订阅业界RSS CSDN首页> 业界

专访王然:与历史共舞的Linux程序员

发表于2014-03-18 20:14| 次阅读| 来源CSDN| 0 条评论| 作者钱曙光

摘要:两年制大专,主修网络配置与维护,在努力钻研网络技术的过程中慢慢爱上了编程,后放弃Java 而专攻C,最终因钟情Linux 内核之美而娶了它。社区之星第42期带你感受与历史共舞的Linux网络专家王然的艰辛成长之路。

Linux网络专家王然和他的爱女小小

王然,专注于VPN,精通TCP/IP协议栈的原理以及实现,平时对Linux内核特别是网络部分有浓厚的兴趣。虽专注于技术,然而每天必须抽出一个小时时间读历史。

会编程的人是最幸福的

CSDN:你是在从事了一年的网络维护后才开始接触编程,进而成为了一名程序员,能否简单说下你当时是怎么样的一个想法?又是如何一步步做到的呢?

王然:我大学学习的专业是网络与信息安全,虽说这个专业名字听起来挺吓人的,但是对于两年制大专来讲,这个专业主修的内容其实就是网络配置与维护,留下的仅仅是个名字而已,但是我当时就想决不能愧对于这个专业的名字,一定要好好学习。一切从网络协议开始,因为如果不懂网络协议,就不可能精通网络安全,至于编程,对于我个人来讲,它是我努力钻研网络技术的过程中一个必不可少的工具。

两年的时间里,我努力将网络协议部分的专业知识基础打得很扎实,参加了华为的高级网络工程师培训并获得了HCSE证书,余下的时间内就死啃各种网络教材,从大学教材到Cisco系列,另外,在学校的实验机房搭建简单环境做些小测试也是必要的,毕竟理论要联系实践。

毕业后,顺利在长春找到了第一份工作,在做了较短时间的网络实施维护后,一向喜欢刨根究底的我在网络领域知道了“HOW”之后,十分想知道“WHY”。在那个阶段第一次接触到了Linux内核代码,由于在大学期间学过一门Java课程,大致知道编程语言的一些事儿,对于C而言,自学起来应该也不会太困难,当时并不是为了学编程而学C编程,而是为了“折腾网络”而学的编程,要知道所有的网络协议落实到根本就是代码,因此自己一定要学会自己写代码。

经过了一个痛并快乐着的过程之后,Linux内核协议栈的代码基本浏览了一遍,期间自己动手写了好多代码,事实上,我是从Linux内核代码那里学会的C语言而不是从谭浩强的书里学的。由于在学习编程之前我就对网络协议的运行原理有一定深度的理解,现在学会了C语言编程,就可以动手做一些HACK了,现有的协议或者协议处理模块满足不了自身要求的地方也可以做一些DIY了,另外,有时仅仅是为了确认一下自己的想法是正确的,会修改Linux内核代码,加入一些逻辑…

就这样,五年过去了,一步一步走到现在,我的观点就是有动力什么都是可以学会的,动力的源泉在哪儿?我觉得是兴趣和好奇心,以及一点点想象力。

CSDN:你一开始是学Java的,至于C语言是你后来自学的,能够介绍你的学习编程之路?

王然:其实也谈不上什么“学习编程之路”,基本就是我前面说的那些,兴趣加好奇,然后不要懒惰,想到什么点子就动手拭一下。 个人觉得会编程的人是最幸福的,编程和其他的任何工作之间的最大区别在于编程允许你不断试错,几乎不受任何资源的影响。 试想一个木工,想做一个凳子,他能不断试错吗?木料毕竟有限的。

至于从Java到C,个人一直不觉得具体的编程语言之间的区别有多重要,重要的是你要用它完成的工作,语言,仅仅是一个工具而已。语言的背后,理清自己的思路和逻辑更重要。

CSDN:你在博客中讲述曾经自己在学习程序语言时称,“一天500行代码根本不算多,坚持下去就会成功”除此之外,你在学习这些程序语言方面还有什么心得和经验可分享?

王然:还是那个观点,我学习编程以及写代码的动力就是我想证实一些事情或者想DIY一些东西。

举一个简单的例子,你觉得现在的Linux对NAT的实现不合理,那么总不能只破不立,你自已除了要知道它哪里不合理之外,还有提出一个合理的方案,光有理论不行,自己得实现它才能证明它是合理的,起码比现有的实现合理,这么一折腾,加上调试,调优,一天甚至几天就过去了,代码量,不止百行记吧。

CSDN:一个成功的男人背后总有一个默默为其付出的女人,在高中你们就已相识,后来你大学毕业,又陪你现在的妻子到他乡读研了两年,而她也懂Java和Linux等,能否谈谈她在你前行的路上所带来的影响?

王然:记得一件事,大学快毕业时,我在学校对面的书店买了一个汇编语言的书,她说我什么都买什么都懂一点什么都不精通,事实上,为了驳倒她这个我认为是谬论的观点,我决定做一个起码在两个以上的领域都不是菜鸟的人。曾经给她讲那些名人的事迹,几乎都是全才,然而语言是苍白的,你得自己做点什么,于是我除了网络以及编程之外,还学习了很多别的,虽然最终也没能学到什么程度,但毕竟做过了,做不好也不会遗憾,大不了等我再也学不动的时候,告诉老婆,你赢了,你的观点是对的…。想想都学会什么呢?好像包括钓鱼、烹饪之类的吧,呵呵…

CSDN:你的CSDN博客从09年初截止到今天,已经有了1073篇博客,粗略的算了下,平均每周发表四篇博文,你是如何坚持下来的?

王然:以前小的时候,我就有写日记的习惯,家里满满几大箱子呢。现如今有互联网,岂不更方便?再也不用买日记本还铅笔了,也不用找地方放那些本子了。

以前小的时候,我都会随身带一个本子和笔,(现在我也时常带着笔),一有什么想法,不管多么乱七八糟,我都会先记下来,然后晚上整理出一个思路,小时候就写本子上了,现在就是写博客。想法总是转瞬即逝的,我希望能把它们捕捉下来,没准哪天用得着。

写博客和写日记不同,博客是分享性的,日记是隐私性的。有想法希望分享给大家是因为我的想法也来自于别人的分享。

钟情Linux内核之美

CSDN:在大学毕业工作以后就几乎放弃Java 而专攻C了,接着了解到了Linux 内核,请问你为什么放弃了Java?而Linux 内核吸引你的地方是什么?

王然:Java是一门语言,一个工具,而Linux内核则是一个完整的体系,包含了很多思想在里面。至于说“几乎放弃了Java”,我想那是 那篇文章措辞不准确,作为一个工具,只要使得顺手,拿起来用就是了,Java也挺好用的,有时候写点小工具还是挺方便的。

要说Linux内核吸引我的地方,那太多了,也不是一两句话能说清的,我要说Linux内核里有随时可以拿来用的算法,它就是一个算法库,那太具体了,我要说Linux内核里生活,有点不知所云,要是说Linux内核里有拯救,这太玄乎了,用一句话说吧:道可道,非常道…

CSDN:请问你曾在2010年在博客中称,选择Linux 来进行工作,经过了几年的实战后,能否总结谈下自己的心得和体会?为何不考虑作为PC个人电脑比较流行Windows呢?

王然:说实话,我对Linux的掌握程度也不是所谓的一流水平,平时会遇到很多的问题。Linux吸引我的地方在于,它给你尝试的空间非常大,你可以定制和自己需求完全契合的系统,可以做任何好玩的事。

至于我为何不喜欢Windows,是因为我不喜欢比尔这个人,有点主观了…更深层次的原因是,当你排开架式想在Windows上做点DIY的时候,总是有那么几个拦路虎挡着。我指的是是工作和学习方面,平时在家里看个电影,聊个天什么的,使用的还是Windows,不过我用的是Windows XP,至今没有换Win7,Win8…个人觉得这是自己的怀旧情结使然。

CSDN:我就不拐弯抹角了,以你的工作经历和对Linux 的研究,为什么 Linux 桌面发展二十多年仍然无法进入主流市场?为什么选择太多会阻碍 Linux 桌面成熟进而进入主流市场?

王然:记得一本讲操作系统的书上说过,操作系统位于机器和人之间连线的某一个点上,它是离机器近一些还是离人近一些决定了它的市场前景。我个人认为 Linux并没有站在普通用户的角度形成一个统一的体系,它只是针对少部分人的,而这少部分人又是排他的,比如用VIM/Emacs编码的人会鄙视用IDE的 ,说白了就是用的人太少,这些人的数量趋向于更少,但是趋向于精英化,要知道想占据市场可不能搞精兵主义。Linux和Windows之间的对比有点像魏国和秦国的军事力量的对比,唉又扯到历史了…

CSDN:为什么 Linux 平台 / 开源社区没有形成 MS Office / Apple Pro Tools 这样的杀手级应用?这个平台对应用开发有着怎样的限制?

王然:关于这一点,即Linux没有杀手级应用,我还是倾向于非技术因素,实际上在技术角度,Linux上的Office好用的也不止一种,关键是除非你永远不用其它系统,否则就要考虑互操作问题。所谓的杀手级应用不是开发者封的,而是用户封的,接下来问题自然转化为为何Linux应用的用户少,为什么呢?不是一两句能说清的,但是市场宣传,营销策略,版权策略,钱砸得多少等因素一定起了不少的作用,对于Linux而言,这些并不是核心,甚至开发者社区对这些不屑一顾, 你能指望一群在黑夜敲代码的geek去关心那些穿西服的家伙关心的事情吗?

说起Apple,正好它可以印证,起码在某方面印证我上述的观点。不知你有没有注意到,自2010以来,身边使用Mac电脑的人越来越多,自然而然的,Apple用户就多了起来,用户多了,也就有了杀手级应用,为什么用户突然就多了呢?肯定和iPhone的发布,乔布斯的回归,乔布斯的去世,Apple零售店在世界范围内大量铺开这些有关。至于说技术方面,UNIX?Mac OS X使用了UNIX核心?这种事不是那些所谓的“大量用户”中的一员所关心的,更多的用户只关注产品本身而不是内在实现技术,因此,Apple只说“可以存储1000首音乐”,而不说“拥有4G”的内存…

用户对杀手级应用封神之后,接下来就是技术因素,你能不能用该杀手级应用快速占领其它平台是关键,比如MS开发了Mac版的Office,这样即便你使用Apple的系统,你的应用依然是MS的, 这就是这个时代,应用比系统更重要的时代。 首先要占据用户群,其次再谈高深的技术,Linux缺乏的正是这一点。

CSDN:SO,以你这么多年来的学习和工作经历,你认为最稳定的 Linux 桌面是哪个?新手应该如何学习使用桌面 Linux 发行版?

王然:在我们平时的工作中,都是SSH登录开发机的,至于Linux桌面,几乎没有用过。为什么不用呢?原因你也知道,太难用了,控件不合理,操作不流畅,还是没有Windows好用。喜欢Linux是喜欢它在我工作和学习中给我带来的那种可以任意折腾得自由度,我平时也不搞UI,所以也就没有折腾过Linux桌面。

对于新手而言,选一个发行版还是重要的,先熟悉乐Linux的一些基本概念,才能定制自己的系统。

CSDN:从世界的角度来说,客观的说(排除国内很多用户在接触操作系统的时候,第一个接触的是Windows等原因),Windows和Linux在学习上的难度有高低之分吗?

王然:我觉得除了个人感情因素,区别不大。不管是Windows还是Linux,提供的都是相同的服务,客观地说,难度相同,但是学习过程是不可能客观的。你喜欢哪一个,你就会觉得那一个简单些。再者说了,理解的越深,感情因素的作用越强烈,到了RMS那个级别,都可以分出派别了,并且尽全力捍卫自己的派别。

0
0
  • CSDN官方微信
  • 扫描二维码,向CSDN吐槽
  • 微信号:CSDNnews
程序员移动端订阅下载

微博关注

相关热门文章