- 我认为,学好编程有四个方面:语言、算法和数据结构、系统调用和设计。
- 语言。我可以告诉你C语言有两大主题你要好好学,一个是内存管理,一个是指针!这个世界上90%以上的C/C++出的严重性错误全是和这两个有关。不要看谭浩强的那本书,那本是本烂书。推荐这本书给你《C程序设计语言(第2版·新版)》
- 算法和数据结构。我认为,用C语言实现算法和数据结构莫过于最爽的事情。推荐你看这本书——算法:C语言实现(第1~4部分)基础知识、数据结构、排序及搜索(原书第3版),还有那本经典的《算法导论》
- 系统编程。Windows下推荐两本书——《Windows 程序设计 》和《Windows核心编程》,Unix/Linux下推荐两本书——《Unix高级环境编程》和《Unix网络编程卷1,套接字》《Unix网络编程卷2,进程间通信》尤其是《Unix网络编程》这本书,一通百通,无论Windows还是Unix/Linux,都是一样的。
- 系统设计。关于设计方面,我全力推荐《Unix编程艺术》,看完以后,你就明白什么是真正的编程文化了。然后,当你看到Windows的Fans的某些言论时,你就知道什么叫一笑了之了。
如果你能在2-3年内精读完这些书,并全部融会贯通,那么你就明白什么是一览众山小的感觉了!我足足花了5年时间才算是真正全部读完这些书的。最后,祝你好运!努力!
——-更新:2011/03/29 20:00——-
我想,这篇文章主要想告诉大家这么几件事:
- 编程编到一定时候,你就需要了解底层系统的机制,否则,知其然不知所以然。
- 我没有否定非C的程序员的逻辑,真正的逻辑是——如果你想要了解底层机制,请学习C语言和操作系统。
- 40多年的Unix/C影响深远。包括影响了Windows。如果你想一通百通,一定要了解Unix。那是计算机文化真正的根。
- 不要肤浅地去思考问题。比如,不要以为一个DBA就不会考虑数据库引擎的内存页面的问题。也不要以为Web程序员就不需要了解后台的服务器和脚本的运行性能以及TCP/IP的问题。
高手往往都是有很强的系统的基础知识的,表面的东西永远是肤浅的。
作者: 陈浩
C Runtime(简称CRT)是windows平台下的一个概念。一般来说,CRT函数就是标准的C语言函数。例如,printf、scanf、strlen、fopen等函数就属于CRT函数。在windows下所有的CRT函数最终都是转化成为win32 API来执行的。
Win32平台上是CRT调用API,API调用KernelAPI
比如fread调用WriteFile,WriteFile调用NtReadFile。不过KernelAPI不需要程序员了解。但对驱动开发人员,就必须了解了
::FindWindow和直接写 FindWindow有何不同?
答:::在C++中表示是作用域。比如
class A
{
public:
static void Test() { }
};
调用时代码为 A::Test(); 表示Test为A作用域中。
如果::前面为空,那么表示为全局作用域。也就是所说的全局函数。全局函数包括Windows API,C Runtime Library等等以及其他用户自己书写的全局函数。
C运行时库函数是指C语言本生支持的一些基本函数,通常是汇编直接实现的。
API函数是操作系统提供给用户方便设计应用程序的函数,实现一些特定的功能,API函数也是C语言的函数实现的。
他们之间区别是:
API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。
C运行库与C语言同在(能用C语言的地方就能用其CRT),API与操作系统同在(换了操作系统就不一定可用了,但一定会提供别的API,只是不一定叫API这个代号罢了)。