笨方法学习C中文

来源:互联网 发布:淘宝网店铺怎么装修 编辑:程序博客网 时间:2024/05/29 15:34

笨方法学习C语言

这是笨方法学习C语言项目正在进行中的免费版,最近刚转换为一种新的格式,所以可能会有缺失或格式错误。 欢迎提出问题,发送电子邮件到help@learncodethehardway.org即可。

序言

这是一份正在编写中的《learn c the hard way》这本书的粗糙复制,语法可能会很糟糕,也可能会有部分的缺失,但是你可以了解我是如何编写这本书的。

你可以任何时候通过发送电子邮件到 "help@learncodethehardway.org" 来寻求帮助,我通常会在一到两天内给出回答。

这个列表是一个用来讨论本书和问问题的列表,并不是一个声明列表。

最后,如果你还不会使用Python的话,可以阅读我所编写的《Learn Python The Hard Way》,这本书不是面向初学者的,而是面向至少已学过一门语言的人。

简介:关于C的梦想

无论是什么我现在接受的觉得最真实,要保证我已从感官或通过感官得到。但有时我>发现感官是不真实的,这使我不会完全去相信曾经欺骗过我一次的人。 —Rene Descartes, Meditations On First Philosophy

If there ever were a quote that described programming with C, it would be this. To many programmers, this makes C scary and evil. It is the Devil, Satan, the trickster Loki come to destroy your productivity with his seductive talk of pointers and direct access to the machine. Then, once this computational Lucifer has you hooked, he destroys your world with the evil "segfault" and laughs as he reveals the trickery in your bargain with him.

但是C不应该为其背负罪名,对你来说,你的电脑和操作系统控制了它,所以它们才是真正的欺骗者。它们向你隐藏了它们在内部做了什么,这让你不知道它们真正是如何运行的。c语言唯一的失败是,它让你知道内部到底做了什么,并告诉你关于硬件的事实。C gives you the red pill. C pulls the curtain back to show you the wizard. C is truth.

既然C如此的危险,那我们为什么要用它呢? 因为C让你可以控制虚假的抽象和从愚昧中解放出来。

你将会学习什么?

这本书的目的是让你能更好的掌控C语言并用C编写你自己的软件,或是修改他人的代码。最后我们会从一本更著名的书《K&R C and code》中抽取一些代码来回顾你所学的知识。为了能够看懂这些代码你需要做下面的这些事:

  • C的基本语法和语义
  • 了解编译器,makefiles文件,链接器
  • 查找bug并修正
  • 防御性编程练习
  • 深入理解C代码
  • 编写基本的Unix系统软件

到最后一章,你将会有足够的知识去解决基本的系统软件,库以及其它的小工程。

如何阅读本书?

这本书是针对至少已经学习过一门编程语言的读者,如果你还没有学习过任何一门编程语言,那么我建议你先去阅读《Learn Python The Hard Way》(#).这本书是完全针对初学者的,而且也非常适合作为编程的第一本书。当你已经满足以上条件后,你就可以开始阅读本书了。

对于已经学习过编程的人来时候,一开始可能会觉得本书会有些奇怪。你所阅读的其它书籍一般会在段落中插入有很多的代码,相反的,我让你在阅读的过程中进行编码,然后我会为你解释你做了什么。这样会让你学得更好,因为这个过程中会比较容易解释你在学习的过程中所经历的。

正是由于本书的这种结构,你在阅读的过程中必须要遵循以下的规则:

  • 自己编写所有的代码,不要去复制粘贴。
  • 编写代码一定要完整准确,注释也一样。
  • 运行自己编写的代码并保证得到和我一样的输出结果。
  • 如果出现bug,修复它。
  • 做本书所给的额外的练习,但如果有无法完成的可以跳过。
  • 在寻求帮助之前尽量自己去解决问题

如果你按照这些规则来阅读这本书了还是不会用C编程,也不要伤心,这说明你至少尝试过了。这本书并不适合每一个人,但这个尝试的过程会让你成为一个更好的程序员。

C语言的核心的竞争力

我假设你来自其它一门较弱的语言的阵营,一门有用的语言像Ruby和Python会让你远离愚蠢的思想和丑陋的编程技法。也许你使用Lisp语言你会感觉电脑就像由一些惊奇的函数填充起来的,如同孩子的填充墙一样。也许你学过Prolog语言而且你觉得整个世界就像一个数据库一样,你在其中寻找线索。更糟糕的是,我敢打赌,你一直在使用集成开发环境(IDE),所以你的大脑里充满了内存漏洞,而且你你也无法写入一个函数的名字如果不去敲打CTRL-SPACE 这三个你每天都再用的字符的话。

不管你的知识背景是怎样的,你可能都会在下面四个方面做得不够好:

  • 边阅读边编写

    如果你使用IDE的话,这是相当正确地做法,但是我发现许多的程序员通常在阅读的过程中会省略过多,不能很好的阅读并理解内容。他们会跳过他们认为已经理解的代码,但事实上他们并没有详细的了解。有的语言会提供有许多的工具让程序员尽量少的去编写代码,这会让他们在面对像C语言这样的代码时崩溃。面对这种情况最简单的方法就是告诉自己每个人都会遇到这样的问题,如果你强迫自己静下心来不断的阅读和编写的话,你就会克服这些问题。一切的开端都是痛苦和苦恼的,但是不断的去突破的话,你就会渐渐的发现其实很容易去做的。

  • 注重细节

    每个人在点都做得比较糟糕,这也是糟糕的软件的最大问题。其它的语言可能会让你不用去过多的关注细节,但是C会要求你完全的去注意,因为C会深入到机器的内部。对于C来说,没有“相似”和“近似”的说法,所以你需要充分的去注意。重复的去检查你的工作,假设你所做的都是错误的直到你能证明它们都是正确的为止。

  • 发现不同

    从其它语言阵营的人(不是C)会有一个关键的问题就是它们的大脑会不自觉的去寻找语言间的差异。当你将你写的代码和我练习中的代码进行比较时,你的眼睛会跳过你觉得没有意义或是你不熟悉的部分。我之前已经告诉你策略就是强迫你去发现你的错误,时刻注意你的代码是否和本书中的代码一致。

  • 计划和调试

    我喜欢其它的一些简单的语言是因为我可以将其挂起来。我可以将我的想法敲在它们的翻译器中并能够立马得到结果。这对于探索我们的想法很有用,但是你是否发现如果你一致去做“探索并得到结果”的过程最终是没有意义的。C比较困难是因为它要求你想要创建什么之前你首先需要制定计划。当然,你也可以先编写一部分,但是与其它语言相比,C语言会更早的让你陷入困境中。我会叫你在开始编码之前先将程序的重要部分计划出来,而且这也会让你更有可能成为一个更好的程序员。即使是一些小小的计划也会让事情变得更简单。

学习C语言会让你成为一个更好的程序员,因为这会迫使你更早的和更频繁的去处理以上的那些问题。你不能让你愚昧和你编写的程序丑陋。C语言的优势是,它是一门简单的语言,这使你可以靠你自己来学习,同时也是一门能让你更好的了解电脑和对核心技能掌握得更好。

C语言会比其它的一些语言难是因为它对你没有任何的隐藏,而其它的语言向尽力的隐藏细节或是无法做到完全的透明。

License

这本书是免费阅读的,但是直到我完成之前你不能够发行或是修改它。我需要保证本书的未完成版本出现流出并迷惑使用它的学生的情况。


来源:点击打开链接http://xiaofuzi.github.io/others/c/learn-c-the-hard-way.html
0 0
原创粉丝点击