您的位置:首页 > 编程语言

如何从底层角度理解编程?

2014-12-25 11:00 197 查看
首先,这里是我个人的理解,有可能我得理解是不正确的.

编程发展史:  机器语言 汇编语言 ...C语言 .. Java语言...

机器语言

机器语言就是二进制码  0101000101这些东西,是计算机唯一能理解的语言.

不得不说到cpu的工作原理,cpu要想进行数据的处理,必须有3类信息交互:

存储单元的地址(地址信息)      寄存器分很多存储单元如128的寄存器  0,1,2...128 编号

操作命令,读或者写命令(控制信息)

读或写的数据(数据信息)

比如显示一张图片, cpu会找到显卡的存储单元地址(二进制码对应的显卡内存地址),然后发送读命令(二进制码),然后再把图片对应的信息(二进制码数据)发给显卡存储单元,然后读命令将机器码信息转化对应的图片,然后显示出来.

汇编语言

但是如果用机器码编程, 对于人类来说太痛苦了! 全是010101001110这些东东

所以汇编语言出现了, 汇编语言就是把二进制的机器指令给形象化,变成人类可以理解的英文.  然后汇编语言和机器语言之前要有一个编译器A,这个编译器中包含了所有汇编指令和机器指令之间的转换关系.

汇编指令大全:http://www.cppblog.com/merlinfang/archive/2007/06/26/27025.html

对于计算来说,无非就是机器指令+机器码数据,而机器指令和汇编指令是一一对应的, 所以,所有的汇编指令可以作为所有编程语言的标准单元.这里需要标准化思想,ISO9001思想.把功能分解成小的功能,知道不能分解为止,那么最后的功能就是基础功能单元,就是标准单元!!

那么现在对编程的理解也就有了些认识,  我没学过C,不过可以推理, C程序编译最终要么转换成汇编指令再转换成机器指令,要么C程序编译后直接转换成机器指令.

姑且认为C程序先转换成汇编指令,再转换成机器指令,再计算.

那么C语言和汇编语言之间是不是也要有一个编译器B, 它包含了所有C程序指令和汇编指令之间的转换关系.但是因为C是高级语言,所以C程序指令和汇编指令肯定不是一一对应的,有可能一个C语言的指令(功能指令),或者一个C语言的方法(功能)对应N多个汇编指令(汇编语言的功能指令).

所以C语言的方法(功能) 是汇编语言的N多个基础功能指令+功能指令的逻辑关系聚合到一起形成的. 所以C语言的方法(功能)是N多机器指令的聚合形成的.

C的底层肯定是机器语言(要么直接,要么间接,直接就有1个编译器,间接就有2个).

C语言肯定利用N个汇编指令(最底层的基础功能单元)形成了C语言的基础功能单元. 然后C语言编码的时候可以再利用N个C语言的基础功能单元,来形成一个复杂的C程序功能或者方法.

再说说java,  java的底层(JVM)是C++写的, 用C++写出8个基础的java功能类和功能类的方法(java的基础功能单元),然后 java类库再利用8个java基础功能类编码,实现更复杂的功能类和功能.

Java
定义了
8
种简单类型:
byte

short

int

long

char

float

double

boolean
。这些类型能够直接转换为二进制
代码。
Java定义了8种简单类型:byte、short、int、long、char、float、double和boolean。这些类型能够直接转换为二进制代码。

所以,可以这么理解,

一个java复杂功能,会调用n个java基础功能, 

一个java基础功能会调用n个C的基础功能,  

一个C基础功能会调用n个机器指令基础功能.

所以我们看到的程序,无论多复杂,逻辑多绕,最终都会被转化成 n个机器指令基础功能.   而所有机器指令基础功能最开始只有0,1间的变换功能.

道生一,一生二,二生三,三生万物......

你真的认为西方文化可以拯救世界?  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程思想