Visual Studio代码时代

2020-09-23 04:03:13

在选择要使用的工具时,我最看重的是寿命。学习软件是一项投资,如果你以后必须切换到另一个应用程序,你就会损失一些投资。

在大多数软件类别中,选择寿命最长的软件是很容易的,最受欢迎的工具通常是使用时间最长的工具。Microsoft Excel和Adobe Illustrator都是在1987年发布的,从那时起,它们在很大程度上一直是各自类别中最受欢迎的软件。

另一方面,文本编辑器是一个软件类别,其中最流行的选项并不是最古老的。根据Stack Overflow年度开发者调查,Sublime Text是2015-2017年间Mac上最受欢迎的文本编辑器。崇高的文字发布于2008年,与Excel和Illustrator相比,这是一个充满活力的年轻人。文本编辑器一直是一个有很大变化的类别:在过去的20年里,TextMate、Sublime Text和Atom都是最具势头的文本编辑器1。对于大型、复杂的桌面软件来说,还有其他类别有这么大的变化吗?

我相信新的文本编辑器出现并迅速流行的时代已经随着Visual Studio Code的出现而结束。VS Code已经达到了前所未有的受欢迎程度和精细化程度,奠定了可能意味着数十年的市场主导地位的基础。如果像我一样,您的工具的优先事项之一是“长寿2”,那么这意味着VS Code可能是一个很好的文本编辑器,值得在今天学习。

VS代码长盛不衰的理由来自我们将在这篇文章中讨论的几个要点:

人气:它跨过了近代史上任何早期文本编辑器都没有跨过的人气门槛。

文本编辑器作为平台:这是一场围绕扩展重新构建文本编辑器的革命的结局。

范型超越:它超越了桌面应用的范型,成为一个托管的web应用,甚至是一个参考实现。

公司管理:它由一家实力雄厚的科技公司管理,并且正在积极发展。

VS Code是当今最流行的文本编辑器。它非常流行,可能是有史以来最流行的GUI编程工具。自2015年以来,Stack Overflow在他们的调查3中加入了关于文本编辑器的问题,当时Notepad++是最受欢迎的文本编辑器,34.7%的受访者表示他们“很可能会使用它”。在接下来的几年里,不同文本编辑器的受欢迎程度略有变动,但从来没有超过40%的大关。也就是说,直到2019年的大多数民调,VS Code的支持率跃升至50.7%。这是VS Code连续第二年增长约45%,这一次比2018年的34.9%跃升,当时VS Code已经是最受欢迎的。

因此,VS代码在客观上广受欢迎;我们接下来要看的是更定性的一点。在过去的几十年里,文本编辑器一直走在这样的轨道上,我相信VS Code是它的最终代表。这是文本编辑器通过增加扩展的角色和功能而独立成为平台的过程。下面是这一进程的历史。

BBEdit、Emacs和Vim本身都是很棒的文本编辑器,但它们都有一些特性(虽然像我这样的人很喜欢它们),但这些特性使它们无法成为最受欢迎的文本编辑器。

Emacs和Vim的前身Vi都是在1976年首次发布的,当时许多今天的用户界面约定还没有固化。使用Z、X、C和V修改键进行撤消、剪切、复制和粘贴(分别由1984年和1985年发布的原始Macintosh和Windows1.0普及的键盘快捷键)等早于此的约定。Emacs5和Vim都不使用这些键,而是使用它们自己的术语。例如,他们都使用术语“yank”(尽管意思不同,它是Copy in Vim和Paste in Emacs)。

BBEdit是在1992年发布的,大约在那个时候,一些第一批GUI工具出现了,并成为王朝。请注意,它们与Excel(1987)、Illustrator(1987)和Photoshop(1990)非常接近。就像那些应用程序一样,BBEdit在今天仍然适用。但与这些应用程序不同的是,它在同类应用中并不是最受欢迎的,差距很大。原因似乎至少部分是因为它从未完全适应文本编辑如此强调包装驱动的生态系统的世界。

TextMate发布于2004年,可以说是有史以来最有影响力的文本编辑器。在它普及的众多功能中,有基于缩写的代码片段、自动配对字符和按文件名模糊查找。所有这些功能都成为随后的每个流行文本编辑器的必备功能。TextMate首创的作用域选择器和主题化实现也构成了后续每个流行文本编辑器中主题和语法突出显示的基础。

这一点从一款应用程序中产生已经很多了,但它甚至还不包括TextMate最重要的创新;这项创新将继续重塑文本编辑器,巩固之前每一款文本编辑器的利基地位,并为VS Code在10年后成为历史上最受欢迎的文本编辑器铺平道路。TextMate最重要的创新是它是第一个主要围绕扩展构建的流行文本编辑器。

虽然TextMate普及了围绕扩展构建的文本编辑器的概念,但事后看来,它走得还不够远。TextMate的扩展有一些限制,以后的文本编辑器可以通过删除这些限制而蓬勃发展。

2008年发布的“崇高文本”(Suimime Text)普及了迷你地图和多种光标。与TextMate和BBEdit不同的是,它是跨平台的,运行在Linux、MacOS和Windows上,这有助于它比这些编辑器接触到更广泛的受众。但Sublime Text最大的影响是极大地扩展了扩展功能。

Sublime Text的扩展运行在具有广泛API的嵌入式Python运行时中,这与TextMate不同,TextMate使用MacOS内置的脚本语言,并且没有适当的扩展API,主要集中于处理标准输出。

崇高的文本极大地扩展了扩展的功能,允许更复杂的集成,例如包含GUI组件的链接。

即使有了Sublime Text的扩展,它仍然不够深入。Sublime Text的包管理器Package Control不是内置的,虽然Sublime Text确实有API,但是它将Python与GUI组件的自定义调用结合使用,仍然为后续的文本编辑器留下了更容易构建扩展的空间。

GitHub于2014年发布的Atom终于对其最终形式进行了扩展。Atom的包管理器内置在6中,显示带有内联图像的扩展自述文件(GitHub的早期扩展本身普及了使用动画GIF来说明功能的惯例),创造了一种让人联想到应用商店的扩展体验。

然后是HTML和CSS的问题。Atom构建在Electron7之上,这意味着编辑器本身是用JavaScript编写的,并且运行在Node 8上。与Sublime Text的Python API相比,HTML、CSS和JavaScript是现有的一些最广为人知的语言,这极大地降低了创建扩展的入门门槛。

Atom从本质上完善了基于扩展的编辑器,只有一个问题:它很慢。自Atom发布以来,性能抱怨一直困扰着它,市场最终以Sublime Text而分裂,相比之下,Sublime Text的速度非常快。

VS Code于2015年发布,基于微软在2013年首次发布的摩纳哥编辑器,该编辑器可以嵌入到网站中。当GitHub和Atom一起释放电子时。Microsoft使用它创建了名为Visual Studio Code的摩纳哥编辑器的桌面版本。

VS Code采用了与Atom 9相同的公式-一个用Electron编写的本地基于Web的文本编辑器,重点是扩展-并使其性能更好。VS代码通过将扩展放在侧边栏中,将它们提升到与文件浏览、搜索、源代码控制和调试相同的级别,从而使扩展更加明显。VS代码扩展可以有丰富的用户界面,使用HTML、CSS和JavaScript编写,并且拥有对Node的完全访问权限,它们基本上可以做任何其他应用程序可以做的事情。事实上,一些扩展本身开始看起来像是应用程序。

有了VS Code,基于扩展的文本编辑器似乎已经达到了它的最终形式。自从TextMate以来,扩展的重要性和功能都有所增加,而在VS Code中,这一进步似乎达到了顶峰。就是没有其他地方可去。相应地,没有一种新的文本编辑器可以像以前的文本编辑器那样通过改进扩展来跨越代码。

到目前为止,我们已经将VS代码的受欢迎程度及其扩展实现作为寿命的指标。我们将关注的第三个指标是VS代码如何超越了桌面的限制。代码服务器项目将VS Code作为常规Web应用程序运行,换言之,托管在服务器上并通过浏览器访问。GitHub的Codespaces也将VS Code作为Web应用程序运行,这一次是通过启动一个特别的开发环境。

超越一种范式,就像从桌面应用程序到Web应用程序一样,是长寿的一个很好的指标。首先,这意味着它在未来更有可能移植到更多的范例中。要移植到一个新的范式需要付出巨大的努力,而花费这一努力是一个很好的价值指标。Emacs和Vim都是从终端移植到GUI应用程序的;它们太有价值了,不能没有GUI版本。Photoshop和Excel都可以在手机10上运行,Illustrator很快就会推出。Excel也有网络版本11,还有一个流媒体版本的Photoshop(尽管它已经处于封闭测试版6年了)。

VS Code不仅超越了最初实现的参数,成为了一个Web应用程序,它还成为了某种程度上的标准。Eclipse Foundation维护的Theia IDE 1.0版是VS代码的重新实现。VS代码现在不仅是一个文本编辑器,而且还是一个文本编辑器应该如何行为的模型。

TextMate很大程度上出自开发者Allan Odgaard之手,Sublime Text和Jon Skinner也是如此。这两个应用程序最终都遇到了沮丧的用户,因为他们认为发布计划很慢。

对Sublime Text 3 Beta的抱怨似乎集中在2013年发布并于2017年发布的Sublime Text 3 Beta之间的差距,以及在此期间人们认为缺乏足够的变化。与BBEdit相比,Sublime Text的发布进度较慢,BBEdit已经发布了三个主要版本(11、12和13),而Sublime Text 3还处于测试阶段。虽然Coda 2是在2012年发布的,而且此后一直没有更新过,所以对于商业文本编辑器来说,Sublime Text的发布时间表是否真的不正常还不得而知。

VS Code的当前版本是1.49,但VS Code是开源的,因此它遵循与商业应用不同的规则。主要版本的存在至少在一定程度上是作为公司对升级收费的机会。

由于VS代码是开放开发的,我们可以通过回顾它的提交历史来直接评估它的开发速度。GitHub上的VS Code提交图讲述了一个积极发展的故事,超越了Atom,甚至其他大型开放源码项目,如Facebook的Reaction(请注意,这些图在Y轴上有不同的比例)。

咄咄逼人的发展将平台从市场中拉了出来,因为前进的势头和建立在平台上的第三方很难与12家公司竞争。这也是新进入者很难与流行的浏览器或操作系统竞争的原因。

本文的目标是确定如果您看重寿命,那么VS代码是否是一项很好的学习投资。文本编辑器作为平台的一个含义是,自从TextMate在2004年推出以来,每隔几年,最具发展势头的文本编辑器就会发生变化。以任何标准来看,这些都是短暂的统治,但与Excel和Photoshop等应用程序相比,它们无疑是微不足道的。如果你希望每隔几年就会有新的东西出现,那么学习一个新的文本编辑器是一项值得怀疑的投资。

VS Code给出的迹象表明,文本编辑器短暂统治的时代已经结束。如果我们使用其他类别的流行软件作为指南,它有可能在更长的时间内,甚至几十年内保持其最受欢迎的文本编辑器的地位。正如我们在这篇文章中所概述的,这方面的情况如下:

它已经越过了受欢迎的门槛,超过50%的开发人员使用了它,这是其他文本编辑器所没有达到的。

它是实现扩展功能和可见性最大化的最终形式,使其不会被具有更强大扩展模型的新文本编辑器超越。

它已经超越了最初的桌面应用程序,它也是一个网络应用程序,甚至已经成为文本编辑器行为的典范。

它是由一家公司管理的,所以不太可能遇到困扰其他文本编辑器的开发停滞。

在VS Code之前,我以为再也学不到不是Emacs或Vim的通用文本编辑器了,这太冒险了。我发现进行预测的一个好方法是假设事情将保持不变;对于文本编辑器,这意味着预计每隔几年就会出现一个新的文本编辑器,从而获得最大的动力。要想发生任何其他事情都需要非同寻常的证据。

我相信VS Code提供了非同寻常的证据。我希望它能凭借Excel、Illustrator、Photoshop等应用程序进入这一类别,这些软件几十年来一直占据着该类别中最受欢迎的位置。这些应用程序是可靠的时间投资,可以偿还他们在职业生涯中学习的成本。Emacs和Vim一直都是这样,但是有更多的选择总是好的。

如果你想一想,最流行的文本编辑器比其他类别的流行软件更新的事实是相当奇怪的,因为文本编辑几乎早于其他所有的计算机任务。我认为这有几个原因。首先,在技术层面上,编写文本编辑器比编写其他类别更容易。虽然我不想淡化其难度,但文本文件是计算机的通用语言,几乎每个主要的软件开发框架都至少有一些对它们的内置支持。现代硬件还为您提供了大量的性能余地来开发文本编辑器,这是您在开发(比方说)视频编辑器时所没有的。

第二个原因是用户更容易切换文本编辑器。虽然学习新的复杂软件包总是很困难,但至少使用文本编辑器,您可以使用新的软件包打开现有的项目并开始编辑它们,因为开发项目只是由纯文本文件组成。几乎没有其他软件类别可以证明这一点,大多数应用程序使用只有其应用程序才能读取的专有格式。文本编辑器往往更容易使用的另一个原因是,通常(但并非总是)很容易弄清楚基本知识:如何输入和编辑文本。基本功能通常比Adobe Illustrator更容易理解,因为如果不阅读手册,Adobe Illustrator几乎是不可能使用的。

这些因素结合在一起,使得文本编辑器成为一个竞争特别激烈的市场,而竞争在推动创新方面是有效的。在我看来,它使文本编辑器成为最好的软件:它们拥有任何软件类别中形式和功能的最佳平衡。最接近的竞争对手是浏览器和终端,它们也将功能和灵活性结合到一个优雅的包中,但我将优势交给了文本编辑器,因为浏览器和终端分别通过简单地包装强大的概念、协议和标准流来实现其功能。相比之下,在文本编辑器中,用户界面就是应用程序,而对于其他类型的应用程序则不是这样。(这也是为什么浏览器和终端的感觉都大致相同,而文本编辑器却多种多样。)-↩︎。

如果我最看重的是长寿,那么为什么不使用Emacs或Vim呢?对于Vim来说,答案很简单,我已经在使用它了。但是我不喜欢编写散文Vim的模态编辑模型,所以我开始寻找非模态编辑器来补充Vim。

我也花了相当多的时间使用Emacs,但它开始崩溃,出现了一个类似于这个问题的问题。该帖子的作者通过在本地编译Emacs以在lldb中运行它来解决他们的问题,这比我愿意解决我的问题走得更远。

Emacs很难实现平衡:它非常可定制,但也是支离破碎的。对于Mac来说,有几个流行的端口。而且,MacOS不是Emacs的高优先级平台。从Emacs中屏蔽仅限MacOS的功能,以及删除已在运行的功能,这是有历史的。总而言之,这使得Emacs在MacOS上很难推销。可定制性和碎片化从一开始就不是一个很好的组合,因为自定义通常会在一个版本中起作用,而在另一个版本中不起作用。但是,考虑到市场占有率相对较低(2019年为4.5%),再加上它所在的平台相对于GNU/LINUX来说是二等公民,所以很难推荐,尽管它有很多优点。--↩︎。

由于某种原因,堆栈溢出移除了有关2020年文本编辑器等开发工具的问题,这是非常不幸的。-↩︎。

文本编辑器成为平台的过程是根据之前的一篇帖子改编的,而这篇帖子又改编自推特的一个帖子。(↩︎)。

Emacs确实包括CUA-mode,当打开该模式时,会将C-x、C-c、C-v和C-z分别定义为“剪切(终止)、复制、粘贴(Yank)和撤消”。(CUA-MODE这个名称有点用词不当,因为IBM Common user access从未使用过这些键绑定。)/↩︎。

2011年发布的TextMate2还在一个流行的文本编辑器中内置了第一个扩展浏览器。--↩︎。

与其他文本编辑器相比,VS代码不那么“可破解”。例如,它没有传统的.emacs.d和.vimrc中的“init”文件(Atom确实有一个)。这使得VS代码更难自定义,因为唯一的方法就是创建一个扩展。↩︎。

假设VS Code在技术上可行的话,它应该已经存在于iOS上了,因为它是开放源码的,而且非常受欢迎。它为iPadOS作为平台的未来提供了一个有趣的案例研究。因为,如果将VS代码移植到iPadOS在技术上是不可能的,那么,随着VS代码变得无处不在,这就越来越成为iPadOS根本不支持编程的代名词。

这一点可能没有实际意义,因为iOS原生版本的VS代码很可能与范例超越中描述的相同的客户端-服务器模型一起工作。但这仍然是一个有趣的思维实验,因为我经常从bottom(https://en.wikipedia.org/wiki/Disruptive_innovation).上看到关于iPadOS将[颠覆]整个行业的预测。我想知道,如果一个平台在创建文本编辑器方面设置了这么多技术障碍,那怎么会发生这种情况呢?-↩︎

拥有网络版的另一个好处是,网络应用程序不必遵守应用商店审查指南,因此被苹果禁止的应用程序仍然可以在平台上存在。-↩︎。

正如我喜欢说的那样,如果你正在寻找将被新技术颠覆的领域,那么就寻找被忽视的领域。-↩︎