那些學到廢寢忘食的技術,現在還有多少有用的?

昨晚做了一個夢,我學過的那些語言和技術都來找我了,爭吵不休。

C語言:老劉你肯定記得我,我是你的“初戀”語言,在大學裏用指針把你蹂躪得痛不欲生。

我:當然,我自以爲學會了,可是工作後看到林銳寫的《高質量 C++/C 編程指南 》,裏邊有一套試題,做過以後才知道我對指針的理解還是一塌糊塗。

C語言:哈哈,你那時候還不知道我的主要用途是系統級編程,像操作系統,數據庫,虛擬機,編譯器,Web服務器都是用C語言寫的,總是覺得只能在命令行窗口折騰呢。

我:可不是,所以我“急功近利”地學了幾個能快速創建GUI應用的語言,也是爲了做點兒項目賺外快,包括VB、Visual FoxPro,還有PowerBuilder,在上面可是花了不少精力, 現在呢, 除了VB變成了VB.NET, 另外兩個早已不見蹤影,可惜啊。

Linux :還有我,你那時候學了Linux的基本操作和Shell編程,我一直很納悶,你怎麼不把vi 給好好練練呢,你看看你現在用起來還是那麼笨拙,一點兒都不絲滑流暢。

我:唉,我那時候熱愛GUI啊,再說了vi的命令太變態了。

C語言:現在你明白了吧, 沒有GUI的東西生命力更長久啊!

我:是啊,時間證明了一切,C和Linux太重要,我後來才意識到你們的好處,能讓我對系統級的東西有更深的理解,對學習OS,網絡編程都有極大的幫助。《深入理解計算機系統》這本神書,通篇用C和彙編來描述, 操作系統的源碼,Ngnix源碼, Redis源碼, 都是C語言, 幾乎都跑着Linux之上。

C++ :老劉,難道我就不重要了?我剛看了下你放在雜物間最下層的C++書,有侯捷的《深入淺出MFC》,潘愛民的《COM原理與應用》, 《Inside MFC》,《COM技術內幕》,《COM本質論》。還有C++的經典書《C++ Primer》,《深入探索C++對象模型》,《Effective C++》等, 你有10年沒有搭理過他們了吧,真是讓人心痛啊。

我:抱歉抱歉,C++老大,我確實是學不會,你看看這幅漫畫就會理解我的心情了。

在這裏插入圖片描述

《21天自學C++》

數據結構:哈哈哈,太形象了,老劉,我還記得你當時爲了考高程,用C語言把書上的習題都做了一遍,感覺如何啊?

我:非常酸爽!估計和現在大家刷LeetCode的感覺差不多吧!不過真是受益匪淺啊,雖然工作中設計數據結構的機會極少,但是確實培養了邏輯思維能力,必須得感謝你啊。

ASP :老劉老劉,可別忘了我, 我是帶着你入門做動態網頁的, 你還記得用我做了哪些網站不?

我:當然記得,我那時候抱微軟的大腿啊!用ASP來寫動態的Web界面,用COM組件來實現業務邏輯,這事兒我幹過不少,我花了很多時間學習COM,不信你看看雜物間最下層的書。唉,當時的ASP連MVC都沒有,頁面之間的跳轉鏈接都寫在頁面中,幸虧業務不復雜,要不然這意大利麪條式的代碼怎麼讀啊!

ASP:那都是過去時了,微軟推出.NET戰略以後,我們現在都升級爲.NET了,MVC不在話下,可是你怎麼狠心拋棄了我們,跑着向Java大獻殷勤去了?

我:這個…

Java :這有什麼奇怪的,向我獻殷勤的又不止老劉一個,開放的Java是大勢所趨,封閉的.NET是比不上的。我那時候多火啊,Applet, JSP, Servlet , Tomcat, Struts,老劉一直悶着頭學,對了還有人氣爆棚的EJB, 老劉你說說,你花了多少時間在EJB上?

我:唉,每個晚上的時間都用來學習了,Session Bean , Entity Bean , JBoss, WebLogic… 《精通EJB》,現在回頭看,真是浪費時間啊,這些東西也就Servlet和Tomcat還活着,其他的幾乎沒人用了!

Java:話不能這麼說,你處於那個時代,就得學習那個時代的東西,你不學,連工作都找不到。

Ruby : 是啊是啊,我火爆那幾年,你不是也抱着兩本書狂啃嗎?《Programming Ruby》,《Agile Web Development with Rails》, 你還用RoR開發過小項目呢,現在怎麼不搭理我了?

我:這就冤枉我了,Ruby的語法我可是非常喜歡啊,我現在電腦裏還安裝着Ruby呢!

Ruby: 騙誰呢?!你不光安裝着Ruby ,還安裝着Java, Python,Rust, 還有ErLang這種沒人用的語言,我看你昨天還用Python寫了個小程序,幫你老婆處理Excel , 你怎麼不用我來寫呢?

我:這個…

Java : 還是我Java生態更加豐富,老劉你學了Struts,Hibernate以後,是不是看了一本叫做《J2EE Development without EJB》,開始轉向Spring? 還研究過Spring早期的源碼?

我:沒錯沒錯,我記得很清楚,大熱天的,沒有空調,我滿頭大汗,一行行地調試Spring源碼,在筆記本上畫圖記錄,真是行行皆辛苦啊 !Spring 發展了這麼多年,一直挺立在時代潮頭,對Spring的投資沒有白費,很值!

模式:讓開讓開,什麼COM, EJB, Ruby , JBoss, 你們太容易過時了 ! 信模式者得永生 !老劉你說說你花了多少時間在模式上?

我:嗯,還真不少,四人幫的《設計模式》讀了一遍,感覺迷迷糊糊,只記住了面向接口編程而不是面向實現編程, 發現變化並且封裝變化。還看了一本《Java與模式》,只記住了擊鼓傳花的責任鏈。真正對設計模式有深刻認識,還是閱讀了Jive的論壇源碼(裏邊簡直是設計模式大寶庫)之後,開始理解模式的妙處,然後正好在一個類似的項目中使用,這纔有所體會。

模式:《企業應用架構模式》,《Head First設計模式》,《重構與模式》你難道忘了嗎?

我:怎麼可能忘記?還有《敏捷軟件開發:原則,模式與實踐》這都是我當年的最愛啊,不過時間長了我就發現,這些都是面向對象的設計,本質上對程序員的要求是“抽象的能力”, 這是軟件開發的內功啊,掌握了它才能無招勝有招啊。現在很多人都去追求高併發、大流量的系統設計和開發,但實際上,大部分時間還是在做面向業務的開發,OOD和抽象能力是非常重要的。

模式:沒錯,高併發、大流量的系統有時候還有章可循,但是把業務需求做出良好的抽象,就太考驗人了。

分佈式系統:這麼說就是太瞧不起我們分佈式系統了,老劉雖然主要做企業應用開發,但是花在我們身上的時間一點也不少啊,什麼負載均衡,數據複製,BASE,CAP,數據分片… 哪一項都很厲害啊!

我:同意,這些都是內功啊!

操作系統:不不不,老劉,你不能這麼說,軟件開發的內功是我們這些計算機基礎知識啊,我,計算機網絡,數據庫,編譯原理,組成原理,上大學的時候你沒好好學,畢業了纔去惡補,你想想你在我們身上投入了多少時間?

我:哈哈,我的老底都被你拆穿了,沒錯,萬丈高樓平地起,你們幾位是基石啊。畢業後看了不少書,像《深入理解計算機系統》,《現代操作系統》,《操作系統:設計與實現》,《計算機網絡》,《數據庫系統實現》,《編譯原理》,說實話,如果不和實踐結合,乾巴巴的理論學起來挺無趣的,所以我要寫碼農翻身公衆號,用有趣的故事講解計算機基礎知識。

操作系統:不過現在娛樂化嚴重,碎片化嚴重,真正想沉下心來看大部頭,學習基礎的人少了。

我:是啊,除非他切實感受到了基礎知識的重要性。我現在很後悔那些浪費的大學時光, 如果再讓我回到大學時代,我一定通過實踐去學習,自己去折騰個小的OS,簡單的數據庫,簡單的語言,Web服務器, 虛擬機。 我要在自己的操作系統上,運行自己的虛擬機,跑着自己的語言…

想到這裏,我不由地笑醒了…

回想一下自己十多年花大精力學習過的技術,很多都已經隨着時代的發展煙消雲散了,剩下的都是長久不變的東西,主要包括:

C語言

Linux

OOD和抽象

網絡和Web編程基礎

分佈式的基礎知識

計算機基礎知識

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章