业余爱好者的C程序设计学习之路
博客专区 > 四彩 的博客 > 博客详情
业余爱好者的C程序设计学习之路
四彩 发表于2年前
业余爱好者的C程序设计学习之路
  • 发表于 2年前
  • 阅读 106
  • 收藏 1
  • 点赞 1
  • 评论 2

腾讯云 新注册用户 域名抢购1元起>>>   

    我学习和工作的方向都是化工,和 IT 专业一点边都不搭,属于程序设计爱好者一类。坚持了很多年了,谈谈我的认识。

一、为什么是C

汇编太难,直接下手会吓死宝宝的。

basic 不能考虑,因为“对于一个之前接触过BASIC语言的学生,你基本上不可能教会他如何正确的编程:因为作为一个程序员苗子,他们已经脑残,无可救药。”——戴克斯特拉(图灵奖获得者)语。

面向对象的语言像 java 等,太高级,掩藏的太深了,屏蔽了底层和细节,不适合理解计算机的实际运行机制。

面向过程的语言中,pascal 很严谨,可是中国不流行。我们是爱好者,不是专业的,不用去了解了。

C既强大又好用流行,就从C下手。流行了几十年的东西啊,资料丰富。


二、怎么开始

1、从“文字编辑器 + gcc 命令”开始,不要用集成开发环境

TC、BC 就不用说了。

VC 也不要用,cb 都不要用了。自动化的编译会严重影响你对编译参数、细节的理解。

建议 ConEmu、Notepad++ 和 MinGW 搭配。


三、从哪里开始

开始只学C语言语法基础,不要涉及指针等他东西,包括:

基本数据类型

数组

运算符

基本表达式

条件语句

循环语句

简单函数

建议《C程序设计语言》第2版的第1到第4章就够了,程度到能理解编写结构化程序是怎么回事就行。


四、学些汇编

要理解计算机的运行,必须学汇编!

1、从建议王爽的《汇编语言》第2版开始。重点是指令、内存分段、寻址。中断部分理解就行,那些 bios 中断号不用记,dos 中断看都不用看了。这些其实都还简单。

2、转到 32 位下的 Nasm。好像没有 Nasm 的专门教材,上网找个伍星翻译的《PC汇编语言》看看吧。

3、接着用李忠的《x86 汇编语言 从实模式到保护模式》,这本书的重点是代码。对着书从头到尾自己敲一遍,或者对着代码看书。要知道怎么控制硬件,搞清楚保护模式。这个就很难了,知识点又多又难理解。业余爱好者的整个学习过程中,这是最艰难的时候。放慢脚步,一点一滴来吧。


五、回身深入C语言

这次就要把C语言学通了,指针啊、内存管理啊都要搞得清清楚楚、明明白白的。有了汇编的基础,理解起C语言的最难点——指针,其实没难度了,有悟性的人能秒懂也不奇怪。

1、还是《C程序设计语言》第2版,这次要沉下心看完,书很薄的。

2、《C和指针》,这本书的作者其实是标题党,这也是本入门书,书里不光是指针,内容很全面。

看完这两本书——要看懂,例子都能自己敲出来,C语言已经入门了!

3、入门书还有本《C Primer plus》第五版,据说也不错,不过我没看过。

4、下面的书是进阶用的,可以一边继续学新的一边看:

《C专家编程》、《C陷阱与缺陷》、《C标准库》。

前两本都不厚,写的也有意思。

第三本比较枯燥,不过学习C语言是一定要熟悉标准库的,标准库不是C语言的内容,但是是不可分割的内容!不看《C标准库》也要从其他途径熟悉C标准库!起码要知道有哪些常用库函数,怎么用。其实标准库的实现代码就是最好的C语言范例!


六、数据结构与算法必学

实际上,因为有指针和结构,用C语言学数据结构比其他任何语言都爽快!

1、程杰的《大话数据结构》,书很厚,但是讲得很轻松幽默。

2、清华大学严蔚敏的《数据结构(C语言版)》,配套还有本习题。

从哪本开始都可以,两本同时看疗效更好。

3、算法内容很多,学些简单的就可以了。《数据结构与算法分析——C语言描述》第2版就不错,继续深入就是《算法导论》了。


七、复习下

编程重在实践,代码是敲出来的。实战中,兼顾汇编与C语言的,最好就是操作系统,从学习写操作系统复习下汇编和C语言吧。

1、一个日本人写的《30天自制操作系统》。写书的人大包大揽,提供全部自己的工具,跟着写起来简单。

2、于渊的《Orange‘s 一个操作系统的实现》。于渊是学院派的,书很严谨,讲的又细又完整,也没有用专门的工具,所以学起来难度颇大。

如果仅为了复习,看前面几章介绍语言、硬件的就行,后面操作系统专门的东西不用看了。


C语言作为语言本身,已经学完了。


八、选择你感兴趣的平台吧

 继续当屌丝,留在windows的话,Win API 要熟练了:《Windows 程序设计 》和《Windows核心编程》。

 要融入世界,转 linux 吧:《Unix高级环境编程》和《Unix网络编程》。

 安卓下还有个 C4droid、cppdroid、cctools 三种集成编译环境。


九、还想深入的话。。。。

1、编译原理、操作系统设计、TCP/IP。。。。。。东西很多,难度加大了。到了这一步,可以自己挑教材了。实在太难的(像编译原理,我等业余爱好者一般都被卡在这里一辈子!),学不来就跳过吧。。。。。。我们是爱好者,不靠这个吃饭!耶!

2、根据你的需要和兴趣,可以学习使用一些现成的库

什么都从零开始建设,固然勇气可嘉,不过可以用别人写好的库更有优越性。

多媒体库可以选 SDL(最新SDL2)——编写游戏用,强力推荐!跨平台、开源、小巧!

控件库可以选 GTK(最新GTK+3)——编写通用软件界面用。

数据库可以选 MySQL





共有 人打赏支持
粉丝 26
博文 49
码字总数 77226
评论 (2)
懒懒好闲
太逗了
Lion。
呵呵1
×
四彩
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: