-
目录
程序在变成二进制数据之前,包括汇编语言都是用名字来区分不同操作符(or函数)和操作数的,在变成二进制数据之后,就是按照地址区分了。汇编语言中的助记符,就是按照名字区分操作数的例子。
系统自带data type:slice map int chan ...
为什么要有计算机语言这个东西:
提及语言,离不开对计算机系统以及操作系统的讨论,因为毕竟先有了计算机系统,(指令集-机器码-汇编-c)进而有了操作系统,才有了各种高级计算机语言。
语言,只是为了指挥计算机才出现的,cup能理解的语言只有机器码,能理解的机器码的集合,叫做cpu的指令集,指令集的各个家族,对应各种cpu架构,随着操作计算机的需求的增加,使用机器码太不好理解,于是发明了汇编语言,由助记符理解指令,即使如此,还是满足不了需求,于是出现了c语言和编译器,还是满足不了需求,于是对cpu的一些通用功能(如io/文件/进程)进行了封装,形成了操作系统,操作系统提供了使用cpu的一些接口.
进而出现了一些高级语言,开发效率更高,能够提供代码封装,比如结构体啦,对象啦,包啦,这些语言无非就是告诉计算机办事,这些高级语言都离不开编译器,因为只有翻译成二进制机器码,才有可能被计算机执行,高级语言的编写,要么直接调用操作系统的接口,要么自己写一些cpu可以理解的指令。
对计算机体系结构和操作系统的理解:
小白篇:推荐 程序是怎样的跑起来的 计算机是怎样跑起来的 开胃菜:网络是怎样连接的
入门篇推荐-任爱华的 操作系统实用教程、 深入理解计算机系统、 现代操作系统 、计算机组成原理软件与硬件接口
内核的理解:推荐Linux内核源代码情景分析可编辑带目录上下两册 非常解惑
编程篇推荐:UNIX环境高级编程中文版 是所有高级语言编程之母
网络和数据库:也是一个开发人员必备技能:自己可以去搜索学习,数据库方便,关系数据库,菲关系数据库,都很多网上教程,
数据结构和算法:研究怎样速度更快更省内存的方式让计算机干活,即让马儿跑得快,又让马儿少吃草。
- 语言的本质:指挥cpu的指令
指令无非:操作符+操作数
操作符:就那些,cpu很笨的,只能执行一些数学运算和移位运算以及逻辑运算,比较运算等等,这是因为数字电路就这些功能。
操作数:要么放在内存,要么放在寄存器中,操作数需要能区分开,那就用地址区分,操作数的大小要明确,那就用数据类型区分。
- 高级语言的本质:
高级语言比较聪明,虽然编译后最终归为指令(操作符和操作数),那在此之上,为了快速出代码,又发明了,复杂数据类型(更大的数据块),流程控制(分支/循环),函数(对语句和流程的封装),类/结构体(对函数以及数据块的封装),包(对类和函数的封装)。
每一种高级语言基本上就干上面这点事,高级语言的语言,无非就是讲解:
操作符 操作数(基本数据类型) 复杂数据类型 流程控制 函数 类 这些东西的定义和使用规则。
===总起来说,me认为编程就是(指令=操作符+ 操作数) (函数=操作块)(数据类型组成数据块比如结构体)(类=操作块 +操作数据块)===