【CSDN 编者按】编程语言更新的频率是越快越好,还是越慢越好,不断增加的功能是否真的就是开发者想要的?
(资料图)
原文链接:https://medium.com/codex/c-is-dying-fa21a96107c5
声明:本文为 CSDN 翻译,未经允许,禁止转载。
作者 | Andrew Zuo 译者 | 弯月 责编 | 屠敏 出品 | CSDN(ID:CSDNnews)我很喜欢 C#。 大学毕业后,我的第一个编程项目是用 Unity 编写的游戏。 我立刻爱上了这门语言。 起初觉得很新鲜,C# 与 Java 很相似。 当时还是 Java 7 的时代。 我听说他们从那时开始决定采用更快的发布周期,之后一切都变了。
如今我仍然很喜欢这门语言。虽然它没有特别之处,但你可以用它做任何事情,比如多线程。
但在过去的几年里,我非常担心 C# 的命运。我在网上分享了我的想法,并引起了很多人的关注。
我在一条评论中表达了自己的看法:
C# 就快完蛋了,微软正在扼杀它,他们不断添加没人在意的功能。C# 之死就在于功能蔓延。
《魔鬼经济学》中有一句话:“除了轰炸,我不知道还有什么方法可以比租金管制更有效地摧毁一座城市。”
代入编程语言,我们可以说:“除了轰炸,我不知道还有什么方法可以比功能蔓延更有效地摧毁一门编程语言。”
我保留了“轰炸”一词,因为我不知道在编程语言的环境里相应的词语是什么。但显然轰炸是行不通的——你可以炸毁某个公司的总部大楼,但无法干掉他们的编程语言,只能导致他们停止开发。
功能蔓延的问题在于 ,它会导致学习和掌握编程语言的难度加剧。 C++就出现过这样的问题,所以现在只有底层的软件还在使用 C++,因为唯一能用的语言除了 C++ 就只有 C 了。想想看,现在还有人用 C++ 写高级的软件吗?
我不希望同样的命运发生在 C# 身上。但不幸的是 C# 的状况也堪忧。
我第一次产生怀疑,是因为看到了 C# 8 的 switch 表达式。你可以像下面这样定义一个 switch 语句。
public static RGBColor FromRainbow(Rainbow colorBand) =>colorBand switch { Rainbow.Red =>new RGBColor(0xFF, 0x00, 0x00), Rainbow.Orange =>new RGBColor(0xFF, 0x7F, 0x00), Rainbow.Yellow =>new RGBColor(0xFF, 0xFF, 0x00), Rainbow.Green =>new RGBColor(0x00, 0xFF, 0x00), Rainbow.Blue =>new RGBColor(0x00, 0x00, 0xFF), Rainbow.Indigo =>new RGBColor(0x4B, 0x00, 0x82), Rainbow.Violet =>new RGBColor(0x94, 0x00, 0xD3), _ =>throw new ArgumentException(message: \"invalid enum value\", paramName: nameof(colorBand)), };
这有什么必要呢?正常的 switch 语句有什么问题吗?如果你觉得某些情况下这种写法是有用的,那么看看下面这个。在 C# 9 中,某些情况下 new 操作符可以省略类型,例如:
private List_observations = new();
关键字 var 已经引发了足够多的争议,现在又来了一个?
那么,如何在 C# 10 中为属性创建属性?他们又增加了一个关键字 field,用于定义自动属性。我不明白为什么我们不能直接使用普通属性。
field 就是属性,我们理应减轻工作负担,而不是加重。
每年 C# 都要推出新版本。我不知道为什么每个人都喜欢快速的发布周期。我使用 Firefox 4 beta 已经一年了,我很满意。但现在呢?Firefox 的版本发布已经超过了 100 了。因为如今每个浏览器每 4 周就要更新一次版本。
C# 每年更新一次,Java 每 6 个月更新一次。我不明白这是为什么。编程语言又不会很快过时。
我知道 Java 加快更新节奏的原因,我怀疑与 Open JDK 有关。旧版本的 Open JDK 没有得到任何更新,所以如果你想使用 5 年前的 Java 版本,就像大多数公司那样,那么就需要付费。
现在 C# 可能还没有那么糟糕。但照目前的节奏发展下去,只要几年的时间,很快我们就会被功能蔓延淹没。
看到这里,有人肯定会说,不要使用这些功能不就好了吗?我表示同意。但你必须知道,如今不使用这些功能也没什么大不了,但 C# 的功能继续按照这个节奏蔓延下去,结果会怎样?每个程序员都会觉得自己被某种神秘的力量所束缚,被迫使用语言中的这些元素。
当所有 C# 的教程都开始使用超级晦涩的语法时,会怎么样?我们该怎么办?
我认为,如果真的有那么一天,很多人将停止使用 C#。
C# 的问题在于过于冗长,这是因为他们借鉴了 Java,所以我经常开玩笑地称它为“Java#”。
因此,如果 C# 添加新功能是为了减少冗余冗长,那我很支持。但如今他们添加新功能感觉只是拆东墙补西墙,解决不了根本问题。
Dart 之类语言的努力方向是:“怎样让语言变得更简单?”而 C# 却在说:“我们如何才能用更少的代码完成以前实现的功能?”
然而,他们得出的答案是“只要给它一个宏”。
当然,有时他们也会考虑添加一些真正有用的东西。但大多数时候只是在添乱。表面看来,他们解决了需要键入的代码太多的问题,但潜在的复杂性愈演愈糟。
有报道称,程序员正在放弃 C#。根据 Stack Overflow 的趋势显示,自 2009 年中期以来,有关 C# 的问题数量急剧下降,他们的年度调查(2017年~2018 年除外)显示,该语言的数量呈缓慢下降的趋势。
继续按照这个水平膨胀下去,我相信会有更多人放弃 C#。
【CSDN编者按】编程语言更新的频率是越快越好,还是越慢越好,不断...
招商银行限售多家基金公司产品,限售,国金,股权,招商局,招商银行,长...
1、搭配帆布鞋:帆布鞋跟工装裤是最常见的一种搭配组合。能够很好的...
让我们不要言辞难过。即使是最昂贵的MacBookAir和MacBookPro中的网...
2月15日发布《南方中债0-2年国开行债券指数证券投资基金分红公告》...
2月14日,热闹的不止是餐厅和花店,还有市民政局的婚姻登记处。很多...
【导语】手机在我们生活中担演者非常重要的角色,因此现时代是离不...
你需要的东西报纸纸板统治者剪刀最大定型发胶采取措施防止脱落,让...
中金公司:当前市场处于政策预期向基本面实质改善的过渡阶段,尽管...
临时演员歌曲汇总临时演员主题曲《救赎》mv视频播放临时演员插曲《...
1、梅州市智合发展有限公司,正式成立于2012年10月,是一家集房地产...
1、金正宝遇到什么问题了呢。2、我这边可以帮您解答的。本文就为大...
或许我不太了解你,或许我误解了你。可是我离开后依然会等你,等你...
1、神行者1挺好的,是个好机型:1。2、路虎神行者是路虎推出的一款S...
圣诞节就要到了,爱学习的伙伴们知道圣诞节的英文读法么?不知道的...
人民网评:让就业“春风”温暖万家
谜语来源于中国古代民间,是古人集体智慧创造的,无法把谜语的发明...
慧博云通今日下跌2 70%,全天换手率36 80%,成交额4 22亿元,振...
阿拉善:电子卖场“链”起乡村振兴新动能
幼儿园育儿知识小常识幼儿园小孩子的好奇心种,所以家长在育儿的时...
打麻将是一种很好的社交娱乐活动,很多人闲来无事时,都会约上几个...
消防应急演练方案范文第1篇响应有关部门的号召,我校决定近期举行一...
励志短片《永不放弃》观后感(精选7篇)在观看完一部作品以后,相信...
日前,农业农村部发布公告,公布予以登记的全国非主要农作物品种清...
2月13日,一段视频在网上引起关注。有网友称,“事发时间2月13日15...
2月13日,来自海南省住房公积金管理局官网信息,海南省住房公积金管...
我一个异性朋友,他是那种很有个异性的女生,我们是异性,不是男生...
虽然我国现在企业投资不容易,但手中的现金总是贬值,所以对于很多...
家有小宝宝,相信很多父母都遇到过带孩子外出时“如厕难”的问题,...
鹿角切了还会长吗,会。鹿角,别名斑龙角(《本草纲目》),为鹿科...