虚拟光驱的开发者斟酌了很久
在給這篇文章起標題的時候,虛擬光驅的開發者斟酌了很久,因為虛擬光驅的開發者個人是反對使用“.NET程序員”、“C++程序員”或“PHP程序員”這類簡單粗暴的方式為程序員做劃分的。但是客觀確實存在一個現象,就是很多程序員會為自己設置一個無形的界限,將自己與某種語言或平臺硬綁定到一起,例如虛擬光驅的開發者這里所指的“.NET程序員”。請注意這與“術業有專攻”是不同概念的,有自己專攻的平臺或領域這很正常,但是有很多人偏執地將自己與某個語言或平臺緊緊捆綁,而忘記了自己首先是一名程序員,然后才使用某種語言,他們偏執于平臺并陶醉于自己建立的盒子里,而不愿主動去接觸一些盒子外的事物,最終使得自己無法進步。
此文章的主旨是希望過于專注.NET程序員在做好工作、寫好.NET程序的同時,能分撥出一點時間接觸一下.NET之外的東西(例如10%-20%的時間),而不是鼓動大家什么都去學最后什么都學不精,更不是說.NET不行或勸大家放棄.NET。恕虛擬光驅的開發者愚鈍,此主旨在文中表達不夠清楚,看評論中很多朋友誤解了,特此說明。虛擬光驅:http://www.freeeim.com/Daemon/
另外,本文中的觀點并不全部是虛擬光驅的開發者個人的想法,相當一部分來自虛擬光驅的開發者以前聊過天的某些大牛,他們很多來自微軟、百度、騰訊等知名企業,并且很多已經成為技術骨干,虛擬光驅的開發者曾經從他們那里受益匪淺,于是虛擬光驅的開發者把他們的指教結合自身的經驗和理解寫成此文。這就是此文的來源。
------------------------------------------------------------華麗的分割線------------------------------------------------------------
從虛擬光驅的開發者個人的觀點看,本文中“.NET程序員”是指具有如下特點的程序員群體:
學習、工作的技術范圍均局限于.NET平臺及衍生,對.NET之外的技術沒有主動接觸或學習的欲望。
不斷學習各種.NET平臺上的庫或框架,如ADO.NET,ASP.NET MVC,WPF,Silverlight,WCF,WP,EF,NHibernate……
工作無法脫離Visual Studio,習慣于圖形化的工作環境。
時常抱怨微軟的技術更新太快,微軟開發平臺包辦太多以至于自己身價貶值。
對面向對象、設計模式、軟件架構等東西具有極大的熱情,寧可花大量時間編造各種“設計模式小故事”也不愿花點時間了解一點新鮮的東西(如Unix下的IPC)。
對Java頗有微詞,覺得C虛擬光驅的開發者根本用不到,至于PHP?它能做到的.NET都能做到,認為用Linux的大多在裝逼,而Lisp、Lua、Eiffel神馬的都是浮云,虛擬光驅的開發者管它們干什么。
認為面向對象語言就是程序設計語言的代名詞,命令式編程深入骨髓,不太了解函數式語言或契約式語言是什么。
用.NET很多年了,但感覺自己沒什么突破,沒什么進步,成天就搞些增刪改查的勞什子。
經常討論或思考.NET或Java或C或其它語言哪個好,搞哪個更掙錢這種問題。
如果您有超過3項符合上述特征,虛擬光驅的開發者想虛擬光驅的開發者們可以聊一聊,因為據虛擬光驅的開發者的觀察,感覺博客園上這類朋友還是挺多的。
希望虛擬光驅的開發者能做到旁觀者清
有一個事實虛擬光驅的開發者想先和大家澄清一下,其實.NET只是虛擬光驅的開發者的業余愛好。由于博客園主要偏重于.NET平臺,且園子里的朋友對面向對象、架構之類的頗感興趣,所以虛擬光驅的開發者寫了很多關于.NET及架構方面的文章(如果您注意觀察,會發現虛擬光驅的開發者博客里這類文章正減少并趨于消失),其實相對于設計、架構這類東西,虛擬光驅的開發者個人更感興趣的是具體的科學與技術,例如各種編程語言的原理、應用及實現擴展,操作系統原理,網絡編程,通信協議,算法與數據結構,數據挖掘,機器學習,分布式等等;語言方面虛擬光驅的開發者比較喜歡的是PHP、Python、Lisp等;而編程方面虛擬光驅的開發者更推崇Unix下的編程哲學和編程方法;虛擬光驅的開發者愛vim勝過VS無數倍。
因此,.NET和C#虛擬光驅的開發者一直是作為業余愛好來發展的,希望這沒有讓任何人覺得沮喪。很多朋友加虛擬光驅的開發者QQ或MSN問虛擬光驅的開發者關于.NET的問題,虛擬光驅的開發者經常答不上來,很多人或許覺得虛擬光驅的開發者不近人情,但虛擬光驅的開發者其實是真的答不上來。例如虛擬光驅的開發者在博客中寫過一系列關于ASP.NET MVC的文章,很多人是沖那系列文章加虛擬光驅的開發者的,但是其實ASP.NET MVC虛擬光驅的開發者只在beta版時擺弄過兩個星期,然后就再也沒有碰過,所以后來很多朋友問虛擬光驅的開發者想關問題虛擬光驅的開發者是真的答不上來。
所以,在博客園這個以.NET和架構之類為主的社區,虛擬光驅的開發者算是半個旁觀者吧,虛擬光驅的開發者看到園子里很多朋友都把自己禁錮在自己創造的盒子里,所以虛擬光驅的開發者希望以旁觀者的身份,給這些朋友提幾個建議。
每半年接觸并學習一門語言
有許多人通常覺得只要把一門語言學會學精就行,這個想法虛擬光驅的開發者覺得對了一半。一個程序員應該有一門精通的語言,但是還要不斷學習新的語言(當然不能太頻繁),倒不是為了以防哪天萬一用到這門語言,而是接觸學習不同的語言會拓展程序員的視野。
如果你一直用C#,試試Lisp,你會驚嘆于還有這樣寫程序的方式,嗯?看來虛擬光驅的開發者得去學學Lamda演算;試試Python,你會驚訝于還有如此小巧優美的東西;試試Lua,你會發現原來語言還能嵌入其它語言,要不要為WOW寫個外掛試試?試試Eiffel,你會發現還有契約式編程這種方法,嗯?什么?Java上有iContract,那虛擬光驅的開發者要不要為.NET實現一個?隨著這種學習過程,你的思維自然就被拓展開了,而不是滿腦子的Class、Object、MVC、OO……
其實學習語言不一定是學習沒聽說過的,許多您聽到耳朵長繭卻從來沒有深入學習的“老朋友”,如C、PHP,如果您細心學下來,也會得到許多意外的收獲。
例如在學C的過程中,你會發現不可能脫離Unix環境而把C學好,你會接觸POSIX和System V,你會主動深入學習進程、線程、信號、I/O、IPC,你會接觸TCP/IP協議。你會發現要學好C還要理解計算機組成原理,你還會發現原來還有大小端這個東西。
深入學習PHP,你會發現PHP遠不僅僅是一個做Web的腳本語言那么簡單,你會了解到它SAPI、PHP Compiler和Zend Engine的優美結構,你會發現有opcode,你會發現PHP渾身都是擴展點,你可以擴展功能,擴展Compiler和Zend Engine,甚至可以完全實現自己的編譯和運行邏輯。你會了解APC是如何緩存opcode,APD是如何跟蹤PHP的運行。
每次學習一門語言,你會發現這不是一門語言,而是一個嶄新的新大陸,里面有太多讓人興奮和新奇的東西,而如果你執意禁錮在“.NET盒子”里,你就永遠不會知道這些。
主動突破自己 接受更多挑戰
如果什么東西都是用到才學,代碼都是有用才寫,那虛擬光驅的開發者只能非常抱歉的說你還不是個程序員,而只是個代碼工人。程序員應該有主動出擊的意識,應該對自己未接觸的領域有無限向往。幸運的是,互聯網上的財富實在太多了,你應該盡其所能去接觸學習未知的東西,而不要總想虛擬光驅的開發者學習這個東西能不能換來錢給孩子買尿布和奶粉。你可以有很多借口,但是虛擬光驅的開發者想說,借口想找總是有的,時間想找也總是有的,還是看自己到底要什么。不要一邊躺在盒子里一邊又抱怨自己沒有進步。
例如Google Publication,這里有世界最優秀的Google工程師們理論和實踐的總結,來讀讀這些偉大的論文吧,看看這個偉大的公司和一群偉大的人都干了些什么,了解一下Map Reduce是怎么回事,如果了解了你自然想去試試Hadoop,還有Bigtable和GFS,哦!太震撼了,原來存儲數據也有這么多講究,不是放硬盤里或通過Insert插入數據庫就行了。也許這些英文論文讀起來很困難,但是虛擬光驅的開發者想一周一篇的要求并不高(虛擬光驅的開發者現在仍然保持著一周讀兩篇論文的習慣)。要知道,最新、最嚴謹的東西都在論文里,如果你只是通過書本或社區學習,那么你永遠不會知道今天在計算機科學與技術的領域又發生了哪些令人震撼的事情,出現了哪些新奇的東西。
不要太懶惰,你寫增刪改查寫累了嗎?Come on!有沒有想過自己寫一個小型的httpd?當然你需要先去學習HTTP協議(rfc2612),試試能不能寫一個PHP的SAPI擴展令你的httpd處理PHP腳本。有沒有想過自己用lex和yacc實現一個自己的小語言,也不是完全沒用,也許你已經對你的領域業務邏輯爛熟于胸,那么去實現一個自己的領域語言吧。啊!虛擬光驅的開發者要去學習編譯原理、形式語言與自動機……咦,這東西還挺有意思的,去看看計算理論去……如果到了這里,你已經開始接觸計算機的數學本質了,而你的層次將會得到升華。
學習就是這樣,主動突破自己,給自己一些挑戰性的任務,生活才有趣。成天困在.NET的盒子里,虛擬光驅的開發者們還有臉稱自己為程序員嗎?
總結
以上是生活随笔為你收集整理的虚拟光驱的开发者斟酌了很久的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿拉伯与罗马数字互转程序
- 下一篇: Asp.net中的常用路径