入行以来涉及的技术简史
http://antkillerfarm.github.io/
今年是我本科畢業的第10年。作為10年之前的菜鳥的我,現在雖不敢自稱高手,但老鳥總還是當的上的。目前碼農一個,馬仔若干,不知道10年之后,是否仍以碼農為業?
閑話休提,故事還是從頭說起。流水帳一筆,一一記來。
1.編程語言
1)LOGO
初二開始接觸計算機,這是我最早學習的編程語言。從若干年后,對UcbLogo的研究,應該說LOGO語言還是一門很不錯的新手入門語言,尤其海龜做圖,更是計算機圖形學的入門經典。
2)BASIC
初三學習BASIC語言,那時的BASIC語言還是需要行號的那種。不過由于初三已經要面對升學壓力,因此,對這個研究屬于淺嘗輒止,之后也沒有再繼續。
3)PASCAL
高一的時候,老爸聽從單位同事的推薦(從這里亦可看出當年PASCAL在工業界的影響力。),給了我一本PASCAL的書,是譚浩強寫的。很多諸如順序、分支、循環的面向過程的程序設計思想,實際上在這個時候就已經接觸到了。當時的目標是實現一個貪吃蛇程序,但由于無人指點,最終也沒有實現。后來上了大學,大一上學期的程序設計課程,也以PASCAL作為教學語言。但自從大一下學期學習C語言之后,就再也沒有用過PASCAL。當時使用的IDE是Turbo Pascal 2.0——Borland的起家之作。
4)C
大二開始接觸,但從大三自學C++之后,有很長一段時間,都很少使用它。直到2009年以后,由于工作內容轉為嵌入式驅動開發,C重新成為我的主要工作語言。它也是我理解的最深刻的語言,無論是語法現象或者是具體的機器實現。由于所有的C++編譯器都支持C,因此所使用的IDE將在講到C++的時候再說。
5)C++
在同學W的帶領下,自學成才。對于基本的繼承、派生使用的還可以,但對于模板之類的高級語法特性,至今也不是太清楚。而且由于先學習C,再學習C++,思維中總是以面向過程的思想為主,搞得現在無論是使用Java、Python,還是Matlab,寫程序都是一個路子。PS:當然只學C++的人,也有缺陷。當年大學里的一個老師就說過:“有的人什么都想編個類,離了類連程序都不會寫了。”
以使用的編譯環境為序,大概分為以下幾個階段:
1.Tubro C 2.0(2001)
貌似2005年以前的理工科非計算機專業學生都用過,有的人也只會用這個。
2.Borland C++ 5.0(2002)。
這個是很偶然的,當時買的一張盜版盤上的軟件。事實上,Borland C++雖然盛極一時,被諸如梁肇新之類的前輩大神視為至寶(沒有之一),但到了Borland C++ 5.0的時候,其實已經是VC的天下了。當時的我剛買了電腦,有能力用個比Tubro C 2.0強一些的IDE。同時VC的復雜性也讓我在最初的時候,對它有所回避。
3.VisualC++ 6.0(2003~2004)。
VC 6.0是一個經典,直到2011年都還有同事在使用它編寫程序。但長江后浪推前浪,這之后遇到的應屆生已經沒有用它的了,盡管老程序員中仍然有用它的。
4.VisualStudio 2003(2005~2007)。
在VS歷史上VS 2002是一個里程碑的版本。微軟的IDE,有三個階段,早期的MS C++階段,中期的VC階段,和現在的VS階段,每個階段之間的IDE結構有較大區別,而階段內各版本的差別倒不是很大。我沒有用過VS 2002,直接就是VS 2003。
5.VisualStudio 2005(2007~2010)。
這個是我個人覺得使用的比較廣泛的一個版本。
它的成功,在我看來可以歸為以下幾點:
1)VC 6.0到了這個時候,畢竟已經很老邁了,無論多么成功的產品,也終會有被淘汰的一天。
2)EVC產品線合并到VS的第一個版本。EVC是MS在wince初期使用的IDE。這使得VS2005同時具備開發嵌入式軟件的能力。
3).NET步入成熟期的產品。在這之后,.NET的改動除了增加Win7/8的新UI特性之外,已經不明顯了。
4)非MS嵌入式平臺的崛起。2009年以后,隨著移動開發,尤其是iOS和Android,成為業界熱點,VS的重要性日漸下降。因此很多開發人員沒有動力升級工具,很多開源代碼也往往停留在這個版本不愿升級。
6.VisualStudio 2010(2010~)。
同事X當時正在MS的外包干活,我用的是他弄出來的內部版本。后來隨著工作重心的轉移,雖然一直還在用,但是已經用的很少了,也沒有繼續升級的打算了。
7.RVDS(2009~2011)。
一個ARM編譯器,工作需要曾用過。
8.Gcc(2011~)。
目前主要使用的環境(沒有IDE)。
9.C++ Builder 6(2012~)。
維護公司目前的一件工具時用到了這個。即使以現在的眼光來看,這也是個不錯的工具,至少入門比MFC要簡單的多。
6)Java(2004~)。
大四的時候開始接觸該語言,做過一些不太大的軟件。因此后來在Android平臺推出的時候,也算是如魚得水了一陣子,是公司當時少數的C++和Java都會的人。但總的來說用的不多。
1-Notepad時代(2003)。
在那個時代,Java在學校的教學還處在初級階段,當時書店介紹Java的書基本沒有。校圖書館里倒是有5、6本,但翻翻年代大多是1998-2000年左右的,JDK1.0/1.1的。這一點上我倒是比較佩服圖書館的工作人員,能在Java還沒有風生水起時,就引進這樣的書。我趕了個早,將這5、6本全部收下,之后的同學就只有找我借了,因為這個課程在當時是沒有教材的。
2-JCreater時代(2004)。
在2003年學習Java課程時,同學中開始有人使用IDE,主要有JCreater和JBuilder。其中Jcreater由于配置簡單,在同學中尤為流行。我也從同學手里要了一份該軟件。但在當時并沒有使用。后來2004年底為了完成JSP的作業,開始使用該IDE。
3-JBuilder時代(2005)。
JBuilder接觸的時間比較早,從JBuilder 5到JBuilder 9都用過,但之前的任務比較簡單,3、5個源代碼文件就用Jbuilder太大才小用了。直到實際開始做工程,才開始使用JBuilder。
4-MyEclipse時代(2008)。
Eclipse接觸的時間也比較早,2004年,但它的設置比起Jcreater還是復雜不少,所以也不常用。直到后來看到Borland也采用了eclipse框架,我才下決心學習這個IDE。而且這次一步到位,直接就是MyEclipse。這也是我這些年學習工作得來的經驗之一。故步自封的堅守老的IDE是沒有任何意義的,技術的進步是誰都阻擋不了的。即使經典如TC2.0、VC 6.0,現在真正的工程中,也已經用的越來越少了,既然這樣,我們還不如在新的IDE剛推出的時候就學習它。有時候,高手其實也就是比別人先行一步而已。
7)C#(2008)。
當時用C#接了一個私活,開發一個近萬行的程序。后來又用J#做了一個圖片處理程序,一直到現在都還在用,這也是我做的最日常實用的程序。
8)Python(2008~)。
同事L舉辦的內部講座里介紹了這個語言,后來又自學了一下,但是用的不多也不好。目前多用于處理一些正則式相關的文本操作,還是蠻好用的。
9)Matlab(2012~)。
目前的工作涉及到一些數值相關的處理任務,所以自學了一下,會一些皮毛。
10)匯編(2002~)。
早期是X86匯編,然后是ARM匯編,現在是SPARC和Andes的匯編。
2.GUI框架
除去學校里的課程之外,我的編程生涯是從做GUI程序開始的,現將接觸到的GUI框架羅列如下:
1)MFC
MFC是VC 6.0的標準框架,相對于直接用Win32 API編程,尤其是編寫對話框程序來說,還是方便了不少。但是MFC的框架其實還是相當復雜的,尤其是Doc/View模型估計真正弄懂的人也不是太多。順便提一句,當年畢業的時候,西安有家叫海軟的公司,曾經到我們學校招聘MFC相關的人,我和L是少數幾個通過第一輪面試的人。這家公司當初曾經許諾能提供15K的月薪,但最終也沒有看到誰拿了它的offer。以現在的角度來看,估計是某個外企在國內開分部,所以把國外的薪水搬過來了。不然,即便是通貨膨脹的今天,恐怕應屆生想在西安拿這個數也幾乎是不可能的。
2)WxWidget
在LT公司的時代,Windows編程由于上手快,招人容易,程序員薪水普遍不高。倒是旁邊一個研究Linux的小組,待遇不錯。因此,我也有心拓展自己的能力,向這方面發展。WxWidget就是在這一段時間內接觸到的。但是沒有深究,做過一兩個小工具之后,就置之不理了。
3)QT
同上。
4).NET
.NET使用了一套與MFC不同的GUI框架。從接口來看,其實更像是MS的死敵Borland的VCL的那套東西。現在使用這個編寫PC工具似乎已經非常普遍了,而且隨著應用的廣泛,目前自帶.NET Framework的PC也越來越多。很多時候,我們只用發布程序就好了。同事W算是這方面的高手,基本上這邊的PC工具有八成都是他主導制作的。將公司在這方面的水準提升了一個臺階。
5)GTK
這是去年下半年開始自學的GUI框架。主要原因是目前已有部分工作轉移到Linux下,總要有個稱手的GUI框架才好。其次,目前的工具代碼,大多是copy自產品代碼的某一部分。產品使用gcc作為編譯器,而gcc的語法和VC也不盡相同。產品代碼中使用的比較多的局部動態數組,VC到目前仍不支持。
3.移動平臺
工作以來,一直在嵌入式領域打拼,也經歷了不少的移動平臺,羅列如下:
1)Wince/Windows Mobile
這是接觸的第一個移動平臺,在學校的時候,我甚至連SD卡都沒見過。應該說Windows Mobile是iOs和Android崛起之前,最高端大氣的移動平臺。由于API與Win32 API高度兼容,上手難度也不高,著實風光了一把。同期的競爭對手Symbian由于對觸摸屏的支持不好,加之硬件規格較低,對于導航地圖之類的當時的“超級應用”來說,還是有些力不從心的。
2)Nucleares/Brew/MTK/Symbian S60/Symbian UIQ/Moblin
這些平臺沒有做過大的項目,但是看過其中的應用代碼。應該說這些都是iOS和Android出現之前,功能手機和嵌入式設備的主流系統。
3)Android
沒有在該平臺上開發過商業產品。但是作為從其誕生之初就一直在關注的人士。無論對它的應用層,還是對它的中間層和驅動層都有一定的了解。基本上從見到Android的第一眼開始,我就預見到Nokia和黑莓的衰敗。即便黑莓在稍后的2009~2010年達到它的頂峰,也不曾讓我改變觀點。
4)RTKE
這是飛利浦開發的一個實時內核,我在S公司工作期間主要用于手機基帶芯片的控制。當時公司投入很大精力,想在一顆處理器上集成基帶處理和應用處理的功能,其軟件核心是在RTKE的基礎上,搭建一個Linux虛擬機以運行Android應用。這個項目的初衷是推出千元以下的手機。但是后來隨著硬件性能的提升和價格的下降,千元以下的手機的確是做出來了,但實際上所用的處理器的個數不僅沒有減少,反而越來越多。PS:RTKE的用途不僅于此,有同事說他之前在其他公司也用過RTKE,然后細談才知道飛利浦的剃須刀上用的也是RTKE。
4.其他
研究生時代研究過CORBA技術,主要用于通信運營商的網管系統的應用。工作之后,很久都沒有聽說過這個名詞。前段時間,在招聘網上,搜了一下,發現CORBA技術本身并未滅絕,但是用途居然還是局限在網管系統的應用上。而且由于體系的龐大低效,原先使用CORBA構筑的GNOME桌面等PC程序,也將IPC轉為更高效(但不通用,也不支持聯網)的DBUS技術了。
總結
以上是生活随笔為你收集整理的入行以来涉及的技术简史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub, Google Code,
- 下一篇: 这些年微软相关的技术总结, Javasc