整理丨诺亚
出品 | 51CTO技术栈(微信号:blog51cto)
近日,TIOBE编程社区公布年度编程语言,此次摘得这一桂冠的是C#。
这也是C#在TIOBE二十多年评选历史中首次赢得这一年度大奖。C#虽然长年稳居编程语言排行榜前十,但存在感并不如四大“金刚”——Python/ target=_blank class=infotextkey>Python、C、C++和JAVA那么高,所以称得上是一匹黑马。
图片
截图来自TIOBE社区:近五年来,年度编程语言奖获奖语言列表
C#是微软推出的专为.NET开发设计的面向对象编程语言,其发展史可以追溯至1999年。
彼时,天才程序员安德斯·海尔斯伯格带队开发一种名为Cool的语言,所谓Cool,即“C-like Object Oriented Language”。后来由于种种原因,微软在2000年公布.NET项目时,这门语言也被更名为C#。
这一名字的灵感来源于五线谱,在五线谱中#表示升半个音。从字面来理解,C#即C++++,其设计初衷是成为C++的超集,因此从1.0版本就设计了指针、结构体等底层特性,既能与C/C++高度兼容,又具备与Java虚拟机同样强大的自动内存管理能力。
在多年发展中,C#固然经历诸多版本变化,但一直在稳定发展。尤其在2014年,微软宣布.NET平台全技术栈开源后,C#的地位更趋稳固。
回顾2023年全年走向,C#正在低调逼近四大主流语言。这门语言最终以1.43%的年上升幅度傲视群雄,获奖可谓实至名归。年度份额增长幅度紧随其后的亚军是Scratch(增长0.83%),季军是Fortran(增长0.64%)。
图片
Tiobe首席执行官Paul Jansen表示:“C#正在从Java手中夺取市场份额,并在诸如Web应用程序后端和游戏开发(尤其得益于Unity引擎)等领域变得越来越流行。”在他看来,“C#已稳固其地位,未来甚至可能超越Java”。
另外值得一提的是,TIOBE指数并非衡量最佳编程语言或编写代码行数最多的语言,而是体现编程语言的受欢迎程度。这也是榜单排名与个人体感不甚一致的原因。
该指数基于全球范围内熟练工程师的数量、相关课程以及第三方供应商情况来制定排名。通过google、Bing、Yahoo!、Wikipedia、Amazon、YouTube和BAIdu等主流搜索引擎的数据来进行评分计算。
除了C#以外,去年TIOBE指数还发生了不少有意思的变化。
在榜单前二十名的“常客”里,Fortran和Kotlin踢走了昔日热门R和Perl。Fortran作为一门古董级语言,以数值计算为出发点,几度被唱衰,但在众多领域仍然是大学的首选。而Kotlin则作为易学易用的Java竞争对手崭露头角。
编程语言界的竞争向来激烈。那么面向2024年,哪些编程语言有望进入TIOBE指数前20名呢?
Paul Jansen表示,很难预测。他提到:Julia曾在2023年短暂触及TIOBE指数,但未能保持这一位置。Julia语言及其社区需要进一步成熟以获得第二次机会。在他看来,“Dart(搭配Flutter框架)和TypeScript有望进入前20名。TypeScript已经在业界得到广泛应用,但由于某种原因尚未在TIOBE指数上取得突破。让我们拭目以待2024年的发展。”
虽然C#发展前景看起来一片向好,但C#在国内的发展似乎始终不温不火。除了公认的工控和游戏领域,C#也并非热门。
在知乎相关议题下,针对C#的发展现状,来自各领域的开发者也有各自不同的观点。
有人认为,C#只是在国外火,在国内没有太大发展余地。虽然在工业领域独领风骚,在游戏领域有Unity的加持,但在互联网领域,C#已经没落,java独领风骚。
但也有人认为,C#生命力顽强,每次发新版本都在让语言更有表现力。“C#新版本吸收了Rust的特点,完全可以无GC然后AOT出来速度不比C++慢。”
图片
认为C#未来可期的人并不少。一方面,由于微软过去的闭源政策,C#其实长期处于被低估的状态,但自从C#连同编译器、工具集、标准库目前全部开源在Github上面后,事情已然发生变化;另一方面,从技术角度看,C#功能强大,融合高度表层抽象和精细底层控制于一体,是可玩性和上限都非常高的语言。随着时间的推移,C#的崛起是早晚的事。
更有人直言:在当前的就业环境下,很多人会被逼转向C#。
“从就业角度来说,现在这个时间点,C#程序员比java和前端找工作容易得多。互联网公司裁员,政府企业紧缩开支,这两个java就业大头都出问题了,而大学和培训班还在源源不断输送人才。C#程序员基本盘没怎么变,反而因为产业升级,需求还增多了。加上培训班和大学不教,人员断层很久,找工作反而容易些。这波就业压力,应该会逼着很多人选择C#,从而改善C#的人才供给问题。”
https://www.tiobe.com/tiobe-index/
https://www.zhihu.com/question/596673608