有极速快乐十分吗|极速快乐十分走势图|

把代碼寫好是一件值得你一生追求的事

關于編程的胡扯
服務器君一共花費了167.907 ms進行了5次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

一年一度的高中畢業生填簡歷的日子即將就要到了,又有很多人問計算機專業的事情。其實我從心底里覺得,高考后才來問這個,已經完了一大半了。當然另一小半十分有前途的人可以在大學四年趕上來,不過估計他們還是要讀個研究生,才能把自己訓練成能用的碼農。

編程是一件很難的事情。當然我的意思跟那篇著名的《編程是一件很難的事情》不一樣。想把代碼寫好,本來就是一件非常困難的事情。我大三的時候訓練一個大一的老鄉,就光是C++,長達四年后她還搞不清楚模板元編程究竟是什么。而且還有C語言學會了轉C++會把壞習慣帶進來啦,C++的人轉做C#之后發現很多C++的好技巧到了C#都只會讓程序變得更慢啦,很多寫動態語言的人不理解類型的好處還在那里胡扯啦,還有C#和javascript明明放著大好的函數式風格不用,非要把代碼寫的超長(本來光是這樣沒什么問題的,只是有某些人不肯學習新知識)。可見,就算把自己訓練了好多年,最終進入了工作崗位,想把代碼寫好,也是一件非常困難的事情。

當然有些人說,如今只有產品做得好才能賺錢,代碼寫的好有個屁用。這只能是人各有志,有些人就不喜歡鉆研代碼,這本來也沒什么。但是這些人老是跳出來忽悠別人,也只會讓編程變得更難。只是幸好,我的單位并不會跟某些單位一樣說一些“把代碼寫得那么好有什么用,搞到我們還非得學東西才能看你的代碼,趕緊做點新feature啦”的這種話,我已經覺得很好了。

寫得好這個東西還是比較抽象。我認為其中一條就是代碼要好維護。我一直以為,只有代碼寫得好維護,好改,清晰易懂,這樣加新的功能才會容易,不出事情,順利發布軟件。后來我發現我錯了,騰訊不也是QQ一版一版的發嗎,原來加班也是一種方法,啊哈哈哈。如果在一個單位里面,不加班別人就會找你麻煩的話,我相信你也不會花心思把代碼寫好的,反正都要加班。

不過對于志向就是寫代碼的那一些人,最好還是不要受到這些外來信息的干擾。最近跟我們組里的一個test manager聊天,他是一個菲律賓人,說是從紙帶時代開始就寫代碼了(不過看起來好年輕……),工作的時候還覺得C語言是一個嶄新的語言。后來他跟我說,如果一個人有志向與,代碼一條路走到黑,最好就去學習一下怎么當architect。他說道,Architect的知識架構是由各種pattern組成的,然后就說了自己年輕的時候的很多故事來作證這個道理。然后還講了微軟的其中一個創始人到現在還堅持一線寫代碼的事情,不過沒告訴我是誰。

在這之前,剛好MSR的Daan Leijen因為來北京參加programming language相關的conference,就來我們這里參觀了一下。后來我看他做過GUI,做過parser combinator,發明實現過語言,就前去搭訕,結果發現他讀書的時候的導師竟然是Erik Meijer。按照他的話說,“then we are connected”,如果說成中文,就是有緣分吧。接著就跟他討論了一些parser combinator和類型系統之類的東西。我說我之前也搞過這些東西,最后還貢獻了一部分給公司,換了個組之后還開了講座什么的。他講到他讀書的時候,也是學校沒教自己自學的這些東西,后來周圍也沒什么人做,但是并沒有讓他喪失動力。然后就說了一句話讓我印象很深刻:“原來你也做這些東西啊,我應該可以看到為什么你要從產品組跳到MSRA來了。”他直到今天,頭發都基本上掉光了,還在那里繼續研究programming language的東西,還給了我幾篇論文。我覺得很好,人就該像他那樣。

有些時候,人就得有那個信念,才能把可行但是難度大的東西,也最終搞出來。我自己寫了11年的程序,其實并沒有接觸過十分廣泛的東西,因為很多時間都花在重寫我的一些idea上面了。譬如說編譯器就寫了五六個,GUI庫就寫了八遍,還有些雜七雜八的。不過從這個過程之中,可以明顯感覺到自己什么時候比以前更進一步。這種signal有很多,譬如說當你決定要添加一個比較復雜的功能,也可以迅速知道怎么做而不用動到架構啦;譬如說你覺得你的代碼越來越順眼啦;譬如說你因為架構不行決定重寫的時候,你發現前一個版本的代碼可以撿起來繼續用的部分越來越多啦。

寫到這里,我想起很多人都問過我,程序要怎么寫才能寫得好,或者說設計模式要怎么寫,之類的問題。如果把學習編程花費的精神代價做標準的話,捷徑是沒有的。但是如果僅僅把時間作為標準的話,捷徑顯然是有的。怎樣才能加速你學習的過程呢?答案就是,先寫再看書。對于像編譯原理這種略微高深的知識,總要自己寫過幾遍,吃了一些苦頭,才能知道為什么書里非要把算法那么設計結構那么安排。對于像設計模式這種需要大量經驗才可以領悟到的知識,如果你從來沒獨立寫過一個上萬行的程序,你覺得你能理解設計模式在講什么嗎?我覺得這種時候能做的也就是背下來,理解什么的都是扯淡。諸如此類,學習程序,如果要加速那個過程,肯定要花大量的時間寫代碼。當你把項目做得越大、越復雜、算法越扭曲、界面越華麗、尺寸已經大到你覺得不學習新的方法論就肯定會讓代碼失控的時候,這個時候你來看設計模式的書,保證是每看到一個模式都覺得人家說到你心坎里去了。那你不僅可以迅速理解,而且以后還可以不由自主的想起來使用它。

當然,如果你不是一個喜歡寫代碼的人,那這個方法肯定沒有用,因為中途放棄什么的太多了。這種時候,只能怪你沒緣分,設計模式不渡你了。如果你最后撐下來了,雖然你自己覺得你也花費了相當的努力,但是別人反正是看不到你的努力的,就會開始覺得你有捷徑了。為什么呢?因為效率高啊,時間花得短啊。

光寫代碼也是沒用的。同人于野一篇講成年人還能不能進步的博客說得很好,知識分為舒適區,學習區和恐慌區。舒適區的意思就是,你很容易就可以做完。學習區的意思就是,你需要花費大量的智力才可以做完。恐慌區的意思就是,你根本不知道如何下手。當你在為了練習編寫大量的代碼的時候,你要盡量把題目都安排在學習區這里,這樣才能讓你進步快的同時,還不會被問題打倒,可以繼續積累成就感了。

學生做這個最方便了,工作之后,如果剛好遇上個黑心公司要你天天加班,你反而沒時間做學習區的內容了,公司給你的肯定是舒適區的苦力活。

說到這里,如果你還有時間練習的話,千萬不要去想:“我每一個程序都要跨平臺”,“我只做這個語言”等等。反正將來,語言你都要會,平臺的差異你都要知道,為什么要斷送自己了解這些東西的機會呢?你真的以為不知道垃圾收集的原理,和一些底層的可以通過C++的練習而得到的的操作,你真的可以在某些關鍵時刻操縱好C#嗎?當然有些人會覺得,我估計一輩子不會遇到這些問題的,所以我還是不管他了。人各有志嘛,C#不渡你,也是你自己的事情。如果你真的可以一輩子都在一個平臺上用一種語言做同一種程序做到退休,那真是幸福的生活啊。

扯了那么多,也扯個小結:

  1. 學計算機要趁早,計算機要從娃娃抓起。
  2. 把代碼寫好是一件非常困難的事情。
  3. 不喜歡鉆研代碼的人不要跳出來忽悠別人。
  4. 代碼寫得好其中一條就是代碼要好維護。
  5. 活到老,寫到老,“把代碼寫好”可以作為一生的追求。
  6. 寫出好代碼,需要有信念;碼寫百遍,其義自見。
  7. 寫出好代碼,沒有捷徑;寫萬行碼,行萬里路。
  8. 光寫代碼是沒用的,你需要花量大量的智力寫代碼。
  9. 寫代碼不要局限于某種語言,某個平臺。要做到“萬碼皆一碼,無碼勝有碼”。

本文地址:http://www.bavugt.tw/librarys/veda/detail/1973,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.bavugt.tw/librarys/veda/detail/1973

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《UNIX環境高級編程(第2版)》 史蒂文斯 (作者), 拉戈 (作者), 尤晉元 (譯者), 張亞英 (譯者), 戚正偉 (譯者)

《UNIX環境高級編程(第2版)》是被譽為UNIX編程“圣經”的Advanced Programming in the UNIX Environment一書的更新版。在本書第1版出版后的十幾年中,UNIX行業已經有了巨大的變化,特別是影響UNIX編程接口的有關標準變化很大。本書在保持了前一版的風格的基礎上,根據最新的標準對內容進行了修訂和增補,反映了最新的技術發展。書中除了介紹UNIX文件和目錄、標準I/O庫、系統數據文件和信息、進程環境、進程控制、進程關系、信號、線程、線程控制、守護進程、各種I/O、進程間通信、網絡IPC、偽終端等方面的內容,還在此基礎上介紹了多個應用示例,包括如何創建數據庫函數庫以及如何與網絡打印機通信等。

更多計算機寶庫...

有极速快乐十分吗
广西福彩21选5走势图 匠心智策 股票指数投资策略包括 360英超直播在线 宁夏11选五开奖结果组三 吉林省快三 体彩浙江11选5走 上海天天彩选4 98篮球nba录像 pk10开奖结果