Groovy 首次进入 Tiobe 语言排行前 20 名榜单

  • 崔康

2013 年 10 月 15 日

话题:函数式编程语言 & 开发架构

动态 JVM 语言在 Tiobe 的编程语言排行榜中所占的比重较小,但是在过去的一年里,其排名的变化却十分显著。本月,Groovy 首次进入 Tiobe 语言排行前 20 名榜单。

Groovy是一种基于 Java 虚拟机的语言, 其拥护者举出了 Groovy 的很多好处,比如提高了开发人员的工作效率,简化了测试并且支持特定领域语言等。然而在 Tiobe 的搜索排行结果中,Groovy 只占了搜索比例的 0.658%。Tiobe 的执行主管 Paul Jansen 表示:

的确,以 0.658% 的比例进入编程语言的前 20 名确实不太常见,但是值得关注的是 Groovy 排名的变动,上个月,它排在第 22 位,而去年它排在第 53 位。人们对于 Groovy 的突然兴趣并没有什么特别的原因,我发现它和 Java 一起更频繁的被用于我们客户的网站上。

本月坐头把交椅的语言依然是 C 语言,C 语言与排名第二的 Java 的差距显著扩大。虽然 C 语言在上个月的搜索引擎平均点击率为 16.975%,Java 的点击率则是 16.154%。但本月的 C 语言点击率指数为 17.246%,Java 则是 16.107%。

Jansen 说:

C 语言领先的原因是因为 C 应用在编程世界的各个地方,尤其是在小型设备上的应用,并且小型设备的数量还在不断增加,现在,即使我的牙刷里都装有软件,而且它很可能是用 C 语言实现的。因此,C 语言的排名稳定了很多年。

Java 已经在其应用的领域中有了更加激烈的竞争。Groovy 将成为那些竞争者中的一员。多亏安卓系统的成功发展,移动开发领域拯救了 Java。我很怀疑 2014 年即将发布的 Java 第 8 个版本能否阻止 Java 普及性的衰落?

在 Tiobe 排行榜中排名第三的编程语言是 Objective-C,其比例是 8.992%。Objective-C 语言最出名的原因是它用于编写运行在苹果公司的 iPad 和 iPhone 设备上的应用程序。而 C++ 排在第四位,其指数为 8.664%,PHP 语言排在第五位,其指数为 6.904%。Tiobe 通过评估各大搜索引擎和网站如谷歌(Google)、必应(Bing)、雅虎(Yahoo)和维基百科(Wikipedia)来确定与每种编程语言相关的技术熟练的工程师、课程和第三方供应商的数量。

虽然 Tiobe 排行榜的 Jansen 认为 Java 的地位在下降,但 Java 在本月中的 PyPl 排行中仍然遥遥领先。PyPl 编程语言排行榜只着眼于谷歌上关于语言教程的搜索,从而给了 Java26.8% 的份额,并远远领先于排在第二位的 PHP,它只占有了 13.2% 的份额。排名第三的是 Python(9.8%),其次是 C#(9.5%)和 C++(9.1%)。C 语言在 PyPl 指数中排名第六(8.4%)。

最近几年,随着“函数式编程”的复兴,各种动态语言都有了显著的应用,Dan Woods 在“从 Groovy 到 Java 8”一文中指出:

Groovy 开发人员早已熟知 Java 8 中新引入的概念和新的语言结构了。在 Java 新版本即将推出的增强特性中,有很多是 Groovy 在几年前就已经提供了的。从用于函数式编程风格的新语法,到 lambdas 表达式、collection streaming 和要把方法引用作为一等公民,Groovy 开发人员在未来编写 Java 代码时具有先天性优势。

而 Neal Ford 在“函数式编程为何崛起”一文中也强调,函数式编程的特点之一是存在强大的抽象,它隐藏了许多日常操作的细节(比如迭代)。用抽象来处理迭代等任务,使得需要维护的代码变得更少,因此可能出现错误的地方也就更少。

Java 开发人员习惯于框架 级别的重用;在面向对象的语言中进行重用所需的必要构件需要非常大的工作量,他们通常会将精力留给更大的问题。函数式语言在更细化的级别提供重用,在列表和映射等基本数据结构之上通过高阶函数提供定制,从而实现重用。在面向对象的命令式编程语言中,重用的单元是类以及与这些类进行通信的消息,这些信息是在类图中捕获的。在 OOP 的世界中,鼓励开发人员创建独特的数据结构,以方法的形式附加特定的操作。

函数式编程语言尝试采用不同的方式来实现重用。它们更喜欢一些关键的数据结构(如列表、集和映射),并且在这些数据结构上采用高度优化的操作。传递数据结构和高阶函数,以便 “插入” 这种机制,针对某一特定用途对其进行定制。函数级的封装支持在比构建自定义类结构更细的基础级别上进行重用。此方法的优势之一已经体现在 Clojure 中。最近,库中的一些巧妙创新重写了 map 函数,使它可以自动并行化,这意味着所有映射操作都可以受益于没有开发人员干预的性能提升。

函数式编程语言 & 开发架构