文档章节

业余爱好者的C程序设计学习之路

 四彩
发布于 2016/02/04 13:15
字数 1616
阅读 148
收藏 3

    我学习和工作的方向都是化工,和 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





© 著作权归作者所有

共有 人打赏支持
粉丝 25
博文 49
码字总数 77226
作品 0
茂名
私信 提问
加载中

评论(2)

Lion。
Lion。
呵呵1
懒懒好闲
懒懒好闲
太逗了
初识shell【运算符与判断】

小白的shell之路 系统版本 Red Hat Enterprise Linux Server release 7.0 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 ...

Morning晨丿
04/27
0
0
由“吸血鬼数字”引发的关于算法的思考

今天看Thing in java的第四章有个小练习是找出4位数的所有吸血鬼数字( 一个4位数字,可以拆分2个2位数数字的乘积,顺序不限。)自己写了个递归的实现,虽然是正确的,但感觉不满意,效率太低...

绝影jy
2014/05/07
0
2
【实验】给指定的并且已登陆系统的用户发信息

题目要求: 编写一个脚本,显示当天日期,查找给定的某用户是否在系统中工作。如果在系统中,就发一个问候给他。 题目代码: #!/bin/bashecho if [ $# -eq 0 ];thenecho "no input!!"exit 1f...

林洁伟
2012/12/01
0
0
浅谈python基础与初学者

     Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。   Python是纯粹的自由软件,源代码和解释器CPython遵...

Python爱好者
2017/01/12
0
0
Java学习之路:不走弯路,就是捷径

1.如何学习程序设计? Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用...

捂风挽笑
2017/06/02
274
1

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的FsStateBackend

序 本文主要研究一下flink的FsStateBackend StateBackend flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBackend.java @PublicEvolvingpublic interface Sta......

go4it
10分钟前
0
0
webpack配置proxyTable时pathRewrite无效的解决方法

webpack配置接口地址代理 在项目开发中,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们在本地启动服务器后,比如本地开发服务下是 http://localhost:8080 ...

前端小攻略
11分钟前
0
0
安装jenkins

1.下载 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.155/jenkins.war 2.后续操作和 dubbo 安装类似: (1)复制一份空白的tomcat,重命名为:jenkins-tomcat (2)war包放入t...

狼王黄师傅
19分钟前
1
0
zookeeper配置与使用

一.登录官网下载 不要带后缀的,那是公侧版本,下稳定版,比如3.4.9 二.安装与使用 解压后bin里是启动程序 配置文件:在conf下 复制zoo_sample.cfg改名为为zoo.cfg,打开zoo修改文件...

小兵胖胖
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部