从.NET看微软的焦虑

节日没事,就想聊聊微软的NET。前端

 

1.孩子静悄悄,一定在做妖

截止目前,微软的市值达到1.85万亿美圆,按说,这样一个宙斯级的巨无霸应该过的很是舒坦,python

可是,和微软市值成鲜明的反差,咱们从.NET的发展感受出微软的焦虑。这种焦虑来源于微软在多个垂直领域里的强烈竞争。特别是在移动领域。linux

所谓:孩子静悄悄,一定在做妖。当过妈妈的都知道,若是妈妈发现小孩子一直静悄悄,那可不是好事,由于那意味着孩子确定又在“干坏事”了。android

人与人国与国都是这样,越是强调什么就表示越不是什么。当你越是强调你和某人是好朋友,就表示你和某人已经有了裂痕。就像当中国越是强调“中美同向而行”时,就越表示当前中美不是同向而行。ios

一样的,用在.NET身上,咱们能看的出,微软天天都在呼喊:来吧,来用我把,我很是好。编程

我天天升级,我从.NET升级到1.0,升级到2.0,升级到3.0,升级到4.0。。。一直升级一直更新一直扩展新功能,并且还开源。windows

我支持Windows,支持Linux,支持Mac,支持Android,支持各类设备。你要开发任何设备,我NET都支持,来吧,来用我吧。后端

可是,虽然这样,这彷佛仍打不动开发者的“芳心”。浏览器

 

2.两大巨头都创建了本身的护城河

 几十年来,微软经过Windows一直垄断了桌面电脑操做系统,可是咱们不得不认可,咱们如今花在移动端上的时间愈来愈多,安全

微软错失移动互联网成为了避免可弥补之遗憾,而两大巨头----谷歌和苹果都已经创建了本身的护城河。

 

2.1谷歌的Android与Kotlin

谷歌的Android主要采用Java开发,十多年来,谷歌逐步完善了Java在Android上开发的霸主地位,其指标性的标志是类库逐渐完善(见下图)。

这种生态彻底能够媲美微软.NET类库在Windows上的开发做用。

再加上与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开发环境,苹果本身打通了苹果手机,苹果电脑,苹果手表,苹果电视等的生态圈。

换句话说,在这个本身的生态圈里,苹果本身玩,大门一关,不让别人进来。

 

2.4 Swift语言

Swift 是苹果推出的编程语言,专门针对 OS X 和 iOS 的应用开发。Swift 在各个方面优于 Objective-C,也不会有那么多复杂的符号和表达式。同时,Swift 更加快速、便利、高效、安全。 
Swift 对于初学者来讲也很友好。它是第一个既知足工业标准又像脚本语言同样充满表现力和趣味的编程语言。 

总之,Swift也和NET相似:

Swift也是开源的,是跨平台的(windows/android/ios均可用),也支持各类现代编程(泛型、异步、网络编程等),

另外,养子不如亲生,做为苹果的亲儿子,毫无疑问,苹果之后还会继续扩充Swift的功能,充实其类库。

 

 

从上面能够看到,做为开源,跨平台的NET和Kotin,Swift竞争中,并无十足的优点。

 

3.五大手机制造商的势力崛起

在PC时代,Windows一统天下,全部电脑制造商都要看Windows眼色行事,可是到了手机时代,风向变了,Android开源了,这使得手机制造商能够从底层修改源代码来为我所用。

就算是谷歌都无十足的把握来掌控整个Android系统。

若是作个比喻,这犹如中国历史上的“春秋战国时代,周天子名义上是天子,可是其实地方诸侯才是真正的握有实权的霸主”。

而目前全球手机制造商基本上就五家:三星,苹果,华为,小米和Oppo(Vivo属于Oppo体系)。这5家犹如“战国五雄”,每一个人都有本身的地盘。

由于手机和PC最大的不一样是:他是私人的,并且是其它设备的中心。

想象一下:你除了用本身的手机玩游戏,购物办公等通用的操做,还有更重要的IoT。

你能够用手机控制电视,洗衣机,空调,电冰箱等。在这个万物互联的时代,手机是核心。

也正是如此,这五家巨头都在打造本身的生态系统。

以小米为例,你要用小米手机吗?你买了小米手机,那你能够用小米电视,小米洗衣机,小米路由器,小米空调。。。。

因此,手机制造商决定开发人员的要求。

无论是小米,华为,Oppo仍是三星,清一色的,后端核心都是Java(外加部分C/C++,特别是华为多用C++)。前端能够用多种语言,包括JS。

而就算是华为推出的鸿蒙系统,也主要以Java+C++为主。 这让微软的.NET有力无处使。

 

 

 

 

4.机器学习领域,Python异军突起

 大数据、人工智能AI、机器学习ML等领域,近几年成为热门行业,在这里,Python异军突起。微软虽然推出了Machine Learning(NET.ML),可是毫无疑问

Python才是主流。特别是AI的领军人物谷歌的tensorflow和百度的paddlepaddle都使用Python做为教程。

用过Python的人都知道,Python最大特色:简单,强大。

大数据最大的特色就是2个:(1).数据量大 (2).对数学要求高

而Python经过第三方库,例如python numpy库,作了大量扩展,对于 实数、复数、矩阵、微积分、统计函数、复变函数等都提供了大量库。

在这里,使用压倒一切。你不用给我说类,说继承,说封装。那不是工科所关注的,他们关注的是结果。

例如,我给你一个数学公式,f(x)=a^2+bx+c 你给我画出他的曲线图来。

若是是.NETer,怎么办?你要让我用System.Drawing类,先本身定义Point类,设置颜色SetColor(),再划线Drawing(),对了,用完了对象要Dispose()?工科生要吐血了。

这种复杂的工做,在Python里,例如使用plotly做为工科数学计算,几行代码就能够搞定。

换句话说,NET在新兴领域受到考验。

 

5.自动驾驶领域也与微软/NET无缘

车载操做系统将是手机以后另一个须要关注的特色。 在国内,华为发布打造具有肯定性低时延能力的实时车控操做系统,中兴也发布了车载系统,还有百度的阿波罗Apollo,苹果推出了CarPlay车载系统,

谷歌推出了Android Automotive,以及三星、微软等都推出汽车操做系统。可是最终可能只有三家胜出:

1.百度的Apollo  2.苹果的CarPlay 以及谷歌的 Android Automotive。

车载操做系统进一步延伸就是无人驾驶。这对操做安全性要求极高,另外还要打通汽车制造的上下游产业,没几家公司能玩得起。

苹果是本身的生态圈,谷歌有Android做为加持,而百度Apollo不是最好的,可是百度的优点是中国有全球最大的汽车消费国,能够提供海量数据。

由于无人驾驶,须要太多传感器、视觉技术知识,须要大量数据积累,这是百度的优点。

而在开发方面,Apollo使用的是Java与C++。

 

 

6.游戏行业最赚钱的是腾讯

除了上面说的,据国外报道,目前游戏行业,最赚钱的游戏公司是腾讯。其次是索尼和苹果,微软排在第四。

 

 

 

7.微软失去对浏览器的控制权

微软浏览器Internet Explore已通过时,Edge也已经采用Chrome内核。虽然浏览器不赚钱,可是倒是一个企业实力的标志。

咱们常说:一流的企业卖标准,二流的企业卖品牌,三流的企业卖产品,四流的企业卖苦力;

微软失去对浏览器的控制权,这会让不少行业标准再也不由微软决定。例如WebAssembly怎么执行依据不是微软说的算,因此他推出了

ASP.NET Core Blazor尽量掌握主动权。 可是从本质上说,如今的微软Edge浏览器和咱们如今用的QQ浏览器,360浏览器已是同等水平。

 

 

 

8.微软在云服务和办公Office365上具备优点

上面说了为了面临的竞争者,可是微软在传统的Windows+Office具备绝对优点外,

特别是在云服务和Office365也具备绝对的主导权,份额也在不停的增长。

可是,尽管如此,这不足以支持微软帝国所有的业务,毕竟,云租用亚马逊云才是老大,而Office365也并非不可替代。

 

因为在移动互联网面临的调整,这或许才是微软焦虑的缘由,

这体如今NET上,就是不停的扩张NET的功能,但愿吸引更多开发者。

*最后,微软仍然是巨无霸,就市值来讲,微软市值基本上等于“阿里+腾讯+百度”三者和。

 

 

 

 

 

附:我对NET的一些见解

上面介绍了,或许微软的焦虑,致使微软不断扩充NET的功能。可是,不断膨胀的NET又让人望而却步。这就产生了矛盾:NET愈来愈强大但讨论的人愈来愈少。

我自己是很是喜欢NET的,可是事实上,就算是NET大本营的博客园,关于NET Core的讨论也是愈来愈少(除了一些重量级的人员),一枝独秀不是春,百花齐放春满园

那么问题出如今哪里?我的感受有一下几点:

(1)用过Java的人都知道,Java分为三个版本 Java SE(标准版),Java EE(企业版)和Java ME(微型版),Java的定位很是简单:初学者学习SE,入门后就会写Form程序,

进阶后使用EE编写JSP Servlet 制做网站。最后ME开发嵌入式开发,比较清晰。

可是NET的就很难说清楚了,例如 NET Framework, .NET Compact, ASP.NET,   .NET Core,  ASP.NET Core,  NET5.0 都有啥区别,或者说目的是什么?

相信不少外行人不清楚,就算内行的有时候都有点迷惑。

 

 

(2)我一直认为技术是分级的,当你VB能打败C++就算由于简单。而如今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年发布,到如今还在用。也许是焦虑的缘由,NET 基本上每过几个月就发布一个新版本。并且,总体感受微软的技术愈来愈复杂。

例如前端时间要作一个Office365开发,下载了一个SDK,结果发现,整个文件很是大,很是复杂。层层调用,层层配置。 

每次.NET Core发布,最大的感受是除了Core新增了很多功能,就是速度。Net Core2.0比Core1.0快。 Core3.0比Core2.0快,Core4.0比Core3.0快,Core5.0比Core4.0快。

换句话说,每一次发布都打脸上一个版本,这让老用户情何以堪。NET最先发布与2000年左右,可是他的后辈们(例如Rust,Python,NodeJS)等都已经开始崛起。

NET虽然有点坎坷,可是微软的TypeScript倒是成功的,真是有心栽花花不开,无意插柳柳成荫,

相关文章
相关标签/搜索