了解当下最流行的编程语言,那你知晓开发者中最不受欢迎的编程语言吗?是因为与时俱进的淘汰,还是“人红是非多”的不喜欢?
近日,全球著名的 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 作为系统管理脚本或数据科学项目,那么这足以提升规模。
不知对此,你是否有不一样的看法?

相关推荐
《iOS和macOS性能优化:Cocoa,Cocoa Touch,Objective-C和Swift》是一本深入探讨移动设备和桌面操作系统性能提升的专业书籍。本书主要针对苹果的两大操作系统平台,即iOS和macOS,提供了丰富的实践经验和专业指导,...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...
总的来说,《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入实践的指南,它将帮助开发者掌握Objective-C在实际开发中的高级技巧,提升应用的性能和稳定性,对于想要深入理解Apple平台开发的程序员来说...
Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...
内容概要:本文章全面介绍了Objective-C这门基于C的高级编程语言,从基本语法到面向对象特性、内存管理、框架介绍等多个方面。主要内容覆盖定义与特点、环境搭建、面向对象编程、类与对象的概念、继承封装、内存管理...
使用场景及目标:帮助开发者理解和掌握Objective-C的基本概念和高级特性,提高他们在苹果生态系统的开发能力。无论是在开发移动应用、桌面应用还是游戏方面,都能受益匪浅。 阅读建议:由于Objective-C具有丰富的...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,添加了面向对象特性。它的基础包括类、对象、消息传递等概念。类定义了对象的属性和行为,对象则是类的实例。消息传递是Objective-C的核心,通过`...
1. **基础语法**:Objective-C的基础始于C语言,包括变量、数据类型、控制结构(如if语句和循环)以及函数。然而,Objective-C的独特之处在于它的类和对象概念,这些在书中都有详尽的讲解。 2. **类和对象**:...
内容概要:Objective-C是一门基于C语言发展的面向对象编程语言,常用于macOS和iOS应用开发。本文全面讲解如何搭建编程环境并介绍了Objective-C核心概念与关键技术,如:类与对象的概念、属性声明及内存管理技巧等,...
Objective-C是一种主要应用于苹果操作系统上的编程语言,它是C语言的一种扩展,支持面向对象编程特性。Objective-C最初由Pike International公司的Brad Cox和Tom Love于1983年设计,并在1986年由NEXTSTEP系统引入。...
- **Smalltalk的影响**:Objective-C的设计灵感主要来源于Smalltalk,这是一种最早的面向对象编程语言之一,它彻底改变了软件开发的方式。Smalltalk的设计理念强调了对象的动态性和封装性,这些都成为了Objective-C...
1. **通过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语言是一种流行的编程语言,主要用于开发苹果公司的macOS和iOS平台上的应用程序。在Objective-C程序设计的最新版本中,已经针对最新的Xcode开发环境、iOS操作系统以及OS X Mavericks系统进行了重大升级。...
### 禅与Objective-C的编程艺术 #### 知识点概述 《禅与Objective-C的编程艺术》一书深入...无论是对于Objective-C新手还是有经验的开发者来说,《禅与Objective-C的编程艺术》都将是一本值得反复阅读和思考的好书。
1. Objective-C简介:Objective-C是一种通用、面向对象的编程语言,主要用于iOS和OS X应用的开发。它是由Smalltalk语言的面向对象特性和C语言的灵活性相结合而成的,由Next公司开发,并由苹果公司在Mac OS X和iOS...
《Objective-C语言教程》是一份面向iOS和macOS应用开发的教程,旨在帮助用户从零开始学习Objective-C编程语言。Objective-C是苹果公司早期用于开发macOS和iOS应用程序的语言,它基于C语言,并添加了面向对象的特性。...