其实老师之前说过的话或者提的意见其实都还是很有建设性的。
1.为什么变量名不能使用数字?
假如变量名允许以数字开头的话,那么语法分析器在解析一个全部为数字的字串的时候,就无法判断它是一个数字常量还是一个变量名了
2.推荐了几本书
1).程序员的自我修养
2).深入理解Java虚拟机
3).龙书虎书?
4).《编译原理》清华大学 吕映之/张素琴
3.需要读gcc的源代码:http://gcc.gnu.org
使用工具:source insight
找到了一个博客:https://blog.csdn.net/sonicling/article/details/6702031
以上算是前言吧 怎么说呢 还是想好好学学这门课 毕竟像“专业素养“这样的东西就很玄
一、引论
1.1.课堂笔记
1).硬件:并行/ 软件:抽象
2).什么是高级语言?与机器无关
3).编译和解释:
编译:生成目标程序 优点:效率高,生成的目标程序直接运行时速度快
解释:边解释边运行 优点:方便诊断错误
4).针对C语言:编译运行
针对Java语言:首先编译为字节码(bytecode)的形式—>利用Java虚拟机解释执行
5).语言处理系统
工具(e.g. in C) | 作用 |
---|---|
预处理器 | 替换宏(#define)、替换头文件(#include)、预编译(#if def):将头文件插入到本文件中,增加行号等 |
编译器 | 产生二进制代码or汇编语言 |
汇编器 | 生成可重定位的机器代码 |
链接器 | 在运行库函数时定位 |
加载器 | 加载到内存中 |
6).register变量:设置变量在寄存器中,存取速度快
7).inline(内联函数):在本地中插入该函数,就地展开,速度快。为什么还要调用函数?代码简洁 以时间换空间。
1.2.课后扩展
1).静态策略:在编译时就可以确定的问题
动态策略:只允许在运行程序时做出的策略