社会热点

从Visual Studio 2017谈起,解析微软技术生态进化之道

字号+ 作者: 来源: 2017-03-28

从Visual Studio 2017谈起,解析微软技术生态进化之道,visual studio 2017微软,如何用visual studio 编写c,管理信息系统visual studio,blend for visual

  曾经被业界取笑「闭关锁国」的微软如今也走向了「改革开放」的道路,Visual Studio 2017的发布,不仅是VS二十周年的大事件,更是微软技术生态焕然一新的直观体验。以前只支持Windows及自家产品的微软,现在iOS、Android、Mac都支持了。

  写在前面

北京时间2017年3月8日凌晨,Visual Studio 2017如期发布。今年恰逢Visual Studio二十周年,Visual Studio团队可谓诚意满满、不负众望——VS2017不仅拥有全新的模块化设计和更强的性能,功能上也是具有颇多看点和干货,绝非不痛不痒的“年货式”更新。更重要的意义在于,它折射出了微软对于业界技术趋势的最新思考,也展现出了微软拥抱开发者社区的全新姿态。

大家可能还记得鲍尔默在众人前高喊"Developers, developers, developers!"的场景,这说明微软本有着非常重视开发者社区和开发者体验的传统。然而前些年,也许是失之于封闭和捆绑,微软在开发者群体中的影响力走势低迷。将各技术产品线进行排他性整合的思维最终被证明是不受欢迎的——在这个崇尚开源的互联网时代,它反而削弱了微软各大技术平台的竞争力。

好在新任CEO纳德拉执掌公司以来,给微软带来了巨大的思维方式的转变,开放与协作迅速成为了主旋律。 崭新的公司文化帮助微软的技术生态跳出了过去的窠臼和局限,并逐渐进入了一种生机盎然的绝佳状态。本文试图通过梳理 VS 2017 的诸多特性,从编程语言及其工具体系、移动和云、容器化和DevOps等不同视角来探讨Visual Studio乃至整个微软技术栈的基因变化,解析其进化之道。

  编程语言及其工具体系

Visual Studio 2017一如既往地为多种编程语言提供了原生支持,如C#、Type/Java、C++、F#、Visual Basic等,也集成了这些语言的最新版本。

C#语言稳步发展,开始支持模式匹配

众所周知,VS的当家语言是C#。C#现已是一门多范式的主流编程语言,历久弥新,LINQ、dynamic、async/await等标志性特性使其在世界范围内拥有众多拥趸。新版Visual Studio按照惯例带来了全新的C#语言版本C#7,新增了Out变量(Out variables)、元组值类型(Tuples)、引用返回(Ref locals and returns)、本地函数(local functions)等特性。C#7的演化思路很清晰,是在C#6的基础上带来稳健的增量更新,使代码更为简练,可读性和可维护性更强,进一步巩固C#主流编程语言的地位。

最值得一提的新特性,恐怕要数模式匹配(pattern matching)了。这一标志性的函数式编程范式引入C#后,巧妙地融入了原有的is关键词和switch语句,可在诸多场合大幅简化繁琐的变量声明、if语句和类型转换,凸显业务逻辑本身。

与此同时,我们还能够看到C#语言团队的谨慎和克制——因为模式匹配原本计划做得更加深入,如加入match关键词和类型分解(destructuring)等高级特性,但C#团队最终选择了暂时避免激进变化,采用了更温和更稳健的策略。这样的一种克制,对于C#这样具有较重历史负担和大量遗留代码的语言来说,是一种对庞大的用户群体负责任的态度,也降低了众多C#开发者学习和升级的门槛。

Roslyn编译器为C#发展推波助澜

C#众多新特性的背后,离不开Roslyn编译平台的坚定支撑。历经数年孵化的Roslyn使用C#实现了一个现代的C#编译器,现已能完全替代原有的C++实现,真正走向了成熟。任何语言的生命力源于一个开放的、架构良好的、可维护的编译器code base,开源的Roslyn做到了这一点。像前面提到的模式匹配的类型分解,其实在Roslyn平台上实现并不困难,甚至已经有了初步的代码实现。因此,全新出发的Roslyn平台,是C#后续良好快速发展的保证,我们对C#的未来应当充满信心。

Roslyn带来的另一个好处是强大的编译器API和元数据暴露能力,也在VS2017中得以体现,提高了生产效率。在使用VS2017时不难发现,最常用的查找所有引用(“Find All References”)的结果得到了良好的格式化和语法高亮,还支持更多的展现选项;“Ctrl + .” 的智能提示组合键也变得更加强大,覆盖了更多场景,还能帮助开发者迁移代码到C#7——这些都离不开Roslyn的加持。之前类似的功能可能需要通过第三方商业扩展(如JetBrains的Resharper)才能拥有,而现在相当部分已经在Visual Studio中直接内置了。

颇受好评的Type持续快速迭代,同时支撑了新版Visual Studio中的Java工具体系

Type是微软近年来的另一个重大投入,由C#之父 Anders Hejlsberg亲自掌舵,可以理解为Java语言的一个超集。Type设计和发展的思路紧紧围绕两点:一是引入可选的强类型机制,以提供强大的编译期检查和智能提示;二是全面拥抱乃至提前实现ECMA标准,使得众多开发者可以第一时间尝鲜,不必等待浏览器的内置支持,而对标准的遵循也使得开发者的学习成本得以摊薄。

这两个正确的设计决定让Type具备了鲜明的强类型生产力特征,同时又能与Java和Node.js的已有社区成果深度兼容。因此,Type一经推出就广受欢迎,在近年不断获得关注和采用。如Angular框架团队于2015年宣布Angular2放弃自有的At转而使用Type,堪称微软与谷歌开源技术合作的破冰之举。

毫无疑问,VS2017自然内置了最新的Type 2.2版本。除去在Visual Studio中开发和编辑Type代码的丰富体验外,基于Type的核心能力和强类型生态,Visual Studio 2017还全新打造了Java Language Service(原开发代号"Salsa")来支撑在新版VS中的Java tooling体系。

换句话说,微软基于Type的能力打造了为Java开发服务的语言基础设施,类似Roslyn对于C#的基石作用,使得VS中Java相关的智能提示、代码导航、代码重构等体验取得了大幅改进。之所以相关能力可以跃升,基于Type的静态代码分析引擎功不可没,它替换了老旧的主要依赖动态执行获取信息的Intellisense引擎 。另外,Java编辑时上下文中的静态类型信息既可以来自Type生态的大量强类型定义(主要由DefinitelyTyped 项目提供),也支持解析社区常见的JSDoc,这是又一个亮点。

Type近期版本还不断地加强了对JSX语法的原生语言级别支持(JSX自Type 1.6版本开始引入)。从面向React.js进行JSX特性的设计,一直到最近为React Native进行适配和优化——倾听社区声音的Type非常接地气 ,体现了对流行框架的支持和融合。

微软技术栈中的其他语言,也在Visual Studio 2017中得到了更新,如C++、F#和Visual Basic。其中,C++进一步实现了C++14和C++17标准中的特性,并开始支持跨平台开发;F#发布4.1版本,提出要成为具备最佳效率工具支持的现代函数式编程语言;而Visual Basic则将一定程度停止对C#的简单克隆,着重发展自己的特色。因篇幅所限,此处就不再展开。

以Visual Studio 2017领军的VS家族已经完成布局,形成了一个开发生态的矩阵


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章