分享

编程的本质

 guitarhua 2014-08-11

  我们发明计算机的目的是为了解决问题,特别是解决大量数据的计算问题。

本质上,计算机所能做的只有一件事:数据处理。核心就是数据。我们输入数据,计算处理他,然后输出结果。这个就是所有的过程。

    

输入

处理

输出

       这个过程的核心就是数据的处理。这个处理过程是通过电子电路实现的。比如加法器电路等。这个电子电路就是所谓的硬件,也可以说是计算机的CPU。

       没有硬件,软件什么也做不了。我们编写软件,本质上就是输入数据和指令,然后计算机根据指令处理并输出。一条指令可以说就是CPU的一块电路。所谓的指令集就是电路的集合,也就是一块复杂的集成电路。所谓的FPGA就是门的集合,我们连接门,使他完成相应的功能。编程向两方面发展:硬件模块的封装,如PLD,FPGA;软件模块的封装:从 位-字节-基本数据类型(int,float等)-复杂数据类型(struct,union)-对象,类...发展。

       在计算机刚发明的时候,程序员编程都是使用机器语言(机器指令),所以要对所有的指令都非常清楚,并编写一大串的01指令。譬如(假定的):

00100000

01000001

11011010

。。。。。。。

       这样的编程很繁琐,于是聪明的程序员发明了汇编语言,他本质上没有多大的改进,只是基本上让一条汇编指令对应一条机器指令。如:

ADD ax,2   --------    00100010

当汇编器看到ADD ax,2 时,就会把他翻译为00100010。然后计算机运行机器指令。

本质上汇编器就是一个文本翻译工具。

       汇编语言也很繁琐,程序员又发明了高级语言,如BASIC、PASCAL、C、COBOL、FORTRAN等。他们编写的代码最终都翻译为机器指令并由计算机运行(机器指令就是硬化的电路)。(如java的JVM就是将字节码翻译为机器指令)。他们的特点基本是用函数封装的,函数封装了语句,一条语句对应一条或几条机器指令。翻译的过程是由编译器或解释器完成的。

      编译器或解释器扫描程序代码(贪心法),先词法分析转化为一系列的单词和符号,再语法分析看是否符合语言的语法,然后中间代码生成、代码优化,最后生成目标代码,也就是所谓的汇编指令或机器指令。

      汇编指令封装了机器指令,高级语言的函数封装了汇编指令。我们用高级语言编程编程要做的工作就是使用函数,使用封装了机器指令的API函数。所有的函数都可以成为API,API就像一块电子电路,输入就是函数的参数,输出就是返回值。(*.DLL,*.lib都是函数的封装),所有的编程工作最后都转化为机器的机器指令。

      什么是数据结构?

      从计算机底层看,一位就是一个电平值。如RS232电平,逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V。八位就是一个字节。计算机以字节寻址。一个char类型数据就是一个字节,int一般4个字节,long八个字节。字节封装了位,简单数据类型char,int,folat,指针等封装了位,一个结构Struct封装了简单数据类型,抽象数据类型(类,对象)也封装了简单数据类型。所谓的数据结构就是数据在内存中的表示,抽象为位,字节,简单数据类型,抽象数据类型(自定义数据类型)等。

      什么是算法?

      所谓的算法,从底层上看,就是以最精简的机器指令组成程序,他从空间和时间上没有任何的冗余。从高层上(高级语言)看,也是程序储存空间的最小化和运行时间的最短化。

     用高级语言编程本质上就是使用API,封装了机器指令的API。熟悉这些API即可,本质上不难,关键是时间和毅力的问题。所谓的细节就是使用哪个API函数,以及他们叠加的顺序。不要为细节难倒,从高层上有个整体的概念会感觉好很多。

 

数据

抽象

设计

      程序就是位+上下文环境。单个的位没有任何意义。

      面向过程和面向对象的本质上区别不大。他们都是对于数据和指令的封装(用方法,类和对象)。只不过面向对象封装的多一点点而已。

      实质上高级语言编写的程序冗余了很多指令。OO的目的很大一个就是为了复用。

      通讯就是数据的交流,可以分为有线和无线(电磁波)。就是我发一系列的01数据给你,你再返回一系列的01串给我,双方要按照协议进行。至于所谓的01串代表什么意思,就要靠双方协商的协议和字符编码解释了。

……………….

         我靠,写的真累,做饭去了,好饿。随便写的,贻笑大方了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多