2022年初学者学习C++及编程入门 .pdf

上传人:C****o 文档编号:40173482 上传时间:2022-09-08 格式:PDF 页数:4 大小:76.29KB
返回 下载 相关 举报
2022年初学者学习C++及编程入门 .pdf_第1页
第1页 / 共4页
2022年初学者学习C++及编程入门 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年初学者学习C++及编程入门 .pdf》由会员分享,可在线阅读,更多相关《2022年初学者学习C++及编程入门 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、初学者学习C+及编程入门Javascript 是世界上最受误解的语言,其实 C+何尝不是。坊间流传的错误的C+学习方法一抓就是一大把。我自己在学习C+的过程中也走了许多弯路,浪费了不少时间。为什么会存在这么多错误认识?原因主要有三个,一是C+语言的细节太多。二是一些著名的 C+书籍总在(不管有意还是无意)暗示语言细节的重要性和有趣。三是现代C+库的开发哲学必须用到一些犄角旮旯的语言细节(但注意,是库设计,不是日常编程)。这些共同塑造了 C+社群的整体心态和哲学。单是第一条还未必能够成气候,其它语言的细节也不少(尽管比起 C+起来还是小巫见大巫),就拿 Javascript 来说,作用域规则,名

2、字查找,closure,for/in,这些都是细节,而且其中还有违反直觉的。但许多动态语言的程序员的理念我猜大约是学到哪用到哪罢。但 C+就不一样了,学 C+之人有一种类似于被暗示的潜在心态,就是一定要先把语言核心基本上吃透了才能下手写出漂亮的程序。这首先就错了。这个意识形成的原因在第二点,C+书籍。市面上的 C+书籍不计其数,但有一个共同的缺点,就是讲语言细节的书太多 C+gotchas,Effective C+,More Effective C+,但无可厚非的是,C+是这样一门语言:要拿它满足现代编程理念的需求,尤其是 C+库开发的需求,还必须得关注语言细节,乃至于在 C+中利用语言细节已

3、经成了一门学问。比如C+模板在设计之初根本没有想到模板元编程这回事,更没想到C+模板系统是图灵完备的,这也就导致了Modern C+Design和 C+Template Metaprogramming 的惊世骇俗。这些技术的出现为什么惊世骇俗,打个比方,就好比是一块大家都认为已经熟悉无比,再无秘密可言的土地上,突然某天有人挖到原来地下还蕴藏着最丰富的石油。在这之前的C+虽然也有一些细节,但也还算容易掌握,那可是C+程序员们的happy old times,因为C+的一切都一览无余,everything is figured out。然而 Modern C+Design 的出世告诉人们,“瞧,还

4、有多少细节你们没有掌握啊。”于是 C+程序员们久违的激情被重燃起来,奋不顾身的踏入细节的沼泽中。尤其是,模板编程将C+的细节进一步挖掘到了极致 我们干嘛关心涉及类对象的隐式转换的优先级高低?看看 boost:is_base_of 就可以知道有多诡异了。但最大的问题还在于,对于这些细节的关注还真有它合适的理由:我们要开发现代模板库,要开发active library,就必须动用模板编程技术,要动用模板编程技术,就必须利用语言的犄角旮旯,enable_if,type_traits,甚至连早就古井无波的C 宏也在乱世中重生,看看boost:preprocessor 有多诡异就知道了,连C 宏的图灵完

5、备性(预编译期的)都被挖掘出来了。为什么要做这些?好玩?标榜?都不是,开发库的实际需求。但这也正是最大的悲哀了。在 boost 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -里面因实际需求而动用语言细节最终居然能神奇的完成任务的最好教材就是boost:foreach,这个小设施对语言细节的发掘达到了惊天地泣鬼神的地步,不信你先试着自己去看看它的源代码,再看看作者介绍它的文章吧。而boost:typeof 也不甘其后 C+语言里面有太多被“发现”而不是被“发明”的技术。难道最初无意设置这些语言规则的家伙们都是Oracles?因为没有 variadic templates

6、,人们用宏加上缺省模板参数来实现类似效果。因为没有concepts,人们用模板加上析构函数的细节来完成类似工作。因为没有typeof,人们用模板元编程和宏加上无尽的细节来实现目标 C+开发者们的DIY 精神不可谓不强。然而,如果仅仅是因为要开发优秀的库,那么涉及这些细节都还是情有可原的,至少在C+09 出现并且编译器厂商跟上之前,这些都还能说是不得已而为之。但我们广大的C+程序员呢?大众是容易被误导的,我也曾经是。以为掌握了更多的语言细节就更牛,但实际却是那些语言细节十有八九是平时编程用都用不到的。C+中众多的细节虽然在库设计者手里面有其用武之地,但普通程序员则根本无需过多关注,尤其是没有实际

7、动机的关注。一般性的编码实践准则,以及基本的编程能力和基本功,乃至基本的程序设计理论以及算法设计。才是真正需要花时间掌握的东西。学习最佳编码实践比学习C+更重要。看优秀的代码也比埋头用差劲的编码方式写垃圾代码要有效。直接、清晰、明了、KISS 地表达意图比玩编码花招要重要避免去过问任何语言细节,除非必要。这个必要是指在实际编程当中遇到问题,这样就算需要过问细节,也是最省事的,懒惰者原则嘛。一个掌握了基本的编程理念并有较强学习能力的程序员在用一门陌生的语言编程时就算拿着那本语言的圣经从索引翻起也可以编出合格的程序来。十年学会编程不是指对每门语言都得十年,那一辈子才能学几门语言哪,如果按字母顺序学

8、的话一辈子都别指望学到Ruby 了;十年学习编程更不是指先把语言特性从粗到细全都吃透才敢下手编程,在实践中提高才是最重要的。至于这种抠语言细节的哲学为何能在社群里面呈野火燎原之势,就是一个心理学的问题了。想像人们在论坛上讨论问题时,一个对语言把握很细致的人肯定能够得到更多的佩服,而由于论坛上的问题大多是小问题,所以解决实际问题的真正能力并不能得到显现,也就是说,知识型的人能够得到更多佩服,后者便成为动力和仿效的砝码。然而真正的编程能力是与语言细节没关系的,熟练运用一门语言能够帮你最佳表达你的意图,但熟练运用一门语言绝不意味着要把它的边边角角全都记住。懂得一些常识,有了编程的基本直觉,遇到一些细

9、节错误的时候再去查书,是最节省时间的办法。C+的书,Bjarne 的圣经 The C+Programming Language 是高屋建瓴的。大规模C+程序设计是挺务实的。Accelerated C+是最佳入门的。C+Templates是仅作参考的。C+Template Metaprogramming 是精力过剩者可以玩一玩的,普通程序员碰都别碰的。ISO.IEC C+Standard 14882 不是拿来读的。Bjarne 最近在做C+的教育,新书是绝对可以期待的。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -P.S.关于如何学习编程,g9 的 blog 上有许多精

10、彩的文章:这里,这里,这里,这里 实际上,我建议你去把g9 老大的 blog 翻个底朝天:P 再 P.S.书单?我是遑于给出一个类似C+初学者必读这种书单的。C+的书不计其数,被公认的好书也不胜枚举。只不过有些书容易给初学者造成一种错觉,就是“学习 C+就应该是这个样子的”。比如有朋友提到的高质量C/C+编程,这本书有价值,但不适合初学者,初学者读这样的书容易一叶障目不见泰山。实际上,正确的态度是,细节是必要的。但细节是次要的。其实学习编程我觉得应该最先学习如何用伪码表达思想呢,君不见Introduction to Algorithm里面的代码?TAOCP 中的代码?哦,对了它们是自己建立的语

11、言,但这种仅教学目的的语言的目的就是为了避免让写程序的人一开始就忘了写程序是为了完成功能,以为写程序就是和语言细节作斗争了。Bjarne 说程序的正确性最重要,boost的编码标准里面也将正确性列在性能前面。此外,一旦建立了正确的学习编程的理念,其实什么书(只要不是太垃圾的)都有些用处。都当成参考书,用的时候从目录或索引翻,基本就对了。再再 P.S.myan 老大和 g9 老大都给出了许多精彩的见解。我不得不再加上一个P.S。具体我就不摘录了,如果你读到这里,请务必往下看他们的评论。转载者别忘了转载他们的评论:-)许多朋友都问我同一个问题,到底要不要学习C+。其实这个问题问得很没有意义。“学

12、C+”和“不学 C+”这个二分法是没意义的,为什么?因为这个问题很表面,甚至很浮躁。重要的不是你掌握的语言,而是你掌握的能力,借用myan 老大的话,“重要的是这个磨练过程,而不是结果,要的是你粗壮的腿,而不是你身上背的那袋盐巴。”。此外学习C+的意义其实真的是醉翁之意不在酒,像 C/C+这种系统级语言,在学习的过程中必须要涉及到一些底层知识,如内存管理、编译连接系统、汇编语言、硬件体系结构等等等等知识(注意,这不包括过分犄角旮旯的语言枝节)。这些东西也就是所谓的内功了(其实最最重要的内功还是长期学习所磨练出来的自学能力)。对此大嘴Joel 在 Joel On Software里面提到的漏洞抽

13、象定律阐述得就非常漂亮。所以,答案是,让你成为高手的并不是你掌握什么语言,精通C+未必就能让你成为高手,不精通C+也未必就能让你成为低手。我想大家都不会怀疑g9 老大如果要抄起C+做一个项目的话会比大多数自认熟练C+的人要做得漂亮。所以关键的不是语言这个表层的东西,而是底下的本质矛盾。当然,不是说那就什么语言都不要学了,按照一种曹操的逻辑,“天下语言,唯imperative 与 declarative 耳”。C+是前者里面最复杂的一种,支持最广泛的编程范式。借用当初数学系入学大会上一个老师的话,“你数学都学了,还有什么不能学的呢?”。学语言是一个途径,如果你把它用来磨练自己,可以。如果你把它用

14、来作为学习系统底层知识的钥匙,可以。如果你把它用来作为学习如何编写优秀的代码,如何组织大型的程序,如何进行抽象设计,可以。如果掉书袋,光啃细节,我认为不可以(除非你必须要用到细节,像boost 库的 coder 们)。计算机等级考试宝典(二级 C 语言程序设计)系计算机等级考试宝典试题辅导软件,适用于计算机等级考试宝典,软件试题库设计紧扣最新计算机等级考试宝典大纲、考试教材,符合计算机等级考试宝典题型与考试科目,复习辅导资料、考试资料丰富,免费试用、试题库巨大(注册版试题量达7 百多题、19 万多字),辅导软件收录计算机等级考试宝典考前冲刺、历年试题,试题辅导软件囊括了目前所有的最新计算机等级考试宝典科目:程序填空题、改名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -错题、编程题、考前冲刺、历年真题,并提供专业级的计算机等级考试宝典解题方法、答题技巧、考试要点精解。通过全面、针对性强的强化考试辅导训练、考前培训,提高您计算机等级考试宝典的应试能力,辅导您考试成功。我们免费提供计算机等级考试宝典报名时间、报名地点、报考条件、考试时间、成绩查询、合格分数线。文章由 http:/ 整理名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁