當前位置:首頁 > 芯聞號 > 充電吧
[導讀]此文章的主旨是希望過于專注.NET程序員在做好工作、寫好.NET程序的同時,能分撥出一點時間接觸一下.NET之外的東西(例如10%-20%的時間),而不是鼓動大家什么都去學最后什么都學不精,更不是說.NET不行或勸大家放棄.

此文章的主旨是希望過于專注.NET程序員在做好工作、寫好.NET程序的同時,能分撥出一點時間接觸一下.NET之外的東西(例如10%-20%的時間),而不是鼓動大家什么都去學最后什么都學不精,更不是說.NET不行或勸大家放棄.NET。恕我愚鈍,此主旨在文中表達不夠清楚,看評論中很多朋友誤解了,特此說明。

另外,本文中的觀點并不全部是我個人的想法,相當一部分來自我以前聊過天的某些大牛,他們很多來自微軟、百度、騰訊等知名企業(yè),并且很多已經(jīng)成為技術(shù)骨干,我曾經(jīng)從他們那里受益匪淺,于是我把他們的指教結(jié)合自身的經(jīng)驗和理解寫成此文。這就是此文的來源。

在給這篇文章起標題的時候,我斟酌了很久,因為我個人是反對使用".NET程序員"、"C++程序員"或"PHP程序員"這類簡單粗暴的方式為程序員做劃分的。但是客觀確實存在一個現(xiàn)象,就是很多程序員會為自己設(shè)置一個無形的界限,將自己與某種語言或平臺硬綁定到一起,例如我這里所指的".NET程序員"。請注意這與"術(shù)業(yè)有專攻"是不同概念的,有自己專攻的平臺或領(lǐng)域這很正常,但是有很多人偏執(zhí)地將自己與某個語言或平臺緊緊捆綁,而忘記了自己首先是一名程序員,然后才使用某種語言,他們偏執(zhí)于平臺并陶醉于自己建立的盒子里,而不愿主動去接觸一些盒子外的事物,最終使得自己無法進步。

從我個人的觀點看,本文中".NET程序員"是指具有如下特點的程序員群體:

● 學習、工作的技術(shù)范圍均局限于.NET平臺及衍生,對.NET之外的技術(shù)沒有主動接觸或?qū)W習的欲望。

● 不斷學習各種.NET平臺上的庫或框架,如ADO.NET,ASP.NET MVC,WPF,Silverlight,WCF,WP,EF,NHibernate……

● 工作無法脫離Visual Studio,習慣于圖形化的工作環(huán)境。

● 時常抱怨微軟的技術(shù)更新太快,微軟開發(fā)平臺包辦太多以至于自己身價貶值。

● 對面向?qū)ο蟆⒃O(shè)計模式、軟件架構(gòu)等東西具有極大的熱情,寧可花大量時間編造各種"設(shè)計模式小故事"也不愿花點時間了解一點新鮮的東西(如Unix下的IPC)。

● 對Java頗有微詞,覺得C我根本用不到,至于PHP?它能做到的.NET都能做到,認為用Linux的大多在裝逼,而Lisp、Lua、Eiffel神馬的都是浮云,我管它們干什么。

● 認為面向?qū)ο笳Z言就是程序設(shè)計語言的代名詞,命令式編程深入骨髓,不太了解函數(shù)式語言或契約式語言是什么。

● 用.NET很多年了,但感覺自己沒什么突破,沒什么進步,成天就搞些增刪改查的勞什子。

● 經(jīng)常討論或思考.NET或Java或C或其它語言哪個好,搞哪個更掙錢這種問題。

如果您有超過3項符合上述特征,我想我們可以聊一聊,因為據(jù)我的觀察,感覺博客園上這類朋友還是挺多的。

希望我能做到旁觀者清

有一個事實我想先和大家澄清一下,其實.NET只是我的業(yè)余愛好。由于博客園主要偏重于.NET平臺,且園子里的朋友對面向?qū)ο蟆⒓軜?gòu)之類的頗感興趣,所以我寫了很多關(guān)于.NET及架構(gòu)方面的文章(如果您注意觀察,會發(fā)現(xiàn)我博客里這類文章正減少并趨于消失),其實相對于設(shè)計、架構(gòu)這類東西,我個人更感興趣的是具體的科學與技術(shù),例如各種編程語言的原理、應用及實現(xiàn)擴展,操作系統(tǒng)原理,網(wǎng)絡(luò)編程,通信協(xié)議,算法與數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)挖掘,機器學習,分布式等等;語言方面我比較喜歡的是PHP、Python、Lisp等;而編程方面我更推崇Unix下的編程哲學和編程方法;我愛vim勝過VS無數(shù)倍。

因此,.NET和C#我一直是作為業(yè)余愛好來發(fā)展的,希望這沒有讓任何人覺得沮喪。很多朋友加我QQ或MSN問我關(guān)于.NET的問題,我經(jīng)常答不上來,很多人或許覺得我不近人情,但我其實是真的答不上來。例如我在博客中寫過一系列關(guān)于ASP.NET MVC的文章,很多人是沖那系列文章加我的,但是其實ASP.NET MVC我只在beta版時擺弄過兩個星期,然后就再也沒有碰過,所以后來很多朋友問我想關(guān)問題我是真的答不上來。

所以,在博客園這個以.NET和架構(gòu)之類為主的社區(qū),我算是半個旁觀者吧,我看到園子里很多朋友都把自己禁錮在自己創(chuàng)造的盒子里,所以我希望以旁觀者的身份,給這些朋友提幾個建議。

每半年接觸并學習一門語言

有許多人通常覺得只要把一門語言學會學精就行,這個想法我覺得對了一半。一個程序員應該有一門精通的語言,但是還要不斷學習新的語言(當然不能太頻繁),倒不是為了以防哪天萬一用到這門語言,而是接觸學習不同的語言會拓展程序員的視野。

如果你一直用C#,試試Lisp,你會驚嘆于還有這樣寫程序的方式,嗯?看來我得去學學Lamda演算;試試Python,你會驚訝于還有如此小巧優(yōu)美的東西;試試Lua,你會發(fā)現(xiàn)原來語言還能嵌入其它語言,要不要為WOW寫個外掛試試?試試Eiffel,你會發(fā)現(xiàn)還有契約式編程這種方法,嗯?什么?Java上有iContract,那我要不要為.NET實現(xiàn)一個?隨著這種學習過程,你的思維自然就被拓展開了,而不是滿腦子的Class、Object、MVC、OO……

其實學習語言不一定是學習沒聽說過的,許多您聽到耳朵長繭卻從來沒有深入學習的"老朋友",如C、PHP,如果您細心學下來,也會得到許多意外的收獲。

例如在學C的過程中,你會發(fā)現(xiàn)不可能脫離Unix環(huán)境而把C學好,你會接觸POSIX和System V,你會主動深入學習進程、線程、信號、I/O、IPC,你會接觸TCP/IP協(xié)議。你會發(fā)現(xiàn)要學好C還要理解計算機組成原理,你還會發(fā)現(xiàn)原來還有大小端這個東西。

深入學習PHP,你會發(fā)現(xiàn)PHP遠不僅僅是一個做Web的腳本語言那么簡單,你會了解到它SAPI、PHP Compiler和Zend Engine的優(yōu)美結(jié)構(gòu),你會發(fā)現(xiàn)有opcode,你會發(fā)現(xiàn)PHP渾身都是擴展點,你可以擴展功能,擴展Compiler和Zend Engine,甚至可以完全實現(xiàn)自己的編譯和運行邏輯。你會了解APC是如何緩存opcode,APD是如何跟蹤PHP的運行。

每次學習一門語言,你會發(fā)現(xiàn)這不是一門語言,而是一個嶄新的新大陸,里面有太多讓人興奮和新奇的東西,而如果你執(zhí)意禁錮在".NET盒子"里,你就永遠不會知道這些。

主動突破自己 接受更多挑戰(zhàn)[!--empirenews.page--]

如果什么東西都是用到才學,代碼都是有用才寫,那我只能非常抱歉的說你還不是個程序員,而只是個代碼工人。程序員應該有主動出擊的意識,應該對自己未接觸的領(lǐng)域有無限向往。幸運的是,互聯(lián)網(wǎng)上的財富實在太多了,你應該盡其所能去接觸學習未知的東西,而不要總想我學習這個東西能不能換來錢給孩子買尿布和奶粉。你可以有很多借口,但是我想說,借口想找總是有的,時間想找也總是有的,還是看自己到底要什么。不要一邊躺在盒子里一邊又抱怨自己沒有進步。

例如Google Publication,這里有世界最優(yōu)秀的Google工程師們理論和實踐的總結(jié),來讀讀這些偉大的論文吧,看看這個偉大的公司和一群偉大的人都干了些什么,了解一下Map Reduce是怎么回事,如果了解了你自然想去試試Hadoop,還有Bigtable和GFS,哦!太震撼了,原來存儲數(shù)據(jù)也有這么多講究,不是放硬盤里或通過Insert插入數(shù)據(jù)庫就行了。也許這些英文論文讀起來很困難,但是我想一周一篇的要求并不高(我現(xiàn)在仍然保持著一周讀兩篇論文的習慣)。要知道,最新、最嚴謹?shù)臇|西都在論文里,如果你只是通過書本或社區(qū)學習,那么你永遠不會知道今天在計算機科學與技術(shù)的領(lǐng)域又發(fā)生了哪些令人震撼的事情,出現(xiàn)了哪些新奇的東西。

不要太懶惰,你寫增刪改查寫累了嗎?Come on!有沒有想過自己寫一個小型的httpd?當然你需要先去學習HTTP協(xié)議(rfc2612),試試能不能寫一個PHP的SAPI擴展令你的httpd處理PHP腳本。有沒有想過自己用lex和yacc實現(xiàn)一個自己的小語言,也不是完全沒用,也許你已經(jīng)對你的領(lǐng)域業(yè)務邏輯爛熟于胸,那么去實現(xiàn)一個自己的領(lǐng)域語言吧。??!我要去學習編譯原理、形式語言與自動機……咦,這東西還挺有意思的,去看看計算理論去……如果到了這里,你已經(jīng)開始接觸計算機的數(shù)學本質(zhì)了,而你的層次將會得到升華。

學習就是這樣,主動突破自己,給自己一些挑戰(zhàn)性的任務,生活才有趣。成天困在.NET的盒子里,我們還有臉稱自己為程序員嗎?

脫離IDE 玩玩純文本與shell

從沒用過IDE的程序員可能是悲劇,但從沒脫離過IDE的程序員絕對是悲??!

你有沒有覺得自己越來越不像個"編程序"的而越來越像"堆程序"的。好的,即使在工作時你離不開IDE,那么業(yè)余時間讓你的IDE滾蛋,等等,你改用Notepad?氣死我了你!試試vim或Emacs,體驗一下用純文本寫程序,用gcc編譯連接的樂趣。你會發(fā)現(xiàn)"yyp"比"選中一行,Ctrl+C,點擊下一行起始位置,Ctrl+V"簡單的多,你會發(fā)現(xiàn)按一下"0"比按20次"左箭頭"省事的多。等源程序多了,也許你會想去學習Makefile的寫法。你會莫名其妙地發(fā)現(xiàn)自己更懂編譯和連接過程了。

相信我,用純文本和shell寫程序比用IDE酷多了,想吸引女孩子嗎?你去問問你們班或你們公司最漂亮的女生,她也會這么想。重要的是,這種酷不是"裝B"的酷,而是有效率的酷。什么?你已經(jīng)受不了IDE了……

接受更多的編程哲學與學習方式

注意我是用的"接受"而不是用"改變",你不需要改變什么,寫.NET程序很好,不過你可以適當吸取一下其它領(lǐng)域的編程哲學與學習方式。可以說Windows(特別是.NET)程序員和Unix程序員思考問題的方式大不相同,如果現(xiàn)在需要一輛汽車,Windows程序員會建立一個從冶鐵到裝配的"All in one"汽車制造基地;而Unix程序員會去分別建立采礦場、冶鐵廠、設(shè)計公司、材料制造廠、機械制造廠和裝配廠。我不想討論他們各自的優(yōu)缺點(因為很容易陷入無謂的宗教紛爭),但是對于你來說,了解一些其它的編程哲學對你沒有壞處。

另外就是學習方式,例如你要學習PHP,請千萬不要去書店購買各種《21天精通PHP》或《PHP編程寶典》,你應該首先打開Google,找到PHP官網(wǎng),然后去官方文檔哪里尋找學習資源。網(wǎng)上還有各種wiki,mailing lists和社區(qū),請不要放棄這些資源。然后同時你可以去Amazon看書評,然后小心而謹慎地選擇一本相關(guān)的書籍(影印版最優(yōu),翻譯版其次)。

一個人想突破自己不容易,關(guān)鍵在于自己有沒有突破的意愿。衷心希望有一天,您的腦中不再被ASP.NET,ASP.NET MVC,WCF,WPF,ADO.NET,Silverlight,EF……而占滿,如果到了那一天,你會發(fā)現(xiàn),咦?!我.NET的水平也大幅提升了!
 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉