一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

分清“語言/規(guī)范”以及“平臺/實現(xiàn)”,以及跨平臺.NET開發(fā)

  在許多年前,“語言”就等同于“平臺”,例如C,C++以及最早的Ruby和Python等等。但是隨著技術(shù)發(fā)展,出現(xiàn)了一些通用的平臺,例如.NETJava,逐漸這些平臺上的語言也越來越多。再后來,某些語言在不同平臺上的實現(xiàn)也越來越多,事情也變得有些復(fù)雜。技術(shù)在發(fā)展,但是從目前社區(qū)的討論中,我發(fā)現(xiàn)許多朋友的觀念還沒有跟上。簡單地說,如今的觀念,一定要從“語言即平臺”切換成“語言及平臺”,當分清“語言”和“平臺”這兩個不同事物之后,許多問題才能討論地清楚。

  例如我寫過一個太監(jiān)系列《Why Java Sucks and C# Rocks》,其中談的是C#和Java兩個“語言”而不是兩者的“平臺”。編程“語言”其實是一種“規(guī)范”,它涉及了程序員在使用這門語言時的文本表現(xiàn)形式(這里暫不考慮其他形式的語言),而“平臺”則包括對這個規(guī)范的“實現(xiàn)”(廣義的“平臺”還包括整個生態(tài)環(huán)境等等)。C#和Java分別處在各自的平臺上,但許多語言其實是跨多種平臺的。例如Python,Ruby,Scala,Clojure,JavaScript等等,數(shù)不勝數(shù)。同樣,一個平臺上也會出現(xiàn)多種語言。而且事實上,由于.NETJava這樣的平臺越來越成熟,語言的設(shè)計及實現(xiàn)者也都越來越傾向于讓語言運行在“某個平臺”上。這么做可以盡可能地利用前人的成果,而不是什么都要自己從頭做起。

  其實基本的原則就是這么簡單,但是真正在考慮問題的時候,可能就不是那么容易了,我們必須時刻保持清晰地頭腦。

  例如有個人說“C#比Java執(zhí)行效率高(或低)”,這個說法是否正確?其實這種說法有很大問題。因為我們知道,在這里C#和Java都是“語言”,它們的執(zhí)行環(huán)境CLI及JVM一樣都是“規(guī)范”,但“執(zhí)行效率”是一種表現(xiàn),這和“實現(xiàn)”得如何有很大關(guān)系。例如,C#是運行在.NET平臺還是Mono上(它們都是CLI規(guī)范的具體實現(xiàn)),Java是運行在JRockit還是Hotspot(前者是Oracle的JVM商業(yè)實現(xiàn),后者是Sun的開源實現(xiàn)——當然現(xiàn)在也是Oracle的),亦或是Android的Dalvik上?很顯然,不同實現(xiàn)之間的表現(xiàn)會有區(qū)別,不可一概而論,否則也不會出現(xiàn)JavaScript引擎的效率之爭了。同理,有些人使用Hotspot上的Java性能來說明JavaAndroid上運行時的表現(xiàn),這也是不對的——要知道Google在和Oracle的Java專利官司中不斷強調(diào)Dalvik不是“Oracle那種Java”。作為結(jié)論,JavaAndroid上的表現(xiàn)的確不錯,但論證方式也必須正確才行。

  當然,有時候“規(guī)范”也會影響到“實現(xiàn)”,例如一個動態(tài)分發(fā)的語言,其性能基本百分百不如在編譯期綁定的靜態(tài)語言。所以事情原本就是這么復(fù)雜,做一個思路清晰的程序員并不是件容易的事情。順便一提,女人在這方面的頭腦一般都比較清楚,她們一般都知道騎白馬的不一定是王子,也有可能是唐僧。

  對于俗稱“.NET程序員”的那一批人來說,分清“語言”和“平臺”更是一件十分重要的事情,因為C#語言可以說是目前“平臺”、“實現(xiàn)”最為廣泛的“語言”之一了。之前我為InfoQ寫過一篇文章,其中提到Mono的創(chuàng)始人Miguel de Icaza給出的目前C#語言可執(zhí)行平臺的“不完全”列表,幾乎覆蓋了各種流行的操作系統(tǒng)及設(shè)備等等,例如:

  • Windows
  • Mac OS
  • Linux / BSD / Solaris
  • Windows Phone,Androidios
  • XBox 360,Wii,PS3
  • ……

  因此就拿C#這一種語言來說,“實現(xiàn)”也會各自略有不同,這便是所謂的“配置(Profile)”。目前至少已經(jīng)有這么多配置了:

  • .NET 4.0配置
  • Silverlight配置
  • Windows Phone 7配置
  • XBox360配置
  • Mono核心配置:與.NET配置相同,可以在Linux,MacOS X,Solaris,Windows和BSD里使用。
  • .NET Micro Framework
  • Mono的ios配置
  • Mono的Android配置
  • Mono的PS3配置
  • Mono的Wii配置
  • Moonlight配置(與Silverlight兼容)
  • Moonlight擴展配置(Silverlight和完整的.NET 4 API)

  “配置”之間的區(qū)別主要體現(xiàn)在執(zhí)行環(huán)境的能力(例如ios不支持運行時代碼生成,因此支持AOT但不能JIT)以及類庫的覆蓋面上(例如XNA類庫只存在于Windows Phone及XBox 360等游戲平臺),不過它們終究實現(xiàn)了一個核心規(guī)范,因此我們可以說在不同平臺上都可以“使用.NET進行開發(fā)”。

  Mono實在是一個了不得的作品,它讓我知道了“跨平臺原來可以這么做”。之前我也寫過有關(guān)跨平臺的問題,其中談到在“客戶端的跨平臺一般都很難得到最佳的體驗”,這個論點的最佳證明便是Java。但Mono走的卻是另一條跨平臺的道路,它在各平臺上實現(xiàn)了核心的執(zhí)行引擎和類庫之外,解決“體驗”的方式便是在各個平臺上提供原生平臺的綁定。這樣無論是在Mac OS,iosAndroid上都可以得到原生應(yīng)用的體驗。

  我很奇怪為什么有些搞.NET的人一邊說.NET的適用面太小,一邊卻忽視Mono的成果,在我看來這完全是“自作孽不可活”,我愈發(fā)覺得是否接受Mono是判斷一個.NET程序員是否優(yōu)秀的重要準則。其實Mono實在很火,因為他為廣大.NET程序員擴展了工作領(lǐng)域,使用現(xiàn)有的知識來開發(fā)ios等平臺的應(yīng)用程序,還可以共享代碼,何樂而不為?前不久蘋果發(fā)布了Mac上的App Store,于是MonoMac也立即推出了面向AppStore的打包器Frank Krueger也開始著手移植它的作品iCircuit成果顯著。因此在我看來,這才是一個現(xiàn)代.NET程序員該有的工作臺:

  對于MonoTouch這樣的新思路,帶有疑惑是正常的。我也知道還有許多聰明人可以找到各種反對的理由。不管怎樣,我現(xiàn)在這里隨意列上幾條吧:

  • 有人說,用MonoTouch等.NET實現(xiàn)來做ios開發(fā)“不正式”;我說,這個說法頗有“血統(tǒng)論”的意味,不過既然在Windows上用C++和Delphi都很正式,那么為什么在ios上使用Objective-C才是正途?
  • 有人說,MonoTouch性能一定不如Objective-C好;我說,這是猜測,即使性能不如Objective-C,看看各種案例也知道這在實踐中并不是問題(事實上MonoTouch的前身便是Unity3D對Mono的使用,而ios上實在有太多游戲在使用Unity3D了)。
  • 有人說,MonoTouch或MonoDroid沒有大公司支持,不靠譜;我說,您之前不是經(jīng)常鄙視類似“開源沒有微軟靠譜”或是“微軟開發(fā)人員只知道微軟技術(shù)”這種說法的嗎?
  • 有人說,用MonoTouch等于拋棄了CocoaTouch社區(qū),出了問題都沒人問;我說,MonoTouch的問題基本就是CocoaTouch的問題,MonoTouch的UI層就是CocoaTouch,有問題直接去CocoaTouch社區(qū)或CocoaTouch程序員,代碼直接映射,類庫直接使用。
  • 有人說,用MonoTouch的人不好招;我說,用C#、.NET的人比用Objective-C、Cocoa多太多了。給我一個熟練使用.NET和C#的人,三天上手,一周成為能夠開發(fā)出成品的ios開發(fā)者。
  • 有人說,難道就是為了用.NET所以用MonoTouch?我說,用MonoTouch/MonoDroid的好處很多,例如我可以在iosAndroid、Windows Phone甚至更多平臺上共享UI以外的代碼,并可以直接使用大量.NET上的類庫——這點實在太方便了。不要問我為什么Android上不能使用Java類庫,我只知道開發(fā)Andorid的同事發(fā)現(xiàn)SOAP訪問類庫沒有,REST找不到好的,JSON支持也只有最原始的支持,于是痛苦萬分。

  我還知道,這些說法依舊擋不住出現(xiàn)基于MonoDroid的DeltaEngine,這是個跨平臺的游戲引擎,在Mono的支持下可以運行在Linux,MacOS X,iosAndroid上,在微軟.NET支持下可以運行在XBox 360,Windows Phone 7自然還有普通的Windows系統(tǒng)上。在CES 2011上NVidia演示了一個游戲Soul Craft,它運行在LG Optimus 2X,這個游戲正是使用了DeltaEngine。

  對于我們來說,最大的限制其實還是眼界和思維,突破這一屏障也是我組織nBazaar技術(shù)沙龍的目的之一。本周六將會舉辦第三屆nBazaar技術(shù)交流會,具體信息請訪問http://nbazaar.org/。如果您還沒有報名,也可以直接前來,也歡迎帶上感興趣的朋友或同事。根據(jù)以往的經(jīng)驗,場地就像乳溝,擠擠總是有的……

  原文:《分清“語言/規(guī)范”以及“平臺/實現(xiàn)”,以及跨平臺.NET開發(fā)》

NET技術(shù)分清“語言/規(guī)范”以及“平臺/實現(xiàn)”,以及跨平臺.NET開發(fā),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 天天碰免费视频 | 国产欧美精品一区二区色综合 | 欧美不卡影院 | 岬奈一区二区中文字幕 | 小说区 图片区 视频区 | 色 在线播放 | 国产一级特黄全黄毛片 | 日韩精品高清自在线 | 日韩精品网址 | www.激情.com| 视频在线观看黄 | 亚洲区小说区图片区qvod伊 | 国产真实乱子伦精品 | 综合色88| 麻豆久久精品免费看国产 | 91视频a| 日本伊人色综合网 | 精品小视频在线 | 91综合在线 | 香蕉成人啪国产精品视频综合网 | 男女午夜性爽快免费视频不卡 | 国产欧美成人 | 亚洲天堂色网站 | 加勒比日本在线 | 国产精品成人观看视频国产 | 黄页网站在线播放 | 欧美特黄高清免费观看的 | 亚洲第一页乱 | 五月丁香六月婷综合缴情在线 | 亚洲视频1区 | 亚洲成人精品 | 国产精品视频第一区二区三区 | 狠狠色狠狠色综合网 | 国产在线精品国自产拍影院同性 | 欧洲免费无线码二区5 | 国产精品美女网站在线观看 | 亚洲狠狠97婷婷综合久久久久 | 都市激情亚洲色图 | 天天在线综合网 | 国产精品一区二区免费 | 国产一区二区高清 |