为什么没有一种通用的编程语言?


prtyaa
prtyaa 2023-12-25 15:41:52 49486
分类专栏: 资讯

最近专注于 Coding,好久没更新了,今天更新一波。

 

在 Quora 上看到一个问题:

Why is there not a single programming language for all purposes?

为什么没有一种通用的编程语言?

其实关于这个问题,我有时也感到抓狂,要是这个世界上只有一门编程语言,该省了程序员多少事啊。。。

最近在做项目的过程中,因为需要用到很多种不同的语言、不同的框架,时不时会深感头痛。语言太多,技术也太多,以人类有限的时间和精力,恐怕是一辈子不停的学习都学不完了,因为等你学完了一门,过两年还会有新的东西出来。

更别说,你还得留有技术之外的时间,坐电脑前不停的 Coding 并不是一个好的生活状态。

抱怨归抱怨,可还是得理性的看待这个问题。

来看下这个问题的最高赞回答,我翻译出来,分享给大家。

 

Q&A

有啊。

汇编,C,看你如何定义了。

但是,很多时候人们并不愿意这么去用。

Why?

颗粒度问题。

想象一下,你有一些小方块(or 小石子),然后用它们来建造东西。

这些小方块足够小,用它们你可以完美的建造任何你想要的物体。

任何形状和纹理,乃至米开朗琪罗的大卫的蛋蛋(认真,别笑),都可以完美的构建出来。

接下来,你可能会说:

太好了,有了这些小方块,我就可以做任何东西了。

那么问题来了。

你必须把每一个小方块合理归位,当你要做的是一个大工程的时候,这将花费巨大的时间和精力。

比如你想建造一个奇丑无比的水泥房子,建这个房子并不需要知道很多的细节,只把混凝土板一层层堆砌在一起就好了。

这种情况下,如果你还是一个一个的去码这些小石子的话,那么我估计你很快就会疯掉的。

那怎么办呢?

好办。

可以把这些小方块以某种形状组合在一起,然后每次直接复用这些新的组合即可。比如,把两个小方块放一起,它们就变成了一个矩形,每次使用这些矩形就好了。

用这个方法,将会大大加快开发流程,缩短开发时间,一栋房子在很短的时间内就可以建好。

当然,不限于矩形,你还可以把小方块任意组合成三角形、球形等。

它们就类比于计算机世界中的库(Library),而组合的过程就是抽象(Abstraction) 。

再比如,你有个朋友,叫 Jim, 他想造的东西不是房子,而是刀、叉这些餐具。

他根本不需要用到矩形、三角形这种混凝土块,他需要的是细长的把手、弯曲的头、锯齿状的刀片。所以,Jim 只好自己去做这些了。

而你呢?或许永远不可能用到 Jim 所用的那些东西,同理,JIm 也不可能用到你的混凝土块。

此时,你跟 Jim 就使用各自独立的库, 互不干扰。

在制作刀叉的过程中,为了提高效率,Jim 发明了一台可以快速制作曲面的机器。

在这台机器上,只要输入曲面方程,不久,一个曲面物体就能被制作出来。

这台机器对 Jim 来说,非常有用,然而,对你来说,却没什么卵用。

这台机器你可以看作是 Jim 所用的编程语言的一部分。

它是基于你用的同一种编程语言开发出来的,但是,你却用不到如此高级 ( high level ) 的语言。

在制作物体的过程中,你们都用到了抽象 (Abstraction),不同的是,你把物体抽象成矩形、三角形的水泥板,Jim 却发明了一台新的机器。

这台机器可以说是节省了 Jim 大量的时间和精力,但是对你毫无用处。可以把它想象成你们使用的是不同的编程语言。

使用低级语言,再额外加一些库,对你就基本够用了。

Jim 也使用库,但是他还需要一种更为高级的语言。

或许还有一个叫 Mary 的人,要制作非常非常小的玩意儿,人家压根就不需要用到库,仅仅用小方块,就可以拼装成任何她想要的东西。

实际上,她需要的正是如此小的颗粒度,这样的颗粒度对她来说,刚刚好。

 

最后,结论是什么呢?

小颗粒度意味着工作量大,但同时,也有更强的控制力。

使用小颗粒度的编程语言,你几乎可以做任何事情。但是,用它来构建高级别的软件时,往往比较费时,而且更容易出错。

基于此,人们创造了 Libraries,Frameworks, 甚至还有新的编程语言。

在实现某些高级系统的时候,使用它们,意味着用比较大的颗粒来完成工作,显然可以大大加快开发进度,省了不少精力,但自由度或者说控制力就会因此有所损失。

尤其是,当你有特定需求的时候,可以在 Libraries,Frameworks,编程语言等层面选择定制,各取所需,各取所长。可以肯定的是,这将带来更好更快的开发体验。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30527
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2980
【软件正版化】软件正版化工作要点  2897
统信UOS试玩黑神话:悟空  2872
信刻光盘安全隔离与信息交换系统  2758
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1291
grub引导程序无法找到指定设备和分区  1262
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  171
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  169
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  164
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!