No.165-未来的程序员们,了解一下什么是程序?
作者:@老铁的最新号外
# 干货文章,期待你的一键三连!#
--------------
使用过计算机的人都知道,一个应用程序(客户端,App)需要系统内的软件和硬件共同配合才能实现复杂的功能。如下是一个简化的计算机软硬件层次图。
图:计算机软硬件层次图
应用软件复杂的程序代码需要经过系统软件层,被解释翻译成一个个指令后,最终到达硬件层被执行。为什么需要将各种编程语言编写的代码翻译后,硬件才能执行?因为计算机硬件只能理解和执行二进制指令,而我们编写的代码却是各种高级编程语言(C,C++,Java等)。为什么我们不直接编写可以被硬件直接理解和执行的二进制指令,这样就不需要经过编译这一步了,直接执行?因为二进制:只包含0和1。类似于1100100,如果人工用这种方式进行代码的编写,计算机的发展也不至于如此之快了。
各层的功能
硬件层,包含有计算机的各种硬件。CPU,内存,硬盘,显卡等。主要进行数据的计算和读写操作。
系统软件层,主要是提供服务和各种管理。比如说,现在有个软件需要调用硬件,但是这个软件没法直接发消息给硬件,二者是没法直接沟通交流的。必须要经过系统软件层,让系统软件层来提供服务,大体上就这么个意思。系统软件层还对各种硬件状态进行监控。
系统软件层包含操作系统,编译程序,加载程序和汇编程序等。
系统软件层的典型代表:操作系统,是用户程序和硬件之间的接口桥梁。
关于编译
现在编程大部分使用的都是高级语言(C,C++,Java等),把用高级语言编写的程序翻译成硬件所能执行的指令,这个过程就叫做编译。
关于二进制
计算机底层直接依赖的就是二进制,计算机上的所有内容,底层都是可以用0和1来表示的二进制数。比如:一张图片,一首歌曲,一段txt文档,实际上都是0和1的集合体。
0和1分别是一个二进制位,也可以称之为一位(bit)。计算机硬件可以理解和执行的指令,使用的就是二进制。
编程语言的发展
最开始的一代程序员是直接使用二进制数来与计算机进行通信的。
随后发明了助记符,开发了汇编语言,这是一种机器语言,它需要程序员像计算机一样的去思考每一步。
如何让程序员用日常自然的语言来编写程序?如何提供程序员的生产效率?显然上面的两种编码方式无法满足,高级编程语言应运而生。
高级编程语言可以用较自然的方式编写,自然也极大的提高了软件的生产效率。
下面是数组元素交换位置的编码操作,观察三种编码方式的区别。
图:三种编码方式的不同
可以看出使用高级编程语言进行编码,方式更偏自然一点,使用数学中的字符,等式配合上简单的英文。汇编方式更加死板,步骤较多。而二进制的方式,可能会让人发疯。
联系客服