了解当下最流行的编程语言,那你知晓开发者中最不受欢迎的编程语言吗?是因为与时俱进的淘汰,还是“人红是非多”的不喜欢?
近日,全球著名的 IT 网站 Stack Overflow 根据数百万开发者项目标签的使用频率,发布了一份编程语言的调查报告,试图找出最不受欢迎的编程语言。没想到开发者最想规避的编程语言中,PHP、Objective-C 和 Ruby 等语言纷纷上榜。
最不受欢迎的编程语言
在 Stack Overflow 上,开发者可以创建属于自己的“Developer Story”,用来记录项目开发、获得的成就等个人开发经验,相当于简历,待发布之后也可以提升职场机遇。在创建“Developer Story”时,可以添加喜欢或者不喜欢的语言标签,而本调查报告的数据来源正是基于此。
将该数据作为衡量标准,并以特定的编程语言列表(并非是像 Android 这样的平台或是 JQuery 这样的库)进行筛选, Stack Overflow 使用 Bayes 方法来预估这些平均值,最终发现开发者中最不受欢迎的语言前三名分别为 Perl、Delphi 和 VBA,紧随其后的是 PHP、Objective-C、Coffeescript 和 Ruby。
如果此前看过有关 Stack Overflow 的编程语言报告,就会发现,那些很少被标记为不受欢迎的编程语言往往就是使用率快速增长的语言。比如 R、Python、Typescript、Go 和 Rust 等语言增长率都比较高。
下面我们可以通过比较每种语言的增长与标记“dislike”的百分比进行验证,橙色点表示最不受欢迎的语言。以下我们将统计数据限制在发达国家(如美国、英国、德国和加拿大)。
总体而言,语言的增长率与开发者“dislike”的频率之间有一种关系。被标记为“dislike”标签的编程语言占比在 3% 以上的,使用率越来越少,而最少被标记为“dislike”的 R、Rust、Typescript 和 Kotlin 语言使用率都在快速上升。
那些开发者喜欢及不待见的技术
上述分析仅考虑编程语言,而不是操作系统、平台或库。那么什么是开发者最不喜欢的技术?据调查报告显示,开发者最不喜欢的技术包括 Internet Explorer、Visual Basic、Flash、COBOL、Fortran 和 Pascal 。
普遍喜欢的技术则包括:机器学习、Git、Python 3.x、HTML5 和 CSS3 。
值得强调的是,以上并非是对某一语言的歧视,而仅仅是衡量哪些技术在至少一部分开发人员的使用过程中,是让他们感觉到舒服还是负面的。
独立的标签网络
我们可以将所有这些标签组合成一个故事,将其组织成一个网络。在最近的一篇文章中,Julia Silge 展示了如何构建一个技术网络来代表整个软件生态系统。如果我们根据每个“dislike”标签的对节点进行着色,我们可以了解生态系统的哪些部分比其他标签更具争议性。
通过将“Developer Story”标签放在子生态系统中,我们发现有独立的子系统的集群:微软(以C # 和 .Net 为中心)、PHP(WordPress 和 Drupal 环绕),和移动开发(特别是 Objective-C)。操作系统的集群内(右下),我们可以看到,系统如 OSX 和 Windows 被标记为“dislike”,但标签如 Linux、Ubuntu 和 Unix 却并非如此。
技术型的竞争之路
有意思的是,数据还体现了行业中存在的技术型竞争关系,像是 Linux 、OSX vs Windows,Git vs SVN,vim vs emacs ,React vs Angular 等。开发人员通常不愿意使用他们认为过时的东西,建议用更现代的技术来取代。
总结
以上并不表示直接的因果关系,标签不被程序员使用,导致它们被放弃。一种可能性是,如果人们感觉到语言已经越来越受欢迎,就会很乐意公开表达自己的喜欢与不喜欢;另一种原因就是与时俱进,以新的更新替换旧而复杂的编程语言。
对此,在 Hacker News 上网友也发表了自己的看法:
@chrisaycock:
文章定义了开发者在日常工作中编程语言的“喜欢”vs“不喜欢”偏好。例如,Perl 是最不受欢迎的语言,然其真正意义是,开发者将其归入不想要此类开发工作。
分析表明,语言的“喜欢”与其在 Stack Overflow 上的增长之间存在着相关性。 相关性并不是因果关系,这只能意味着开发者所从事的工作会使用较多的热门的语言。
@throwaway2016a:
Python 持续地受欢迎令我惊奇。虽然我喜欢 Python,它也适用于数据科学,但我不明白为什么人们将其用于网站。如果考虑到易用性,并且如果要执行性能,PHP 和 Ruby 生态系统将会更加成熟,Go 和 Java 框架也更好。即使在数据科学世界中,个人也喜欢 R 超过 Python。
@lmm:
Python 和 Ruby 在很多方面较为相似,它们具有相似可用性的简单 Web 框架。个人使用 Python 已经有一段时间了,如果纯粹的作为 Web 开发者选择,那么 Ruby 可能会有一些轻微的优势,但是如果公司中的某个人已经使用 Python 作为系统管理脚本或数据科学项目,那么这足以提升规模。
不知对此,你是否有不一样的看法?
相关推荐
Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...
内容概要:Objective-C是一门基于C语言发展的面向对象编程语言,常用于macOS和iOS应用开发。本文全面讲解如何搭建编程环境并介绍了Objective-C核心概念与关键技术,如:类与对象的概念、属性声明及内存管理技巧等,...
适用人群:适用于对 Objective-C 编程感兴趣的新手及希望深化对这门语言理解的经验丰富的开发者。 使用场景及目标:帮助初学者快速入门 Objective-C,同时让有一定经验的程序员能够解决编程中遇到的实际问题,提高...
《禅与 Objective-C 编程艺术》是一本深入探讨Objective-C编程哲学和技术的开源书籍,中文翻译版本使得更多中文读者能够领略到Objective-C的魅力。Objective-C是苹果平台上的主要编程语言,尤其在iOS和macOS应用开发...
1. **面向对象编程基础**:Objective-C是C语言的超集,扩展了C语言以支持面向对象的特性,如类、对象、继承、封装和多态。了解这些基本概念是学习Objective-C的第一步。 2. **Objective-C语法**:Objective-C引入了...
Objective-C是一种面向对象的编程语言,用于开发OS X和iOS应用程序。它最初由Brad Cox和Tom Love在1980年代早期开发,后由NeXT公司进一步发展,该公司于1996年被苹果公司收购。Objective-C是C语言的一个超集,它添加...
- **语言特性**:Objective-C是一种面向对象的编程语言,结合了C语言和Smalltalk的特性,是苹果公司开发iOS和macOS应用的基础语言之一。 - **目标读者**:本书适合初学者以及有一定基础的开发者学习Objective-C语言...
Objective-C是一种强大的面向对象编程语言,它在Apple的软件开发领域占据着核心地位,主要用于创建Mac OS X和iOS的应用程序。这个"Learn Objective-C 中文版 v2"的学习资源可能是针对那些希望深入理解Objective-...
1. Objective-C简介:Objective-C是一种通用、面向对象的编程语言,主要用于iOS和OS X应用的开发。它是由Smalltalk语言的面向对象特性和C语言的灵活性相结合而成的,由Next公司开发,并由苹果公司在Mac OS X和iOS...
Objective-C是一种面向对象编程语言,其运行时系统(Runtime System)是整个语言体系中非常核心的部分,它负责在程序运行期间管理对象和类的行为。以下是对知识点的详细说明: 1. Objective-C运行时系统的概念 ...
* 面向对象编程:Objective-C 是一种面向对象的语言,支持继承、多态和封装等基本概念。 * 动态方法解析:Objective-C 使用动态方法解析机制,允许在 runtime 环境中动态地执行方法。 * Runtime 环境:Objective-C ...
1. 类与对象:Objective-C的类基于C++的结构,但增加了元类(Meta-Class)的概念,支持运行时类型检查和动态对象创建。C++程序员需要理解Objective-C中的`@interface`、`@implementation`和`@end`关键字的用法,以及...
《Objective-C程序设计 第6版》是面向希望学习或加深理解Objective-C编程语言的开发者的一本重要参考书。本书内容覆盖了Objective-C语言的基础知识、面向对象编程概念、运行时特性以及在苹果Mac OS X和iOS平台上的...
1. **Objective-C的起源与特性**:Objective-C是在C语言的基础上扩展的,增加了消息传递机制和面向对象特性。它的语法包含C语言的所有部分,同时引入了类、继承、多态等OOP概念。 2. **类与对象**:在Objective-C中...
- **与C语言兼容**:Objective-C能够与C语言无缝集成,这意味着可以在Objective-C代码中使用C语言的语法和功能,同时也允许在C代码中调用Objective-C编写的函数。 - **强大的工具支持**:由于Objective-C主要用于...