[原创。欢迎复制。转载请您注明出处 -- Gavin]
Tips: Correctness, simplicity, and clarity come first.
序言:
2006年圣诞节这天,我终于买来了传说中的《The C++ Programming Language》这本Bjarne Stroustrup亲自撰写的著作。在此之前,也曾读过一些其它经典系列,但细细品读了该书的第一、二章,掩卷之时仍不禁百感丛生。遂生写下本篇杂记的想法。也算对自己学习C++这门博大、优雅的语言的一次小结,更是与巨人对话后不得不做出的、发自内心的赞叹!
第一章:致读者
1.2 学习C++
有很多人读书总是喜欢跳过序言、致读者等等看似无关紧要的章节,名曰节约时间。我则不然。每每拿起一本新买回来的书后,总是喜欢翻开首页,细细品读序言及致读者之类的章节,且每每会得到一些意想不到的乐趣:或被作者的真情所感动,或对作者的风趣所折服,或对作者个人魅力所倾倒,或被作者引入深刻的思考,读外国名家作品尤是。在读本书第一章“致读者”的时候,我发现我突然变成了一个不知世事的小孩子,在圣诞夜火炉旁,听一位充满睿智的长者,用充满智慧、耐心与希望的语言,为我讲述一个从未听说过的故事。惬意啊!已经很久没有这种感觉了,像刚得到宝贝的孩童似的,不停把玩手中的玩具,时而陷入思考,时而会心一笑。而在这一动一静之间,则是高山仰止般的敬仰。
“学习一门语言的目的是成为更好的程序员;是为了使自己在设计和实现新系统时,或者维护老系统时,能够更好的工作。为此,对于程序设计和设计技术的理解远比对细节的理解更重要。”
对于程序员,很多人都有误解,认为只是单纯的写写代码,因为目前国内有很多人找到的所谓的“程序员”的工作就是这样。但是,这与真正的程序员之间的差距可谓甚远。曾经有位资深程序员曾经一语点破:“编程的乐趣在于设计,在于创造。remember: To be a programmer,never a coder。”细细品味这句话,不禁会心一笑。我们之所以乐于此道,不是因其模仿、因其控制,而是因其创造,因其在创造过程中探索的乐趣。我想大概Stroustrup也这么想,所以他才会有后面“为此,……”的教诲。
程序设计,设计技术。目前有另外一个词,我觉得也差不多的,就是“设计模式”,英文称作“Design pattern”。我更愿意叫同类的概念为“设计哲学”(Design philosophy),因为这个概念好像是“务虚”的。虽然虚,但我觉得如果没有一定的实践经验其实想务虚也是挺难的。身边有好多同学为了找工作、开发项目等等,学语言的目的是为了实用。因此,往往追求能尽快地用这门语言写出自己的程序,“套现”。C++是一门入门非常容易的编程语言,只要有点C的底子,你可能2天就可以声称自己已经“学会”了C++。可惜,结果因此而忽略了C++真正精彩的地方——他的思想。无论哪种语言也好,从实用角度讲都是一个工具,一个可以为你解决各种问题的工具。可是当我们拿到一个问题到解决这个问题之间还有一个不可逾越的鸿沟——去探索、创造一个解决问题得方法,而这恰恰是最重要、含金量最高的部分。计算机解决问题的思路、模式有很多:有面向过程的(PO)、基于对象的(OB)、面向对象的(OO)以及最近提出的面向服务的(SO)。C++同时很好地支持前三者。但这些只是C++本身应该做的,我们呢?我们主要花精力的应该在于如何用PO、OB、OO的思想来找到最合适的解决问题得方案,有时候我们更要选择采用哪种模式:一些情况我们采用PO就可以简洁明了的做到我们想要的,但有些时候我们不得不采用OB甚至OO。这个过程一如stroustrup所指出的那样:“其根本是时间和实践”。我们注意到他的原话,不是说细节(具体语言的实现)不重要,而是说对于那些超然于不同语言之上的,关于更通用的模式的理解更加重要。孔子说:“学而不思则罔,思而不学则殆”。想来,不禁学古人感“大道殊途同归”之叹啊(一笑)。
请记住:C++支持OOP,但不是说用C++只能写OOP的程序,或者只能用C++写OOP程序。我在自己的第一个作品中就曾刻意的使用OOP技术,当时颇为得意。此时看来真有点邯郸学步、东施效颦的意味。真正的大师都是“去繁就简,返璞归真”的(后续章节陆续会有介绍)。
分享到:
相关推荐
八年级物理全册1.3站在巨人的肩膀上我国的四大发明素材新版沪科.doc
综上所述,卓越商企服务在商务物业管理领域具有一定的竞争优势,其业务模式、区域扩张策略、增值服务发展以及母公司支持都为其未来的发展提供了良好的基础。然而,投资者在做出投资决策时还需考虑市场风险和行业动态...
绿洲APP产品分析报告:站在巨人肩膀上能否看得更远?.pdf
站在巨人的肩膀上,_迁移学习_Transfer_Learning
站在巨人的肩上——XX借势营销策划.doc
站在巨人的肩上泛德林恩借势营销策划.docx
本教程资源"ios-站在巨人的肩膀上-scrollView联动.zip"可能包含了一个名为"XYSlideMenu"的示例项目,旨在帮助开发者理解并实现ScrollView的联动效果。 ScrollView联动的核心是通过监听ScrollView的滚动事件,将滚动...
站在巨人的肩上--泛德林恩借势营销策划.doc
小米集团作为一家以生产家用电器起家并迅速发展的科技公司,其商业模式和市场策略为家用电器行业带来了新的思考。小米集团的成功可以归结为几个关键因素:硬件产品作为核心,极致性价比的产品特点,以及基于物联网的...
本项目“站在巨人肩膀上制作的异步非阻塞IM”是一个基于Java语言实现的高效通信平台,它巧妙地利用了现有的开源技术和工具,以解决大规模并发下的高性能通信问题。以下将详细阐述这个项目中的关键知识点。 首先,...
站在巨人的肩膀上:分层设计在 Nervos 生态系统中的 layer 2区块链上的实际应用-SACC2021年中国系统架构师大会
本项目“站在巨人肩膀上制作了异步非阻塞的IM”充分利用了Java的优势,构建了一个高效、灵活的多协议通讯解决方案。 首先,异步非阻塞编程模型是现代高性能网络应用的核心。传统的同步阻塞模型在处理高并发时容易...
【标题】中的“站在巨人的肩膀上的项目,感谢zhile大佬的Pandora-Next项目”表明这是一个基于他人开源项目进行开发或改进的项目。这里的“Pandora-Next”可能是一个由用户“zhile”创建的开源项目,它很可能在Python...
资源描述让你站在HTML巨人的肩膀上,制作非常酷炫的HTML前端web幻灯片。通过使用资源描述,你可以轻松地添加各种动画效果,使你的网页更加生动有趣。无论是淡入淡出、滑动、旋转还是缩放,你都可以通过资源描述实现...
只有善于观察市场动态,深挖平台潜力,灵活应对变化,才能在互联网大潮中把握住机遇,站在巨人的肩膀上取得成功。在这个过程中,对开放平台的深刻理解和巧妙运用,将成为企业在互联网时代变革中立足的关键。
【知识点详解】 1. 指南针:指南针是我国古代...这些发明展示了中国古代科技的卓越成就,它们不仅在国内发挥了重要作用,而且对全球科技发展产生了深远的影响,是站在这些巨人肩膀上,人类社会得以不断进步的基础。
在C++编程中,错误处理是一项至关重要的任务,因为它们能帮助我们发现并修复程序中的问题,从而提高软件的质量和稳定性。...记住,每一次错误都是学习的机会,站在前人的经验上,我们可以走得更远。
14. 文件中还提到了宝胜国际的公司背景,包括其在中国消费行业中的位置,以及它在当前市场环境下如何站在“巨人的肩膀上”即利用与Nike和adidas等国际品牌的合作关系实现自身的增长。 通过上述知识点的整理,可以...