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

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

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

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

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

?
?
6.游戲行業(yè)最賺錢的是騰訊
除了上面說的,據國外報道,目前游戲行業(yè),最賺錢的游戲公司是騰訊。其次是索尼和蘋果,微軟排在第四。
?

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