標籤:

個人的努力在時代的進步面前不值一提

在刪一些舊文件時,突然想到了這個問題。順便黑一下Peter Norvig的 Teach Yourself Programming in Ten Years 。他這篇文章除了"Why is everyone in such a rush?"是對的,給的建議經不起時間的考驗。對於過去十年來說,最好的辦法實際上啥也不學等十年才是最划算的,尤其是對於十年之前的我來說。

十年之前爛尾的程序,在我現在看來,要麼就是完全不值得寫,要麼想寫只要有幾天時間就可以寫出來。很多十年前,完全不敢想像自己也能寫的程序,現在竟然已經寫過不少了。看上去好像取得了非常大的進步,可是仔細一想把現在的我直接扔到十年前,該爛尾的還是會爛尾,寫不出來的還是寫不出來。

這十年間

出現了Stack Overflow。以前隨便碰到個小問題都足以使一個程序爛尾了,特別是對於我這種業餘的來說,花幾天時間去解決一個小問題完全是不現實的。現在,絕大多數都只要從Stack Overflow上複製幾行代碼就好了。

git/hg之類的DVCS成為了主流,而在十年前,我想我從來就沒搞明白過CVS和SVN。我承認我是在學會git或者hg的基本操作之後才搞明白SVN的,那時已經沒幾個項目在用CVS了,也就無視了。寫程序而不用版本管理工具是完全無法想像的。

國外有很多不錯的課程對於只要買得起普通電腦的人來說,自學已經沒有任何障礙了。比如MIT 6.828,現在已經只需要用vanilla QEMU就可以了。而在之前,很多類似的課程用的都不是x86指令集,或者需要打過一些奇怪補丁的QEMU或者別的什麼(包括MIT 6.828)。更多的是直接讓你死在boot-loader上。

還有至少大家都聽說過Erlang了,當然絕大多數人都退縮了。而我並沒有。很多問題,用Erlang進行快速原型開發要容易多了,假如你退縮了,你就注意不到了,比如解析H264 bit stream,用Erlang比用C還容易不少。

國內寬頻也普及了。很多大學的各種開源鏡像都已經比較完善了。很容易就能用上各種Linux發行版提供的打包好的庫,而不是自己從不知道哪裡去找源代碼還不知道怎麼編譯。

所以,這十年里,我唯一有效的努力就是試著學了一點Erlang(因為令人吃驚的事實是,大部分人都做不到這一點),其他的進步都和自身努力無關,全是時代的進步帶給我的。


推薦閱讀:

C語言基礎:函數參數與返回值
現在學編程,晚么?
面向項目學習編程--之前的廢話
從零開始手敲次世代遊戲引擎(四十一)
如何精通C語言

TAG:編程 |