聊聊微軟和.NET
從朝夕公眾號(hào)看到,也復(fù)制過(guò)來(lái),大家看看。
原文內(nèi)容:
節(jié)日沒(méi)事,就想聊聊微軟的NET。
?
1.孩子靜悄悄,必定在作妖
截止目前,微軟的市值達(dá)到1.85萬(wàn)億美元,按說(shuō),這樣一個(gè)宙斯級(jí)的巨無(wú)霸應(yīng)該過(guò)的非常舒坦,
但是,和微軟市值成鮮明的反差,我們從.NET的發(fā)展感覺(jué)出微軟的焦慮。這種焦慮來(lái)源于微軟在多個(gè)垂直領(lǐng)域里的強(qiáng)烈競(jìng)爭(zhēng)。特別是在移動(dòng)領(lǐng)域。
所謂:孩子靜悄悄,必定在作妖。當(dāng)過(guò)媽媽的都知道,如果媽媽發(fā)現(xiàn)小孩子一直靜悄悄,那可不是好事,因?yàn)槟且馕吨⒆涌隙ㄓ衷凇案蓧氖隆绷恕?/p>
人與人國(guó)與國(guó)都是這樣,越是強(qiáng)調(diào)什么就表示越不是什么。當(dāng)你越是強(qiáng)調(diào)你和某人是好朋友,就表示你和某人已經(jīng)有了裂痕。就像當(dāng)中國(guó)越是強(qiáng)調(diào)“中美同向而行”時(shí),就越表示當(dāng)前中美不是同向而行。
同樣的,用在.NET身上,我們能看的出,微軟每天都在呼喊:來(lái)吧,來(lái)用我把,我非常好。
我每天升級(jí),我從.NET升級(jí)到1.0,升級(jí)到2.0,升級(jí)到3.0,升級(jí)到4.0。。。一直升級(jí)一直更新一直擴(kuò)展新功能,而且還開(kāi)源。
我支持Windows,支持Linux,支持Mac,支持Android,支持各種設(shè)備。你要開(kāi)發(fā)任何設(shè)備,我NET都支持,來(lái)吧,來(lái)用我吧。
但是,雖然這樣,這似乎仍打不動(dòng)開(kāi)發(fā)者的“芳心”。
?
2.兩大巨頭都建立了自己的護(hù)城河
?幾十年來(lái),微軟通過(guò)Windows一直壟斷了桌面電腦操作系統(tǒng),但是我們不得不承認(rèn),我們現(xiàn)在花在移動(dòng)端上的時(shí)間越來(lái)越多,
微軟錯(cuò)失移動(dòng)互聯(lián)網(wǎng)成為了不可彌補(bǔ)之遺憾,而兩大巨頭----谷歌和蘋(píng)果都已經(jīng)建立了自己的護(hù)城河。
?
2.1谷歌的Android與Kotlin
谷歌的Android主要采用Java開(kāi)發(fā),十多年來(lái),谷歌逐步完善了Java在Android上開(kāi)發(fā)的霸主地位,其指標(biāo)性的標(biāo)志是類庫(kù)逐漸完善(見(jiàn)下圖)。
這種生態(tài)完全可以媲美微軟.NET類庫(kù)在Windows上的開(kāi)發(fā)作用。
再加上與Androi?Studio的整合以及Google?Mobile?Service的綁定。
谷歌推出了一整套完美的解決方案。在這種情況下.NET要從谷歌虎口搶食,勢(shì)必難度極大。
2.2 Kotin(還有Go語(yǔ)言)
你微軟不是開(kāi)源了.NET了嗎?那谷歌也制作了Kotin語(yǔ)言,并提供強(qiáng)大的類庫(kù)支持。
你微軟NET開(kāi)源,我Kotin也開(kāi)源。?
你微軟NET支持泛型,我Kotin也支持泛型
你微軟NET支持多平臺(tái),我Kotin也支持多平臺(tái)(android/windows/mac/linux都支持)。
你微軟的Typescript可以轉(zhuǎn)為Javascript,我Kotin也支持Kotin轉(zhuǎn)為Javascript。。
從很多方面比較,Kotin的第一感覺(jué)就是阻擊NET的勢(shì)力擴(kuò)張。
就像春晚,我可以不看但是你不能沒(méi)有。同樣,Kotin可以不好用但是絕不能沒(méi)有。
夢(mèng)想重要有的,萬(wàn)一Kotin火了呢?

?
?
2.3蘋(píng)果的Object-C與Switf
和谷歌類似,蘋(píng)果自己建立了一套基于Object-C的體系結(jié)構(gòu),
在這個(gè)封閉圈里,利用Object-C語(yǔ)言與XCode?Studio開(kāi)發(fā)環(huán)境,蘋(píng)果自己打通了蘋(píng)果手機(jī),蘋(píng)果電腦,蘋(píng)果手表,蘋(píng)果電視等的生態(tài)圈。
換句話說(shuō),在這個(gè)自己的生態(tài)圈里,蘋(píng)果自己玩,大門(mén)一關(guān),不讓別人進(jìn)來(lái)。
?
2.4 Swift語(yǔ)言
Swift 是蘋(píng)果推出的編程語(yǔ)言,專門(mén)針對(duì) OS X 和 iOS 的應(yīng)用開(kāi)發(fā)。Swift 在各個(gè)方面優(yōu)于 Objective-C,也不會(huì)有那么多復(fù)雜的符號(hào)和表達(dá)式。同時(shí),Swift 更加快速、便利、高效、安全。?
Swift 對(duì)于初學(xué)者來(lái)說(shuō)也很友好。它是第一個(gè)既滿足工業(yè)標(biāo)準(zhǔn)又像腳本語(yǔ)言一樣充滿表現(xiàn)力和趣味的編程語(yǔ)言。?
總之,Swift也和NET類似:
Swift也是開(kāi)源的,是跨平臺(tái)的(windows/android/ios都可用),也支持各種現(xiàn)代編程(泛型、異步、網(wǎng)絡(luò)編程等),
另外,養(yǎng)子不如親生,作為蘋(píng)果的親兒子,毫無(wú)疑問(wèn),蘋(píng)果以后還會(huì)繼續(xù)擴(kuò)充Swift的功能,充實(shí)其類庫(kù)。
?

?
從上面可以看到,作為開(kāi)源,跨平臺(tái)的NET和Kotin,Swift競(jìng)爭(zhēng)中,并沒(méi)有十足的優(yōu)勢(shì)。
?
3.五大手機(jī)制造商的勢(shì)力崛起
在PC時(shí)代,Windows一統(tǒng)天下,所有電腦制造商都要看Windows眼色行事,但是到了手機(jī)時(shí)代,風(fēng)向變了,Android開(kāi)源了,這使得手機(jī)制造商可以從底層修改源代碼來(lái)為我所用。
就算是谷歌都無(wú)十足的把握來(lái)掌控整個(gè)Android系統(tǒng)。
如果做個(gè)比喻,這猶如中國(guó)歷史上的“春秋戰(zhàn)國(guó)時(shí)代,周天子名義上是天子,但是其實(shí)地方諸侯才是真正的握有實(shí)權(quán)的霸主”。
而目前全球手機(jī)制造商基本上就五家:三星,蘋(píng)果,華為,小米和Oppo(Vivo屬于Oppo體系)。這5家猶如“戰(zhàn)國(guó)五雄”,每個(gè)人都有自己的地盤(pán)。
因?yàn)槭謾C(jī)和PC最大的不同是:他是私人的,而且是其它設(shè)備的中心。
想象一下:你除了用自己的手機(jī)玩游戲,購(gòu)物辦公等通用的操作,還有更重要的IoT。
你可以用手機(jī)控制電視,洗衣機(jī),空調(diào),電冰箱等。在這個(gè)萬(wàn)物互聯(lián)的時(shí)代,手機(jī)是核心。
也正是如此,這五家巨頭都在打造自己的生態(tài)系統(tǒng)。
以小米為例,你要用小米手機(jī)嗎?你買了小米手機(jī),那你可以用小米電視,小米洗衣機(jī),小米路由器,小米空調(diào)。。。。
所以,手機(jī)制造商決定開(kāi)發(fā)人員的要求。
不管是小米,華為,Oppo還是三星,清一色的,后端核心都是Java(外加部分C/C++,特別是華為多用C++)。前端可以用多種語(yǔ)言,包括JS。
而就算是華為推出的鴻蒙系統(tǒng),也主要以Java+C++為主。?這讓微軟的.NET有力無(wú)處使。
?

?
?
?
4.機(jī)器學(xué)習(xí)領(lǐng)域,Python異軍突起
?大數(shù)據(jù)、人工智能AI、機(jī)器學(xué)習(xí)ML等領(lǐng)域,近幾年成為熱門(mén)行業(yè),在這里,Python異軍突起。微軟雖然推出了Machine?Learning(NET.ML),但是毫無(wú)疑問(wèn)
Python才是主流。特別是AI的領(lǐng)軍人物谷歌的tensorflow和百度的paddlepaddle都使用Python作為教程。
用過(guò)Python的人都知道,Python最大特點(diǎn):簡(jiǎn)單,強(qiáng)大。
大數(shù)據(jù)最大的特點(diǎn)就是2個(gè):(1).數(shù)據(jù)量大 (2).對(duì)數(shù)學(xué)要求高
而Python通過(guò)第三方庫(kù),例如python numpy庫(kù),做了大量擴(kuò)展,對(duì)于?實(shí)數(shù)、復(fù)數(shù)、矩陣、微積分、統(tǒng)計(jì)函數(shù)、復(fù)變函數(shù)等都提供了大量庫(kù)。
在這里,使用壓倒一切。你不用給我說(shuō)類,說(shuō)繼承,說(shuō)封裝。那不是工科所關(guān)注的,他們關(guān)注的是結(jié)果。
例如,我給你一個(gè)數(shù)學(xué)公式,f(x)=a^2+bx+c?你給我畫(huà)出他的曲線圖來(lái)。
如果是.NETer,怎么辦?你要讓我用System.Drawing類,先自己定義Point類,設(shè)置顏色SetColor(),再劃線Drawing(),對(duì)了,用完了對(duì)象要Dispose()?工科生要吐血了。
這種復(fù)雜的工作,在Python里,例如使用plotly作為工科數(shù)學(xué)計(jì)算,幾行代碼就可以搞定。
換句話說(shuō),NET在新興領(lǐng)域受到考驗(yàn)。

?
5.自動(dòng)駕駛領(lǐng)域也與微軟/NET無(wú)緣
車載操作系統(tǒng)將是手機(jī)之后另外一個(gè)需要關(guān)注的特點(diǎn)。?在國(guó)內(nèi),華為發(fā)布打造具備確定性低時(shí)延能力的實(shí)時(shí)車控操作系統(tǒng),中興也發(fā)布了車載系統(tǒng),還有百度的阿波羅Apollo,蘋(píng)果推出了CarPlay車載系統(tǒng),
谷歌推出了Android Automotive,以及三星、微軟等都推出汽車操作系統(tǒng)。但是最終可能只有三家勝出:
1.百度的Apollo? 2.蘋(píng)果的CarPlay?以及谷歌的?Android Automotive。
車載操作系統(tǒng)進(jìn)一步延伸就是無(wú)人駕駛。這對(duì)操作安全性要求極高,另外還要打通汽車制造的上下游產(chǎn)業(yè),沒(méi)幾家公司能玩得起。
蘋(píng)果是自己的生態(tài)圈,谷歌有Android作為加持,而百度Apollo不是最好的,但是百度的優(yōu)勢(shì)是中國(guó)有全球最大的汽車消費(fèi)國(guó),可以提供海量數(shù)據(jù)。
因?yàn)闊o(wú)人駕駛,需要太多傳感器、視覺(jué)技術(shù)知識(shí),需要大量數(shù)據(jù)積累,這是百度的優(yōu)勢(shì)。
而在開(kāi)發(fā)方面,Apollo使用的是Java與C++。

?
?
6.游戲行業(yè)最賺錢的是騰訊
除了上面說(shuō)的,據(jù)國(guó)外報(bào)道,目前游戲行業(yè),最賺錢的游戲公司是騰訊。其次是索尼和蘋(píng)果,微軟排在第四。
?

?
?
7.微軟失去對(duì)瀏覽器的控制權(quán)
微軟瀏覽器Internet?Explore已經(jīng)過(guò)時(shí),Edge也已經(jīng)采用Chrome內(nèi)核。雖然瀏覽器不賺錢,但是卻是一個(gè)企業(yè)實(shí)力的標(biāo)志。
我們常說(shuō):一流的企業(yè)賣標(biāo)準(zhǔn),二流的企業(yè)賣品牌,三流的企業(yè)賣產(chǎn)品,四流的企業(yè)賣苦力;
微軟失去對(duì)瀏覽器的控制權(quán),這會(huì)讓很多行業(yè)標(biāo)準(zhǔn)不再由微軟決定。例如WebAssembly怎么執(zhí)行依據(jù)不是微軟說(shuō)的算,所以他推出了
ASP.NET Core Blazor盡可能掌握主動(dòng)權(quán)。?但是從本質(zhì)上說(shuō),現(xiàn)在的微軟Edge瀏覽器和我們現(xiàn)在用的QQ瀏覽器,360瀏覽器已經(jīng)是同等水平。
?
?
?
8.微軟在云服務(wù)和辦公Office365上具有優(yōu)勢(shì)
上面說(shuō)了為了面臨的競(jìng)爭(zhēng)者,但是微軟在傳統(tǒng)的Windows+Office具有絕對(duì)優(yōu)勢(shì)外,
特別是在云服務(wù)和Office365也具有絕對(duì)的主導(dǎo)權(quán),份額也在不停的增加。
但是,盡管如此,這不足以支持微軟帝國(guó)全部的業(yè)務(wù),畢竟,云租用亞馬遜云才是老大,而Office365也并不是不可替代。
?
由于在移動(dòng)互聯(lián)網(wǎng)面臨的調(diào)整,這或許才是微軟焦慮的原因,
這體現(xiàn)在NET上,就是不停的擴(kuò)張NET的功能,希望吸引更多開(kāi)發(fā)者。
*最后,微軟仍然是巨無(wú)霸,就市值來(lái)說(shuō),微軟市值基本上等于“阿里+騰訊+百度”三者和。
?
?
?
?
?
附:我對(duì)NET的一些看法
上面介紹了,或許微軟的焦慮,導(dǎo)致微軟不斷擴(kuò)充NET的功能。但是,不斷膨脹的NET又讓人望而卻步。這就產(chǎn)生了矛盾:NET越來(lái)越強(qiáng)大但討論的人越來(lái)越少。
我本身是非常喜歡NET的,但是事實(shí)上,就算是NET大本營(yíng)的博客園,關(guān)于NET?Core的討論也是越來(lái)越少(除了一些重量級(jí)的人員),一枝獨(dú)秀不是春,百花齊放春滿園
那么問(wèn)題出現(xiàn)在哪里?個(gè)人感覺(jué)有一下幾點(diǎn):
(1)用過(guò)Java的人都知道,Java分為三個(gè)版本 Java SE(標(biāo)準(zhǔn)版),Java?EE(企業(yè)版)和Java?ME(微型版),Java的定位非常簡(jiǎn)單:初學(xué)者學(xué)習(xí)SE,入門(mén)后就會(huì)寫(xiě)Form程序,
進(jìn)階后使用EE編寫(xiě)JSP Servlet 制作網(wǎng)站。最后ME開(kāi)發(fā)嵌入式開(kāi)發(fā),比較清晰。
但是NET的就很難說(shuō)清楚了,例如 NET Framework,?.NET Compact, ASP.NET,? ?.NET Core,? ASP.NET Core,? NET5.0 都有啥區(qū)別,或者說(shuō)目的是什么?
相信很多外行人不清楚,就算內(nèi)行的有時(shí)候都有點(diǎn)迷惑。
?
?
(2)我一直認(rèn)為技術(shù)是分級(jí)的,當(dāng)你VB能戰(zhàn)勝C++就算因?yàn)楹?jiǎn)單。而現(xiàn)在NET Core感覺(jué)走進(jìn)了死胡同。?當(dāng)年WebForm雖然受到很多人恥笑,特別是ViewState臃腫,但是
WebForm提出的Page_Init, Page_Load, Button_Click的事件驅(qū)動(dòng)模型編程,使用起來(lái)確實(shí)很簡(jiǎn)單。在Java里也有類似的?init(), service() destroy()聲明周期模型,使用起來(lái)很簡(jiǎn)單。
但是?Asp.Net Core使用IOC和DI,服務(wù)注冊(cè)等,IOC全稱是Inversion of Control翻譯成中文叫控制反轉(zhuǎn)(感覺(jué)很拗口)進(jìn)行周期控制,DI 全稱是DependencyInjection翻譯成中文叫依賴注入,
有問(wèn)題就進(jìn)行服務(wù)注冊(cè)Service?Add,在加上匿名委托等。 相信不少初學(xué)者,看到這些名詞估計(jì)就會(huì)嚇的后退。
?
(3)更新技術(shù)太快。例如Java經(jīng)典的SDK7 2011年發(fā)布,到現(xiàn)在還在用。也許是焦慮的原因,NET?基本上每過(guò)幾個(gè)月就發(fā)布一個(gè)新版本。而且,整體感覺(jué)微軟的技術(shù)越來(lái)越復(fù)雜。
例如前端時(shí)間要做一個(gè)Office365開(kāi)發(fā),下載了一個(gè)SDK,結(jié)果發(fā)現(xiàn),整個(gè)文件非常大,非常復(fù)雜。層層調(diào)用,層層配置。?
每次.NET?Core發(fā)布,最大的感覺(jué)是除了Core新增了不少功能,就是速度。Net Core2.0比Core1.0快。?Core3.0比Core2.0快,Core4.0比Core3.0快,Core5.0比Core4.0快。
換句話說(shuō),每一次發(fā)布都打臉上一個(gè)版本,這讓老用戶情何以堪。NET最早發(fā)布與2000年左右,但是他的后輩們(例如Rust,Python,NodeJS)等都已經(jīng)開(kāi)始崛起。
NET雖然有點(diǎn)坎坷,但是微軟的TypeScript卻是成功的,真是有心栽花花不開(kāi),無(wú)心插柳柳成蔭,
本文轉(zhuǎn)載自博客園:https://www.cnblogs.com/mqingqing123/p/14399767.html
