TIOBE:C#受欢迎程度指数超过Java


编程语言流行度 TIOBE 指数表示:C# 和 Java 之间的差距从未如此之小,目前,差距仅为 1.2%,如果趋势保持下去,C# 将在大约 2 个月的时间内超越 Java。

TIOBE 指数每月跟踪编程语言的受欢迎程度,所采用的方法考虑了多种来源,包括全球熟练工程师的数量、课程和语言的第三方供应商,同时还招募了流行的搜索引擎数据来计算评级。

C# 的崛起是以 Java 为代价的——其中 Oracle 和 Kotlin 是主要因素在Java的衰落中。

在所有编程语言(每年)中,Java 的跌幅最大,为 -3.92%,而 C# 的涨幅最大,为 +3.29%

这两种语言一直在相似的领域使用,因此二十多年来一直是竞争对手。Java 受欢迎程度的下降主要是由于 Oracle 决定在 Java 8 之后引入付费许可模式造成的。Java 的衰落还有其他原因。首先,过去几年 Java 语言定义没有太大变化,而其完全兼容的直接竞争对手 Kotlin 更易于使用且免费。

如今,C# 是免费且开源的,并且受到许多开发人员的欢迎。


TIOBE 表示,其指数并不是关于最好的编程语言或编写最多行代码的语言,而是衡量受欢迎程度的指标,可用于检查开发人员的编程技能是否仍然最新或做出改进。关于开始构建新软件系统时应采用哪种编程语言的战略决策。

网友讨论:
1、.NET已经成为一个非常强大、经过良好测试、支持各种操作系统的开发生态系统,你几乎可以用它来编写任何代码。您几乎可以用它来编写所有代码。.NET Core 甚至还在大力提升性能,这真是一件了不起的事情。

Blazor 最近取得了令人惊叹的进步,我所在的公司(员工超过 30 万)最近修改了内部批准技术指南,允许在新项目中使用 Blazor。在此之前,他们建议不要使用 Blazor,原因有很多,包括缺乏有经验的开发人员、年龄太小等。实际上,他们将 "微软似乎每隔几年就会改变他们偏好的网络技术 "作为之前 "强烈反对 "立场的理由。有了 Blazor,他们似乎终于找到了感觉,使用 Blazor 而不是 Angular/API 结合的方法真是太好了。

他们只需要在基于表单/图形用户界面的应用程序开发方面采取同样的做法......

###################################################

2、Java 最近开始变得现代化。为了实现更加现代化和健壮的代码,我们取得了巨大的飞跃和改进。

• Lambda 表示法:numbers.forEach( (n) -> { System.out.println(n); } );
这是减少代码膨胀的一个非常重要的补充,还可以在需要时采用更多功能性方法。C# 一直以来都是如此......

• ZGC 垃圾收集器:这也是一项非常令人印象深刻的技术,通常适用于整个垃圾收集运行时领域。尽管 .NET 5/6/7 具有非常强大的运行时,但现在只是为了获得更好的性能,您可以选择 AOT 编译并永远解决问题。

• 虚拟线程:这也是一项非常令人印象深刻的技术,据说它可以使并行编程变得更好、更高效。这在所有基于线程的运行时领域中又是全新的,并且需要更多的测试和用例,直到它显示出它的潜力。

• 巴拿马项目:这是对Java 的一个巨大而重要的补充,目的是使与本机系统库的互操作性变得简单而高效。Java 最初在 90 年代设计时希望支持“虚拟操作系统”的概念,因此在这方面它使互操作性变得非常麻烦和困难(您必须通过 JNI 编写和编译额外的代码)。相反,简单的 C# 采用直接且简单的 FFI 方法,您就会得到DLLImport您想要的。

所有这些最近的 Java 改进都很有趣并且肯定有其自身的重要性。但考虑到 C# 正在以各种可能的方式以各种方式快速发展……Simply Java 要想成为创新和现代的名字,还有很多工作要做。

####################################################

3、TIOBE 不是一个好的索引。它使用网络搜索结果作为基础,因此具有许多未访问过的页面的较旧语言仍然可以在其索引中相关。例如,Visual Basic 是#8。
恕我直言,PYPL 指数要好得多,因为它使用了 Google 趋势。
但归根结底,语言之战是愚蠢的,唯一重要的指标是您喜欢使用的语言的职位列表数量。

#####################################################

4、Java 努力赶上 .NET - Valhalla 项目、Panama 项目...但事实是这些功能在 .NET 中已经存在多年,并且 .NET 内存管理完全超越了 Java:无处不在的引用,还具有只读结构(包括记录)、stackalloc 和 Span、具有 Task 异步编程模型的一流协程、IntPtr 和 C++/CLI 互操作性、无缝 DLR、更好的泛型和反射(无类型擦除/具体化一切)...
Java 是第一个出现的,比 .NET 早了 6 年,从第一天开始就是跨平台的,因此它无所不在,特别是在大数据和开源项目中,这是值得认可的。但即使有一些出色的语言,如 Scala 和 Kotlin,它们通常无法达到 C# 的标准,只是因为 CLR / .NET 胜过了 JVM / JDK。

#####################################################

5、有些东西 .NET 仍然没有,但由于多种实现,这些东西在 Java 中已经存在多年了。
实时支持、无暂停 GC、基于集群的 JIT、JIT 代码缓存、编译器和 JIT 开发框架、支持反射的 AOT 编译、嵌入式设备、FPGA 生成以及拥有 80% 全球市场份额的移动操作系统。
CLR 仍然需要在很多方面超越 JVM 和 ART 实现。