编程c语言java教师,自学c语言编程
关注异步书,置顶微信官方账号。
每天和你分享IT书籍、技术、干货、职场的知识。
参与文末话题讨论,每天赠送异步书。
3354异步边肖
为什么这不是一本完整的C语言的书?因为《“笨办法”学C语言》不仅仅是一本书,它还附带了5个多小时的激情视频。这是一个完整的C语言视频课程!
刚拿到这本书的样书,运营经理就兴奋地发来消息:“手机扫码看视频太方便了,速度也很快,字幕也很棒!”这本书的主编杨海玲先生很淡定:“这是我尝试扫码看视频的第一本书。虽然有些问题拖慢了进程,但感觉还是值得的。”真的是太牛逼了,听到这里边肖都忍不住体验了,海灵老师还剧透:“笨办法学Python3也会是一样的模式。目前正在进行视频审核和二维码生成,最终将发布新版本。”对于笨办法学习系列,Python 3的新版本即将发布。
055-79000作者Zed A.Shaw是一名狂热的吉他手、程序员和编程书籍作者。他的书教会了世界上数百万人如何编写软件。他的书《“笨办法”学C语言》和《笨办法学Python》(这两本书都已经出了第3版)在全世界拥有数百万读者。他写的软件,各种规模的企业都在用。他的文章经常被很多极客阅读和引用。他是一个活跃而有趣的作家。他会让你笑着思考。
大多数技术书籍都教你一些具体的东西:某种语言、某种技术、某种框架、某种工具.看完书,做一个大致的模拟练习,然后就可以在简历里写这样的东西了。把简历投给心仪的公司,你很幸运得到了一份新工作。你在新公司解决了一些技术问题,但也积累了一些技术债。你解决的问题给你带来了更多的经验,为你的前进铺平了道路,你也不用担心积累的债务,因为几年之内,你要么成功升职,没人敢找你还债,要么成功跳槽,没人能找你还债。
这是每一个有志程序员的上升之路。用一个时髦的词汇来说,可以算是个人成长的“成长黑客”。当然,当这本书出版时,这个词可能会像“给力”一样被扫进互联网的垃圾堆。
这本书不是这样的。作者居然找了个“过时的编程语言”来教你一些简历里写不出来的东西。作者疯了吗?
其实这本书和作者的其他书一样,表面上是在教你编程语言,实际上是在教你编程的思维方式和最佳实践。这些东西在学校课堂上讲的不多,市面上的书就更少了。工作久了,你可能会遇到一种人,他的技术水平看起来挺好的,很多东西都能解释清楚,但是写出来的代码质量并不理想。这样的人可能恰恰缺少这样的教训。很多人通过在实际工作中磕磕绊绊来弥补这个教训,而现在你可以通过这本书来弥补。
这本书的价值在于,它能让初级程序员写出可靠可用的代码。只有打好基础,前方的路才能更顺畅。
这不是C语言。不要觉得被骗了。这本书其实不是教你C编程的书。你将学习编写C语言程序,但这本书给你的最重要的一课是严谨的防御性编程。有太多的程序员天真地以为自己写的东西是可以的,但是总有一天,这些东西会发生灾难性的失败。如果你主要是学习和使用现代编程语言来解决问题,你会特别遇到这种情况。在读完这本书并做了里面的练习后,你将学会如何编写自卫程序,这些程序可以保护自己免受恶意行为和自身缺陷的攻击。
我使用C语言有一个非常特殊的原因:C是一种“糟糕”的语言。C语言有很多设计选择,在70年代还挺有意义的,到了今天就不合理了。这些东西是几乎所有C程序安全缺陷的罪魁祸首,从到处都可以无限制使用的指针到NUL末尾的严重不可用的字符串。虽然C语言应用广泛,但我相信它是最难写安全代码的语言。我猜即使是汇编语言也比C语言更容易编写安全代码。说实话,我觉得不应该有人写新的C代码。
既然这样,我为什么要教你C语言?因为我想让你成为更好更强的程序员。如果你想变得更好,C语言是一个极好的选择,原因有二。首先,C语言缺乏任何现代的安全功能,这意味着你必须更加警惕,及时了解真实发生的事情。如果你能写出安全而健壮的C代码,你就能写出任何编程语言的安全而健壮的代码。您在这里学到的技术可以应用到您将来使用的任何编程语言中。其次,学习C语言可以让你直接接触到堆积如山的旧代码,还可以教会你很多衍生语言的基本语法。一旦你学会了C语言,你学习C、Java、Objective-C和JavaScript就会变得更容易,甚至一些其他语言也会变得更容易学。
我告诉你这些不是为了吓跑你。作者打算把这本书做得非常有趣、简单、“离经叛道”。它会给你一些其他语言可能很少做的项目,通过这种方式你可以从中获得乐趣。你可以学习C语言编程,用我的屡试不爽的练习模式逐步提高自己的能力,会让你觉得这本书很好用。它还会教你如何破解程序,如何让你的代码更安全,让你知道为什么这些事情很重要。这种方式可以说是相当“离经叛道”了。你将学习如何引起堆栈溢出和非法内存访问,了解很多C程序中常见的缺陷,最终知道你面对的是什么。
和我所有的书一样,这本书的通关是有挑战性的,但是如果你做到了,你会成为一个更好更自信的程序员。
未定义的行为当你读完这本书,你将能够调试、阅读和修复几乎所有你遇到的C程序,并在必要时编写新的稳定的C代码。但是,我不会教你官方的C语言。你会学习C语言以及如何正确使用,但是官方的C语言不是很安全。大多数C程序员写的代码都不稳定,原因就在于一种叫做未定义行为(UB)的东西。未定义行为是美国国家标准组织(ANSI)的C语言标准的一部分,它列出了编译器可以忽略你写的代码的所有方式。这个标准里真的有一段内容,说你这样写代码,编译器会停止跟你玩,它的行为会变得不可预测。当C程序读取一个字符串的末尾时,会发生未定义的行为,这是C语言中极其常见的错误。先说背景。C语言将字符串定义为以NUL字节结尾的内存块(为了简化定义,可以称之为0字节)。因为许多字符串来自程序外部,所以C程序经常接收不包含NUL字节的字符串。当这种情况发生时,C程序将越过字符串的末尾并继续读取,读取到计算机的内存中,这将导致程序崩溃。C之后的每一种语言都试图避免这一点,但C是个例外。C本身几乎不能防止未定义的行为,似乎每个C程序员都认为这意味着他们不必处理它。他们写的代码充满了NUL字节越界的潜在可能性。当你指出这些地方时,他们会说:“这只是未定义的行为。没有必要采取预防措施。”这种对C程序中大量未定义行为的依赖,是大多数C代码极不安全的原因。
当我写代码时,我会尽量避免未定义的行为。避免这种情况的方法是让我的代码要么不触发未定义的行为,要么防止未定义的行为。后来我发现这是一个不可能完成的任务,因为有太多未定义的行为,到处都是各种相互关联的陷阱,形成了一个难解的死结。在你学习这本书的过程中,我会指出你可以触发未定义行为的各种方式,告诉你如何在可能的情况下避免它们,以及如何在别人的代码中触发可能的未定义行为。但是,你要记住,完全避免未定义的行为几乎是不可能的,这几乎是随机的,你只能尽力而为。
C中既美又丑的未定义行为的存在,是你学习C语言的另一个原因。如果你想成为一个更好的程序员,对你会很有帮助。如果你能按照我教你的方法写出好的稳定的C代码,那么你就能应付任何语言。c也有积极的方面。从很多方面来说,它都是一种非常美丽的语言。虽然它很强大,但是它的语法非常简单。差不多45年了,很多语言都在抄袭C语言的语法,这不是没有道理的。c语言会给你提供很多,但是用的技术很少。学了C语言后,你会发现这种语言优雅而优美,但同时又有些丑陋。c语言非常古老。它就像一座纪念碑。远看很宏伟,近看会有很多裂痕和瑕疵。
我知道我用的C是相当稳定的,因为我用了20年的时间写出了整洁稳定的C代码,支持大型程序的运行,基本没有问题。我的C代码支持Twitter和Airbnb等公司的业务,这些公司可能处理了数万亿笔交易。它们很少出错或受到安全攻击。多年来,我的代码一直支持Ruby on Rails的Web世界,一直完美运行,甚至防止了安全攻击,而其他Web服务器程序却经常被各种简单的攻击捕获。
我的C代码写作风格很稳定,但更重要的是我写C代码时的意识状态,这应该是每个程序员都应该具备的。当我开始使用C语言或其他任何编程语言时,我总是尽可能地防止错误,我总是认为没有什么事情会一帆风顺。其他程序员,即使是那些据说很优秀的程序员,在写代码的时候也会假设一切顺利,然后依靠未定义的行为或者操作系统来帮助自己,这两者作为解决方案都是失败的。只要记住,如果有人告诉你,我在这本书里教你的不是“真正的C语言”,那么你可以去看看他们的编程历史。如果他们的记录没有我的好,那么也许你可以用我教你的方法向他们展示为什么他们的代码安全性不是很好。
那么我的代码完美吗?当然不是。这是C代码,不可能写出完美的C代码,但是任何语言都不可能写出完美的代码。编程一半的乐趣和麻烦都与此有关。我可以白批评别人的代码,别人也可以白贬低我的代码。所有的代码都有缺陷,但是我假设我自己的代码总是有缺陷,然后我尽量避免缺陷,那么事情就不一样了。如果你看完了这本书,我给你的礼物就是教你防御性编程的思维模式。这种意识在20年里给我带来了很多好处,让我写出了高质量、健壮的软件。
你会学到什么这本书的目的是让你掌握足够的C语言技能,这样你就可以自己编写软件或者修改别人的C代码。学完这本书,你应该读一下布莱恩柯尼根和丹尼斯里奇的《笨办法学Ruby》。英文书名是《C编程语言(C Programming Language ),第二版》,是C语言的发明者写的一本书,也叫K R C,我要教你的是下面这本书:
基础C语法和习惯性写作;编译、Makefile和链接器;找出bug,防患于未然;防御性编程实践;c代码销毁;编写基本的Unix系统软件。等你做完最后一个练习,你就有足够的弹药去对付基本的系统软件、库等小项目了。
如何阅读这本书这本书是针对至少学过一门编程语言的人的。如果你还没有学习一门编程语言,我建议你通过我的《C语言编程设计(第2版)》(艰难地学习Python)开始学习,这是一本为初学者编写的书,也是一本非常有效的编程入门书。看完《“笨办法”学Python》就可以开始看这本书了。
对于已经学过编程的人来说,这本书一开始可能看起来很陌生。别的书会有大段大段的讲解,然后时不时让你写一点代码。这本书不一样。每个练习都有视频讲解。你一上手就要输入代码,然后我会解释你输入了什么。这种形式更有效,因为抽象的形式你会很难理解你不熟悉的东西,如果你做过一次,我解释起来会更容易。
由于这本书的独特结构,你在学习时必须遵循几个规则。
除非练习中另有指示,否则请先观看视频。
输入所有代码。禁止复制粘贴!
逐字逐句输入代码,连注释都要一模一样。
运行代码以确保输出是相同的。
如果有缺陷,修复它们。
做额外的练习,但是如果遇到自己想不通的东西,跳过去也没关系。
遇到问题,先自己想办法解决,再寻求帮助。
如果你按照这些规则,按照书上的内容,最后还没有学会写C代码,那么至少你尝试过。c并不适合所有人,但是尝试的过程会让你成为更好的程序员。
5小时视频这本书每个练习都配有一个视频。在许多情况下,一个练习会包含多个视频。这些视频非常重要,可以让你充分理解这本书的教学方法。这是因为写C代码很多问题都是交互问题,交互的对象是故障、调试、命令等等。在Python和Ruby这样的编程语言中,代码想运行就运行。c需要更多的交互来运行代码并修复问题。有些主题也更容易用视频来解释,比如指针和内存管理。在视频中,我可以演示机器的实际工作原理。
我建议你在做练习前先看录像,除非另有指示。在一些练习中,我用一个视频演示问题,另一个视频演示解决方案。其他大部分练习,我都是用视频做讲座,然后你做完练习,理解题目。
关键技能我猜你是从一个菜鸟语言过来的(我只是调侃,你也看到了)。要么你来自Python或Ruby等“相当可用”的语言,让那些思维不清晰、半生不熟、修修补补的人写出可以运行的程序;要么你用过Lisp之类的编程语言,假装电脑是纯函数的仙境,四周是五颜六色的宝贝墙;要么你学过Prolog,所以你认为整个世界应该只是一个供你上下搜索的数据库。更糟糕的还在后面。我敢打赌你用过集成开发环境(IDE),所以脑子里都是内存漏洞。如果不是每三个字符按一次Ctrl空格,恐怕连一个完整的函数名都打不出来。
不管你的背景如何,你都有以下4项技能需要提高。
读写能力,尤其是平时用IDE的话。但总的来说,我发现程序员略读过多,导致理解阅读能力出现一些问题。他们扫描了代码,以为理解了,其实没有。其他编程语言也提供了各种工具来阻止程序员直接写代码,所以一旦面对C这样的编程语言,立马崩溃。最简单的方法就是明白每个人都有这个问题,解决方法就是强迫自己放慢速度,更仔细的读写代码。一开始,你可能会觉得很痛苦,很烦躁,所以增加休息的频率,最后,你会觉得这其实很容易做到。
没有人能很好的关注细节,这也是导致劣质软件的最大原因。其他编程语言如果不够专注会让你蒙混过关,但是C语言需要你完全集中注意力,因为C语言直接和计算机打交道,这是极其关键的。C的上下文里没有“有点像”和“差不多像”这两个词,所以你需要集中注意力。反复检查你的工作。在证明它是对的之前,假设一切都可能是错的。
寻找差异使用过其他编程语言的程序员都有一个问题,那就是他们的大脑被训练去寻找那种语言的差异,而不是C语言的差异。当你在对比你的代码和标准答案的时候,你的眼睛会直接跳过那些你认为不重要或者不熟悉的部分。我给你的解决办法是:强迫自己观察自己的错误。如果你的代码和这本书里的代码不一字不差,那就是错的。
规划调试我喜欢其他更简单的编程语言,因为我可以“瞎折腾”。我把想法打出来,然后就可以直接在编译器里看到结果了。这些语言可以方便你尝试新的想法,但是你有没有发现,如果你一直用“修修补补直到成功”的方法写代码,最后什么都不会成功。c语言对你的要求更高,因为它要求你先规划好你要创建的东西。当然,你可以偶尔弄乱它,但与其他编程语言相比,你需要在更早的阶段就开始仔细规划。在你写代码之前,我会教你如何规划程序的关键部分。我希望这能同时让你成为一名更好的程序员。哪怕是一个小小的计划,也能让你的后续工作更加顺利。
在学习C语言的过程中,你会更早、更多的被迫去处理这些问题,所以学习C语言可以让你成为更好的程序员。写的东西不能糊里糊涂,不然什么都做不出来。C的好处在于,作为一门简单的语言,你自己就能搞清楚。所以,如果你想学习机器的工作原理,强化这些核心编程技能,C语言是最好的选择。
《“笨办法”学Python》
《美国》作者泽德a肖
这本书会配有5个多小时的激情视频,是一个完整的C语言视频课程!
作者Zed A.Shaw为渴望提高编程技能的C语言初学者搭建了一个完美的课程(无语言)。只要遵循它,你就会像泽德迄今为止教过的数百万程序员一样成功!只要你能自律,投入,坚持!
这本书内容浅显易懂,2天到1周就能看完。看完可以收获千行C编程经验。这本书会让你的每一分钟投资都有回报。你很快就能学会世界上最强大的编程语言之一,成为一名C程序员。
在本书中,您将通过完成52个精心设计的练习来学习C语言。看了书上的练习,看了作者提供的视频,按照输入的代码(不要复制粘贴!),改正自己的错误,观察程序的运行。在这个过程中,你会学到一个好的现代C代码是什么样子的,如何有效地思考代码,如何更有效地发现和纠正错误。最重要的是,你将掌握严格的防御性编程技术。无论您使用什么编程语言,您都可以使用这些技术来创建避免缺陷和抵制恶意行为的软件。通过实际项目,这本书让你学以致用,让你对新学到的技能更有信心。Zed会教你很多写出优秀C代码的关键技巧。
《笨方法学习系列》
今日话题
你觉得C语言怎么样?截止4月16日17: 00,消息转发至朋友圈,边肖将抽取3名读者赠送异步新书。
长按二维码关注我们。
每天和你分享IT文章。
在“异步书”后台回复“关注”即可免费获得2000门在线视频课程;建议朋友们关注根据提示获取书籍捐赠链接,获得免费异步书籍。来加入我们吧!
扫描上方二维码,回复“关注”参与活动!
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。