cpu 内存 机器语言 汇编 高级语言 平台之间的关系
大公司将细节封装好,然后对外暴露出api,程序员使用这些api完成具体功能,这种程序员也叫做大厂依附人员,api工程师。本质上这些人员的工作没有丝毫技术含量,从微软的c#到苹果的swift再到谷歌的js,这些程序员使用的语言甚至都是这些大公司设计的,如果这些程序员沉迷于这些api将会导致他们失去计算机世界,沦为大公司的奴隶。所以看透底层的能力非常重要。
在二战中图灵提出了图灵机的概念,这使得计算机首次具备了完整的科学理论,再到二战结束的时候 计算机首次诞生,这个时候的计算机只会完成数字运算,科学家输入公式和数字,最后计算机求解,实际上 这个过程到今天没有丝毫变化,芯片内部做的就是这个事情,输入公式和数字,求解,但是为什么这和我们今天看到的丰富多彩的计算机世界不同呢?这要归功于一下几个贡献:
1:高级语言的诞生
最初,科学家在写好公式之后,需要将公式转化为二进制后输入到计算机中,因为计算机只能完成二进制运算,但是本质上 这个转换是非常浪费精力的,于是科学家专门写了一个程序 让机器做这个事情,那首先必须让计算机识别十进制,这很好办,只需要和计算机约定好 十进制的表达方式即可,当计算机遇到指定的符号 就可以自动的按照规则将十进制转换为二进制,这应该是最初的汇编,同时汇编语言诞生,汇编语言使得人类不需要进行二进制转换操作,可以直接按照人类的思维进行书写,这个时候 仍然只能进行数字运算,所以这个时候的计算机 通常给银行 财务等使用,随着计算机越来越深入的介入到行业内部,行业内部复杂的业务关系使得计算机公式变得越来越复杂,这使得后期维护变得非常困难,当看到密密麻麻的汇编语言的时候 就让人头疼,编程慢慢编程了体力劳动,这个时候 人类希望编程语言可以不仅仅是数字,而是具有自然语言的特征,这样人们在阅读程序的时候就不会出现困难,于是c语言诞生了,c语言相对于汇编增加了很多自然语言的特征,这使得阅读代码变得不在困难,同时也为超大型软件的开发提供了支持,到了后来 几百人协作开发的软件变得司空见惯,但是c语言的短板也暴露出来,最初c语言只是为了方便自己书写的,对于别人如何看懂代码组织等 是没有关注的,于是c++6诞生了,他是专门解决多人开发协作的问题的。
2:传感器的发展
人类已经解决了数字计算的问题,那么理论上所有需要数学解决的问题就都可以解决了,但是有个问题,现实世界与计算机世界是无法直接交互的,他们之间需要有一个桥梁 将现实世界的复杂场景抽象成数字 然后传送给计算机,如今 光感仪,声感仪,红外线探测仪等等传感器 他们是首先对外部世界进行感知,然后将收到的信号转化为电子信号 发送给计算机,计算机因为收到的是数字信号(电信号可以转换为数字信号),所以就可以运用数学公式进行计算。
3:抽象思想
我们有了传感器,有了计算设备是不是就可以了,还不够,我们缺少最重要的东西,就是公式,没有公式 即使获取再多的数据也没用,公式是灵魂,他是人类对外部世界认知的抽象表达,他是两个物体之间转换规则的数学表达,拿到了公式,人类就好像拿到了真理,比如万有引力三大定律,电磁波公式。
4:图形化
真正使得计算机进行平民百姓身边的是图形化设备,否则他终归是科学家的玩具,图形化设备属于图形渲染领域,他是将数字信号转化为图形信号,然后使得图形动起来就变成了视频。
所以一旦我们明白了计算机世界的底细,实际上对于我们而言 最重要的能力是抽象思维能力。