当前位置: 首页 > 科技观察

热门技术:小编背后的程序观

时间:2023-03-20 19:45:26 科技观察

最近看到新闻,Eclipse的市场份额持续下滑,而IntellijIDEA的异军突起,终于超越Eclipse,成为Java程序员首选的开发工具。有感于此,回想起这些年我用不同的语言写作,用过很多编辑器。以前的程序员和现在的程序员用什么编辑器来编程?不同语言的程序员更喜欢用什么样的编辑器来写程序?编辑与语言我们来看下图,来自TIBOE2016年10月最新的编程语言流行度排行榜。Java以后端和Android开发为主,牢牢占据第一。Java的历史只有最初的20年。开发工具编辑器的变化,从前五年的混战,到后来的JBuilder一统天下。之后,Eclipse开源诞生,并被JBuilder所取代。Eclipse之所以能够打败JBuilder,是因为它的开源免费和极其活跃的社区。考虑到开发工具市场是一个技术壁垒高、利润率低的小众市场,我认为在开源免费的冲击下,不会有商业公司单独以此为核心业务。没想到,打败Eclipse的是商业软件开发工具公司JetBrains的IntellijIDEA。后端的C、C++开发,肯定还是使用几十年不变的古老的Vi或者Emacs。下面我们将详细介绍这两个神奇的编辑器,暂时不一一列举。而C#自然要用到微软的万能编辑器VisualStudio。作为一个用Mac的程序员,微软的工具我还真没怎么用过,就不多说了。JavaScript作为当前前端的主导语言,是最让我困惑的。当我还在写一些网页的时候(大概三四年前),我一直没有找到一个我认为适合JavaScript的编辑器。如今前端百花齐放,热闹非凡。我看到的每个前端程序员似乎都在使用不同的编辑器。编辑器与上帝两个了不起的编辑器:vi或Emacs。他们都出生于1976年,麻省理工学院的RichardStallman和GuySteele完成了Emacs的第一个版本,同时伯克利的BillJoy编写了Vi。他们每个人都围绕着完全不同的设计理念,他们之间存在巨大差异,每个人都有自己的粉丝群和相互蔑视。有点像《火影》的漫画,战将和宇智波一族斗了很多年,但两位主编还没有达成一致——也就是一直没有一个集两位主编特点于一身的主编同一时间。.Emacs的核心思想是快捷键和自定义配置扩展。编辑器提供了一组命令并绑定了一系列快捷键。如果你发现默认快捷键没有提供你想要的功能,你可以自己编程来扩展它。因此,本编辑器内置了Lisp语言解释器,所有的配置都是通过该语言完成的。因此,要用好Emacs,必须先学习一门语言,而Lisp是计算机史上第二高级语言。为了使用编辑器,您必须先学习一门语言。这么折腾,难怪有“神”小编。因为Emacs对高级功能的满足是提供一种编程语言自己编程,所以有夸张的说法:“Emacs是一个伪装成编辑器的操作系统”。而Vi是完全不同的风格,它是基于命令的组合概念。在讲组合之前,你需要了解Vi的几种基本模式。Vi有三种模式:命令模式、插入模式和末行模式。插入模式用于普通的编辑和打字,命令模式用于组合。如何理解命令的组合?这是一个简单的例子。Vi中的删除命令是d,那么它删除的是什么?这取决于你如何组合它。比如另一个命令w表示向前移动一个单词,$表示移动到一行的末尾,所以组合dw表示删除一个单词,d$表示删除整行。之后,你会学到一个新的命令y来复制文本,所以你应该知道如何组合命令来复制当前行的文本。Vi显然没有Emacs令人沮丧。当你熟练掌握Vi后,在编辑文本时会有一种手指飞扬的感觉,因此Vi也被誉为世界编辑器的“神”。唯一的问题是Vi中的命令太多了。如果想要手指飞扬的感觉,可以先将电脑桌面换成下图。然后日复一日,天天用,估计会大获成功(反正我没搞定,一直磕磕碰碰,一会没用就忘了)。对于一个Vi初学者(以前只用过记事本等编辑器的用户),心里会有两个疑问:如何输入?如何关闭?相比之下,新手Emacs用户心中会少一个疑问:好吧,我尝试输入一些字母,现在,如何关闭它?以上是网上经典的编辑器学习曲线图。几年过去了,画面中的一些小编已经消失在了历史的长河中。我们只要看看Vi和Emacs的曲线就可以了。如果你真的不得不尝试这两个了不起的编辑器,你会对这种学习曲线产生一种同情的感觉。事实上,直接使用这两个神奇编辑器的人并不多。从Vi的发展来看,只有Vim对其进行了增强。听说最近出新版本了。继承自Emacs核心理念的编辑器想必很多人都用过:SublimeText和Atom。SublimeText在Emacs中使用Python而不是Lisp。Lisp太老了,而Python在之前的编程语言排行榜上依然是第五。大家的学习兴趣和群众基础都会好很多。Atom是Github近几年推出的一款新的编辑器,它使用CoffeeScript来替代Lisp。这是什么语言?它似乎不在列表中。它只是一件JavaScript的马甲,简单的说,CoffeeScript会被编译成JavaScript。编辑器和程序员世界上有三种程序员,一种用Emacs,一种用Vi,剩下的用其他编辑器。是的,剩下的大部分是使用各种IDE的程序员,但实际上现在使用IDE的程序员可能占了大多数。至于第一编程语言Java,我想很多Java初学者都是从IDE开始的。因为相对于通用编辑器,Java的IDE确实提供了更高的效率。十多年前我入手的IDE是JBuilder,而在Java刚刚诞生的年代,它的第一个IDE是Symantec开发的VisualCafé,几乎以横扫市场的方式迅速占据了Java开发工具的头把交椅。.后来同时出现的竞争者包括IBM的VisualAgeForJava,而Borland的JBuilder几乎是最后一个开始的竞争者。但Java的开发工具之争似乎是一场漫长的马拉松。除了最初的表现,更重要的是谁能坚持得更久。JBuilder以果断的态度后来居上,以每年大版本的速度持续迭代。第四年,JBuilder4.0完成反超,占据了超过50%的市场份额。2001年12月左右,IBM终于宣布将VisualAgeForJava开放给Eclipse项目,正式结束了VisualAgeForJava在Java开发工具市场长达五年的角逐,这也是对Java影响最大的事件Eclipse的诞生。Eclipse以开源、免费、开放的架构推出后,虽然Borland也算得上传奇公司(还有一个成功的产品Delphi),但其态度充满了商业严谨,JBuilder也堪称经典,但其潇洒和Eclipse的自由风格,强烈的用户归属感无以言表,我用的最后一个版本还是JBuilderX。作为一个十几年的Java程序员,过去也逐渐从Eclipse切换到IntellijIDEA两年。曾经潇洒自由的Eclipse似乎变得越来越笨拙和卡壳,于是程序员们纷纷另辟蹊径,弃旧爱恨。但是无论是编辑器还是IDE,都是工具。工具是用来扩大你的才能和提高你的效率的。所以我不支持一辈子只需要用一个编辑器的程序视图。其实在我看来,我把工具分为两派:DefaultPreferenceDefault指的是工具背后的程序概念,提供足够好的默认功能。大多数时候(99%)你只需要使用工具提供的默认功能,默认功能包括一些有品位的选择(如:颜色、背景、字体)是最适合那些喜欢的人的选择开发工具。Preference就是随意提供一些默认的功能,然后提供很强的定制化和扩展性,让用户按照自己的喜好来定制和使用。我感觉苹果的大部分软硬件产品都体现了Default背后的程序理念。Linux/Unix世界中的大多数软件都反映了Preference程序视图。应用于编辑器时,我总是选择符合Defaultprogram理念的产品,因为比起折腾工具本身,我更感兴趣的是用好的工具来解决我面临的问题。有没有完全不使用IDE的Java程序员?据我所知,没有,但我认识一个不使用IDE的Java程序员——JoshuaBloch。他是著名的Java程序员,JDK集合框架和其他几个库的作者,也是EffectiveJava一书的作者。他对编辑器或工具的看法是:“因为我是个老家伙,所以Emacs的快捷键已经在我脑子里长出来了”。所以他习惯用Emacs自己写一些小程序或者库,但是对于一些需要多人合作的大事,就不得不求助于现代IDE,比如:IntellijIDEA。从某种意义上说,我支持这种极简主义的编程观点。现代IDE试图集成太多的功能,集编译、调试、打包、运行于一体。虽然很方便,但IDE变得越来越笨重也就不足为奇了。用好一个工具的诀窍是弄清楚这个工具背后的核心思想,搞清楚我为什么要用这个工具,而不是这个工具提供了什么我需要用它。...这篇文章是在Atom编辑器上完成的,它的默认模式几乎可以满足我的所有需求。在满足Preference的前提下灵活而强大。除了让用户学习一门编程语言,还有别的办法吗?是的,我还不知道CoffeeScript。