编程语言这一年

最近开源中国(OSCHINA)在庆祝 11 周年生日,编辑部借着这个机会梳理了一下这一年来我们追过的那些开源界/开发界的热点新闻,算作一个阶段性小结。(其实只有 9 个月~)

640?wx_fmt=png

开源中国是目前国内为数不多深耕于围绕“开源/自由软件”为开发者分享开源业内事、传播开源价值观的平台。目前社区收录的开源项目数量已经超过 50k,其中国产项目数量 10k+。

关于社区会发布哪些类型的新闻内容,开源中国的传统是:

  • 最核心的当然是开源相关的,比如开源项目的更新公告、各个开源社区的相关大事。

  • 知名开发工具的相关动态,包括各种 IDE、浏览器与各种协议/规范等。

  • 开发者强相关的大事件,比如 996。

  • 偶尔有一些泛 IT 界的能够引起开发者共鸣/思考的大事件,比如删库跑路。

  • ……

而这些内容来自开源中国官方编辑,也来自社区的用户 OSCer,借此也感谢 OSCer 们对开源中国社区的支持与维护。“@红薯 你起来啊,怎么就跪下了。”

今年这几个月下来,已经积累了庞大规模的内容,我们按不同方向整理成了数篇文章,接下来会陆续推出,这是第一篇,自然是从编程语言讲起。

OSCHINA 今年关注了什么之——编程语言

编程语言是开发者最亲密的工具,以针对编程语言的梳理作为开篇,似乎再合适不过了。

今年我们注意到了一些编程语言的巨大变化,不是一般的小打小闹,相反,持续发展下去它们极有可能完全改变当前的开发生态。

Rust

Rust 今年成为了微软的“新贵”。

微软表明其正在探索使用 Rust 编程语言作为 C、C++ 和其它语言的替代方案,以此来改善应用程序的安全状况。

微软认为 Rust 是目前业界采用的最佳选择,原因不仅是它能够以内存安全的方式编写系统级程序,还在于其精密性,“if it compiles, then it works”。

此外,Rust 还有其它优势让微软青睐:

  • Rust 静态地强制执行程序的许多属性,已经远超内存安全性,还包括空指针安全性和数据争用安全性(即没有来自两个或多个线程的一块内存的不同步访问)。

  • Rust 的丰富类型系统使编写富有表现力的程序成为可能。 具有相关数据的枚举和强大的 trait 系统等概念进一步强化了 Rust 的目标,即尽可能使程序无错误。

  • Rust 现有的社区对该语言有很大益处。虽然 Rust 仍然是一种年轻语言,但它拥有一个健康的生态系统,既能够促进开源社区发展强大,又能够支持生产用户。

本身语言层面的优势,现在加上微软生态大佬的扶持,我们有理由相信接下来 Rust 的发展应该是前途无量了。

关于 Rust 的发展趋势,还可以补充一点。有开发者询问 Linux 内核稳定版维护者 Greg Kroah-Hartman 是否接受使用 Rust 开发 Linux 内核驱动,Greg 回答在比 C 有优势的情况下可以作为可选项接受。

其它引起热议的相关内容:

  • Rust 2019 Roadmap:继续稳定化和偿还技术债务

  • Rust 创始人谈 Rust 2019 和未来:社区应限制成长速度

Kotlin

Kotlin 与 Rust 一样,今年都强势上位。

640?wx_fmt=jpeg

在今年的 I/O 大会上,谷歌宣布“Kotlin First”,Kotlin 编程语言正式成为 Android 应用程序开发人员的首选语言,并且谷歌接下来的一些 Android 新特性将首先采用 Kotlin 实现。

仅仅几年时间,Kotlin 因其相比 Java 更安全与简洁等优越性,很快占领市场,谷歌 Android 首席布道师 Chet Haase 表示:“在过去的两年中,Kotlin 受欢迎程度一直在提高,超过 50% 的专业 Android 开发人员现在使用 Kotlin 开发他们的应用”。

从今年 Stack Overflow 年度开发者调查的数据中也能看到这一点:在开发者最喜爱的编程语言中,Kotlin 得到了 72.6% 的正面反馈。

虽然目前还处在早期阶段,但是相信随着 Kotlin 的进一步普及与谷歌公司在 Android 上的运营,Kotlin 在 Android 开发上采用率很快会超越 Java。

其它引起热议的相关内容:

  • Android 开发者应该从 Java 转到 Kotlin 吗?谷歌告诉你

  • Kotlin 和 Java:Android 开发者更喜欢后者?

  • OkHttp 4 正式版发布,从 Java 切换到 Kotlin

PHP

“世界上最好的编程语言”,这一句虽然已经成为了程序员调侃的经典,但是不可否认,PHP 目前还是具有十分巨大的影响力。

虽然今年似乎没有多少 PHP 相关的重大正面事件发生,但是有开发者为我们详细分析了今天 PHP 是什么样子,这引起了社区的一阵喝彩:

  • PHP 正在积极开发,每年都会发布新版本

  • PHP 5 之后性能在不断提高

  • 有非常活跃的框架、包和平台组成的语言生态

  • PHP 在不断发展,过去几年中添加了许多新特性

  • 各种开发工具在过去几年中已经成熟,并且保持增长

结论是 PHP 早已不是十年前那门糟糕的语言。

对许多开发者来说,PHP 目前是 Web 开发的绝佳选择,使用 PHP,可以创建可靠、可维护和高质量的应用,最终结果能够让人满意。

拿数据来说话。根据 5 月份专门调查 Web 技术、提供有关 Web 各种技术的使用情况信息的 W3Techs 提供的数据和报告,PHP 在 Web 开发领域是无出其右的。

640?wx_fmt=png

针对全球网站服务器端所使用的编程语言进行统计,结果是有 79% 的网站都用到 PHP 开发,位居第一。而第二第三名的 ASP.NET 和 Java 占比分别为 11.3% 和 4.0%,似乎完全没有竞争力。

结合一年以来的历史趋势进行观察,PHP 在服务器端的使用占比也基本稳定在 79%。

调侃归调侃,PHP 的能力和影响力就摆在那里,至少它现在还没衰落,并且大有好转的迹象。

所以,世界上最好的编程语言是谁?

其它引起热议的相关内容:

  • PHP 兼 Zend 联合创始人 Zeev Suraski 宣布从 Zend 离职

  • Zend 创始人提议创建 PHP 方言,暂命名为 P++

  • 中欧 PHP 开发者大会因多元化争议而取消

  • PHP 8 确认支持 JIT

  • PHPStudy V8.0 内测版发布

  • PHP 虚拟机 HHVM 4.0.0 正式发布,不再支持 PHP

  • polarphp 0.0.1 alpha 发布:全新 PHP 运行时环境

  • PHP 5.6 已结束安全支持,你升级到 PHP 7 系列了吗?

  • Laravel 6 LTS 正式发布:遵循语义化版本标准、前端脚手架独立为 Laravel UI

Python

看一看今年各种编程语言排行榜吧,你会发现,Python 不仅是蟒蛇,还是条巨蟒,当前它正在疯狂吞噬其它语言的市场。

是的,Python 在各大编程语言榜单上都有明显且优异的成绩,在一些榜单中它现在已经将千年老大 Java 遥遥甩在了第二位。

以至于有人在分析:Perl 成为了过分炒作 Python 的牺牲品,以至于有人在思考:Python 是不是把 R 勒死了?

Perl 它是一种高级、通用、直译式、动态的编程语言,它汲取了 C、sed、awk 与 Shell 脚本以及众多其它编程语言的特性,其中最重要的特性是内置正则表达式,以及强大的第三方代码库 CPAN(the Comprehensive Perl Archive Network,全面的 Perl 存档网络)。

Perl 可以运行在超过 100 种计算机平台上,适用性非常广泛,从大型机到便携设备、从快速原型创建到大规模可扩展开发都可以一把梭,除 CGI 以外,它还被用于图形编程、系统管理、网络编程、金融、生物以及其它领域。

要知道,被称为脚本语言中“瑞士军刀”的它,2005 年在 TIOBE 编程语言排行榜上曾坐过第三名的位置,当时指数超过 10%,而现在因为同类型语言 Python 的崛起(当然也有自身社区的原因),把它逼到了死角。在最近一次 TIOBE 榜单中,Perl 排到了 19 位,同时,开始单独统计的 Perl 6 仅排到了 93 位(Perl 6 与此前版本基本上可以算两种语言,这也是前边所说它自身的原因之一)。

R 的境遇与 Perl 差不多,都是在大家共同的战场上,被 Python 强势赶尽杀绝,现在成为被预言将会衰落的语言。

Python 的火热,其实也不是从今年开始的,但是今年有愈演愈烈的势头,同时,如果 AI、安全、大数据与云计算等领域不退火的话,Python 热估计还可以再演下去。但是话又说回来,这些目前非常具有实际意义的领域有什么理由退火呢?

其它引起热议的相关内容:

  • Python 2.x 即将终止支持,是时候和 Python 2 讲再见了

  • 数据科学用 R 还是 Python 好?专业教授多角度分析

  • 高性能 Python 解释器 PyPy 支持 AArch64 架构

  • Python 之父考虑重构 Python 解释器

  • 微软官方上线 Python 教程

  • Python 3.7 已上架 Microsoft Store,让你在 Windows 轻松使用 Python

  • 知名 Python 库 Requests 作者 Kenneth Reitz 被指骗捐

  • Python HTTP 库 Requests 3.0 即将推出

  • 2019 开发者调查:Python 或成赢家,Java 最不赚钱?

  • Python 之父再度发声:我们能为中国的“996”程序员做什么?

  • 调查显示开发者最讨厌 PHP,最爱 Python

  • 2018 Python 开发者调查报告发布,数据出乎你意料吗?

  • Python 之父没有离开,成为了指导委员会成员

  • 8 年后重登王座,Python 再度成为 TIOBE 年度编程语言

其它

除了前边过于显眼而单独拎出来简单分析的语言,其实其它语言也有相关的大动态。

微软推出新编程语言 Bosque,超越结构化程序设计

今年微软推出了一门全新的编程语言 Bosque,该语言参考了 TypeScript 的语法与类型,还有 ML 和 Node/JavaScript 的语义。作者微软计算机科学家 Mark Marron 致力于消除编程过程中出现的各种复杂情况,创造出了他认为超越主流结构化程序设计的 Bosque 这一语言。

安全的全新编程语言 V 发布首个可用版本

V 是一个集合了 Go 的简单和 Rust 的安全特性的新语言,其主要特性包括:

  • 快速编译(编译器只有 400kb,而且无第三方依赖)

  • 安全

  • C/C++ 转换

编程语言之父谈语言设计,龟叔大赞 TypeScript

640?wx_fmt=png

四位编程语言创始人分别是:

  • Guido van Rossum,Python 作者

  • James Gosling,Java 作者和首席设计师

  • Anders Hejlsberg,Turbo Pascal 编译器的主要作者,Delphi、C# 和 TypeScript 开发者

  • Larry Wall,Perl 作者

TypeScript 官方决定全面采用 ESLint

不少用户认为 TypeScript 的 Linting 支持不足,因此负责 JavaScript 编辑体验的团队开始着手增加对 TSLint 和 ESLint 的支持。

微软宣布 SQL Server 2019 免费支持 Java

以往 SQL Server 允许用户选择自己的 Java Runtime,通常是 OpenJDK 或 Oracle 的 Java SE。不过,这两种选择都会存在问题。对于 OpenJDK,需要技术支持的时候用户没法找到供应商;而使用 Oracle 的 Java SE,则会出现让 Oracle 帮助用户在 Microsoft SQL Server 中使用 Java 的情况,这对于微软来说有点尴尬。

微软为 Java 开发者推出 VSCode 安装程序

不到 1 分钟即可在 Visual Studio Code 中使用 Java 编写和运行 Hello World 程序。

谈判失败:Oracle 杀死 Java EE

Oracle 与 Eclipse 基金会之间关于 Java 商标谈判的结果:双方的谈判最后以失败告终,Oracle 拒绝出让 Java 商标。

13 岁女学生被捕:因发布 JavaScript 无限循环代码

640?wx_fmt=png

Golang 到底姓什么?开发者想移除谷歌 logo

关于 Golang 姓谷歌这一观点,一方面是由于 Go 核心团队的大部分成员都是谷歌的员工,如果他们不离开谷歌,不去积极确立 Go 语言未来的发展方向,那很难说 Go 不是谷歌的;另一方面,谷歌公司真的为 Go 付出了一些东西,比如提供了大量的基础设施和资源,如域名 golang.org。

Go 语言团队否决关于"try"语句的提案

640?wx_fmt=png

排行榜

常规的几大知名编程语言排行榜或多或少已经反映了上边提到的编程语言的趋势,比如,自从谷歌宣布 Kotlin 成为开发 Android 的一级语言,Kotlin 在当月各个榜单中指数就迅速上涨;Java 在 Python 的猛烈攻势下,逐渐退居老二。

排行榜列在这里,有兴趣也可以分别回顾一下:

  • RedMonk 语言排行:Kotlin 上升 8 位,TS 快进前 10

  • RedMonk 2019 年 6 月编程语言排行:TypeScript 首次进入前十

 

  • PYPL 二月榜单发布:最受欢迎的编程语言、IDE 和数据库都是哪些

  • PYPL 4 月排行:Python 最流行,Java 还行不行?

  • PYPL 6 月编程语言排行,Kotlin 与 PHP 亮了 

  • PYPL 7 月榜单公布:Java 份额出现下降趋势

  • PYPL 9 月编程语言排行榜发布,Python 一枝独秀

 

  • TIOBE 2 月排行榜:时隔 3 年,Groovy 重进 TOP 20

  • 3 月编程语言排行公布: Powershell 难得进入前 50 名

  • 4 月编程语言排行榜:C++ 重回前三,PHP 呈下降势头

  • 5 月语言排行榜:R 跌出前二十,Python 紧咬 C++

  • TIOBE 6 月排行:Python 排名飙升,有望挤下 C 和 Java?

  • TIOBE 7 月排行:Perl 成为过分炒作 Python 的受害者?

  • TIOBE 8 月排行:你说 Objective-C 将走向衰败,我不同意

小结

编程语言还会持续地发展下去,编程语言之争也不会停歇。

当下哪个语言最厉害?不同开发者会有不同的看法,而且多半陷入偏激的论战。事实是目前还没有哪个语言是可以通吃所有领域的,每个出色的语言只有在自己最擅长的领域里才称为出色。所以讨论哪个语言最好,也要遵守“基本法”,求求你们先限定一下范围,这样可以少去许多无意义的口水战。

最后根据江湖规矩,这种场合一定得说一句:PHP 是……

不不不,一定得说一句:开源中国生日快乐!

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(CCPC 2020 网络选拔赛)HDU 6900 Residual Polynomial(分治 + NTT)

Residual Polynomial 写出所有的fi(x)f_i(x)fi​(x)出来,fi,jf_{i, j}fi,j​表示fi(x)f_i(x)fi​(x)的第jjj项系数 {f1,0f1,1f1,2…f1,n−1f1,nf2,0f2,1f2,2…f2,n−1f2,nf3,0f3,1f3,2…f3,n−1f3,n⋮⋮⋮⋱⋮⋮fn−1,0fn−1,1fn−1,2…fn−1,n−1fn−1,nfn,0fn,1f…

使用Elastic APM监控你的.NET Core应用

前言在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解。然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是如何让应用的响应速度更快等等与编码相关的技…

HDU 6755 Fibonacci Sum(二次剩余 + 二项式展开)

Fibonacci Sum 斐波那契通项有an15((152)n−(1−52)n)(15)k∑i0n((152)ic−(1−52)ic)kA152,B1−52(15)k∑i0n∑j0k(−1)k−jCkjAicjBic(k−j)(15)k∑j0k(−1)k−jCkj(∑i0nAcjiBc(k−j)i)斐波那契通项有a_n \frac{1}{\sqrt 5}\left((\frac{1 \sqrt 5}{2}) ^ n - (\frac{1 - …

Java 8 新的时间处理API

一:时间日期API的演进,及存在的问题 JDK 1.0 时期: 对于日期和时间的支持只能依赖于java.util.Date类。它的最小精度是毫秒起始年份为1900年,起始月份为0。20180822表示为new Date (118,7,22)返回值使用JVM默认时区:…

ASP.NET Core结合Nacos来完成配置管理和服务发现

前言今年4月份的时候,和平台组的同事一起调研了一下Nacos,也就在那个时候写了.net core版本的非官方版的SDK。虽然公司内部由于某些原因最后没有真正的用起来,但很多人还是挺看好的。在和镇汐大大沟通后,决定写一篇博客简单介绍一…

2020 ICPC 济南 F. Gcd Product

Gcd Product Cm∑i1mAgcd⁡(i,m)Bgcd⁡(k1−i,m)∑d1∣mAd1∑d2∣mBd2∑i1m([gcd⁡(id1,md1)1][d1∣i])([gcd⁡(m1−id2,md2)1][d2∣m1−i])∑d1∣mAd1∑d2∣mBd2∑k1∣md1μ(k1)∑k2∣md2μ(k2)∑i1m([d1∣i][k1∣id1])([d2∣m1−i][k2∣m1−id2])T1d1k1,T2d2k2∑T1∣m∑d1∣T…

Java 时间处理

时区、冬令时和夏令时、时间戳 时间戳 距离一个标准参照时间经过的秒数(毫秒数) 有两个常用参照时间: 1970-01-01 00:00:00 应用最广泛的时间戳参照点2001-01-01 00:00:00 常被苹果系统使用 注意:以上时间节点皆采用UTC的标准时…

试试这个Excel知识测验,得分超过80分算你赢

大家可能都知道,全世界使用Excel的用户超过了10亿。Excel的知识真所谓是博大精深,并且还很有趣味。我最近编写了一个Excel小工具,可以让大家可以在Excel里面进行各种知识小测验,并且与全世界的高手一比高低。这个小工具&#xff0…

SimpleDateFormat与线程安全

SimpleDateFormat不是线程安全的。 SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr),sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等&#xff…

几道偏序问题(数据结构)

P3157 [CQOI2011]动态逆序对 #include <bits/stdc.h>using namespace std;typedef long long ll;const int N 1e5 10;int root[N], ls[N << 8], rs[N << 8], sum[N << 8], cnt;int n, m, pos[N];inline int lowbit(int x) {return x & (-x); }v…

自学架构设计?帮你总结了 4 个方法

从编程思维到架构思维的升级&#xff0c;是工作 3、5 年的程序员遇到的第一个槛&#xff0c;特别是当你准备晋升考核时。我有个哥们&#xff0c;技术和业务都很不错&#xff0c;腾讯 T2.3 升 T3.1&#xff0c;就卡在了架构设计这部分。架构这个事儿&#xff0c;不像算法和代码&…

如何在东八区的计算机上获取美国时间

既可以用旧API&#xff08;JDK8之前&#xff09;&#xff0c;也可以使用新API。以下用旧API为例&#xff1a; 在Java语言中&#xff0c;可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例&#xff0c;如下&#xff1a; // 取得本地时间&#xff1a; Calen…

Wannafly挑战赛24 无限手套(生成函数)

无限手套 每种宝石的生成函数为∑n≥0xn(ain2bin1)对其进行化简∑n≥0xn∑n≥0binxn∑n≥0ain2xn11−xbix(1−x)2aix(1x)(1−x)3最后答案∏i1m((ai−bi1)x2(aibi−2)x1)(1−x)3m每种宝石的生成函数为\sum_{n \geq 0} x ^ n(a_i n ^ 2 b_i n 1)\\ 对其进行化简\sum_{n \geq 0}…

.NET Core 3.0及ASP.NET Core 3.0 前瞻

前几天微软发布了 .NET Core 3.0 Preview 9 &#xff0c;这是.NET Core 3.0 最后一个预览版。[翻译] .NET Core 3.0 Preview 9 发布.NET Core 3.0 正式发布将在.NET Conf 上发布&#xff0c;.NET Conf 时间是9月23日至25日。Visual Studio 2019 16.3预览版3和Visual Studio for…

有了Unicode为啥还需要UTF-8

有了Unicode为啥还需要UTF-8 要回答这个问题&#xff0c;需要吃透“编码”的概念&#xff0c;刚好看到大神阮一峰写的文章&#xff1a;字符编码笔记&#xff1a;ASCII&#xff0c;Unicode 和 UTF-8 抄录如下&#xff0c;便于查找&#xff1a; 一、ASCII 码 我们知道&#xf…

2019ICPC西安邀请赛 E. Tree(树剖 + 线段树)

Tree 给定一棵树&#xff0c;节点有点权&#xff0c;然后有三种操作&#xff1a; 一、修改1−>s1->s1−>s的路径上的点权与ttt进行按位或。 二、修改1−>s1->s1−>s的路径上的点权与ttt进行按位与。 三、查询1−>s1->s1−>s的路径上的点权异或和…

升职却不加薪,为什么我还觉得老板说的挺有道理

前几天晚上&#xff0c;DevOps交流群里&#xff0c;有人抛出这样一个观点&#xff1a;如果有人来找我加薪&#xff0c;我一定告诉他我要给他升职&#xff0c;因为升职是免费的&#xff0c;加薪可是真的要花钱。但是我也会许诺他&#xff0c;如果他能把那个团队搞好&#xff0c;…

GBK、GB2312、GB18030

GBK、GB2312都是编码方式&#xff0c;都是双字节字符集&#xff0c;GB18030编码是一二四字节变长编码 GB&#xff1a;国标&#xff0c;国家标准 BIG5&#xff1a; 支持繁体中文 GB2312&#xff1a; 支持简体中文&#xff08;GBK的子集&#xff09; 共收录 6763 个汉字 GBK&…

2019 ICPC 南京 F. Paper Grading(字典树dfs序上树套树)

Paper Grading 题意&#xff1a;给定nnn个字符串&#xff0c;有两种操作&#xff1a; 一、给定i,ji, ji,j&#xff0c;交换第iii个跟第jjj个字符串。 二、给定 str &#xff0c;k,l,rk, l, rk,l,r&#xff0c;问你在区间[l,r][l, r][l,r]中的字符&#xff0c;与 str 至少有k…

细节之中自有天地,整洁成就卓越代码

溪源 | 长沙.NET技术社区开篇我们总是很容易就能写出满足某个特定功能的代码&#xff0c;却很难写出优雅代码。又最欣赏那些优雅的代码&#xff0c;因为优雅代码更能体现一个开发者的积累。就像写一篇散文&#xff0c;有的就像初学者不得其门而入&#xff0c;遣词造句都非常困难…