当前位置: 首页 > 科技观察

想骂!开发语言不能统一为一个吗?

时间:2023-03-21 14:08:43 科技观察

有的时候TypeScript写多了,写Java的时候总会出错。而且在某个项目中卡了一段时间之后,觉得自己熟悉的Python和Golang就会变得很陌生。而顺手写了一段时间的Bash脚本,每次再拿起都会进入看文档写代码的境地。这种感觉在因为工作和个人兴趣在多国语言间切换时尤为强烈。个人精力有限,不可能每天都去照顾这些棘手多变的语言,所以最后干脆放弃了挣扎,让语言圈逐渐孤立开发者。为什么不能统一成一种开发语言呢?下图或许可以解释。每一种语言出现的时候,我都觉得自己挂不住,尤其是golang,感觉自己是一个备选,也是最终的目标。其实也是发展路线上的一颗棋子。别的不说,就连函数声明也无法在所有语言中统一。小题大做不是很无聊吗?让我们来看看。Golang的函数声明关键字是func。functest(xint,yint)int{}java函数声明,无关键字。publicinttest(intx,inty){}Typescript函数声明。functiontest(x:number,y:number):int{}python函数声明。deftest(x,y):Kotlin函数声明。funtest(x:Int,y:Int):Int{}rust函数声明。fntest(x:i32,y:i32){}...定义函数的关键字有很多种。func、function、fun、fn、def...,更不用说参数的声明和定义了。我常常想,创造这种语言的人是不是有病?关键字是语言的基本竞争优势吗?没办法,有时候开发者只能根据开发语言来区分。比如招聘golang程序员,招聘java程序员。虽然说语言在软件开发中只占很小的一部分,但是在实际实现的时候往往会产生重大的影响。不同的语言在细节上有很多差异,编码标准也不同,对程序的影响比较大。这些差异往往需要开发人员随着时间的推移积累经验。在语言之上,建立起来的类库和生态更是庞大。这些差异无法消除,只能隔离。我常年从事Java,所以对Java亲切和熟悉,对它的冗长和复杂也早能忍受。但是在其他语言的眼里,Java是不折不扣的恶魔。以常见的lambda语法为例。在其他语言中,e=>{}使用=>语法。只有Java是替代的,用->来表示。写完TypeScript再回到Java的时候经常会脑抽筋。Java的泛型也是通用的。int[]数组不能直接使用Arrays.sort()进行自定义排序,必须转为Integer[]。这些问题是存在的,但是是有限的。问题是,如果其他人觉得有问题,就会重新发明轮子,比如groovy,scala,比如kotlin,代码可以更简洁,但是不要改关键字。目前,有超过700种编程语言。它们风格各异,号称能够解决特定行业的问题,但大多是同质化的通用语言。在Tiobe排行榜上,C、Python、Java、JavaScript、Php、SQL等,常年存在于排行榜前10名。可以说语言的格局已经大致形成,剩下的就是你我之间的较量了。比如Java和C#,从某种程度上说,它们是一回事,但是现在它们的生态完全不同了。语言有什么复杂的?复杂的是代码的逻辑和组织方式,而不是语言。他们的发展就像中国的互联网。虽然它标榜自己在某些方面有所不同,但最终还是一样的。语言也是一样,你指我的,我指你的。只要有意义,就可以安排。比如Java的record关键字,真正的Javaer真的不会在意多一点getset方法。未来哪个语言的名字会统一所有的语言,你笑着看吧,就是第n+1种语言。另外偷偷告诉你,现在还没有出现使用f关键字来定义函数的语言。如果您想创建一个,请考虑一下。