思考

自己的感悟1

  1. 面向对象与面向过程的设计方式,对程序员来说,其实都是在写代码的处理数据的执行流程,
  2. 代码与数据(包括对象数据,静态、全局数据等)分别存储在内存的不同区域,由代码控制数据处理。
  3. 各种编写代码技巧方式不过是代码复用和代码可操控的数据范围(变量作用范围)的区别,
  4. 线程则是分开一部分代码和数据去执行其它操作,其一般处理直到数据处理终结(其返回结果体现在内存中数据的改变上)。(回调只不过是延长线程代码处理而已)

2018.6.20

  1. c/c++需要头文件的原因:代码编译为库发布后符号信息基本只有目标的位置、大小、名字,符号名并不提供自我描述信息(c++提供类等信息)。所以具体的调用方式、参数、返回值以及需要生成的符号由头文件指明。
  2. java等完全面向对象的语言编译后自带符号信息(参数、返回值、名字等)。因此不用额外加入头文件告诉库使用者怎么用
  3. 此外头文件中宏扩充其代码层面功能,全局变量使用模块外依靠符号引用完成。
  4. 同时由于编译后携带信息少,因此反编译后信息少,从而逆向困难。
  5. 关于逆向工程,逆向的是整个软件工程:二进制->代码->设计结构->需求功能。