100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 万物皆程序 软件定义一切

万物皆程序 软件定义一切

时间:2020-12-05 20:32:45

相关推荐

万物皆程序 软件定义一切

在传统的眼里,人们认为硬件是看得见、摸得着的实物,而软件是虚的,两者泾渭分明。但在程序员的眼中,世间万物一切皆是程序代码。

一、菜谱就是程序

酸菜鱼菜谱

一个菜谱可以分成几个大的步骤流程,一二三四往下顺序执行,这不是就是程序吗?而每个大流程又可以细分成一些更小的步骤流程,这不就和计算机程序员写软件时程序又调用子程序一回事吗?

但且慢,菜谱这个程序和计算机程序最大的区别是什么呢?差别在执行上,计算机程序是可以通过计算机这台机器完全自动化执行的。而菜谱的执行还得通过人手的操作。

那我们能不能再写些程序来控制机械手来实现炒菜的自动执行呢?理论上是可以,但实际上目前还做不到。人手操作这样看似简单的被称为体力活的工作,从程序员的角度其实是个极其复杂的智能工作。举个例子,就说片鱼,这里先别说片的事情,首先就面临一个问题,什么是鱼,这里就涉及一个图像识别的问题了,而我们知道在计算机行业里图像识别人工智能也就这几年才刚刚有了一点点起步。基本上,涉及动作和常识的工作,对人类来说越简单的工作,对程序员来说反而是越难的。(参见《莫拉维克悖论—困难的问题是简单的,简单的问题是困难的》)

像菜谱这样的程序在程序员眼中就是一个有很多子程序步骤未完成的程序作品。

二、所有工艺流程都是程序

菜谱其实本质上就是一个食品材料加工的工艺流程,虽然其因为离我们的日常生活太过贴近了,以致看起来没有高大上的神秘感,而且其标准化程度也比较低,但它确实就是一种工艺流程。

既然菜谱是一个程序,那么其实所有工艺流程,不管是传统的农牧业工艺,还是现代工业高科技工艺,从简单的矿石到复杂的芯片,其实都是流程,都是程序。当然,也都是很多子程序步骤未完成的程序。

三、设计图也是程序

1、建筑、机械设计

在设计领域,建筑设计、机械设计会使用CAD/PROE这样的工具软件来画图,你看到的是这样的图像。

但其实在CAD/PROE的背后其数据保存是类似:

{

Line line1(起始坐标,结束坐标);

Line line2(起始坐标,结束坐标));

Circle c1(圆心坐标,直径);

……

}

这样的指令来保存图形数据,这其实不就是一段程序代码吗?

2、计算机图形界面设计

WEB这种脚本语言已经成为描述图形交互界面UI的领域专用语言标准。无论你是直接做网站的WEB页面还是用各种框架来做PC桌面应用、手机APP、或者开发微信小程序,基本上都是HTML+CSS+JS这样一个或类似的组合。

WEB语言是一种将计算机桌面2维图形(加上时间的话其实是3维时空)用1维的线性代码方式来描述的工具。

3、芯片电路设计

在硬件领域,这个世界上最复杂的东西就是芯片。芯片是如何设计的呢?

一台汽车有几千个零件,设计汽车你可以用PROE这样的软件去画图。像华为麒麟990这样的芯片集成了103亿个晶体管,设计这样的芯片如何去画103亿个晶体管的电路结构图呢?他们会使用类似PROE这样的工具软件在计算机上一个个去画图吗?

实际上,当设计规模庞大到一定程度的时候,用'画图'的方式画图已经不可能实施了。芯片设计人员其实是用写程序的方式来画图。芯片设计使用一种叫VHDL(超高速集成电路硬件描述语言)的设计语言,一行代码下去,就是成片成片的数字逻辑电路。

四、设计图 + 工艺流程 = 万物

有了设计图,有了工艺流程,人们就能制造人类所需的所有商品。而现在我们知道,无论是设计图,还是工艺流程,其实都是一段程序,那我们这个世界上还有什么不是程序?

程序员这个工作的本质其实就是用1维的线性代码去描述我们现实中的2维和3维空间的世界。

无独有偶,在人类程序员诞生之前,上帝程序员早已经发明一个用1维线性代码描述3维空间结构的程序,这就是基因。我们知道生物体的蛋白质性质主要和其3维空间结构有关。蛋白质在生成过程中刚开始是一串一维线性排列的氨基酸,然后会折叠变形成一定的3维结构。尽管这其中的力学机制人类还不能完全掌握其奥秘,但显而易见的是,一串1维线性的基因代码最终生成了我们人类这样一个3维的生物体结构。

更多上帝程序员的杰作,请参考:《程序员创世纪录》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。