JavaScript成为GNOME的首选语言

GNOME项目在其最近结束的Developer Experience Hackfest上做出了一个备受争议的决定,它们宣布JavaScript将作为GNOME桌面环境下用于开发应用程序的首选语言。据称,之所以做出这一决定,是为了简化开发流程,从而(使开发者)能够专注于标准的文档、最佳实践和开发者工具。

这个推选JavaScript成为主要语言的决定立刻激发了争论,评论者们对JavaScript进行了明确的批评,或是感叹他们选择的语言遭到忽视。GNOME基金会成员及Hackfest参与者Travis Reitter,列举了做出此决定的若干理由:

  • 我们应选择动态的、高级的语言。
  • 在GNOME Project中,JavaScript已经占据一席之地——它被用于GNOME Shell和GNOME文档中。
  • 要使一门语言变得非常快速、可嵌入并且与框架无关,需要大量的工作。
  • JavaScript越来越被视作一门顶级桌面编程语言——它广泛出现在Windows 8、移动平台和本地Web应用中。
  • JavaScript是独立的——它不带有独有的核心类库,这使得我们更容易将其与平台进行整合。

Reitter同时提醒到,即使针对应用开发领域做出了这项决定,C依旧是GNOME系统类库的推荐语言。GNOME选择JavaScript并不意味着对其他语言的支持会被忽视,但文档和开发者工具将优先支持JavaScript。

该公告引来了大量的评论。以下是Sriram Ramkrishna的部分评论:

“我认为人们最关心的,是一门语言可能会落后于其他语言的问题。这也正是我们今天所处的境地。所以如果你决定使用另一门语言,将要面临的风险在于,你所使用的语言将无法获得一些重要的升级。对那些使用JavaScript之外的其他语言的开发者来说,应该有某种方式来保证他们能够及时看到适合他们所选择语言的升级。

Tristan Van Berkom向GNOME发出了希望能有一门“本土语言”的呼声:

GNOME需要一门自己的语言,就如同属于苹果的NextStep Objective-C实现一样。我之所以这么说,是因为这样一门高级语言的实用性;是因为这门语言是我们平台的一扇窗户,并能够利用平台独有的特性(我在此处所说的平台,是指GObject/GIO/Clutter/GTK+/等等的组合)。

Vala是非常明显的选择,因为它允许我们对语法进行扩展,并能够利用那些我们平台独有的特性。与使用Objective-C利用NextStep环境相类似,使用Vala能够使我们更容易利用GtkBuilder的特性,而且我们应该对Vala能够带给我们的未来抱有期望。

Vala是专为GNOME应用开发者们开发的,用于替代C#和Java的选择。然而(GNOME)没有选择它,却选择了JavaScript。Reitter这样评论道:

“选择JavaScript而不是Vala的一个重要原因,是JavaScript有着巨大的用户群,人们已经热衷于使用JavaScript(即,它是Windows 8、Firefox OS和其他移动平台的推荐语言),同时人们为了使它更快速和稳定所做的工作也是非常重要的财富。

Keith Curtis通过一篇独立的博客文章发表了他的评论:

“他们试图使用一门带有垃圾回收机制的语言来编写尽可能多的代码的做法是很棒的。对于一个基于组件的shell界面,毫无疑问JavaScript要比C、C++或Java更好。我注意到,若干年前他们就开始着手于JavaScript并向这个目标前进,但我认为他们值得重新考虑一下是否处在正确的道路上。

对于那些重大决定,最好能有书面记录。除了在公布该决定后发表一篇博客文章,我找不到任何支持这个决策的文档, 而那篇文章页没能提供非常详尽的信息。”

与之相对的,KDE项目的参与者们使用的是C++。应用开发者们可以从C++、Python、Ruby、C#和Perl中选择。使用C++、JavaScript、Python、Ruby和QML(基本上是对JavaScript和CSS的融合)为KDE编写的轻量级应用被称为Plasmoids

查看英文原文:JavaScript Now First Among Equals on GNOME

关于蛋 丁

关注互联网发展,关注前端开发,关注新软件发布。这个博客记录东瓜互联网的生活。虽非饕餮大餐,但愿我的视界能给你带来新的发现。
此条目发表在研发分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>