Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1119589
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: C/C++

2009-08-06 10:11:10

  我是学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) |
给主人留下些什么吧!~~