目录

目录

从某种意义上讲,我认为,函数(main函数除外)是一种扩展的宏观的操作符(微观操作符如+-*\)。程序的组成单位-即程序实体-只有操作符和操作数。而执行的单位是语句,语句=操作符+操作数。函数=操作符,数据(如基本类型复合类型结构体等)=操作数。类是(自带操作符-函数,和操作数,的类型,是一种封装)

程序在变成二进制数据之前,包括汇编语言都是用名字来区分不同操作符(or函数)和操作数的,在变成二进制数据之后,就是按照地址区分了。汇编语言中的助记符,就是按照名字区分操作数的例子。

main函数一般是函数执行入口,从整体上看,代码是由一个一个的函数构成的,除了定义和说明类的语句(例如变量定义、宏定义、类型定义等)可以放在函数外面,所有具有运算或逻辑处理能力的语句(例如加减乘除、if else、for、函数调用等)都要放在函数内部。可以说程序的全部工作都是由各式各样的函数完成的,所以也把语言称为函数式语言。


  • 为什么要有计算机语言这个东西

提及语言,离不开对计算机系统以及操作系统的讨论,因为毕竟先有了计算机系统,(指令集-机器码-汇编-c)进而有了操作系统,才有了各种高级计算机语言。

语言,只是为了指挥计算机才出现的,cup能理解的语言只有机器码,能理解的机器码的集合,叫做cpu的指令集,指令集的各个家族,对应各种cpu架构,随着操作计算机的需求的增加,使用机器码太不好理解,于是发明了汇编语言,由助记符理解指令,即使如此,还是满足不了需求,于是出现了c语言和编译器,还是满足不了需求,于是对cpu的一些通用功能(如io/文件/进程)进行了封装,形成了操作系统,操作系统提供了使用cpu的一些接口.

进而出现了一些高级语言,开发效率更高,能够提供代码封装,比如结构体啦,对象啦,包啦,这些语言无非就是告诉计算机办事,这些高级语言都离不开编译器,因为只有翻译成二进制机器码,才有可能被计算机执行,高级语言的编写,要么直接调用操作系统的接口,要么自己写一些cpu可以理解的指令。

对计算机体系结构和操作系统的理解:

小白篇:推荐 程序是怎样的跑起来的  计算机是怎样跑起来的  开胃菜:网络是怎样连接的

入门篇推荐-任爱华的 操作系统实用教程、 深入理解计算机系统、  现代操作系统 、计算机组成原理软件与硬件接口

内核的理解:推荐Linux内核源代码情景分析可编辑带目录上下两册   非常解惑

编程篇推荐:UNIX环境高级编程中文版   是所有高级语言编程之母

网络和数据库:也是一个开发人员必备技能:自己可以去搜索学习,数据库方便,关系数据库,菲关系数据库,都很多网上教程,

数据结构和算法:研究怎样速度更快更省内存的方式让计算机干活,即让马儿跑得快,又让马儿少吃草。


  • 语言的本质:指挥cpu的指令

指令无非:操作符+操作数

操作符:就那些,cpu很笨的,只能执行一些数学运算和移位运算以及逻辑运算,比较运算等等,这是因为数字电路就这些功能。

操作数:要么放在内存,要么放在寄存器中,操作数需要能区分开,那就用地址区分,操作数的大小要明确,那就用数据类型区分。


  • 高级语言的本质:

高级语言比较聪明,虽然编译后最终归为指令(操作符和操作数),那在此之上,为了快速出代码,又发明了,复杂数据类型(更大的数据块),流程控制(分支/循环),函数(对语句和流程的封装),类/结构体(对函数以及数据块的封装),(对类和函数的封装)。

每一种高级语言基本上就干上面这点事,高级语言的语言,无非就是讲解:

操作符  操作数(基本数据类型)  复杂数据类型  流程控制 函数 类  这些东西的定义和使用规则。

===总起来说,me认为编程就是(指令=操作符+ 操作数 (函数=操作块)(数据类型组成数据块比如结构体)(类=操作块 +操作数据块)===

从某种意义上讲,我认为,函数是一种扩展的宏观的操作符(微观操作符如+-*\)。程序的组成单位-即程序实体-只有操作符和操作数。而执行的单位是语句,语句=操作符+操作数。函数=操作符,数据(如基本类型复合类型结构体等)=操作数。类是(自带操作符-函数,和操作数,的类型,是一种封装)

程序在变成二进制数据之前,包括汇编语言都是用名字来区分不同操作符(or函数)和操作数的,在变成二进制数据之后,就是按照地址区分了。汇编语言中的助记符,就是按照名字区分操作数的例子。

所有的语句都必须在代码块中运行。

我认为语言执行的单位:一个进程里面:要么一个语句一个语句地来,要么一筐一筐地来,一筐就是一个函数,就是一帧。

语言执行的实体 VS 程序实体。想一下~

操作符 操作数  操作流程

函数 :代码模块    数据:基本数据,符合数据结构

类:组合了函数和数据块

类复用,接口,一类 类的描述

main函数一般是函数执行入口,从整体上看,代码是由一个一个的函数构成的,除了定义和说明类的语句(例如变量定义、宏定义、类型定义等)可以放在函数外面,所有具有运算或逻辑处理能力的语句(例如加减乘除、if else、for、函数调用等)都要放在函数内部。可以说程序的全部工作都是由各式各样的函数完成的,所以也把语言称为函数式语言。


  • 计算机组成

                    cpu+内存+io设备

                     io设备=端口+总线+设备控制器//这三个硬件去容纳各种io设备,设备与

                     cpu=寄存器+运算器+控制器

                     内存=地址

  • 操作系统的组成:

                     进程控制

                     内存管理

                     io系统:处理器与设备的通信方式有二,无缓冲和有缓冲,有缓冲叫标准io(1.无缓冲:针对指定的io端口地址进行数据传输,io指令通过总线选择适当的设备,并把二进制位移入出设备寄存器。2.有缓冲:设备控制器可以支持内存映射的io,设备寄存器被映射到处理器的地址空间,cpu执行io请求时,采用标准数据传输指令读写设备寄存器)

                     文件系统

1.语言的本质

                                   图1 操作系统的组成


  • 程序眼中的计算机

1.语言的本质

存储器:字节数组,存储着程序和数据,用虚拟地址引用存储器位置

Stat:程序状态,程序执行的总体状态,异常还是正常执行

PC:正在执行的程序地址

CC:条件码 存储算术和逻辑运算造成影响的有关信息

程序寄存器:每个程序寄存器存储一个字,其中%esp:栈指针


 

 

 

相关文章: