读者须知:本文内容均为作者凭记忆写的,没有严谨考证,如果错误敬请指正
1. 史前时代
计算机刚被发明出来时是没有编程语言的,代码都是通过0、1直接在纸带上打孔然后输入到计算机里,然后人们发明了汇编语言,然后又发明了Pascal,Fortran,一直到C语言问世标志着过程计算语言的成熟。提到C语言,我们总会想到谭浩强那本教材,以及冒泡排序、链表、二叉树等算法和数据结构,需要很严谨的逻辑思考,当然要做点UI就比较困难了,基本是DOS状态。
2. 1990年代
Windows问世后,VB、VC开始主导桌面程序开发,经典的就是6.0版本,估计现在还有人用,C++已经有了面向对象(更早的Objective C),不过没有托管内存,上手也是有难度的。Java的出现标志着面向对象语言走向成熟,也是微软第一次遇到了强劲的竞争对手,这当然难不住善于模仿的微软,于是在新千年到来时,.net framework浮出水面了。
3. .Net Framework
04年开始接触.net framework 1.1,没多久转到 2.0,是.net framework 走向成熟的版本,特别是那本《.net framework2.0 框架程序设计》真是经典,把什么是面向对象讲清楚了。此后多年.net framework都在添砖加瓦,C#也在增加语言特性,比如linq,lamda表达式,WPF等等,也尝试在web开发上有所建树,不过始终有两大缺陷:一是绑定Windows操作系统,一个是样样通样样松,前端干不过谷歌、脸谱、苹果推出的框架,后端干不过go这种新语言,有种树倒猢狲散的感觉。
4. .Net Core
微软进入了纳德拉时代,从固守Windows,Office 向开放、云业务转变,先推出 typescript 为 javascript 增强面向对象,再来一个开源的 vscode,开发人员发现微软也不那么死板了。.net core 刚出来时微软是要把 .net framework推倒重来,也是开源的。到2.1版本时,其web并发性能已经接近go了,我用.net core2.1 写过一个web socket通讯程序和一个实时数据库内核程序,在性能和部署方式上体验都不错,最近用.net core3.1 在Win10写的程序不用重新编译,dll就能在armv7 Linux下跑,微软的诚意大家应该相信了。
5. .Net
2020年11月10日,.Net 5推出来了,与.net core的另起炉灶不同,.Net 5没有抛弃.Net Framework,而是要统一成一个体系(.Net Standard),这对于用C#开发的码农有什么好处呢?我的理想是,某一天从嵌入式,到服务,到数据库操作,到网站,到前端(Web Assembly?)都可以用一套语言、一套UI框架来开发,开发出来后可以运行在各种硬件平台、各种操作系统上,那就不用学C、go/C++、java、python、javascrip语言和五花八门的框架了,微软你能做到么?