1. 程式人生 > >【白喬原創】寫二十年的程式碼是一種什麼樣的體驗?

【白喬原創】寫二十年的程式碼是一種什麼樣的體驗?

原文發表於知乎,http://www.zhihu.com/question/35100740/answer/62354943

70後老人,來自皖南山區純的農村娃,大學之後才有的程式設計經歷
受前面一個兄弟的啟發,截點圖說說自己的這段歷程,後面有時間再補充文字:)

<<<<<<<<<已接受大學同學的建議,加上了寫作的經歷>>>>>>>>

1995年第一次接觸到計算機程式設計,機械製造專業當然是FORTRAN了~~~依稀還記得第一次上課前天晚上對床對著一張鍵盤圖狂練指法的樣子。。。

講解FORTRAN的是一個香氣襲人的美女老師(晚上男生宿舍的話題常常是她),但FORTRAN這門課程確實噁心了我。。。如果要問那個時候的體驗恐怕也就是“枯燥”“心存恐懼”了吧?想想“預設”“回車”“控制檯”這些陌生的術語,能不望而生畏才怪呢!那個時候每次上機之前,都會先在作業本上寫好程式碼,然後帶著5寸軟盤或者3寸軟盤上機房。


現在這種軟盤早已絕跡了,上次還見知乎上有人問Windows裡的碟符為什麼從C:而不是從A:開始,這提問的人肯定是80後了。。。

上機房的時候必須先停下來穿鞋套,機房裡最初是一些286機器,後來有了一些386,
每每想起機房,都是白色的燈光、白色的桌面、軟軟的鍵盤,以及那堆機器特有的氣味。。。


對了,editor.exe是那時候最帥的編輯器了(此前一直用的一個ed.com程式):

後來,我開始迷上了QBASIC,它可以畫圖,這是我感興趣的原因。另一個不經意的時間,畫法幾何老師辦了一期AutoCAD與C語言輔導班,抱著對C語言的神往,我報名了,並從此不可收拾的喜歡上了C。興趣是最大的老師,我要是一頭騾子,前面掛著胡蘿蔔,就算揹負著再重的貨物,我也願意一往無前。
C語言真的是太棒了,可以檢測到press any key,還可以settextcolor,甚至還可以initgraph哦~~~

我對互動型的東西比較感興趣,一開始模仿各種書籍上的程式碼,嘗試著實現文字編輯器的一些功能(選單、編輯、存取、游標),再後來直接跪拜在圖形程式設計,熟悉了滑鼠程式設計、中文程式設計、定時器程式設計。

能體會到在DOS的窗口裡出現滑鼠箭頭游標的欣喜麼??
能體會到在DOS的窗口裡出現大中華的漢字的欣喜麼??
能體會到在DOS的窗口裡拖曳十字架畫圖的欣喜麼(沒錯!模仿的AutoCAD,因為我是機械專業嘛)??



那個時候,我已經是系計算機程式設計大賽的一名積極分子,有一次獲准用系辦公室的一臺386(用來列印的)除錯程式,當天晚上我直接拉上同學Y,一起程式設計弄了個通宵。。。


1997年接觸到面向物件程式設計,當時給自己定了一個任務,就是把原來實現的那一堆GUI元件,封裝成自己的Window、Text、Menu。。。也因此熟悉了OOP和Borland C++:

1997年那個暑假應該是我連續上機時間最長的時候,這都歸功於Y同學買了一臺486的電腦,當時Y同學和C同學一起在學校外面租了個房子(我沒出去住哦!!我只是因為和Y關係很鐵,所以經常去用他的電腦)。

然後大家輪流用電腦,Y用電腦看片,接下來我程式設計,然後是C同學用電腦玩遊戲。注意這個順序“Y同學——我——C同學”,由於C同學經常排在我後面,所以從不熱愛學習的他後來都熟悉了Borland C++的修改狀態的標誌(好像是個類似於*的符號),一旦那個標誌消失了,他就覺得我已經儲存了,可以輪到他玩遊戲了。。。

值得一提的是,我寫的那一坨GUI程式碼,後來委託開電腦房的Y同學給我打印出來了,留著自己欣賞。Y同學當時特意給那一坨加了一頁封面,打上了一行標題:FakeWindows!

至於被模仿的物件,那自然是DOS下的Windows 3.1了:


1998年學習了微機原理,寫了一些彙編,現在都忘光了~~~

然後畢業設計用到了foxpro,然後外調我的C程式:

1999年,已經上了研究生,開始用上了vc5.0,後來一直用vc以及mfc很多年:

2000 開始接觸web程式設計,開始是寫html,後來關注一些動態的技術,除了vbscript和flash,後來我發現了asp以及interdev。為了快速掌握asp,我為自己又定了一個任務,為大學班級做了一個同學錄,甚至還做了一個聊天室。

那時候有很多免費的伺服器空間,但是也不穩定,好好的沒準哪天就不提供服務了。後來我直接將同學通訊錄放在大學母校的伺服器上,一直放了好多年~~~

2001年參加工作,開始接觸到java和jsp,那個時候沒有成形的MVC框架,所以很多類似框架的東東都是自己擼:
那個時候javascript控制元件很少,一般自己擼個樹形控制元件,就很開心了,然後各個專案裡都搶著用,滿足感倍增!

剛參加工作的那幾年確實很開心,沒事就逛逛水木BBS、一塌糊塗、CSDN。在水木上也找到一些好碼友和mm ^_^


期間幫好友們做過同鄉會網站、蛋糕網站、電子元器件網站、採編髮網站,ASP/JSP哪個順手用哪個!

2002年女朋友畢業了,我正式結束了一個人擼程式碼的時代,每個週末年輕的我們總是流竄在各大購物商場和小商品市場。。。GF負責挑東西買東西,我負責提包陪逛,那個時候的我,我常常說是“行屍走肉”,因為我腦子裡經常在想著那堆程式碼、那些網頁、新的idea。。。等晚上一回到我們的那個溫馨小家,我馬上繼續將白天腦子裡面的東西序列化成程式碼。。。


2005年左右,發現java也有IDE了!!!

2005-2010中間的5年,以做專案為主。基本是Java Web包打天下,自己擼過MVC、DBCP、ORM以及RPC框架,但都不怎麼深入,讓小夥伴們順利用上、少投訴就OK了。後來知道了Spring、jQuery、apache等開源專案,就基本上把那堆輪子扔掉了。。。

2014年搞spark轉道scala:

我想申明的是,我是一個感性的程式設計師,因此總是難免有點念舊,經常想起DOS時代的:

防毒我們用KV:
更多的是這個:

依稀記得UCDOS:

老求的WPS(我不會告訴你我知道萬能密碼是^QIUBOJUN)

當然還有《仙劍》:

C&C:


同志們,我想告訴你們,最初我是在電視機上接著操縱桿玩的,你們信麼?真的是哦~~~~

以及98年左右的OICQ:


嗨!看帖的那位,說你呢!見到上古時期就著粗畫素看H照片的前輩,咋能不點贊呢?!

++++++++++++++++++++++++++++++++++++++++++++
Y同學受邀看到我前面寫的,說我就知道講故事,沒提這十幾年來是個什麼體驗。那好吧,我表達一下近二十年程式設計經歷之後的體驗,各位看官記得鼓掌(點贊):

其一呢,現在總感覺某種程式語言沒那麼重要,把功能實現了更重要;程式設計也沒那麼重要了,事情做成了更重要。很多小白總是吵著哪門語言好,這個確實很奶義務~~~要改!拿起YACC、Antlr,咱自己發明一門語言好不好?再不濟,咱們寫個XML編碼的語言好不好?總之,感覺興奮多了,一切就那麼回事了~~

第二呢,覺得程式設計本身確確實實給我帶來了很大的樂趣(反之,如果你覺得程式設計很無聊,建議就別幹這行了)。我總結了一下,程式設計為什麼會給我帶來快樂呢?一在於其創造性,編個程式就像構建一個虛擬世界,有點小孩子搭積木的意思,和寫作一樣,好玩;二在於回報及時,有個新想法,編個程式就看到結果了,能哄妹子,還能賺錢,這點有點像嗑瓜子,嗑了就吃到了(沒人全部嗑完了再一起吃吧?),很開心,所以會停不下來。。。

第三呢,覺得自己其實挺笨的。原來覺得自己很聰明,班級裡程式設計我玩得最好,後來發現其實都是自己熬夜刻苦練出經驗值來的,和天賦無關。。。坐著那練碼,打印出來看著碼(自我欣賞),陪老婆逛街還是腦子裡練著碼,到頭來寫碼也不夠快,年紀大了,記性不如從前了,連import都靠IDE自動補齊了,往往越簡單的功能寫得越慢,當然了,寫大程式,可能才有點優勢;

第四,寫碼之外的世界更精彩。回顧十幾年的生活,自己常以工作為重心,而現在回過頭來發現收穫最大的、最穩定的卻是家庭,是老婆孩子;其次的收穫是朋友,來自於一堆不寫碼的人。

朋友們估計也注意到了,我在上面不止一次提到Y同學,每個人一生中都有幾個最好的朋友,我大學階段的摯友是Y同學。在我很多的作品(軟體、稿件、圖書)中,我都提到了他。他是一個比爾蓋茨式的人物,之所以這麼說,是因為他酷愛電腦,並且中途輟學,一時傳為佳話。不同的是結局,比爾發財了,他沒有。當時在班上,我是追求上進的優等生,他是常常缺課掛考的混混,但我們常常在一起討論理想,包括我不懂的無線電,包括他不懂的C語言,以及比爾和艾倫。大二的時候,來自蘇北農村的他花了1萬元錢買了臺486,這臺電腦先後陪伴了我的QBASIC、C和C++,當然也包括西木頭的《C & C》和大宇的《仙劍》。楊同學是個愛咬文嚼字的人,也是個多情的人。我們那時候很少想到如何去追女生,但是對《仙劍》的愛情演繹能夠評論得頭頭是道。98年畢業的時候,楊同學一次去南京,給我帶回來一本老外寫的3D遊戲設計,其中講解了一些3D原理以及程式設計要點,可惜我並沒有深入的看下去。

這裡也給年輕人提個醒,要做熱愛生活的人,該找妹子找妹子,該喝酒的喝酒,該耍流氓耍流氓,不要一直泡在實驗室。那樣會得痔瘡的!!!

第五條,深深感到計算機科班出身還是很重要的我不是科班出身的,按專業來說我應該現在是個八級鉗工什麼的,但我十幾年前選擇了計算機!程式設計看起來很容易入門,很容易得到滿足,但是很多基礎知識前面沒學,後面遲早得補上。隨著程式設計的深入,就需要了解到硬碟IO比記憶體慢的道理,就需要了解SQL解析和執行的流程,就需要了解外部排序的原理,就需要了解分散式協調的理論。你開始越想躲避的,那些知識點就會像怪獸一樣越長越大,某一天冷不丁擋在你前面,好吧,咬緊牙關把它幹掉再繼續吧!

先寫這麼多吧!後面再補~~~快十點了,腦子開始犯困了。。。

++++++++++++++++++++++++++++++++

大學同學看到我的帖子,說你怎麼忘了寫當時寫稿子的事?
是啊,我怎麼能忘記了寫稿子的事?

再重申一遍了,我是感性的程式設計師,因此我喜歡舞文弄墨,寫了二十年的碼,也差不多寫了二十多年的文字,以下也帶著各位看官回憶回憶^_^(贊呢?)

上個世紀末,寫作的出處主要就是《電腦愛好者》了。第一篇是關於DOS中斷的東東,發表於97年,網上居然還能找到PDF:

後來連載多期的是98年的《漢字的處理技術》,那會大家正在鬧畢業,大家有的錢都花光了,就我很富裕,一期稿費800元,4期拿到了3200元,然後經常拉著幾個要好的哥們搓館子,還借出去了1000元錢。。。
後來一發不可收拾,將掌握的滑鼠處理技術轉換成了人民幣(1998年):

98年下半年,我開始了研究生階段,那時候就有了寫C++教程的想法,由於那時候普遍都是C語言,因此我的連載系列命名為《輕輕鬆鬆C to C++》,注意還是往《電腦愛好者》投的稿(1999年):

我也不知道,《電腦愛好者》為何總是將我的文章放在“步步高”這個欄目?是因為我寫的東西很有點步步高的意思?呵呵。。。不過,對於學生時代的我,稿費還算是比較地道的!

研究生畢業之後,正式進入工作,《電腦愛好者》的Z先生和我成為了QQ好友,後來我又寫了幾篇稿子,大抵是關於VC++ GUI方面的。再後來由於和水木清華BBS的幾個網友一起辦了vcer.net網站,我就直接把那些文章又發表成網上教程,在網上流傳了一段時間。上次我在百度裡搜尋,發現還有一些網頁屍體留存在那裡的:
恩,再靠後,就是和小編接上頭了,開始寫書。自己的程式設計水平其實也不高,但按捺不住要表達自己思想的衝動。最後寫的東西里面,除了一些程式碼,經驗雜談的也很多。。。

2007年寫了《標準C++開發入門與程式設計實踐》,大抵是覺得網上用VC6.0的程式設計師太多了,他們整天拿著一些過時的語法折騰來折騰去,對boost、STL卻毫不知情,實在是被老教材害得夠慘。。。

翻開蜥蜴的封面,裡面還是能找到我感性的文字的:

2009年結合VC,寫了本《把脈VC++》,初衷也很簡單,就是覺得一堆VC程式設計師看了一本又一本的程式設計祕籍,卻依然不懂怎麼開始一個專案。。。

在這本書裡,感性的我索性先給出了一張VC程式設計地圖:

以上兩本書的發行量很小,因此早就沒有庫存了,也因此證明我發這篇帖子更多的是情懷驅動(感性碼農嘛)而非推銷驅動!請那些自認為自己的書寫得很好的、髙譚浩強一個世紀的牛人(這樣的人,據我所知,知乎上還是有的)保持風度,不喜勿噴!

最後show一下20年程式設計師的書架的一角:

當然,現在更多的書架被育兒經佔領了~~~~

最後比較遺憾的是,Java Web從2001年一直做到現在,卻一直沒能寫出一本有意思的書來,也許和自己的腦子也不夠靈光了有關吧~~~~下一本是啥題材的?大資料方面的?我不知道。

知乎原帖,點選此處點贊:)
同學。。。點贊