.NET是个啥_拓展


一、前言

差不多一年前写过一篇博客——.NET是个啥

那篇博客基本上就是按照官方文档的翻译,并加入一些自己的理解和吐槽来写的。现在回过去看呢,虽然内容全面,但是停留在表面。(相当于回答了它是什么,它包含了什么)

什么意思呢?
通过那篇博客,可以知道.NET是微软的开发平台,它包含各种各样的工具。
但是,微软为什么要开发这样一个平台?这个平台是怎么实现的?和其他平台/技术(如Java)有什么不一样?
这些拓展的问题,似乎并没有办法得到解答。

本文主要围绕这几个问题,来讨论、进一步认识.NET。


二、.NET是个啥

.NET,它是微软创建的一个用于构建多种不同类型的应用程序的开发人员平台。

1 微软为什么要开发.NET平台

这个问题比较好理解。

我们都知道微软早期在PC操作系统市场几乎是垄断的。
电脑/计算机光有操作系统可不行,上面还得有应用软件啊。当然,微软自己不可能开发出用户需要的所有软件。虽然不能开发出所有软件,但可以开发一个平台,让有需要的人用该平台来开发软件,这样归根到底还是用了微软的技术,命脉(上层技术/元技术)还是掌握在微软手中。

当然,归根到底还是钱。占有市场,基于已有业务(OS)拓展新业务(应用软件)。

实际上这一步也不得不走,因为Java是1995年面世的,.NET是2000年出现的,而95年到2000年Java相当火爆。如果.net迟迟不出现,微软可能受到严重打击,失去相当一部分软件市场。可见.NET的出现是为了与Java抗衡。

最终,因为.NET的出现,至少在PC端桌面应用上,微软保住了霸主地位。至于其他方面(移动端、网页端),微软因为布局问题并不占优势。

至于为了程序员开发程序变的容易这一说,这是.NET必须达到的(.NET得做的好用,才有人去用;不然人人写汇编开发应用不就好了)。这不是.NET出现的原因,微软又不是搞慈善的。

2 .NET是怎么实现的

或者说是什么语言编写的。
这里提到的.NET当然不是指整个.NET平台,更像是专指CLR。

在这之前,先谈谈C语言的编译过程,大家应该都不陌生。
简单讲就是,预处理=>编译=>汇编=>链接。
它是一个将高级语言代码转换为计算机可理解的机器码的过程。

那显然,.NET最终也要生成计算机可理解的机器码,所以必然会经过其中一个或几个过程。一种更高级(这个高级不是说该语言多么先进,多么优越;而是指抽象层次更高)的语言(语言的编译器),通常是由更底层的语言来编写实现的。.NET的这个核心运行环境CLR也不例外,它是由C/C++以及汇编来编写完成的。

题外话——自举(bootstraping )


大家应该都听过“计算机中的万物是由01组成的”。
但是人不太可能直接用0和1去编程,于是出现了汇编。
汇编语言(Assembly Language)是一种与机器语言相对应的低级语言,它使用助记符(英文缩写)来代替机器指令的二进制码,更容易理解和编写。显然,这个更容易理解是相对而言的。看过汇编的人应该都知道,它的代码都是一些指令,什么mov啊、jmp啊,可读性还是不太行的。

于是出现了C语言,根据上面说的,高级语言通常由低级语言编写实现,所以C语言(C编译器)是由汇编写的?
其实现在的C编译器,一般就是C写的。
???C写C自己?那编译C编译器的是啥?
非要追根溯源,应该说最早的C编译器是汇编写的。最初,用汇编语言去写C语言的编译器,这个编译器就是C编译器的老祖宗。后来的C编译器就是用C结合该C编译器来写了。
其实学过编译原理的话,应该知道有个词叫自举
我们先用底层语言实现上层语言的一部分,称为C0。然后用这部分上层语言C0去实现其他部分C1;再用C1去实现C2…于是最终就得到了完整的上层语言。

有了自举这个概念后,再问.NET平台(这次指整个平台)是啥编写的?答案就很花了,C、C++、C#、汇编等等。

3 .NET和Java有何不同?

.NET是个开发平台;Java是一种编程语言。
两者没啥可比性,硬要比的话应该是C#和Java比。
不过平时口头上(有时候会把C#和.NET等同起来),确实会出现拿这两者作比较,这个时候通常是讲.NET相关技术和Java相关技术比较。
因为两者确实有很多对应的技术,比如.NET有ASP,Java有JSP;桌面端.NET有WinForm、WPF,Java有swing、Javafx等。当然它们各有千秋,有些技术不适应环境已经快被淘汰了。

总之,我认为两者各有千秋,C#在工业领域应用广;Java在企业应用广。从当下国内大环境来讲,Java是热于C#的,不过这不是C#的问题,是生态、历史等多因素造成的。同时,Java求职市场也更卷,国内大厂应用多。


三、 结语

严格来讲,这篇博客有点跑题了。
不过以上几点拓展认识对全方位了解.NET还是有促进作用的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据这篇文章,我了解到微信小程序是一种运行在微信客户端的应用程序,相比传统的APP,它有着更低的开发成本、更快的开发速度和更好的用户体验。 首先,微信小程序的开发成本较低。相比传统APP的开发,微信小程序不需要独立开发一个新的应用,只需要在微信开发者工具中进行开发,这样就减少了开发团队的工作量和开发成本。另外,微信小程序的开发语言和开发框架与网页开发相似,所以对于有前端开发经验的开发人员来说,学习和上手难度也相对较低。 其次,微信小程序的开发速度较快。由于微信小程序的开发工具提供了各种自动化的开发工具和模板,可以快速构建页面和功能,开发人员只需要关注业务逻辑的实现,不需要花费太多时间和精力在底层的开发工作上。同时,微信小程序的审核速度也相对较快,发布更新也不需要等待用户的App Store的更新。 最后,微信小程序提供了良好的用户体验。由于其在微信平台上运行,用户无需下载和安装应用,直接通过微信扫码或搜索进入,这大大提高了用户的使用门槛和方便性。而且,微信小程序的体积相对较小,加载速度快,可以快速响应用户的操作,节省了用户的等待时间。 综上所述,微信小程序具有较低的开发成本、快速的开发速度和良好的用户体验,因此成为了越来越多开发人员和企业选择的开发方式。无论是个人还是企业,都可以通过微信小程序实现更快、更便捷的业务拓展和用户服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值