找回密码
 立即注册

为什么编程语言有这么多种类?为什么不统一成一种语言呢?

5
回复
136
查看
[复制链接]

124

主题

3

回帖

378

积分

中级会员

Rank: 3Rank: 3

积分
378
来源: 2023-12-21 09:16:04 显示全部楼层 |阅读模式
统一了不更好吗?
回复

使用道具 举报

6

主题

27

回帖

44

积分

新手上路

Rank: 1

积分
44
2023-12-21 09:16:35 显示全部楼层
这个问题下面抖机灵的不少,但是认真分析原因的几乎没几个。
比如高赞回答说,大家为了统一语言,只好新创造出一个语言。好了,现在我们有N+1个语言,反而更多、更分裂了。如此循环往复,始终无法统一。
但是这种理论却不能很好地解释Internet是如何取得了今天的生态位的。在IP协议独霸network stack的bottleneck之前,苹果有AppleTalk,Novell有IPX/SPX,包括现在都还有RINA、设计初衷就是想替代TCP/IP,等等等等。然而,网络领域起码目前来看,IP的地位仍然不可动摇。
为什么计算机科学家们没有新创建出N+1、N+2、N+3个有巨大影响力的协议、形成藩镇割据呢?或者反过来问,为什么没有哪个编程语言像IP那样市场份额越来越大,几乎形成垄断呢?
一个可能的解释是,编程语言本身不具备经济学上所谓自然垄断的特性。一些行业,比如供水、供电、铁路等等,随着规模的扩大,边际成本会降低(或远低于固定成本)、边际收益提高,从而使得行业倾向于集中化,在无外力(如行政)干预的情况下形成自然垄断。计算机网络也是一个很好的例子,当99%的节点都使用IP协议的时候,新的节点不用你去游说,它自己都想接入互联网,而且说不定掏钱都愿意——想想当年阿里对来往的重金补贴,你有为了那几块钱真的从此放弃微信吗?
那么编程语言有没有这样的特质呢?供给侧就不用提了,即便互联网+可以取代老师(我很怀疑这一点)、实现供给侧的规模经济,那最先被经济到的也是C、Java这种语言大户。教人写COBOL,难道不怕cause brain damage吗?(手动狗头
需求侧呢?要说也有techinical debt这种玩意——legacy code只要work,那么企业让员工继续刨 山很有可能比新写一套要更划算,现在都还有人在吃COBOL饭就是这个道理。然而没有网络效应的加持,自然垄断仍然是痴人说梦。看看JavaScript就知道了,这货已经是幸运到了极致——搭上了互联网的东风,又有web对后向兼容性的要求,真的是天时地利人和,把一门起初设计如此之烂的语言都推到了时代的风口。但是想大一统?还是洗洗睡吧。
分析到这里,不禁想起来世界语的故事:
世界语在中国 | 正午
世界语,一种以理想为基石的语言,在内忧外患时传入中国,承载着世界大同的梦想。在新文化运动时期,它曾得到蔡元培、钱玄同、鲁迅等人的支持和推广,很多高校都办起了世界语班。今天,还有谁在学习世界语?
事实上,世界语的没落不仅局限于中国,也正在世界范围内慢慢销声匿迹。
规模经济也好、大一统也好,在民族主义情绪甚嚣尘上的今天, 通用的语言愈发成为一种令人扼腕的隐喻。
也许这就是语言的本性——巴别塔下的混乱,是上苍为人类划定的界限,自然语言、编程语言,概莫能外。我们能做的,唯有承认语言的局限、承认自己的局限,孜孜以求,be a humble programmer。
以上。
回复

使用道具 举报

12

主题

31

回帖

65

积分

注册会员

Rank: 2

积分
65
2023-12-21 09:17:32 显示全部楼层
为什么螺丝刀有那么多种类,为什么不统一成一种螺丝刀呢?
回复

使用道具 举报

5

主题

30

回帖

44

积分

新手上路

Rank: 1

积分
44
2023-12-21 09:17:53 显示全部楼层
因为缺陷和优点往往和谐地共处于同一设计上。
甚至于,你所认为的缺陷,正是他人心中的优点。


那个认为局部变量就是evil的男人设计了Forth。这门语言保留了局部变量,但是基本用不到,Forth程序员以熟练地翻炒数据为乐。


Prolog程序员们高喊着“Elegant is not optional”,他们不用变量,让这帮人去用Forth大概不太现实。


如果这些语言能变成动物,大概你会看到一个跨越时间的动物园.....不,Pascal那种严丝合缝的风格大概应该变成建筑才对,而Lisp这种无定形的小怪物会叫人疑心自己其实是穿越到奇幻世界了。


JavaScript和haskell对Monad的分歧大概我这辈子是看不到调和的那一天了,Purescript不算入内。


差异这么大,拿什么去统一啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

8

主题

26

回帖

51

积分

注册会员

Rank: 2

积分
51
2023-12-21 09:18:08 显示全部楼层
世界上本来有十个编程语言
有人觉得太乱了,得搞个语言统一所有
于是现在世界上有了十一个编程语言


世界上本来有十一个编程语言
有人觉得太乱了,得搞个语言统一所有
于是现在世界上有了十二个编程语言


世界上本来有十二个编程语言
有人觉得太乱了,得搞个语言统一所有
于是现在世界上有了十三个编程语言


世界上本来有十三个编程语言
有人觉得太乱了,得搞个语言统一所有
于是现在世界上有了十四个编程语言


世界上本来有十四个编程语言
有人觉得太乱了,得搞个语言统一所有
于是现在世界上有了十五个编程语言
……
回复

使用道具 举报

32

主题

18

回帖

114

积分

注册会员

Rank: 2

积分
114
2023-12-21 09:18:30 显示全部楼层
这是一个新的轮回的问题
其实有,比如汇编,退一步,C
你只需要学会这两门中的一门,基本上就可以解决现代计算机的所有问题。
但是,会有人在真正的工作上只用汇编和C编写所有代码吗?
不会,因为,
用C写一个android APP的时间成本大大大于学JAVA的学习成本
用C写一个网站的学习成本,大大大大于学习使用PHP、Go、Python、JAVA、JS学习成本
用C写一个Windows桌面应用的成本,大大大大于C#、VB
其实这个问题是在说,为什么不统一一门语言,让程序员少学点东西?
所有语言都是为了自己的特定场景简化过的结果,现在这么多语言其实就已经是让程序员进入到特定场景编程的最佳方案了。
<hr/>假设你只用所谓的统一语言来开发所有的不同类型的程序,这门语言因为是统一的,一定要性能、功能、兼容性兼备,你会发现你不得不学习更多更难的晦涩难懂的东西,很多处理都要自己写
这时候,有人会发现你遇到了难题,然后封装了一个套工具库
有人觉得工具库不错,但是写起来麻烦,封装一个新语句吧?
有人发现,新语句不错,但是常用的东西没必要每次都重写,封装一个库吧?
有人发现,库不错,但是太零散,封装一个框架吧?
然后出现了很多不同场景下,出现了名字不同的新的语法和框架。
然后有人说,为什么要这么新的语句和框架,为什么不统一呢?
然后...
你现在就处于人们已经把汇编语言简化为了适用于不同场景的语言和框架。
回到刚才的观点,现在学习新语言已经是着手开发最简单的方案了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
商业洽谈 文章投递 寻求报道
客服热线: 400-113-0968
关注微信