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

首先,这里是我个人的理解,有可能我得理解是不正确的.


编程发展史:  机器语言 汇编语言 ...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间的变换功能.


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


你真的认为西方文化可以拯救世界?  


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将《底层工作者手册之C语言基础及项目开发》改名为《底层开发者手册之C语言基础及项目开发》,并做了一些修改,更新到2.4.5节。不过其中有一些章节还没有写完。先凑合看吧   《C》这本手册是《底层开发者手册》系列的第二本,但它却是我第一个开始写的,早在2008年年底时我就开始着手写这本手册,但写了没多久就因为发生了一个意外而终止了。在2010年年初的时候我开始了第四本手册的写作——嵌入式操作系统内核,目前已接近完工状态(我的博客可以下载,blog.sina.com.cn/ifreecoding),现在我又回过头来重新写《C》这本手册,将会采用与《嵌》一样的方式,写一部分就在网上发布一部分,在这同时我又在收集第一本和第三本手册的材料,准备将这4本手册同时写完,使读者可以按照顺序阅读这4本手册,层层深入底层开发者的工作。   一个良好的C语言基础是编写嵌入式设备底层代码的必要条件,如今介绍C语言的书不少,介绍嵌入式C的书也不少,但几乎没有结合实际项目来介绍C语言的,看完这样的书,C语言会用了,但做出来的产品只能称之为中国校园式产品,为求实现功能不择手段,根本不适合在项目中使用。另有一些自称C语言精华的书或网上的面试宝典,尽是讲一些偏题怪题,这可能满足了作者的虚荣心,但却在将新手引向一个错误的方向。当然,仁者见仁智者见智,这仅是我个人的观点,也一定会被他人所反驳的,正是出现百家争鸣的局面社会才能进步。   本手册分为2部分,第一部分介绍C语言基础,在介绍C基础时会结合嵌入式中的应用加以介绍,将重点介绍在项目开发中有用的内容,对于过分追求技术但又没有什么实际用处的内容不做过多的介绍,对于这些内容最多会提一下,让读者知道有这种情况存在。第二部分介绍项目开发,从项目需求、分析、设计、编码、测试、维护的角度来介绍编写代码。记住,编码只是项目中的一个部分,在中国校园式产品中这可能几乎就是全部了,但在一个可以称之为产品的项目中,它只是一部分,并且项目越大它所占的比重越小。   我在看书学习新知识时,希望看到的是那些写的多一些详细一些,也就是废话多一些的书,可以傻瓜式的一步步跟下来,不希望看到那些对关键之处一笔带过还故作高深的书,所以本手册就以废话多为原则,可能会写的罗嗦一些,只求能看的明白一些。当然,本人知识水平有限,有些知识会有理解上的错误,或者有未触及的地方,错误一定是有的,就像做产品一样,不可能没有错误。我写本手册的目的在于分享我的知识,注重实际应用,这对某一论坛上的某些只会空谈经验、分析汉字语法的理想C语言文艺专家们来说可能会不屑一顾。如有问题,请登录我的博客blog.sina.com.cn/ifreecoding反馈,我虚心接受,但我拒绝那些假大空的为了批评而批评的建议。我们做项目不是写论文,是实实在在的东西!   为新手写一本介绍C语言的书很难,因为它牵涉到非常多的知识作为基础,其中的一些知识很可能需要使用另外几本书的篇幅来介绍,而且知识是耦合在一起的,在介绍前面的时候会涉及到后面的知识,对于新手来说,没有对C形成一个全貌,无法理解。因此给新手的建议是只能多看几遍,第一遍大致看看,掌握全貌,不要细读,然后再多读几遍,仔细分析各种问题,并结合例子,自己动手编程,调试,这个过程非常重要,一定要自己动手编程,光看是没有用的,只有自己动手解决了问题,才能从根本上理解问题。 C语言入门可能会比较容易,但不要指望几个月时间就能熟练掌握C语言,如果做底层编码的话则需要以年为单位来衡量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值