想骂人!为什么有这么多开发语言?

开发 后端 开发工具
有时候,写 TypeScript 写多了,写 Java 的时候就老容易出错。而当陷入某个项目一段时间之后,自我感觉老熟悉的 Python 和 Golang,会变得非常的陌生。

 [[418379]]

图片来自 包图网

而某段时间写起来行云流水的 Bash 脚本,每次重新拿起,都会进入看文档写代码的境地。

因为工作和个人兴趣的原因,需要在多种语言中进行切换,这种感觉尤为强烈。

个人精力有限,不可能每天都照顾到这些刁钻的,五花八门的语言,所以最后干脆放弃了挣扎,让语言的圈子渐渐的将开发人员隔离开来。

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

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

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

我们来看一下。

Golang 的函数声明关键字是 func:

  1. func test(x int,y intint
  2.  

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

  1. public int test(int x,int y){ 
  2.  

typescript 的函数声明:

  1. function test(x: number,y: number):int
  2.  

python 的函数声明:

  1. def test(x,y): 

kotlin 函数声明:

  1. fun test(x: Int,y:Int): Int
  2.  

rust 函数声明:

  1. fn test(x: i32,y:i32){ 
  2.  

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

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

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

虽然说语言在软件开发中,只是占了很小一部分,但在实际落地的时候,却往往又影响重大。

不同的语言,细节差异多,编码规范不同,对程序的影响就比较大。这些差异,往往需要开发人员在日积月累之间,不断的积累经验。

在语言之上,建立的类库和生态,更是庞大。这些差异是无法消除的,只能隔离。

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

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

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

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

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

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

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

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

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

未来,有哪个语言标称统一了所有的语言,你就笑一笑看看罢了,它不过是第 n+1 种语言而已。

另外,偷偷的告诉你,使用 f 关键字进行函数定义的语言,到现在还没有出现,如果你想造一个的话,考虑一下啊。

作者:小姐姐味道

编辑:陶家龙

出处:转载自公众号小姐姐味道(ID:xjjdog)

 

责任编辑:武晓燕 来源: 小姐姐味道
相关推荐

2022-07-26 23:43:29

编程语言开发Java

2013-01-15 09:41:45

编程语言

2015-05-18 15:08:08

多种程序设计语言程序设计语言

2017-12-21 19:38:50

润乾中间表

2013-01-24 09:44:44

数据库

2022-01-12 20:04:09

网络故障断网事件网络安全

2020-10-15 13:19:24

为什么会存在乱码

2021-04-27 15:13:20

Java开发语言

2021-05-31 22:26:20

5G技术通信

2020-01-02 10:06:16

Java 8Java 14

2024-02-04 10:29:58

线程通信

2022-08-04 23:32:38

比特币以太坊代币

2017-06-16 16:16:36

库存扣减查询

2018-06-26 15:00:24

Docker安全风险

2023-11-13 08:49:54

2021-01-14 05:08:44

编译链接

2021-10-27 15:23:10

语言PHP开源

2024-02-20 08:09:51

Java 8DateUtilsDate工具类

2020-07-02 14:12:52

C++语言编程

2019-01-31 10:15:14

群聊单聊消息
点赞
收藏

51CTO技术栈公众号