1
bigweb OP 呀。文章竟然不能修改,发现一些别字。。。抱歉!
|
2
bigweb OP 刚看到EDIT的按钮。。。。不明显阿,汗
|
3
Blask 2012-08-25 23:44:47 +08:00 1
我建议: 先学下C, 然后学下操作系统, 再学UNIX环境下C高级编程.
书籍也有很多,C的话就不说了,操作系统的话,主要是了解下底层的东西, 我们是学校的教材-[操作系统设计原理与精髓], 然后看下[UNIX环境下C高级编程], 或者灵活搭配, 我只是提供个建议. |
4
harmy 2012-08-26 00:10:21 +08:00
|
6
Js 2012-08-26 12:35:03 +08:00
APUE.....
|
7
chisj 2012-08-26 13:32:58 +08:00
《unix环境高级编程》强烈推荐。
|
8
skywinger 2012-08-26 15:12:48 +08:00
另外再配合看《UNIX网络编程》
|
9
Cofyc 2012-08-26 16:38:17 +08:00 7
可先学c 语言本身开始,经典的 c 书籍很多。推荐一本 c prime plus 5th edition
ubuntu/macosx 下都有命令行工具,使用 gcc/clang 编译器,很方便。可以从简单的 c 代码写起。 hello world, 简单的算法,比如排序,链表等。可以找一本算法书,尝试实现里面简单的算法。 这些之后,c 的基础知识就能掌握,c 的数据类型,控制语句,宏,以及指针的运用等。 c 的标准库,这时也会了解一部分,但只需要过一遍即可。要注意 c 的标准,c89/c99 等,编译器现在默认都是 c89, 建议你开始学 c99 即可。编译器加 -std=c99 参数。相对来说 c99 代码写起来稍微简单一些(如果是从动态语言转过去的话),比如可以在 for 里面可以申明变量,有 bool 类型支持等。等需要阅读参与开源项目时,再去了解 c89 的细节。因为 c89 更跨平台,许多项目是 纯 c89 实现的(比如 lua)。 这之后,就可以学习 unix 环境编程(参考 @chisj 推荐的《unix 环境高级编程》),了解 unix/linux 下的进程模型,这是 c 进阶的关键,这是就会了解到程序是被内核启动的,内存是如何分布以及被申请和释放,以及堆栈模型等等。 最后,可能你要开始某个领域的编程了,比如网络编程。这时候也需要去了解硬件模型了,同时不同领域有许多不同的系统库,以及该领域的第三方库等等。epoll 是 linux 2.5 之后的网络事件库,但 macosx 下是另外一种 kqueue/kevent。 UNIX c 开发中除了理论知识,还有许多技巧、经验以及对其中文化的领悟(推荐 《UNIX 编程艺术》),需要经年积累与实践,才会有些成就做出来。 C 开发,是我最纯粹、最愉悦的编程体验。希望你也感受到。 以上是我的 C 开发经验之谈。 |
10
thinkinnight 2012-08-26 16:58:56 +08:00 1
语言不是问题,主要是你用来解决什么领域问题?
C语言可以使用的场合非常广,所以你要确定你学习来做什么用。 其实你已经划分了在Linux环境下,这很好,比什么都不知道,只知道学习C语言要好多了。 然后是在Linux下面,如何使用,你既然已经能够应用大部分的开源应用,那就在你能够掌握的开源应用中去寻找你的答案。 这些开源应用的推出是为了解决什么问题,在C语言中是如何实现的,又是如何跟系统结合的,在运行中有哪些好的地方,又有哪些限制,而这些限制解决了没有,如果解决了,是如何解决的。 |
11
lowstz 2012-08-26 17:02:04 +08:00 1
http://book.douban.com/subject/6025290/
这本开始,然后K&R |
12
lukydd 2012-08-26 19:06:48 +08:00
C入门之后强烈推荐《深入理解计算机系统》,超经典入门教材,讲得非常深入浅出,可以帮助你建立起对整个系统的感觉。
|
13
shanks 2012-08-26 20:27:05 +08:00
神书APUE与CSAPP
必看 |
14
lusin 2012-08-26 20:42:42 +08:00
能搞2千万PV的东西啊,神级的
靠这个够用了:) |