百科问答小站 logo
百科问答小站 font logo



Atom, Vim, Visual Studio Code, Emacs 哪个好? 第1页

  

user avatar   pansz 网友的相关建议: 
      

虽然这个老问题又推到了我的时间线。但我觉得,时至今日,我有一些新的感受。

这些感受来源于一位知友的观点:编程语言与其相关的基础库绑定。一种语言的基本库或者框架代码的流行决定了这种语言的生命力。

这个观点推广开来就是:围绕一个产品的应用生态决定了这款产品的生命力。

C跟C++语言在很长的时间里都是编程届最流行的语言,这是为什么呢?因为它具备极其庞大的软件生态,整个Linux系统中有成千上万的供C语言链接的编程库(C++也因为可以原生链接C库而沾光)。所以这造就了C语言的生态,也造就了历史上的一个辉煌时代,在那个时代作为一个程序员,学会使用Linux系统就是绝对的人上人,使用Linux系统意味着掌握了更先进的生产力,毕竟,Linux系统提供了对大量的开源C/C++库的原生支持,在Linux中引入C开源库要比使用其它操作系统要方便得多。(Linux就是免费的Unix,所以你可以把Linux以及BSD都当作类似Unix的系统)

然而,Java作为后起之秀,用更好的办法解决了这个问题:maven库,比C/C++依赖甚至更加好用,在这个体系下也发展到了gradle等编译机制,因为Java本身就是一个平台,所以不再需要操作系统级别的依赖管理支持,而是将依赖管理直接做到编译构建系统中去!这个体系客观的说,确实使得程序员对Linux系统的依赖大幅度降低了。

类似的体系在各种语言中蓬勃发展,比如还有js的包管理体系,python包管理体系等等。——凡此种种,以至于到了后来,没有一个靠谱的包管理体系,依赖包安装体系,已经很难成为一种流行的现代编程语言。

其它语言要异军突起,恐怕只有曲线救国。

比如,创造一套独一无二的编程框架,使用这套编程框架必须绑定某种语言,用这种方式强推某语言。

比如,直接使用java虚拟机,蹭java软件生态(跟C++蹭C语言软件生态差不多的道理)。


话扯远了,那么说回到编辑器之争,它真的仅仅只是编辑器之争吗?

不,其实它并不仅仅是编辑器之争,还是应用生态之争。

在编程届早期的几十年里,没有任何编辑器,在插件系统等方面构建了像 emacs, vim 那样成熟的生态。使得他们蓬勃发展,成为了傲视其它IDE的王牌编辑器,因为客观的说,在那个时代,emacs 跟 vim 在功能上远远强过当时的 IDE。——所以那句经典的名言,并不是个段子,而是当时客观存在的真实:世界上只有三种编辑器,vim,emacs,其它编辑器。

不过,历史是在发展的。越来越多的新的编辑器或者 IDE 构建了属于自己的插件生态。

这里边比较优秀的有 Jetbrains 系列:它旗下的IDEA,PyCharm,AndroidStudio,CLion等等IDE都是共享插件生态的。

还有Visual Studio Code:是Eclipse的原作者跳槽到微软之后的新作品,构建了一套全新的通用插件体系,使得VSC有成为任何语言IDE的能力。VSC的插件生态也非常的发达。

至于Eclipse的插件体系相比前两者就差多了。不过好歹还是基本可用的。


不过编辑器届的特例依然还有几个:

一个是像XCode那样的特例,它的本质就是:将iOS编程框架强制绑定到这个IDE,然后将IDE强制绑定到某个操作系统,将某个操作系统强制绑定到某个品牌的电脑。只要你被迫使用这个编程框架,那么你就得被迫使用这个IDE,进而被迫使用某个操作系统,以及某品牌电脑。因此,你会见到有很多程序员使用 xcode,但说它好话的程序员真的不多,除了一些只用过很少种类ide的新程序员以外。毕竟,这个ide根本没有做得更好用的动力,再怎么不舒服你不是还得捏着鼻子用么。

二个是像vim这样,不仅是一个编辑器,同时还是一种编辑器的模式:非常多的程序员即便不使用vim编辑器本身,也会选择在各主流编辑器中安装vim支持的插件。这样就能在不同的IDE中获得基本相同的编辑体验。客观的说,vim自身的包管理系统已经跟不上时代了,它的插件应用生态发展速度已经明显放缓,而vim语言本身并没有能够撑起一个独立的应用生态,但vim编辑模式却依然作为它的核心价值观,在各种新生代编辑器中发光发热。

三个就还是emacs本身,因为它是lisp届的扛把子,所以它始终有自己的一席之地,因为它的应用生态与这个语言本身的应用生态高度绑定。而这个语言本身,确实有很多程序员因为要学习这个语言而接触这个编辑器。


最后,切个题:

atom大概率是要被vsc打败了,不是技术上的原因,而是生态上的,vsc的应用生态已经崛起,atom很难再与之匹敌。

vim作为一个独立编辑器,它的应用生态确实不容乐观。但 vim 本身作为一个编辑器模式,具备自己独特的魅力,能够完美的适配进所有当今主流编辑器与IDE,所以它正在以全新的形式活跃着自己的生命力。

unix,以及从unix哲学诞生出来的linux跟bsd,是C语言依赖包管理体系的一部分(C++因为蹭了C语言的应用生态所以通常也被归类到C语言生态,合并称为C/C++),这整个系统都是为C语言编程而诞生,只要C语言依然还是世界上最流行的语言(TIOBE排名没有掉出过前3,大量时间里稳居第一),那么unix类的系统就依然还是对程序员来说非常重要的值得学习的操作系统。——C程序员懂unix类操作系统的重要性,就跟java程序员懂maven依赖库的重要性差不多。

至于emacs,则是本身与 lisp 生态高度绑定,难以被其它生态取代,也难以取代其它生态。

你所学习的那门课程要求 lisp,那么,学习 emacs 肯定也是对此有帮助的。




  

相关话题

  回调函数 callback 的实现原理是什么? 
  为什么现在会有这么多种编程语言? 
  为什么 Linux 如此安全,却不把 Linux 设计成像 Windows 一样的图形界面来使用? 
  当你学会了什么之后感觉自己的编程算是入门了? 
  什么是 Functional Programming? 
  学习编程必须要会英语吗? 
  如何看待网传视频「青岛外卖小哥帮崩溃程序员写代码」? 
  就节省编译时间来说,Precompiled Header和Pimpl范式哪个更好? 
  为什么好多编程“牛人”不喜欢用 Microsoft Visual Studio? 
  大型公司里面如何防止程序员接触到核心代码? 

前一个讨论
是什么赋予物质质量?
下一个讨论
物理学泰斗史蒂文·温伯格(Steven Weinberg)逝世,如何评价他对物理学作出的贡献?





© 2025-02-23 - tinynew.org. All Rights Reserved.
© 2025-02-23 - tinynew.org. 保留所有权利