文档章节

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

人生能绕几个圈
 人生能绕几个圈
发布于 2014/03/19 18:18
字数 5916
阅读 148
收藏 6
两年制大专,主修网络配置与维护,在努力钻研网络技术的过程中慢慢爱上了编程,后放弃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语言是你后来自学的,能够介绍你的学习编程之路?

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

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


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

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

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


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

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


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

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

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

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


钟情Linux内核之美


CSDN:在大学毕业工作以后就几乎放弃Java 而专攻C了,接着了解到了Linux 内核,请问你为什么放弃了Jave?而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那个级别,都可以分出派别了,并且尽全力捍卫自己的派别。


文艺的程序员青年——爱阅读历史、爱音乐、爱写诗


CSDN:能简单介绍你是如何爱上历史的吗?其中有什么特别的故事分享吗?

  王然:历史是客观的,但是写出来的历史却都是主观的,再也没有历史能把主观和客观结合得这个完美的了。

为什么喜欢历史,还是小时候爱好的延续,只是那个时候理解能力有限,现在可以为小时候积累的问题自己寻找答案了,比如“中国为何没有王子公主的浪漫故事”,“中国为何有城墙无城堡”,诸如此,问题都很简单,很多人觉得也挺傻,但是都是值得思考的,不是一两句话能解释清的。


CSDN:作为一名程序员的你,每天要投入到大量的精力到工作中,你又是如何安排自己一天的生活和保障自己阅读时间的?

  王然:我 住的地方一向离公司比较远,不管是以前租的房子还是现在自己的房子,这样就能被动的学习了。怎么说呢?如果就住在公司楼下,我肯定在上班前一刻钟才起床, 相信大家都一样,现在离得远,路上一个多小时,这就是学习的时间,一天就有三个小时读书学习的时间,这就是被动学习,另外我不太喜欢碎片化的东西,所以我 不会在路上玩iPad或者智能手机,我只读纸质的书,这样方便批注,做笔记,不是说不动笔墨不读书嘛。

  不过我现在不再将三个小时全部用 于阅读了,我会在下班回家的路上抽出半小时时间写备忘,用邮件或者iPhone的备忘录,然后存在Dropbox里面,渐渐的,我也上信息化高速公路了, 哈哈…虽然上了道,我还是很少将时间花在电子娱乐上,个人觉得,想娱乐,钓鱼,旅游,甚至聚餐都是不错的。


CSDN:你曾经玩过乐队、音响,唱歌也很专业,歌声也挺赞,好像你最喜欢的是摇滚吧?你现在如何看待当年深爱音乐的自己?如今的你对音乐有着怎样的一份心境?

  王然:呵 呵,有点自夸了,都是些陈年往事了,上中学时候以及刚进入大学的事情吧。那时基本听磁带,也属于叛逆期,加上90年代到2002左右的文化开放性,让人总 是有更多的东西可以玩,比如我就特别喜欢魔岩三杰,喜欢崔健,喜欢黑豹,他们那种不妥协的呐喊总能让人觉得激情澎湃,叛逆期的模仿就是自然而然的了…我始 终认为,内容最重要,而不是技巧,技巧只是表达内容的一种方式, 音乐能传达的精神不是几个很炫的和弦或者彪高音能诠释的,正如UNIX/Linux的精神不是高超的编程技巧能诠释一个道理。

 如今的摇滚完全变味了,如果说曾经的摇滚是精神的摇滚的话,现在的摇滚就是肉体的摇滚,人们看到自己的偶像时,互动的不再是自己的心,歌词也变成了倾诉 式的,携带了大量的假设和情感在里面,真正的摇滚应该陈诉式,陈述的是自己的内心,没有如果,没有假设,像流行歌曲里面那种类似“如果有一天,我们再见 面…”换成摇滚的语言就是“我见到了那个人,我不再有感觉…”。摇滚是把自己的心挖出来给人看,而不是让人猜自己的心,当然这只是我自己的观点哈。


CSDN:你是具有极强历史感的程序员,在阅读了大量文学作品的基础上,透露出的文艺气息是遮掩不了的,也看到你在博文中写了一些诗:《游戏》,在这方面,这方面对你写程序有什么特别的影响吗?

  王然:哈哈,这都是一些简单的心情坦言,对程序没什么影响,倒是可以折射出我真的不适合摇滚,我没有对真实面对的东西进行陈述,而是做了隐喻,呵呵。

附:

《游戏》
我沉沦于繁华的街市,
被路灯灼伤,
沥青化了,
脚下发烫;
我倒在路边的一颗小树下,
闻见了泥土的芳香,
再也没有站起来.....
风波一叶舟,岂能体验海的宁静!
执着浪子心,永远没有游戏的喜悦!


CSDN:2011年6也27日,你的宝贝女儿来到你的身边,你曾经发帖为遭到社会不公平对待的IT工作者正名,现在,你打算让她未来成为一名程序媛吗?

  王然:这个有点远了,呵呵。她适合做什么职业现在还完全看不出来,才两岁半…不过即便将来能看出来,我也完全尊重她自己的意愿。

 至于IT业界的一些不公现象,我想是各方面原因造成的,这些现象也不仅仅存在于IT界。也许是跟以就业为导向的教育体制有关吧。现如今各行各业的从业人 员特别是年轻人文化素质不高,承受能力差,生活质量差是不争的事实,这些需要靠社交,阅读,拓展等多方面活动来弥补,可是如今就业压力,住房压力等生活压 力如此大,谁会有时间搞那些职业外的事情啊,这实际上也是一种社会导向。


CSDN:人随着年岁的增长,在压力却越来越大,责任也越来越多,不管是工作还是生活,都会让人迷茫,你在遇到这样的情况是如何解决的?读历史、爱音乐和写诗对解决这一的问题是否有帮助呢?

  王然:不管发生多大的令人感觉不好的事,一定要找一件哪怕再小但是能让人高兴的事,比如自己种的花发芽了之类的。当然历史人物也能引导自己向其看齐,音乐旋律总是能让人心情变好,写诗就算了,我也不是什么诗人,除非不是真的挫折,不是真的迷茫,而是“为赋新词强说愁”的矫情…


人生要有感觉和激情


CSDN:在一个人追寻理想、追逐成功的道路上,你认为最需要的是什么?

  王然:感觉和激情。对待一件事情,先要有感觉,然后理想给感觉以方向,剩下的就是靠激情前进了。正如谈恋爱一样,你要对她有感觉——这就是感觉,然后再发誓一定要追到她——这就是理想,可是这还不够,剩下的就需要你的激情去尽自己的所有爱她,最终,她就是你的了,不是吗?


CSDN:你是什么时候接触CSDN的?它对你学习和工作都带来哪些影响?同时,对CSDN有什么建议?

 自2007年接触CSDN已经有六年多了,最初只是抱着向前辈学习的态度浏览学习,后来自己也就发表了一些,慢慢就把CSDN当成自己的日记本了,呵 呵。CSDN首页的内容非常不错,看得出你们的专业程度和敬业态度,内容都是很有质量的。普通的论坛,博客呢,门槛低,范围广,任何水平的人都可以找到自 己需要的东西,不管你的大牛还是菜鸟,很好。

  要说建议呢?开一个玩笑,你们下载频道的资源太贵了啊,好不容易攒起来的积分很快就用完了,建议给回答问题的人多些积分,同时下载频道的资源便宜点,攒分不容易,呵呵。


写在最后:


  很荣幸能在CSDN分享自己的生活轨迹与成长过程的点点滴滴,我从各位前辈哪里学到了很多东西,也希望我的这些轨迹会对大家所有帮助。另外,模式可以复制,风格却不能复制,希望大家以后可以继续在CSDN这个开放的平台上相互促进,求同存异。


若想获悉王然更多动态,请关注:

CSDN博客: 请点击进入

本文转载自:http://www.lupaworld.com/portal.php?mod=view&aid=236895&page=all

人生能绕几个圈
粉丝 45
博文 152
码字总数 6347
作品 0
昆明
程序员
私信 提问
王然的烦恼--她很精通linux啦

宝贝王然最近十分想搞嫁祸于人的恶作剧! 一台linux主机上建立了一个用户wangran,一共有两个人王然和王其知道用户wangran的密码pw,其中王其还知道root密码而王然不知道,为了安全起见,远程...

晨曦之光
2012/04/10
182
0
一口气文史系列-套装共11册.epub+mobi+azw3

简介 《一口气读懂欧洲史(英汉对照) (人文英语)》 文化共语言同飞,思想与阅读共舞。让我们的目光穿越时光、穿越语言,在原汁原味的英语阅读中品位人类文明共有的人文素质、人文素养、人文情...

jackmk
2018/05/30
0
0
东北亚开源合作务实推进 成为全球亮点

一年一度的东北亚开源软件推进论坛于 10月 19-20日在日本东京举行,中日韩三国有关部门的政府官员、企业的代表、社区的开源专家和有关人士等参加了本次会议。这是继 2004 年在北京召开首届东北...

红薯
2009/11/16
214
0
Linux之父访谈录:设计内核只为了好玩

“有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。唯一一个能同时做到这两 者的人,就是Linus Torvalds。”这是美国《时代》周刊对Linux之父Linus的评价。Lin...

红薯
2010/09/19
2.7K
19
如何让自己成长为 IT 项目管理者

在这个快节奏发展的时代,你需要用最有效的方式,学习最有用的知识。技但碎片化的信息那么多,如何选择呢?推荐几个程序员自我提升必备的公众号,快关注、使用起来吧! TGO鲲鹏会ID:tgo-kun...

bf02jgtrs00xktcx
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
9
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
5
0
【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。...

秉心说
昨天
12
0
重学计算机组成原理(十二) - 异常和中断

1 概览 完好的程序都满足以下特征 自动运行 我们的程序和指令都是一条条顺序执行,不需要通过键盘或者网络给这个程序任何输入 正常运行 没有遇到计算溢出之类的程序错误。 不过,现实的软件世...

JavaEdge
昨天
10
0
程序设计基础(C)第06讲例程

1summing.c /* summing.c -- 根据用户键入的整数求和 */#include <stdio.h>int main(void){ long num; long sum = 0L; /* 把sum 初始化为0 */ int status; p......

树人大学数字媒体吴凡
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部