我是学C出身的,因此,在学习C++这门语言的时候或多或少会带进去自己学C的套路。
在学习C的时候,我所采用的是如下的学习套路:
1. 先学基本的C语法;
2. 学习C的套路,这里我自己把套路分为两种:算法和应用;
算法通过《编程珠玑》等书籍就可以学习;
应用通过《unix网络编程》等书籍可以学习,主要包括IPC相关和socket相关。
3. 在学习了C套路的基础之上,分析前辈代码。可以很轻松的把代码分割成小块,这时候重要的不是单个语句,而是整个程序的结构。
在学习C++的时候,感觉就不一样了。
1. 学习基本语法,这类的书非常多;
2. 学习基本套路,这个时候就疑惑了,STL、boost这些类库仅仅简化了我们的算法,但是没有在应用方面提供支持(如socket,共享内存、消息队列、多进程等等),至少我没有找到相关的资料。那用C++如何去完成应用需求呢。
这里我猜想,C++是跨平台的,但是应用却不行,可能因为操作系统底层支持的API不相同,所以,为C++应用提供统一接口很困难,于是C++的创造者们就干脆不予支持。那如果需要完成相关的应用怎么办呢,那就让C++去调用C代码。然后,通过相应的C代码完成这部分的工作。win平台的调WIN接口,unix的调unix接口。
网上也看到一些跨平台应用的尝试,比如ACE,好像可以完成SOCKET的跨平台,我估计这也就是把操作系统调用放到类库里面去了而已。
以上仅仅个人猜想,没有文档可以考证。如果哪位高手看到本文,记得给在下一点提示,非常感谢。。。
阅读(572) | 评论(0) | 转发(0) |