作为软件工程师,应该清楚的几件事情:
1、 代码是怎样被编译、连接、加载、执行起来的。 编译器把文本模式的文件转换成特定硬件平台(cpu)上可执行的Obj;连接器把若干的obj 、lib连接起来生成可以被加载的obj;加载器加载 可执行文件。 这一系列的问题我们要做到心中有数。还有:obj的文件格式,lib如何被link,加载器如何加载等
2、理解我们应用程序运行的基础: 操作系统, 弄明白系统软件如何构建起来,系统软件如何与硬件对话,系统软件如何向用户提供支持。socket 就是操作系统向我们提供的支持之一。这方面的资源太多了,网络上的信息漫天飞。
3、理解硬件系统式如何构建起来的,主板上多个IC和cpu 如何连接起来实现IO、数据处理;CPU呈现给汇编程序员的编程特性,深入的了解这些是理解系统软件的基础。
计算机系统是一个完整的体系,应用程序员眼中的计算机 和 汇编程序员眼中的计算机 有很大的不同。操作系统屏蔽了硬件的细节,提供了良好的应用环境,但同时也让应用程序员对某些问题无法深入理解,感到困惑。深入理解内部的运行机制是成为专业程序员的必经之路。深入理解了完整的计算机体系,才能更清晰的去分析问题,解决问题
这些是我的一点点感想 ^__^ ,说出来晒晒