Home -> Health -> Q & A |
一些问题以及我的答案。
1. 微软的这么多产品用什么写的,比如IE?
微软的产品早期90%以上都是用C写的,汇编只在微软Windows操作系统内核模块中运用。后来的一些产品,比如IE、IIS等大多数使用了C++,而且微软一直在强力的推广它的COM和.NET(COM 3.0)。建议大家用emule搜索下载一个NT或2K泄漏的源码,或者wrk,这些都是Number 1的学习资料,而且是受益终生的。
2. MFC和SDK,VC和C++,VC和MFC,还有后来这么多名词,头大
我也头大,作为微软,一个商业公司,总要倒腾点东西,来继续吸引开发者和最终用户。
MFC – Microsoft Fundation Class,
微软封装的C++库
SDK – Software Development Kit
软件开发接口,比如在Windows系统上,要弹出一个对话框,这些C语言运行库是不会介绍的,这些是操作系统的功能,你需要通过直接或间接的调用DiagBox来实现。
VC – Visual C++
一个工具,类似Dreamweaver用来制作网页的工具,这个不同的是用来开发程序。由于大多数的公司用VC,多半使用了VC里头带的MFC库,所以有时候大家心里明白后,也就随便写了,比如招聘上就写:熟悉VC/MFC
🙂
C++
一门语言,和C一样,有国际标准的。一些开发工具厂商根据这些标准开发相应的编译器、连接器、IDE(集成开发环境)、以及一些相应的库来销售。
比如微软的VC安装路径bin目录下面的
cl.exe 是.c和.cpp文件的编译器
link.exe 是连接器
nmake.exe 是微软的make程序
rc.exe 是微软的资源编辑器
3. 我是否该学习.NET和Java,而不是老的掉牙的C
如果.NET和Java能够优雅的去写操作系统、去编写那些底层的、美妙的、严谨的世界级的程序,那么C的确是老了。
但现在的情况呢?学习.NET和Java的整天折腾写代码重构,作为开发人员,这里copy,那里google,一个所谓的软件就出来了。如果你严格要求一下自己:比如我要好好学习掌握一门技术,用它能够开发出百万级用户的程序,而且要考虑软件的健壮性和移植性。
觉得,Java、.NET并不属于底层开发,许多美好的东西:内存分配、进程、线程调度等等,这些语言是不会涉及到的。当然这也要看情况,有些项目就需要Java,比如一些结合JSP的n层结构的程序。
4. 大学里面学习的东西一点用处都没用
大学里面不大可能教太实践性的知识,而且大学的老师也没有那个水平(很少见到老师写过几万、几十万行的漂亮的商业代码)。
大学里面我学到是数学与应用数学专业,计算机都是自学的。从大二开始,每天的日子就像:“我就是程序,程序就是我”。毕业工作都的两年也是。但走到现在我也必须承认,我的理论知识太欠缺了,如同武林高手一样,不好好修炼一下,很难修的很高的境界(而且稍不留神就容易步欧阳峰的后尘,哈哈)。
5. 面向对象的C++、Java似乎很火
是啊,去年回家,用VC给老爸演示了一下“Hello World”程序如何编写的,看完后,老爸都说会编程了。
我现在很少用C++,Java我一窍不通,估计这辈子也没有那个需求让我去学习它。我喜欢C:优雅、简洁、强大。我喜欢那种写代码来控制细节,比如内存分配和卸载,面向对象的优点正是我不需要的。封装、继承、多态 vs 优雅、简洁、强大。即使我用C++写了一个非常棒的工具,如果里面用到的类不是我写的、或者我非常熟悉,我也没有一点成就感。
种小麦,用种小麦的工具;种土豆,用种土豆的工具。我这里说的,是站在系统编程的角度上考虑。说的俗一点,对于系统编程,掌握了C和汇编,这辈子够用了。