歡迎您光臨本站 註冊首頁

專訪王然:與歷史共舞的Linux程序員

←手機掃碼閱讀     火星人 @ 2014-03-21 , reply:0

來源:CSDN

兩年制大專,主修網路配置與維護,在努力鑽研網路技術的過程中慢慢愛上了編程,後放棄Java 而專攻C,最終因鍾情Linux 內核之美而娶了它。社區之星第42期帶你感受與歷史共舞的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博客: 請點擊進入

[火星人 ] 專訪王然:與歷史共舞的Linux程序員已經有221次圍觀

http://coctec.com/news/soft/show-post-74964.html