我為什么期待M#?
前段時(shí)間的報(bào)導(dǎo)“微軟將推新編程語(yǔ)言M#:系統(tǒng)編程級(jí)別的C#”, 第一眼看到并沒(méi)有當(dāng)初看到F#的那一種不安,反而感到欣喜,業(yè)界一直存在“語(yǔ)言論”討論c#、java、vb、c/c++等語(yǔ)言的優(yōu)勝略汰。當(dāng)然那個(gè)時(shí)候 我也是討論大軍的其中之一,但這一次我看到M#更多的是驚喜是喜悅或者說(shuō)是完全都是這一種感覺(jué),下面我會(huì)給大家分享一下我為什么會(huì)如此期待M#。
一些補(bǔ)充(2014-1-8 9:05)
評(píng)論很多,看來(lái)很多人誤解了,希望大家能多去百度、bing、Google一下在進(jìn)行評(píng)論,也是對(duì)自己的負(fù)責(zé)。
首先本文的M#跟這邊所指的m#不是一個(gè)東西http://www.msharp.co.uk/
原因1:M#還在研發(fā)中并沒(méi)有正式發(fā)布。
原因2:網(wǎng)頁(yè)中的m#重在支持asp.net,而微軟定義中的M#是一門(mén)編程語(yǔ)言當(dāng)然不能局限于asp.net
原因3:微軟出的編程語(yǔ)言何時(shí)收費(fèi)過(guò)?
M#到底會(huì)不會(huì)脫離.net framework
M#到底會(huì)不會(huì)脫離.net framework我也不清楚,只是猜測(cè),一種美好的希望,如果連想都不能想是不是有點(diǎn)對(duì)不起社會(huì)?一個(gè)人沒(méi)有了希望沒(méi)有了理想還是一個(gè)人嗎?
M#脫離.net framework是很有可能的一件事
原因1:M#是Midori系統(tǒng)的編程語(yǔ)言
M#已經(jīng)脫離了Windows,至于有沒(méi)有脫離NT內(nèi)核暫時(shí)不做猜想,連Windows都脫離了為什么不能脫離.net framework?
摘抄:同時(shí)微軟目前也正在嘗試尋找Midori與Windows系統(tǒng)之間的兼容性,讓Midori的應(yīng)用程序與Windows程序?qū)崿F(xiàn)共存和互操作,并提供程序移植的方法。
原因2:M#將獲得更好的性能
除了小白大家都知道C#、VB.NET、F#、J#都會(huì)被編譯成IL丟給CLR去執(zhí)行,如果M#能提升性能并且沒(méi)有脫離.NET Framework那么C#、VB.NET等其他語(yǔ)言也一樣能享受到這個(gè)待遇,既然如此為什么M#研發(fā)團(tuán)隊(duì)會(huì)說(shuō)將比C#獲得更好的性能?
原因3:M#從2008年開(kāi)始研究
如果只是基于.net framework那么需要5年的時(shí)間來(lái)研究語(yǔ)法嗎?如果是這樣是不是太沒(méi)有效率了?
目前看到信息最多的一則報(bào)道:http://os.yesky.com/493/35700993.shtml
它是C#的補(bǔ)充
報(bào)導(dǎo)里面這么說(shuō):“它在C#的基礎(chǔ)上添加了系統(tǒng)編程特性,可用來(lái)構(gòu)建各種類型的應(yīng)用,尤其是云計(jì)算應(yīng)用。”
用C#開(kāi)發(fā)了三年,總覺(jué)得缺少了些什么,雖然C/S、B/S都能做但還是覺(jué)得少了些什么,期間有考慮過(guò)是否嘗試c/c++、雖然C#的語(yǔ)法我非常喜歡,是我接觸到編程語(yǔ)言中最喜歡的一個(gè),特別是Linq。減少了大量的代碼。
那究竟是少了點(diǎn)什么呢?
x1:x2你不是做開(kāi)發(fā)的么?幫我寫(xiě)一個(gè)木馬我要能看到我女朋友的桌面。
x2:這個(gè)簡(jiǎn)單,明天給你程序。
……第二天……
x2:x1我寫(xiě)好了,你拿去你女朋友機(jī)器上直接運(yùn)行就好了,但是操作系統(tǒng)必須是vista以上的,然后需要安裝.net framework 4.5。
x1:怎么看系統(tǒng)是不是vista?如果不是vista以上怎么辦?.net framework 4.5是個(gè)啥?我怎么安裝.net framework 4.5失敗呢?你寫(xiě)的程序真糟糕。
x2:……
.net framework,我覺(jué)得.net framework是個(gè)負(fù)擔(dān),其實(shí)更多時(shí)候我覺(jué)得是.net framework拖累的C#,為了兼顧VB.NET、F#、C#等語(yǔ)言.net framework實(shí)在是太臃腫了,如果C#增加了新特性那么.net framework就需要同時(shí)為VB.NET、F#等語(yǔ)言添加對(duì)應(yīng)的實(shí)現(xiàn),雖然中間有IL,但還是太臃腫了,需要同時(shí)改變多個(gè)編譯器,導(dǎo)致各個(gè)語(yǔ)言發(fā)現(xiàn)了 發(fā)展瓶頸,維護(hù)量大增的問(wèn)題。
總而言之:C#(.net framework)能做的事情太少了。
更好的性能
“Joe Duffy表示,M#相對(duì)C#、Java等其他語(yǔ)言來(lái)說(shuō),它能在“性能”、“安全與生產(chǎn)力”兩方面會(huì)達(dá)到更好的平衡。”
這其實(shí)也牽扯到.net framework的問(wèn)題,但這里部分地方不明示,大家心里明白就好了。
c#雖然擁有較好的性能但還是不夠,至少對(duì)于目前來(lái)說(shuō),雖然現(xiàn)有的CLR可以根據(jù)即時(shí)環(huán)境(詳情請(qǐng)看:“在.net中為什么第一次執(zhí)行會(huì)慢?”)動(dòng)態(tài)生成最優(yōu)的本地碼,但對(duì)目前CLR對(duì)此的處理能力還是太弱了,導(dǎo)致了性能不夠理想,而這一點(diǎn)M#團(tuán)隊(duì)已經(jīng)注意到了,他們會(huì)尋找到一個(gè)平衡點(diǎn)(我琢磨著他們會(huì)把M#編譯成本地碼,而可以同時(shí)兼容現(xiàn)有的.NET類庫(kù),只不過(guò)引用現(xiàn)有的.NET類庫(kù)需要安裝.net framework)。
開(kāi)源
“同時(shí),他也表示M#最終會(huì)開(kāi)源,有可能就在令人充滿期待的2014年”
如果想把C#開(kāi)發(fā)的程序遷移至Liunx、OSX上在以前幾乎是不可能的事 情,但現(xiàn)在雖然有了Mono可以做到還是會(huì)出現(xiàn)很多問(wèn)題,這一點(diǎn)對(duì)于M#來(lái)說(shuō)就無(wú)需擔(dān)心,因?yàn)樗情_(kāi)源的這邊雖然不能預(yù)測(cè)M#的開(kāi)源級(jí)別與程度,但可以知 道的是至少比現(xiàn)在容易,到那時(shí)候我們就可以少了一項(xiàng)從Windows轉(zhuǎn)向Liunx、OSX的障礙了(不知道為什么最近想從Windows轉(zhuǎn)向Liunx Or OSX)。
M#已經(jīng)研究了數(shù)年
據(jù)報(bào)道,微軟研究M#以長(zhǎng)達(dá)4~5年(多個(gè)報(bào)導(dǎo)時(shí)間不一樣,期待有人能給出正確答案),為其數(shù)年的編程語(yǔ)言值得期待。
它是微軟的
微軟雖然有很多的罵名,但不得不說(shuō)他為開(kāi)發(fā)者所做的,雖然現(xiàn)在的生態(tài)環(huán)境還遠(yuǎn)不如java,但他為開(kāi)發(fā)人員帶來(lái)的便利是極大的,Visual Studio、IIS、SQL Server等都具有良好的可視化界面及輔助工具,這些都能極大的減少開(kāi)發(fā)者的時(shí)間。
寫(xiě)在最后
我不推崇任何技術(shù),我只按需所取,我不黑微軟也不捧微軟,我只是說(shuō)出我的想法,我想要的編碼環(huán)境。