文章的主旨是希望過(guò)于專(zhuān)注.NET程序員在做好工作、寫(xiě)好.NET程序的同時(shí),,能分撥出一點(diǎn)時(shí)間接觸一下.NET之外的東西(例如10%-20%的時(shí)間),,而不是鼓動(dòng)大家什么都去學(xué)最后什么都學(xué)不精,更不是說(shuō).NET不行或勸大家放棄.NET,。恕我愚鈍,,此主旨在文中表達(dá)不夠清楚,看評(píng)論中很多朋友誤解了,,特此說(shuō)明,。
另外,本文中的觀點(diǎn)并不全部是我個(gè)人的想法,,相當(dāng)一部分來(lái)自我以前聊過(guò)天的某些大牛,他們很多來(lái)自微軟,、百度,、騰訊等知名企業(yè),并且很多已經(jīng)成為技術(shù)骨干,,我曾經(jīng)從他們那里受益匪淺,,于是我把他們的指教結(jié)合自身的經(jīng)驗(yàn)和理解寫(xiě)成此文。這就是此文的來(lái)源,。
————————————————————
在給這篇文章起標(biāo)題的時(shí)候,,我斟酌了很久,因?yàn)槲覀€(gè)人是反對(duì)使用“.NET程序員”,、“C++程序員”或“PHP程序員”這類(lèi)簡(jiǎn)單粗暴的方式為程序員做劃分的,。但是客觀確實(shí)存在一個(gè)現(xiàn)象,,就是很多程序員會(huì)為自己設(shè)置一個(gè)無(wú)形的界限,將自己與某種語(yǔ)言或平臺(tái)硬綁定到一起,,例如我這里所指的“.NET程序員”,。請(qǐng)注意這與“術(shù)業(yè)有專(zhuān)攻”是不同概念的,有自己專(zhuān)攻的平臺(tái)或領(lǐng)域這很正常,,但是有很多人偏執(zhí)地將自己與某個(gè)語(yǔ)言或平臺(tái)緊緊捆綁,,而忘記了自己首先是一名程序員,然后才使用某種語(yǔ)言,,他們偏執(zhí)于平臺(tái)并陶醉于自己建立的盒子里,,而不愿主動(dòng)去接觸一些盒子外的事物,最終使得自己無(wú)法進(jìn)步,。
從我個(gè)人的觀點(diǎn)看,,本文中“.NET程序員”是指具有如下特點(diǎn)的程序員群體: ● 學(xué)習(xí)、工作的技術(shù)范圍均局限于.NET平臺(tái)及衍生,,對(duì).NET之外的技術(shù)沒(méi)有主動(dòng)接觸或?qū)W習(xí)的欲望,。
● 不斷學(xué)習(xí)各種.NET平臺(tái)上的庫(kù)或框架,如ADO.NET,,ASP.NET MVC,,WPF,Silverlight,,WCF,,WP,EF,,NHibernate……
● 工作無(wú)法脫離Visual Studio,,習(xí)慣于圖形化的工作環(huán)境。
● 時(shí)常抱怨微軟的技術(shù)更新太快,,微軟開(kāi)發(fā)平臺(tái)包辦太多以至于自己身價(jià)貶值,。
● 對(duì)面向?qū)ο蟆⒃O(shè)計(jì)模式,、軟件架構(gòu)等東西具有極大的熱情,,寧可花大量時(shí)間編造各種“設(shè)計(jì)模式小故事”也不愿花點(diǎn)時(shí)間了解一點(diǎn)新鮮的東西(如Unix下的IPC)。
● 對(duì)Java頗有微詞,,覺(jué)得C我根本用不到,,至于PHP?它能做到的.NET都能做到,,認(rèn)為用Linux的大多在裝逼,,而Lisp、Lua,、Eiffel神馬的都是浮云,,我管它們干什么,。
● 認(rèn)為面向?qū)ο笳Z(yǔ)言就是程序設(shè)計(jì)語(yǔ)言的代名詞,命令式編程深入骨髓,,不太了解函數(shù)式語(yǔ)言或契約式語(yǔ)言是什么,。
● 用.NET很多年了,但感覺(jué)自己沒(méi)什么突破,,沒(méi)什么進(jìn)步,,成天就搞些增刪改查的勞什子。
● 經(jīng)常討論或思考.NET或Java或C或其它語(yǔ)言哪個(gè)好,,搞哪個(gè)更掙錢(qián)這種問(wèn)題,。
如果您有超過(guò)3項(xiàng)符合上述特征,我想我們可以聊一聊,,因?yàn)閾?jù)我的觀察,,感覺(jué)博客園上這類(lèi)朋友還是挺多的。
希望我能做到旁觀者清
有一個(gè)事實(shí)我想先和大家澄清一下,,其實(shí).NET只是我的業(yè)余愛(ài)好,。由于博客園主要偏重于.NET平臺(tái),且園子里的朋友對(duì)面向?qū)ο?、架?gòu)之類(lèi)的頗感興趣,,所以我寫(xiě)了很多關(guān)于.NET及架構(gòu)方面的文章(如果您注意觀察,會(huì)發(fā)現(xiàn)我博客里這類(lèi)文章正減少并趨于消失),,其實(shí)相對(duì)于設(shè)計(jì),、架構(gòu)這類(lèi)東西,我個(gè)人更感興趣的是具體的科學(xué)與技術(shù),,例如各種編程語(yǔ)言的原理,、應(yīng)用及實(shí)現(xiàn)擴(kuò)展,操作系統(tǒng)原理,,網(wǎng)絡(luò)編程,,通信協(xié)議,算法與數(shù)據(jù)結(jié)構(gòu),,數(shù)據(jù)挖掘,,機(jī)器學(xué)習(xí),分布式等等,;語(yǔ)言方面我比較喜歡的是PHP、Python,、Lisp等,;而編程方面我更推崇Unix下的編程哲學(xué)和編程方法;我愛(ài)vim勝過(guò)VS無(wú)數(shù)倍,。
因此,,.NET和C#我一直是作為業(yè)余愛(ài)好來(lái)發(fā)展的,,希望這沒(méi)有讓任何人覺(jué)得沮喪。很多朋友加我QQ或MSN問(wèn)我關(guān)于.NET的問(wèn)題,,我經(jīng)常答不上來(lái),,很多人或許覺(jué)得我不近人情,但我其實(shí)是真的答不上來(lái),。例如我在博客中寫(xiě)過(guò)一系列關(guān)于ASP.NET MVC的文章,,很多人是沖那系列文章加我的,但是其實(shí)ASP.NET MVC我只在beta版時(shí)擺弄過(guò)兩個(gè)星期,,然后就再也沒(méi)有碰過(guò),,所以后來(lái)很多朋友問(wèn)我想關(guān)問(wèn)題我是真的答不上來(lái)。
所以,,在博客園這個(gè)以.NET和架構(gòu)之類(lèi)為主的社區(qū),,我算是半個(gè)旁觀者吧,我看到園子里很多朋友都把自己禁錮在自己創(chuàng)造的盒子里,,所以我希望以旁觀者的身份,,給這些朋友提幾個(gè)建議。
每半年接觸并學(xué)習(xí)一門(mén)語(yǔ)言
有許多人通常覺(jué)得只要把一門(mén)語(yǔ)言學(xué)會(huì)學(xué)精就行,,這個(gè)想法我覺(jué)得對(duì)了一半,。一個(gè)程序員應(yīng)該有一門(mén)精通的語(yǔ)言,但是還要不斷學(xué)習(xí)新的語(yǔ)言(當(dāng)然不能太頻繁),,倒不是為了以防哪天萬(wàn)一用到這門(mén)語(yǔ)言,,而是接觸學(xué)習(xí)不同的語(yǔ)言會(huì)拓展程序員的視野。
如果你一直用C#,,試試Lisp,,你會(huì)驚嘆于還有這樣寫(xiě)程序的方式,嗯,?看來(lái)我得去學(xué)學(xué)Lamda演算,;試試Python,你會(huì)驚訝于還有如此小巧優(yōu)美的東西,;試試Lua,,你會(huì)發(fā)現(xiàn)原來(lái)語(yǔ)言還能嵌入其它語(yǔ)言,要不要為WOW寫(xiě)個(gè)外掛試試,?試試Eiffel,,你會(huì)發(fā)現(xiàn)還有契約式編程這種方法,嗯,?什么,?Java上有iContract,那我要不要為.NET實(shí)現(xiàn)一個(gè)?隨著這種學(xué)習(xí)過(guò)程,,你的思維自然就被拓展開(kāi)了,,而不是滿(mǎn)腦子的Class、Object,、MVC,、OO……
其實(shí)學(xué)習(xí)語(yǔ)言不一定是學(xué)習(xí)沒(méi)聽(tīng)說(shuō)過(guò)的,許多您聽(tīng)到耳朵長(zhǎng)繭卻從來(lái)沒(méi)有深入學(xué)習(xí)的“老朋友”,,如C,、PHP,如果您細(xì)心學(xué)下來(lái),,也會(huì)得到許多意外的收獲,。
例如在學(xué)C的過(guò)程中,你會(huì)發(fā)現(xiàn)不可能脫離Unix環(huán)境而把C學(xué)好,,你會(huì)接觸POSIX和System V,,你會(huì)主動(dòng)深入學(xué)習(xí)進(jìn)程、線程,、信號(hào),、I/O、IPC,,你會(huì)接觸TCP/IP協(xié)議,。你會(huì)發(fā)現(xiàn)要學(xué)好C還要理解計(jì)算機(jī)組成原理,你還會(huì)發(fā)現(xiàn)原來(lái)還有大小端這個(gè)東西,。
深入學(xué)習(xí)PHP,,你會(huì)發(fā)現(xiàn)PHP遠(yuǎn)不僅僅是一個(gè)做Web的腳本語(yǔ)言那么簡(jiǎn)單,你會(huì)了解到它SAPI,、PHP Compiler和Zend Engine的優(yōu)美結(jié)構(gòu),,你會(huì)發(fā)現(xiàn)有opcode,你會(huì)發(fā)現(xiàn)PHP渾身都是擴(kuò)展點(diǎn),,你可以擴(kuò)展功能,,擴(kuò)展Compiler和Zend Engine,甚至可以完全實(shí)現(xiàn)自己的編譯和運(yùn)行邏輯,。你會(huì)了解APC是如何緩存opcode,,APD是如何跟蹤PHP的運(yùn)行。
每次學(xué)習(xí)一門(mén)語(yǔ)言,,你會(huì)發(fā)現(xiàn)這不是一門(mén)語(yǔ)言,,而是一個(gè)嶄新的新大陸,里面有太多讓人興奮和新奇的東西,,而如果你執(zhí)意禁錮在“.NET盒子”里,,你就永遠(yuǎn)不會(huì)知道這些。
主動(dòng)突破自己 接受更多挑戰(zhàn)
如果什么東西都是用到才學(xué),,代碼都是有用才寫(xiě),,那我只能非常抱歉的說(shuō)你還不是個(gè)程序員,而只是個(gè)代碼工人,。程序員應(yīng)該有主動(dòng)出擊的意識(shí),,應(yīng)該對(duì)自己未接觸的領(lǐng)域有無(wú)限向往。幸運(yùn)的是,,互聯(lián)網(wǎng)上的財(cái)富實(shí)在太多了,,你應(yīng)該盡其所能去接觸學(xué)習(xí)未知的東西,而不要總想我學(xué)習(xí)這個(gè)東西能不能換來(lái)錢(qián)給孩子買(mǎi)尿布和奶粉,。你可以有很多借口,,但是我想說(shuō),借口想找總是有的,,時(shí)間想找也總是有的,,還是看自己到底要什么。不要一邊躺在盒子里一邊又抱怨自己沒(méi)有進(jìn)步,。
例如Google Publication,,這里有世界最優(yōu)秀的Google工程師們理論和實(shí)踐的總結(jié),來(lái)讀讀這些偉大的論文吧,,看看這個(gè)偉大的公司和一群偉大的人都干了些什么,,了解一下Map Reduce是怎么回事,如果了解了你自然想去試試Hadoop,,還有Bigtable和GFS,,哦!太震撼了,,原來(lái)存儲(chǔ)數(shù)據(jù)也有這么多講究,,不是放硬盤(pán)里或通過(guò)Insert插入數(shù)據(jù)庫(kù)就行了。也許這些英文論文讀起來(lái)很困難,,但是我想一周一篇的要求并不高(我現(xiàn)在仍然保持著一周讀兩篇論文的習(xí)慣),。要知道,最新,、最嚴(yán)謹(jǐn)?shù)臇|西都在論文里,,如果你只是通過(guò)書(shū)本或社區(qū)學(xué)習(xí),那么你永遠(yuǎn)不會(huì)知道今天在計(jì)算機(jī)科學(xué)與技術(shù)的領(lǐng)域又發(fā)生了哪些令人震撼的事情,,出現(xiàn)了哪些新奇的東西,。
不要太懶惰,你寫(xiě)增刪改查寫(xiě)累了嗎,?Come on,!有沒(méi)有想過(guò)自己寫(xiě)一個(gè)小型的httpd?當(dāng)然你需要先去學(xué)習(xí)HTTP協(xié)議(rfc2612),試試能不能寫(xiě)一個(gè)PHP的SAPI擴(kuò)展令你的httpd處理PHP腳本,。有沒(méi)有想過(guò)自己用lex和yacc實(shí)現(xiàn)一個(gè)自己的小語(yǔ)言,,也不是完全沒(méi)用,也許你已經(jīng)對(duì)你的領(lǐng)域業(yè)務(wù)邏輯爛熟于胸,,那么去實(shí)現(xiàn)一個(gè)自己的領(lǐng)域語(yǔ)言吧,。啊,!我要去學(xué)習(xí)編譯原理,、形式語(yǔ)言與自動(dòng)機(jī)……咦,這東西還挺有意思的,,去看看計(jì)算理論去……如果到了這里,,你已經(jīng)開(kāi)始接觸計(jì)算機(jī)的數(shù)學(xué)本質(zhì)了,而你的層次將會(huì)得到升華,。
學(xué)習(xí)就是這樣,,主動(dòng)突破自己,給自己一些挑戰(zhàn)性的任務(wù),,生活才有趣,。成天困在.NET的盒子里,我們還有臉?lè)Q自己為程序員嗎,?
脫離IDE 玩玩純文本與shell
從沒(méi)用過(guò)IDE的程序員可能是悲劇,,但從沒(méi)脫離過(guò)IDE的程序員絕對(duì)是悲劇,!
你有沒(méi)有覺(jué)得自己越來(lái)越不像個(gè)“編程序”的而越來(lái)越像“堆程序”的,。好的,即使在工作時(shí)你離不開(kāi)IDE,,那么業(yè)余時(shí)間讓你的IDE滾蛋,,等等,你改用Notepad,?氣死我了你,!試試vim或Emacs,體驗(yàn)一下用純文本寫(xiě)程序,,用gcc編譯連接的樂(lè)趣,。你會(huì)發(fā)現(xiàn)“yyp”比“選中一行,Ctrl+C,,點(diǎn)擊下一行起始位置,,Ctrl+V”簡(jiǎn)單的多,你會(huì)發(fā)現(xiàn)按一下“0”比按20次“左箭頭”省事的多,。等源程序多了,,也許你會(huì)想去學(xué)習(xí)Makefile的寫(xiě)法,。你會(huì)莫名其妙地發(fā)現(xiàn)自己更懂編譯和連接過(guò)程了。
相信我,,用純文本和shell寫(xiě)程序比用IDE酷多了,,想吸引女孩子嗎?你去問(wèn)問(wèn)你們班或你們公司最漂亮的女生,,她也會(huì)這么想,。重要的是,這種酷不是“裝B”的酷,,而是有效率的酷。什么,?你已經(jīng)受不了IDE了……
接受更多的編程哲學(xué)與學(xué)習(xí)方式
注意我是用的“接受”而不是用“改變”,,你不需要改變什么,寫(xiě).NET程序很好,,不過(guò)你可以適當(dāng)吸取一下其它領(lǐng)域的編程哲學(xué)與學(xué)習(xí)方式,。可以說(shuō)Windows(特別是.NET)程序員和Unix程序員思考問(wèn)題的方式大不相同,如果現(xiàn)在需要一輛汽車(chē),,Windows程序員會(huì)建立一個(gè)從冶鐵到裝配的“All in one”汽車(chē)制造基地,;而Unix程序員會(huì)去分別建立采礦場(chǎng)、冶鐵廠,、設(shè)計(jì)公司,、材料制造廠、機(jī)械制造廠和裝配廠,。我不想討論他們各自的優(yōu)缺點(diǎn)(因?yàn)楹苋菀紫萑霟o(wú)謂的宗教紛爭(zhēng)),,但是對(duì)于你來(lái)說(shuō),了解一些其它的編程哲學(xué)對(duì)你沒(méi)有壞處,。
另外就是學(xué)習(xí)方式,,例如你要學(xué)習(xí)PHP,請(qǐng)千萬(wàn)不要去書(shū)店購(gòu)買(mǎi)各種《21天精通PHP》或《PHP編程寶典》,,你應(yīng)該首先打開(kāi)Google,,找到PHP官網(wǎng),然后去官方文檔哪里尋找學(xué)習(xí)資源,。網(wǎng)上還有各種wiki,,mailing lists和社區(qū),請(qǐng)不要放棄這些資源,。然后同時(shí)你可以去Amazon看書(shū)評(píng),,然后小心而謹(jǐn)慎地選擇一本相關(guān)的書(shū)籍(影印版最優(yōu),翻譯版其次),。
一個(gè)人想突破自己不容易,,關(guān)鍵在于自己有沒(méi)有突破的意愿,。衷心希望有一天,您的腦中不再被ASP.NET,,ASP.NET MVC,,WCF,WPF,,ADO.NET,,Silverlight,EF……而占滿(mǎn),,如果到了那一天,,你會(huì)發(fā)現(xiàn),咦,?,!我.NET的水平也大幅提升了!
———————————————————–
【精彩評(píng)論】
Jacky Song:真正的程序員肯定不會(huì)限定在.net平臺(tái),,程序員就是為了解放生產(chǎn)力,,提高工作效率而生的,其實(shí)除.net以外,,還有其他很好玩的技術(shù)或工具,,比如你所說(shuō)的編輯器之神vim,無(wú)論是windows平臺(tái)還是linux平臺(tái),,都是其它編輯器無(wú)法比擬的(誰(shuí)用誰(shuí)知道),。腳本的話(huà)python, php, 以及各平臺(tái)的shell, 這些都是可以大大的提高工作效率??傊?,計(jì)算機(jī)就是一門(mén)藝術(shù),越往里面研究越覺(jué)得它是劃時(shí)代的奇跡,,這玩意太神奇了!!
toEverybody:我認(rèn)為改變一下公司的技術(shù)會(huì)眼界很寬,,如學(xué)C#, 再學(xué)一下Delphi, 再了解一下C++, 再了解一下PHP…..
微生物:其實(shí)本質(zhì)上還是要問(wèn)這樣一個(gè)問(wèn)題,你真的是一個(gè)合格的程序員嗎,?你真的打算一直做程序員嗎,?
FlyDragon:思想的認(rèn)識(shí)升華到你這個(gè)層次需要時(shí)間和好的引導(dǎo)。真正埋頭于技術(shù),,而不參與社區(qū)交流的人很難走出自己的瓶頸,!
朝_夕:博主的觀點(diǎn)正好描述了我目前的狀態(tài),作為一個(gè)以.net 技術(shù)來(lái)混煩吃的技術(shù)人員來(lái)說(shuō),,當(dāng)我掌握的.net 技術(shù)越高深,,在工作中體現(xiàn)的價(jià)值就越大,獲得的報(bào)酬就越多,,使我不得不專(zhuān)注于.net 的技術(shù),;但微軟的技術(shù)更新得那么快,、那么多,對(duì)于我這個(gè)資質(zhì)比較普通的腦袋來(lái)說(shuō),,實(shí)在是有心無(wú)力……目前趁著工作任務(wù)比較少,,學(xué)習(xí)了下python, 和用下Linux,釋放下滿(mǎn)腦都是.net的大腦,。
JaiHo:很高興我已經(jīng)和VS無(wú)關(guān)了,,曾經(jīng)一次裝VS快一個(gè)小時(shí)后,我就不再用了,,以前用VS學(xué)C++和C,,后來(lái)發(fā)現(xiàn)很多問(wèn)題,就用gcc編譯器了,。我已經(jīng)脫離IDE了,,工作以來(lái)還未用IDE,感覺(jué)純文本編譯器vim很好,。
llzhzhbb:執(zhí)拗于一個(gè)平臺(tái)和刻意使用多個(gè)平臺(tái)其實(shí)本質(zhì)上沒(méi)差別,都是認(rèn)為鐮刀的意義大于麥子,。
午后的小睡:相比微軟,,當(dāng)蘋(píng)果程序員吧。蘋(píng)果對(duì)框架的推出和更改非常謹(jǐn)慎,,修改語(yǔ)法更是謹(jǐn)慎,,所以蘋(píng)果的系統(tǒng)基本上都是增添API,不會(huì)像.net那樣,,微軟今天一個(gè)框架,,明天又一個(gè),沒(méi)完沒(méi)了的往C#里添加各種語(yǔ)言特性,,讓你把本來(lái)應(yīng)該學(xué)習(xí)先進(jìn)的開(kāi)發(fā)算法和方法的時(shí)間全浪費(fèi)在語(yǔ)言和框架的鉆研里了,。
hogface:技術(shù)眼界不斷的擴(kuò)張是必須的,我倒是認(rèn)為我們做技術(shù)的不應(yīng)該總在技術(shù)層面晃,,可以多多了解其他行業(yè)的運(yùn)作規(guī)則,。我們會(huì)獲取很多信息,有助于我們的程序設(shè)計(jì),。中國(guó)多數(shù)的程序員的歸宿在哪里呢,?當(dāng)你30歲了還在寫(xiě)代碼,而對(duì)其他行業(yè)不了解,,那你的職業(yè)壽命到頭了,。簡(jiǎn)單適用的技術(shù)應(yīng)用于行業(yè)運(yùn)作才是我們程序員的價(jià)值提現(xiàn),也是能夠生存下來(lái)的關(guān)鍵,??纯撮_(kāi)心網(wǎng),,優(yōu)酷,凡客誠(chéng)品等,。都是成功的案例,,一味談技術(shù)在中國(guó)多數(shù)人是沒(méi)希望,沒(méi)飯碗的,。
Keven Wang:有時(shí)候現(xiàn)實(shí)和我們的愿望還是有很大的差距的,。不過(guò)我很支持樓主的觀點(diǎn)。畢竟我們不可能一輩子做程序員,。在應(yīng)用中學(xué)習(xí),,在學(xué)習(xí)中應(yīng)用。帶著任務(wù)性的學(xué)習(xí)是最快的,。
Jeffrey Zhao:
引用 午后的小睡:相比微軟,,當(dāng)蘋(píng)果程序員吧。蘋(píng)果對(duì)框架的推出和更改非常謹(jǐn)慎,,修改語(yǔ)法更是謹(jǐn)慎,,所以蘋(píng)果的系統(tǒng)基本上都是增添API,不會(huì)像.net那樣,,微軟今天一個(gè)框架,,明天又一個(gè),沒(méi)完沒(méi)了的往C#里添加各種語(yǔ)言特性,,讓你把本來(lái)應(yīng)該學(xué)習(xí)先進(jìn)的開(kāi)發(fā)算法和方法的時(shí)間全浪費(fèi)在語(yǔ)言和框架的鉆研里了,。
你搞笑,obj-c的年年加新特性,。蘋(píng)果系統(tǒng)增加API,,微軟就不是了?
蘋(píng)果出一個(gè)GCD,,你們嗷嗷叫好,。微軟加一個(gè)TPL,你們就說(shuō)冗余,。兩個(gè)tmd是一種東西好不好,。
要說(shuō)學(xué)習(xí)先進(jìn)的開(kāi)發(fā)方法和算法和理論,學(xué)C#絕對(duì)比obj-c有價(jià)值,,如今obj-c的興起完全是iPhone等等在商業(yè)上的成功,。
你談比賺錢(qián)倒也罷,你比“長(zhǎng)進(jìn)”,,這不是扯蛋么,。
午后的小睡:
@Jeffrey Zhao
您不是個(gè)C/C++程序員,不知道微軟的開(kāi)發(fā)工具是多么郁悶的東西,,我這里不是怪微軟,,因?yàn)槲④浀逆?zhèn)山之寶是Windows,,如果允許程序員在Windows下寫(xiě)的程序可以隨便移植到別的平臺(tái)上,對(duì)微軟來(lái)說(shuō)那是致命的,。所以當(dāng)初IE擅自修改HTML的支持搞得Web開(kāi)發(fā)人員暈頭轉(zhuǎn)向,,它不去支持OpenGL,卻去搞D3D,,它擅自修改Java,,JDC不高興它才搞的C#,不光是開(kāi)源軟件,,任何平臺(tái)中立的標(biāo)準(zhǔn)微軟都一定要單開(kāi)一套,,所謂Mono的跨平臺(tái)也是個(gè)笑話(huà),我問(wèn)過(guò)很多用過(guò)的人都不建議使用它,,都是說(shuō)不到萬(wàn)不得已,,用.net還是遷移到Windows平臺(tái)上好。
我以前寫(xiě)Cygwin/Mingw/Linux的程序,,想用個(gè)IDE提高效率,,用了下VS,一看它生成的模板程序就放棄了,,微軟連STD C++都不放過(guò),,你對(duì)C++生成托管代碼或者什么框架我無(wú)所謂,如果在語(yǔ)法級(jí)標(biāo)準(zhǔn)支持的有差異,,甚至另立新語(yǔ)法挖空心思逼迫程序員轉(zhuǎn)用微軟獨(dú)有的東西那就沒(méi)法忍受了。
Obj-C不過(guò)是C/C++的擴(kuò)展,,它不像微軟從語(yǔ)法級(jí)變更了C/C++,,你可以使用所有既有的庫(kù)和標(biāo)準(zhǔn)代碼,實(shí)際上除了圖形界面相關(guān)的部分,,根本沒(méi)必要寫(xiě)Obj-C的代碼,,蘋(píng)果的新Obj-C前端CLang也沒(méi)有對(duì)C/C++在語(yǔ)法級(jí)做變更,而是強(qiáng)調(diào)遵從標(biāo)準(zhǔn),。蘋(píng)果修改Objc-C從來(lái)只修改它擴(kuò)展的那部分,,從來(lái)不會(huì)對(duì)C/C++本身動(dòng)手術(shù),這就是區(qū)別,。
總之,,追蹤微軟的東西是最累人的,到處是Windows粘合陷阱,,稍不留神寫(xiě)的東西就變成了Windows依賴(lài),,哪怕是某些明明是邏輯公共的部分,當(dāng)然,,如果發(fā)誓只給Windows平臺(tái)寫(xiě)程序是另一回事,。
Jeffrey Zhao:
@午后的小睡
說(shuō)obj-c是c++擴(kuò)展,?無(wú)語(yǔ)啊,只是c擴(kuò)展而已,。VC++不支持C++標(biāo)準(zhǔn),?求證。
IE的標(biāo)準(zhǔn)問(wèn)題,,那是Web標(biāo)準(zhǔn)看IE不爽故意定成不一樣的,,請(qǐng)分清先后順序。
微軟現(xiàn)在一直擁抱標(biāo)準(zhǔn),,請(qǐng)更新您的思路,,還D3D,Java呢,,什么年代的事情,。
擴(kuò)展之類(lèi)的誰(shuí)都再做,IE有擴(kuò)展,,Opera有擴(kuò)展,,Mozilla有擴(kuò)展,WebKit有擴(kuò)展,。而且你不也說(shuō),,obj-c是c的擴(kuò)展么,呵呵,。
至于說(shuō)mono是笑話(huà)的人,,要么本來(lái)就看和.NET有關(guān)的東西不爽,要么是不知道m(xù)ono現(xiàn)在是多牛,。
午后的小睡:
@Jeffery Zhao
obj-C還包括obj-C++,,它不過(guò)是C/C++語(yǔ)法上加了Smaltalk類(lèi)語(yǔ)法擴(kuò)展(所有用@符號(hào)開(kāi)始的部分),我愛(ài)用C++和STL,,天天在用,。XCode目前用的是gcc和g++前端,將來(lái)CLang對(duì)C++標(biāo)準(zhǔn)支持達(dá)標(biāo)了,,將會(huì)替代gcc前端,,參見(jiàn)www.llvm.org。
VC++對(duì)標(biāo)準(zhǔn)支持的爛,,這個(gè)所有用過(guò)VC++的人都知道,,據(jù)說(shuō)到了2008比較好了,但是到了2010就是另一番天地了,。你現(xiàn)在用VS2010生成一段C++ HelloWorld,,你去給C++程序員看,他肯定說(shuō),這是什么C++,?這是.net代碼吧,。
SnowDreamist:
@午后的小睡
OpenGL本身就有問(wèn)題,他更適合于工業(yè)級(jí)別的渲染但對(duì)于計(jì)算機(jī)游戲的支持并不到位,。Mono現(xiàn)在做的很強(qiáng),,我想你才是沒(méi)有用過(guò)mono的人,不得不說(shuō),,在SL5推出之前,,MoonLight的硬件加速要比SL4,微軟官方的性能要好,,你都視而不見(jiàn)嗎,?Cygwin我裝了一個(gè)小時(shí)沒(méi)有完成果斷殺掉進(jìn)程了。雖然我也很喜歡Linux的命令行和那些漂亮的小工具,,工作效率很高,,但是這并不足以成為謀生手段。至于C++標(biāo)準(zhǔn),,簡(jiǎn)直就是笑話(huà),。我在學(xué)習(xí)編譯原理的時(shí)候,老師就說(shuō)C++是為編譯器作者創(chuàng)造的一門(mén)語(yǔ)言,,而不是編程人員,。C++用的很多,但不能說(shuō)明C++就是一門(mén)優(yōu)秀的語(yǔ)言,,他太復(fù)雜了,,讓機(jī)器自動(dòng)生成吧。Gcc的作者同樣拋棄了#pragma開(kāi)關(guān),,這也是對(duì)標(biāo)準(zhǔn)的篡改,,也沒(méi)好到哪兒去。
ocean:
有些跑題了,。
真正的主題應(yīng)該是專(zhuān)注于一項(xiàng)技術(shù),培養(yǎng)自己的特長(zhǎng),,增加自己的核心競(jìng)爭(zhēng)力,。而不應(yīng)該每樣技術(shù)都去學(xué),最后搞得沒(méi)有一樣精通,,也沒(méi)有核心競(jìng)爭(zhēng)力,。多學(xué)一些,多看一些,,多關(guān)注一些是好事,,但是不要顛倒次序,一定要專(zhuān)注。
至于語(yǔ)言哪個(gè)好如個(gè)不好,,這個(gè)爭(zhēng)論起來(lái)就大了,,就像你用VS寫(xiě)程序,卻非要在Linux上跑,,這就是蛋疼的事情,,你選擇了.NET,當(dāng)然應(yīng)該基于微軟的平臺(tái),。你選擇了iphone平臺(tái),,那你完全可以用object-c,什么樣的平臺(tái)上有什么樣的技術(shù),,選對(duì)平臺(tái),,選對(duì)技術(shù)也是一種能耐。用linux,,不用php而用asp.net就是蛋疼,,用windows,不用.NET而用java也很蛋疼,。
雖說(shuō)跨平臺(tái)是好事,,我這么多年見(jiàn)過(guò)這么多大企業(yè),還真沒(méi)見(jiàn)過(guò)有企業(yè)把自己的應(yīng)用從一個(gè)平臺(tái)遷移到另外一個(gè)平臺(tái)的,,別說(shuō)從linux遷移到windows,,就是從同樣在unix/linux下將websphere遷移到到weblogic的都沒(méi)看到。一個(gè)大型應(yīng)用一旦運(yùn)用起來(lái),,再去遷移基礎(chǔ)平臺(tái)本身而是蛋疼,。
Jeffrey Zhao:
@午后的小睡
嗯嗯,obj-c對(duì)c語(yǔ)言的擴(kuò)展,,WebKit,,F(xiàn)irefox,Opera對(duì)標(biāo)準(zhǔn)的擴(kuò)展都是先進(jìn)生產(chǎn)力,。IE的擴(kuò)展就是邪惡,。蘋(píng)果對(duì)obj-c每年都加新特性就是發(fā)展生產(chǎn)力,C#兩三年一次就是追逐新技術(shù),。我懂的,。
話(huà)說(shuō)我不寫(xiě)C++,但我身邊寫(xiě)C++的人太多了,,從VS 2008轉(zhuǎn)到VS 2010的人也很多,。而且太多C++項(xiàng)目在Windows下是使用VC++編譯器,在*nix下面用gcc,,按你的說(shuō)法,,我實(shí)在理解不了這種情況是怎么回事。
你不妨先說(shuō)說(shuō),有空我也問(wèn)問(wèn)那些C++程序員,。
引用 迂腐啊迂腐: 2.為什么.net能輕易實(shí)現(xiàn)的東西,,您要去用php做,您是在炫技術(shù)么,?
不說(shuō)別的,,今天我還真聽(tīng)說(shuō)了公司里某個(gè)項(xiàng)目是這個(gè)情況,嘿嘿,。
ocean:
用VC++6.0確實(shí)能讓一些不太符合C++標(biāo)準(zhǔn)的代碼編譯通過(guò),,不過(guò)這也要看程序員了,如果程序員比較遵循標(biāo)準(zhǔn),,也同樣可以用VC++6.0寫(xiě)出完全規(guī)范的代碼來(lái),,這點(diǎn)還是用 VC++ 2010吧,VC++ 2010支持最新的C++標(biāo)準(zhǔn),,不過(guò)這樣也帶來(lái)了升級(jí)的一個(gè)問(wèn)題,,原來(lái)一些在VC++6.0下寫(xiě)的不太規(guī)范的代碼,在VC++ 2010上就編譯不過(guò)去了,。
至于IE的擴(kuò)展,,更多的基于歷史問(wèn)題,因?yàn)闃?biāo)準(zhǔn)的定制太慢,,導(dǎo)致IE不得已自己定了很多東西,。同時(shí)在10幾年前,網(wǎng)頁(yè)編輯器,,特別是所見(jiàn)即所得的編輯器,,很多都不符合標(biāo)準(zhǔn),所以導(dǎo)致做出來(lái)的網(wǎng)頁(yè)大多不符合標(biāo)準(zhǔn),。畢竟做網(wǎng)頁(yè)的不是程序員,,并不懂什么標(biāo)準(zhǔn),甚至很多html里面都有錯(cuò)誤,,比如漏掉反標(biāo)簽,,或者反標(biāo)簽錯(cuò)位等等。為了更好的容錯(cuò)性,,IE可以很完美的將這些頁(yè)面顯示出來(lái),,這實(shí)際上是程序健壯性的一種表現(xiàn)。我們?cè)谟?jì)算機(jī)課程上都學(xué)過(guò),,程序健壯性是很重要的,就是在用戶(hù)錄入錯(cuò)誤的時(shí)候能夠有正確的提示或者修正,,舉個(gè)例子,,比如我們現(xiàn)在寫(xiě)程序,會(huì)經(jīng)常將用戶(hù)輸入的全角的數(shù)字替換成半角的數(shù)字,因?yàn)槿绻闾崾居脩?hù)不能用全角輸入數(shù)字,,那用戶(hù)可能并不清楚什么是半角什么是全角,,健壯性在于我能夠很好的修正用戶(hù)輸入的這些錯(cuò)誤。對(duì)于html這么復(fù)雜的東西,,如果沒(méi)有自動(dòng)修正就等于很多網(wǎng)頁(yè)都看不了,,所以在早期,這種做法是可取的,。很多東西要從歷史的角度去看,,問(wèn)題產(chǎn)生都和起產(chǎn)生的背景相關(guān)。
午后的小睡:
爭(zhēng)哪種技術(shù)好很無(wú)聊,。廠商玩壟斷也好,,玩革新也好,那是廠商的事情,,我很簡(jiǎn)單,,我為錢(qián)工作,雖然我也喜歡鉆研技術(shù),。我不會(huì)為了反微軟而反微軟,,應(yīng)該明白一件事情,反微軟的平臺(tái)壟斷,,是為了賺錢(qián),!因?yàn)椋忻嫔掀脚_(tái)越多,,越混亂,,搞開(kāi)發(fā)的人才好賺錢(qián),才意味著更多的機(jī)會(huì),,平臺(tái)間競(jìng)爭(zhēng)越多,,大廠商才會(huì)為了吸引我們這些小開(kāi)發(fā)者進(jìn)行讓利,一旦誰(shuí)獲得了統(tǒng)治地位,,開(kāi)發(fā)人員必然會(huì)同質(zhì)化,,開(kāi)發(fā)人員的價(jià)值就低了,至于什么節(jié)省社會(huì)資源,,哪種技術(shù)更優(yōu)秀之類(lèi)的P話(huà),,能比進(jìn)你錢(qián)包里的錢(qián)實(shí)在?蛋糕就那么大,,廠商占的多了,,咱們開(kāi)發(fā)人員自然占的就少了,博主的意思可以這么理解,,一旦發(fā)現(xiàn)某塊蛋糕自己能分的越來(lái)越少了,,必須能立刻跳到另一塊蛋糕上去,!
szse:
W3C就是個(gè)笑話(huà)。至于OpenGL和D3D之爭(zhēng),,游戲業(yè)同時(shí)做過(guò)兩種東西的人怕是還真沒(méi)有站在OpenGL這邊的,。標(biāo)準(zhǔn)的不等于就是好的,標(biāo)準(zhǔn)協(xié)會(huì)歸根結(jié)底還不是一群大頭搶話(huà)語(yǔ)權(quán),?
Hunts.C:
可惜很多人都不是真正的程序員,,所以你善意的提醒,受眾不多,。很大一部分軟件開(kāi)發(fā)從業(yè)人員并沒(méi)有給自己加上程序員的社會(huì)屬性,,并以此出發(fā),作為未來(lái)數(shù)年甚至是數(shù)十年的努力方向,。僅僅是年少無(wú)知時(shí)被忽悠學(xué)了這個(gè)學(xué)科,,或是一些非主觀的原因最終從事了這個(gè)行業(yè)的工作,如今難以脫離,。在這片神奇的土地上,,做真正的自己是不容易的,你懂得,。所以請(qǐng)不要失望,,繼續(xù)分享你認(rèn)為有意義的觀點(diǎn)。
chenkai:
最近很忙都沒(méi)有時(shí)間寫(xiě)博,。說(shuō)到一門(mén)技術(shù)專(zhuān)業(yè)程度上來(lái),,個(gè)人認(rèn)為大部分程序員都局限在企業(yè)的選擇之上。當(dāng)然這也無(wú)可厚非,,但是我曾經(jīng)無(wú)數(shù)次強(qiáng)調(diào)過(guò)一個(gè)程序員職業(yè)修養(yǎng)來(lái)說(shuō),,開(kāi)放是很重要的。這也是我考察其他程序員一個(gè)”另類(lèi)”的標(biāo)準(zhǔn),, 技術(shù)范圍,、編程思想、視野的開(kāi)放等等,,這也無(wú)疑也成就不同程序員各自的夜郎之國(guó),。不得不說(shuō)這是一個(gè)很現(xiàn)實(shí)也很悲哀的事情。但愿你的提醒能喚醒更多的程序員同行….
Qinw:
很好,,和我的學(xué)習(xí)方向一致,,這就是大師的學(xué)習(xí)方式,金字塔學(xué)習(xí)法,。我現(xiàn)在也一直在學(xué)習(xí)其他語(yǔ)言,,像ruby,python C/c++, 匯編等,發(fā)現(xiàn)這個(gè)世界原來(lái)是那么大,,那么精彩,,最主要的是讓我激情源源不,,但現(xiàn)在脫離IDE我的技術(shù)還不行,玩過(guò),,但我經(jīng)常崩潰而死。
東風(fēng)31:
非常棒的文章,。也許,,在國(guó)內(nèi),只有這種興趣,,這種孜孜不倦的探索與追求,,才能在技術(shù)領(lǐng)域 make a difference.
一杰:
對(duì)于本文的理解,不對(duì)的請(qǐng)指點(diǎn):其主要宗旨是多接觸行業(yè)內(nèi)的事物,,開(kāi)拓思維,,才能深入其本質(zhì),不只是從微觀的角度分析與理解自有的語(yǔ)言(不僅是.NET程序員),;只有宏觀的看待事物才能更好的把握住好的方向,;
學(xué)習(xí)或使用語(yǔ)言也是一種投資;從投資學(xué)的角度說(shuō):就是所有的雞蛋放在一個(gè)籃子里,,風(fēng)險(xiǎn)很高,,因?yàn)檎l(shuí)也不能保證你的籃子是永久存在的或品質(zhì)優(yōu)良;多關(guān)注周?chē)幕@子,,就可以發(fā)現(xiàn)自有籃子的不足,,才可以修補(bǔ)當(dāng)前籃子的不足;當(dāng)然也可以換一只更加優(yōu)秀的籃子來(lái)投資,,誰(shuí)會(huì)害怕有更好的收益呢,?
空明流轉(zhuǎn):
@午后的小睡
MSVC從2002開(kāi)始,就開(kāi)始對(duì)標(biāo)準(zhǔn)有很好的兼容性了,。你懂不懂為什么VC6對(duì)標(biāo)準(zhǔn)兼容不好?。恳?yàn)閂C6在標(biāo)準(zhǔn)之前推出的,。用的是當(dāng)時(shí)標(biāo)準(zhǔn)的草案,。VS2010?你看看GCC 4.5的Feature list,,再看看C++1x的標(biāo)準(zhǔn)草案,,你就懂了。
老壞貓:
實(shí)際上,,感覺(jué)這里很多喜歡不喜歡.NET的人其實(shí)并不了解.NET,。一個(gè)真正的.NET高手要了解計(jì)算機(jī)體系的絕大部分知識(shí),并能權(quán)衡利弊,,妥善運(yùn)用,。大部分還不熟練.NET的人企圖淺嘗輒止學(xué)其他語(yǔ)言,,不僅起不到樓主所謂集思廣益的效果,反而狗熊掰包谷一樣一事無(wú)成,。
李曉強(qiáng):
引用 Jacky Song:真正的程序員肯定不會(huì)限定在.net平臺(tái),,程序員就是為了解放生產(chǎn)力,提高工作效率而生的,。其實(shí)除.net以外,,還有其他很好玩的技術(shù)或工具,比如你所說(shuō)的編輯器之神vim, 無(wú)論是windows平臺(tái)還是linux平臺(tái), 都是其它編輯器無(wú)法比擬的(誰(shuí)用誰(shuí)知道),。腳本的話(huà)python, php, 以及各平臺(tái)的shell, 這些都是可以大大的提高工作效率,。總之,,計(jì)算機(jī)就是一門(mén)藝術(shù),,越往里面研究越覺(jué)得它是劃時(shí)代的奇跡,這玩意太神奇了!!
額,,這個(gè)所謂的神器VIM不知道有沒(méi)有如下功能:
1) 腳本智能提示,,那種簡(jiǎn)單的關(guān)鍵字提示的就別說(shuō)了。(別說(shuō)我菜,,大多數(shù)情況下我還是記得API的,,但是一個(gè)回車(chē)就能節(jié)約輸入的情況下,我覺(jué)得還是值的,,而且作為一個(gè)Web開(kāi)發(fā)人員,,很無(wú)奈至少我需要同時(shí)使用CSS,HTML,JS,C#,VB.NET).
2) 格式化代碼,我是個(gè)很懶的人,,比如寫(xiě)XHTML屬性懶得寫(xiě)引號(hào),,寫(xiě)C#,js之流的代碼不想手工用Tab鍵格式化代碼,所以我需要一種一個(gè)快捷鍵就能按照我設(shè)定的規(guī)則來(lái)格式化我的代碼的工具,。(Ctrl+E,D VS中輕松搞定)
3) 項(xiàng)目管理,,額,現(xiàn)代的程序員,,通常都是把自己的代碼分成各個(gè)項(xiàng)目來(lái)開(kāi)發(fā)的,。
4) 版本控制和團(tuán)隊(duì)協(xié)作工具(BUG管理,任務(wù)分配之類(lèi)的)。
…
如果沒(méi)有,,請(qǐng)記住這句話(huà):VIM和VS不具有可比性,,一個(gè)只是文本編輯器,另一個(gè)是IDE,;一個(gè)是播種機(jī),,一個(gè)是聯(lián)合收割機(jī)…
另外VS的快捷鍵用起來(lái)比VIM有效率多了,我用VS基本上不用鼠標(biāo)的,。
思考-總結(jié):
樓主,,頂你,,我覺(jué)得說(shuō)的很有道理的。
舉個(gè)例子說(shuō)明下,,很多人用nhibernate ,,里面的實(shí)體類(lèi),要么繼承于接口,,要么是virtual的,。但是java下,好像就沒(méi)有這個(gè)限制,? 為什么呢?其實(shí)深究下,,能明白,,java下都是virtual call, 而在.net, 為了提升效率,有call 和 virtual call 之分,。 之后再看看 ioc 的實(shí)現(xiàn)原理,大概也能明白一些了,。
其實(shí)很多技術(shù)是相通,你在看別的技術(shù)的時(shí)候,,可以帶著自己所熟悉的平臺(tái)的問(wèn)題,, 去學(xué)習(xí)和去看,一是開(kāi)闊了眼界,,另外對(duì)你理解自己熟悉的平臺(tái)有更深入的理解,。
讀書(shū)也是,很多人基本上看書(shū)和資料,,都是走馬觀花,,基本上看完就忘, 如果能做到帶著問(wèn)題去看,,或者看的時(shí)候能想著自己曾經(jīng)遇到過(guò)的同類(lèi)的問(wèn)題,,吸收新的知識(shí),會(huì)更快更牢更扎實(shí),。
李曉強(qiáng):
哎,,發(fā)現(xiàn)很多人罵微軟技術(shù)更新快的。這個(gè)IT本來(lái)就是個(gè)快速發(fā)展的行業(yè),,發(fā)展快總比發(fā)展慢要好吧,,我覺(jué)得微軟發(fā)展的還是有點(diǎn)慢了。knect之類(lèi)的技術(shù)要是早出現(xiàn)幾年多好啊,,啥時(shí)候才能達(dá)到讓計(jì)算機(jī)擴(kuò)展人的大腦的思維能力啊…比如我一個(gè)想法能夠查詢(xún)?nèi)袊?guó)的資料文獻(xiàn),。
Jacky Song:
@李曉強(qiáng)
vs本身是集開(kāi)發(fā),編譯為一體的,,但論文本編輯功能,,vs能實(shí)現(xiàn)的,,沒(méi)有vim搞不定的,vs搞不定的,,vim同樣能搞定(智能提示,,自動(dòng)完成,列操作,,語(yǔ)法高亮….) 都可以自己配,,網(wǎng)上n多vim的牛比插件,你試用以后就知道他的強(qiáng)悍,,vim在文本編輯器領(lǐng)域當(dāng)之無(wú)愧是No.1,。
EricZhang(T2噬菌體) :
@李曉強(qiáng)
呵呵,說(shuō)起來(lái)還是Windows程序員和*nix程序員在思考問(wèn)題方式上的不同,。您作為Windows程序員,,習(xí)慣使用大而全的東西。而*nix程序員習(xí)慣把小而靈巧的東西組合起來(lái)使用,,例如您說(shuō)到的版本控制,,vim本身當(dāng)然不會(huì)有,因?yàn)関im對(duì)*nix程序員來(lái)說(shuō)就是編輯器,,版本控制我們有svn和git啊,,我們也可以通過(guò)配置(vim或emacs的可配置性和可擴(kuò)展性超乎你的想象)將snv或git更方便地集成到vim中。至于代碼格式化,,VS給你提供了有限的功能,,而vim或emacs提供了無(wú)限的可能,只要有需要,,自己寫(xiě)擴(kuò)展腳本就行了,,例如你在emacs下輸入“M-x sort lines”看看效果。至于您提到的智能提示啥的在vim中更是小菜一碟,,插件遍地飛,。最后,我絕不是說(shuō)IDE不好,,只是說(shuō)習(xí)慣了IDE的朋友抽點(diǎn)寶貴時(shí)間適當(dāng)脫離IDE玩玩vim和shell會(huì)更好,。
李曉強(qiáng):
額,這個(gè)各種編輯器啥的沒(méi)少玩,,就是覺(jué)得忒麻煩了,,生產(chǎn)力太低。在了解VS做了什么的情況下,,我覺(jué)得嘛,,有奔馳,完全沒(méi)必要騎自行車(chē)。呵呵,,個(gè)人意見(jiàn),。大家引入計(jì)算機(jī)就是為了降低難度,省點(diǎn)腦細(xì)胞,,你要說(shuō)我用個(gè)Emacs,VIM還得自己寫(xiě)寫(xiě)腳本擴(kuò)展(何況格式化源代碼之類(lèi)的擴(kuò)展不是一兩百行代碼就能搞定的事兒),,那還是有點(diǎn)不合適吧。
@Jacky Song
呵呵,,自動(dòng)完成,,列操作,語(yǔ)法高亮這種就不說(shuō)了,,大家都有,,沒(méi)啥好比較的。智能提示就不一樣了,,VS的智能提示有類(lèi)型推斷而且針對(duì).NET 平臺(tái)和JS的智能提示更是編譯性的,,何況VIM那么多擴(kuò)展插件良莠不齊…WIN下使用VIM裝插件后,崩潰的不是一次兩次啊,。不說(shuō)了,個(gè)人意見(jiàn),,不過(guò)最牛的是VS可以在裝了一些插件后切換成VIM模式,,完全可以滿(mǎn)足您的要求。
Jeffery Zhao:
其實(shí)吧,,VIM的確是好東西,,但是舉例子的時(shí)候一定要靠譜,比如文章里寫(xiě)的東西,,直接ctrl+c,,ctrl+v,和yyp是一個(gè)效果,,不用選中該行的,。光標(biāo)到行首,也是一個(gè)home鍵搞定,。VS也有快捷鍵,,也可以擴(kuò)展,用起來(lái)也可以不碰鼠標(biāo),。VS連VIM插件都有,,也有不少人用,我也在用,,既可以VIM又有智能提示,。說(shuō)到智能提示啊重構(gòu)啊,在VIM要做到VS,NetBeans這種程度也是很難的,,插件找不到好的(你說(shuō)你不需要?jiǎng)t是另一回事情了),。
徐少俠:
本質(zhì)是同意樓主的說(shuō)法的。問(wèn)題是樓主的打擊面太大,。尤其是那個(gè)IDE的說(shuō)法,。不過(guò)其實(shí)樓主說(shuō)的很清楚,是在工作之余去耍耍,。耍過(guò)了,,尤其是經(jīng)歷了編譯的全流程。會(huì)學(xué)到和領(lǐng)悟到更多的,。而工作的時(shí)候,,快捷鍵的優(yōu)勢(shì)足以將vi搞下去了。不用IDE,,不是僅僅不用它,,而是為了去體會(huì)平時(shí)更多我們不去體會(huì)的東西。
llzhzhbb:
我覺(jué)得程序員應(yīng)該把自己經(jīng)??紤]的問(wèn)題作一下分析,,哪些是和語(yǔ)言及平臺(tái)相關(guān)的,哪些是和語(yǔ)言無(wú)關(guān)的,。比如數(shù)據(jù)結(jié)構(gòu),、通信、圖形,、外接設(shè)備等,,絕大部分都和語(yǔ)言無(wú)關(guān);嵌入式系統(tǒng),、驅(qū)動(dòng)等,,和語(yǔ)言及平臺(tái)的關(guān)系較大,不過(guò)更多的還是與操作系統(tǒng)的知識(shí)有關(guān),。把問(wèn)題的這些層面剝離之后,,真正和語(yǔ)言相關(guān)的其實(shí)并不多。語(yǔ)言不過(guò)是提供了一個(gè)門(mén),,人們可以從這個(gè)門(mén)進(jìn)去觀看大廳里的東西,,或者語(yǔ)言是一種交流的工具,人們只是采用了這一種語(yǔ)言和某個(gè)龐然大物對(duì)話(huà),,而這些真正的交流對(duì)象,,不會(huì)天然的歧視你從哪個(gè)門(mén)進(jìn)入或者采用何種語(yǔ)言。
gussing:
引用 午后的小睡: VC++對(duì)標(biāo)準(zhǔn)支持的爛,,這個(gè)所有用過(guò)VC++的人都知道,,據(jù)說(shuō)到了2008比較好了,,但是到了2010就是另一番天地了。你現(xiàn)在用VS2010生成一段C++ HelloWorld,,你去給C++程序員看,,他肯定說(shuō),這是什么C++,?這是.net代碼吧,。
有的人就是分不清c++和c++/cli之間的區(qū)別。,。,。不過(guò)這個(gè)真怪微軟,搞c++/cli這么廢的東西,。,。 vs2010對(duì)c++標(biāo)準(zhǔn)的支持是最好的,沒(méi)有之一,,具體請(qǐng)自行g(shù)oogle
午后的小睡:
@gussing
我確實(shí)沒(méi)仔細(xì)看,,我也知道不去理會(huì)那個(gè)自動(dòng)模板可以寫(xiě)純C++,可能我真的是在FUD吧,,不過(guò)我沒(méi)太理會(huì)編譯出來(lái)的代碼到底是CLI還是Native Code,。不過(guò), VS2010確實(shí)在某些方面和GCC4解釋的不太一樣,,我記得在聲明會(huì)拋異常的函數(shù)時(shí),,是否需要列舉異常這個(gè)方面,兩個(gè)編譯器有一個(gè)就會(huì)吐警告,,另一個(gè)不會(huì),我當(dāng)時(shí)懶得再去翻看標(biāo)準(zhǔn)文檔里是怎么敘述這一段了,。VS2010就用了一下,,印象是對(duì)C++語(yǔ)法進(jìn)行了擴(kuò)充,還提供了很多替代標(biāo)準(zhǔn)庫(kù)的東西進(jìn)去,,我記得很多年前Windows號(hào)稱(chēng)posix標(biāo)準(zhǔn)完全兼容,,那個(gè)時(shí)候我水平差,怎么也沒(méi)能順利的使用posix標(biāo)準(zhǔn)庫(kù),,最后程序與系統(tǒng)打交道的部分全使用的是Windwos API,。還是那句話(huà),不論是什么,,微軟一定會(huì)通過(guò)再發(fā)明一遍輪子的方法盡量讓你寫(xiě)微軟工具粘合的東西,。
小魚(yú)仔:
(╯▽╰)╭,.NET平臺(tái)不夠好嗎,?為什么這年頭總有些人明明很簡(jiǎn)單的東西(用C#實(shí)現(xiàn))要用那些很復(fù)雜而且效率低下的語(yǔ)言或工具去實(shí)現(xiàn)呢,?顯拽嗎?同為做一個(gè)項(xiàng)目,我用.NET一個(gè)星期,,你用匯編做了兩年,,我會(huì)認(rèn)為你很牛逼嗎?誰(shuí)說(shuō).NET的程序員就菜,,Microsoft Press的英文原版書(shū)你看過(guò)多少(像《CLR via C#》),,研究過(guò)多少高級(jí)編程?技術(shù)沒(méi)有好壞之分,,只有適不適合之分,。每一種技術(shù)都有它最擅長(zhǎng)發(fā)揮重要的地方,你沒(méi)看到人家卓越網(wǎng)那么大的也是aspx堆出來(lái)的代碼,,可咱們學(xué)校的教務(wù)網(wǎng)站也是ASP.NET寫(xiě)的,,但是超過(guò)一千人網(wǎng)上選課就崩潰了!那些做網(wǎng)站的老師還在抱怨C#太爛,,還沒(méi)有某某…好呢,?那你用記事本寫(xiě)HTML去堆吧,我會(huì)覺(jué)得你真的很牛逼,!你何不說(shuō)我就在一臺(tái)裸機(jī)上連續(xù)按0和1,,一個(gè)上午一個(gè)操作系統(tǒng)就出來(lái)了,那你更牛逼了,!學(xué).NET沒(méi)有錯(cuò),,它本身就是一把鋒利的刀,不要再去像其它語(yǔ)言一樣去磨了,,但是你不能因?yàn)樗呀?jīng)夠鋒利了而放低對(duì)自己的要求,,只滿(mǎn)足于拖拖控件,那才是真正的讓人鄙視,。真正的.NET龐大著呢,。
Ivony…:
引用 EricZhang(T2噬菌體):“呵呵,說(shuō)起來(lái)還是 Windows程序員和*nix程序員在思考問(wèn)題方式上的不同,。您作為Windows程序員,,習(xí)慣使用大而全的東西。而*nix程序員習(xí)慣把小而靈巧的東西組合起來(lái)使用,,例如您說(shuō)到的版本控制,,vim本身當(dāng)然不會(huì)有,因?yàn)関im對(duì)*nix程序員來(lái)說(shuō)就是編輯器,,版本控制我們有svn和git啊,,我們也可以通過(guò)配置(vim或emacs的可配置性和可擴(kuò)展性超乎你的想象)將snv或git更方便地集成到vim中。至于代碼格式化,,VS給你提供了有限的功能,,而vim或emacs提供了無(wú)限的可能,,只要有需要,自己寫(xiě)擴(kuò)展腳本就行了,,例如你在emacs下輸入“M-x sort lines”看看效果,。至于您提到的智能提示啥的在vim中更是小菜一碟,插件遍地飛,?!?br> LZ再一次的把程序員人為的劃分陣營(yíng),這個(gè)習(xí)慣不好,,必須指出,。
那么來(lái)討論問(wèn)題。 就說(shuō)那個(gè)無(wú)聊的yyp,,事實(shí)上VS也有很多插件,,也能整個(gè)Zhuangbility插件來(lái)解決yyp的問(wèn)題,那是不是VS也就成為神器了,? 開(kāi)拓眼界是好的,,不同平臺(tái)的用戶(hù)習(xí)慣不同也是對(duì)的。但外國(guó)的月亮就是圓的這就不對(duì)了,。 順帶說(shuō)yyp,,一般一個(gè)標(biāo)準(zhǔn)的Windows用戶(hù)(我)是這樣做的: HomeShift + ↓ + Del + Ins + Ins。
這不見(jiàn)得比yyp要繁瑣(事實(shí)上先要搞清楚自己在編輯狀態(tài)還是命令狀態(tài)和學(xué)習(xí)適應(yīng)就要花掉一段時(shí)間),,也不覺(jué)得會(huì)慢零點(diǎn)多少秒,,其次,這個(gè)方法在VS,、記事本,、Word、或是現(xiàn)在這個(gè)博客園的輸入框里面都能用,。請(qǐng)問(wèn)那個(gè)神器要怎么才能搞定,?
huhuc:
不要這么急著發(fā)表自己看法,像yyp這樣的功能通過(guò)宏就可以實(shí)現(xiàn),,而且很多編輯器就自帶復(fù)制當(dāng)前行功能,,就算沒(méi)有,,很多編輯器都可以寫(xiě)插件的,,就算還沒(méi)有,還可以像SQL Assistant那樣Hook窗口過(guò)程,,或者通過(guò)發(fā)送Windows消息讀寫(xiě)文本,。設(shè)計(jì)模式這種書(shū),千萬(wàn)不要看,,浮躁且膚淺,。我買(mǎi)過(guò)一本2手,,看了下目錄,和其它書(shū)一起論斤賣(mài)了,。
inhesoft:
vim和vs不是一個(gè)級(jí)別的東西,,不能相比,單純從編輯器的角度來(lái)看,,vim是很好,,個(gè)人感覺(jué),vim并不太適合windows下編程,,而是適合unix下編程,,unix下編程,函數(shù)名都很短,,一般推薦都用小寫(xiě),,而windows下的.net和win32 api函數(shù)我都很長(zhǎng),還要分出大小寫(xiě),,用起來(lái)就累了,,各有各的長(zhǎng)處。順帶說(shuō)一句,,vim的o相當(dāng)與vs的下的shift+enter,,不是有些同志說(shuō)的ctrl+c。
curer:
你的本意是好的,,但是在這篇文章中卻隱隱有把自己的觀點(diǎn)強(qiáng)加到所有.net開(kāi)發(fā)者上,。這種強(qiáng)盜邏輯是不是又掉入另一個(gè)盒子中了?每個(gè)人都有自己不同的經(jīng)歷,,把MS,Google大牛的例子生生的加在每個(gè)人身上合適么,?換句話(huà),加在自己身上就肯定合適么,?呵呵,,送T2一句話(huà)“求同存異”。 不管是大牛,,還是菜鳥(niǎo),。都有我們值得學(xué)習(xí)的地方。和大牛對(duì)話(huà)能夠給出醍醐灌頂?shù)臅晨?,和菜鳥(niǎo)對(duì)話(huà)則可以給我們發(fā)掘自己知識(shí)體系中的漏洞,。和菜鳥(niǎo)對(duì)話(huà),因?yàn)槟鞘且环N全新的角度,。甚至在我看來(lái)比大牛對(duì)話(huà)更有收獲,。因?yàn)椴粌H能夠收獲自己,還能和更多地人分享,。
你發(fā)現(xiàn)別人總是不能理解自己的意思,,為什么不反過(guò)來(lái)思考一些,,這么多人反對(duì),是不是自己有不足,?因?yàn)檫@篇文章的漏洞太多了,,是不是應(yīng)該抓緊機(jī)會(huì)重新回顧下?這種經(jīng)驗(yàn)類(lèi)文章,,本沒(méi)有對(duì)錯(cuò),。只是我們大部分都是典型的理科生,在隱隱的數(shù)學(xué)思維習(xí)慣支配下,,你文章中只要有漏洞,,那么你推出的結(jié)論就是大家不能接受的。更不說(shuō),,這篇文章漏洞百出,。
可以準(zhǔn)確的說(shuō),從這篇文章的本意來(lái)看,,并不算是一篇有價(jià)值的,。但是你卻可以反過(guò)來(lái)獲得更多的知識(shí)。想要成為大牛,,關(guān)鍵是能不能包容別人的不同觀點(diǎn),,并從中吸收經(jīng)驗(yàn)。而不是消極的說(shuō)“手賤,,不該寫(xiě)”這類(lèi)消極的語(yǔ)言,。呵呵,其實(shí)有這么多人糾你的錯(cuò)誤,,自己反而應(yīng)該感到幸福,。真的,我已經(jīng)很羨慕你了,。
fxs:
作為一個(gè)已經(jīng)使用4年的 Linux人,,我之前一值是使用Ubuntu,在公司的時(shí)候,,電腦也是裝的Ubuntu,,里面跑Virtualbox的xp做一些photoshop切圖的事情,后來(lái)煩Ubuntu不停更新,,而且系統(tǒng)比較耗資源,,換成debian一直用著。我用Linux不是為了裝B,,而是習(xí)慣了,,因?yàn)閄p經(jīng)常中毒,,而我又沒(méi)有錢(qián)買(mǎi)高配置的電腦,,也忍受不了殺毒軟件占據(jù)的資源,,用了這么久的Linux做過(guò)的PHP網(wǎng)站也很多了,并沒(méi)有像你說(shuō)的那樣神乎其神,,告訴你Linux其實(shí)一點(diǎn)都不好用,,shell?這個(gè)玩意垃圾的要死,,我這幾天寫(xiě)個(gè)腳本來(lái)自動(dòng)壓縮所有的js代碼,,當(dāng)然先是shell遍歷js文件,然后調(diào)用YUI的compressor,,你以為shell多好用,?連個(gè)子字符串查找功能都沒(méi)有,要剔除一些文件,,還得借助awk,,不要鼓吹vim,我在服務(wù)器上改東西必須用vim(難道指望用nano,?),,但是平常開(kāi)發(fā)還是用Netbeans,別的不說(shuō),,光是按Esc鍵都能讓你發(fā)火,,因?yàn)樵缙诘逆I盤(pán)是ESC鍵在現(xiàn)在的Tab鍵位置,所以很好按到,,但現(xiàn)在你基本買(mǎi)不到這樣的鍵盤(pán)了,。你鼓吹VIM,可見(jiàn)你并不熟練使用VIM,。
Linux/UNIX界的東西混亂的不是你能想像到的,,我們公司服務(wù)器有Debian, Freebsd, CentOS這三個(gè)系統(tǒng),光是apache的配置文件路徑,,F(xiàn)reebsd, CentOS, Debian這三個(gè)系統(tǒng)都放置的不一樣,,程序的安裝路徑更是亂七八糟,你真正整天跟這些個(gè)系統(tǒng)打交道,,就能把你煩死,。也只有你不懂,或者只懂個(gè)皮毛的時(shí)候,,才會(huì)覺(jué)得Linux/UNIX有多么高明,,對(duì)于.NET不想多說(shuō),我之前寫(xiě)過(guò)兩年的.NET,,不喜歡那些懂點(diǎn)Linux/Unix的人在.NET界鼓吹Linux/Unix,,并嘲笑.NET程序員,打魚(yú)的嘲笑種田的,,實(shí)在是沒(méi)有什么意思,!
你以為你懂那么多語(yǔ)言術(shù)語(yǔ)就很牛了,?程序員應(yīng)該專(zhuān)一,而不是像你那樣博而不專(zhuān),,你跟我很像,,你提到過(guò)的術(shù)語(yǔ)我都了解,還有很多你沒(méi)提到的我也了解,,Haskell,,Ocaml,你用過(guò)沒(méi),?Perl/Ruby/TCL腳本寫(xiě)過(guò)沒(méi),?GTK+寫(xiě)過(guò)沒(méi)?每半年學(xué)一種語(yǔ)言,,到最后你就成了什么都不會(huì)了,,專(zhuān)一 一點(diǎn)吧!
還有推薦你看一本書(shū)《UNIX痛恨者手冊(cè)》,,UNIX界不是你想像中的那么美好,。
省油的燈:
先贊一個(gè),這么年輕就有如此見(jiàn)的,,英雄出少年,,了不起!每個(gè)人都困在盒子里,,是每個(gè)人思維的界限,。不僅僅是自己建造的,也是企業(yè)文化和社會(huì)文化建造的,。如果要批判的是一個(gè)群體,,我認(rèn)為關(guān)注國(guó)內(nèi)程序員(其實(shí)C++程序員也是同樣的現(xiàn)狀)生存的土壤(哲學(xué)上又叫唯物史觀):粗制濫造的設(shè)計(jì),高耦合度成為主流,,低水平的重復(fù)開(kāi)發(fā),。有的程序員周末都沒(méi)時(shí)間來(lái)看你的大作,還在加班做低水平的維護(hù),,這將耗盡他們的青春,,你會(huì)不會(huì)覺(jué)得他們是閏土?試問(wèn)這樣的土壤怎么能生長(zhǎng)出參天大樹(shù)(林),?當(dāng)然,,這樣的現(xiàn)狀背后有它的原因的原因(哲學(xué)上又叫第一因)。
curer:
事實(shí)上,,我覺(jué)得,,如果你還有精力或是有不服輸?shù)木瘢鼞?yīng)該再寫(xiě)一篇更加嚴(yán)謹(jǐn)?shù)奈恼聛?lái)解釋自己的想法。沒(méi)辦法,,誰(shuí)讓大家都是理科生呢,。要知道我們可不是抱著看穿越小說(shuō)的心態(tài)來(lái)看的。
|