想骂人!开发语言不能统一成一个么?

Posted 小姐姐味道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想骂人!开发语言不能统一成一个么?相关的知识,希望对你有一定的参考价值。

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

有时候,写TypeScript写多了,写Java的时候就老容易出错。而当陷入某个项目一段时间之后,自我感觉老熟悉的Python和Golang,会变得非常的陌生。而某段时间写起来行云流水的Bash脚本,每次重新拿起,都会进入看文档写代码的境地。

因为工作和个人兴趣的原因,需要在多种语言中进行切换,这种感觉尤为强烈。个人精力有限,不可能每天都照顾到这些刁钻的,五花八门的语言,所以最后干脆放弃了挣扎,让语言的圈子渐渐的将开发人员隔离开来。

为什么不能统一成一种开发语言呢?下面这张图或许可以说明一下。

每种语言在出现的时候,都觉得自己吊的不行,尤其是golang,觉得自己是个另类,是终极目标。而事实上,它也是发展路线上的一枚棋子罢了。

别的不说,就连函数声明,各门语言都TM统一不起来。在这上面做文章,不是闲的蛋疼么?

我们来看一下。

golang的函数声明关键字是func

func test(x int,y int) int{
    
}

java的函数声明,没有关键字。

public int test(int x,int y){
    
}

typescript的函数声明。

function test(x: number,y: number):int{

}

python的函数声明。

def test(x,y):

kotlin函数声明。

fun test(x: Int,y:Int): Int{
    
}

rust函数声明。

fn test(x: i32,y:i32){
    
}

...

如此种种,仅仅定义函数的关键字就有多种。funcfunctionfunfndef...,且不说参数的声明方式和定义方式。

我时常在想,创造这门语言的这些人,脑子是不是有病?关键字是一门语言的根本竞争优势吗?

没办法,有时候只能按照开发语言将开发人员进行区分。比如招聘golang程序员,招聘java程序员。

虽然说语言在软件开发中,只是占了很小一部分,但在实际落地的时候,却往往又影响重大。不同的语言,细节差异多,编码规范不同,对程序的影响就比较大。这些差异,往往需要开发人员在日积月累之间,不断的积累经验。在语言之上,建立的类库和生态,更是庞大。这些差异是无法消除的,只能隔离。

我是常年搞Java的,对待Java自然是亲切而熟悉,也早已经能够忍受它的冗长和复杂。但在其他语言眼里,Java是个不折不扣的魔鬼。

就拿常见的lambda语法来说,在其他语言中,都是e=>{}使用=>这种语法。只有Java另类,使用->来表示。我就经常在写完TypeScript之后,回到Java中会脑子抽筋。

Java的泛型也是一般,一个int[]数组,并不能直接使用Arrays.sort()进行自定义的排序,还得把它转成Integer[]才行。

这些问题有,但都是有限的。问题是,别人觉得有问题,就会推倒重来,比如groovy,scala,比如kotlin,代码可以更简洁,但你TM别改关键字啊。

目前,已经有700多种编程语言,它们风格迥异,标称着能够解决特定行业的问题,但大多数都是同质化的万能语言。

在Tiobe排行榜上,C、Python、Java、javascriptphp、SQL等,常年存在于排行榜前10。


可以说,语言的格局已经大体形成,剩下的就是你争我夺的抢夺战。比如Java和C#,在一定程度上来说,就是一个东西,但现在它们的生态却完全不同。语言有什么复杂的?复杂的是逻辑还有代码组织方式,不是语言。

它们的发展,就像是中国的互联网,虽然标榜着自己哪里哪里不一样,到最后还是一样的同质化,该牛x的地方一样牛x,该垃圾的地方一样少不了。

语言也是,你参考我的,我参考你的,只要道理上说的通,那就可以安排上。比如Java的record关键字,真正的Javaer真的不在乎多一点getset方法的。

未来,有哪个语言标称统一了所有的语言,你就笑一笑看看罢了,它不过是第n+1种语言而已。另外,偷偷的告诉你,使用f关键字进行函数定义的语言,到现在还没有出现,如果你想造一个的话,考虑一下啊。

作者简介:小姐姐味道  (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

1. 玩转Linux
2. 什么味道专辑

3. 蓝牙如梦
4. 杀机!
5. 失联的架构师,只留下一段脚本
6. 架构师写的BUG,非比寻常

以上是关于想骂人!开发语言不能统一成一个么?的主要内容,如果未能解决你的问题,请参考以下文章

「京东程序员」因压力过大在页面植入「骂人代码」?

题目1060:完数VS盈数------这题做得我想骂人

适配模式

PHP 适配器模式

c语言,定义一个函数,没做过多的说明,那么此函数能被其他源文件调用么?

求教,ORM是啥?能用从C#中说明么