《C++程序设计原理与实践》粗读 — chapter6 Chapter7

      不得不说,初学者都该看看这两章.

       在看过一些后,不禁的感慨,如果如果当年的当年,最开始看的是这本书,那该多好啊.

     

      那好在哪里呢?

      就好在对初学者心理的把握和种种人文提醒:

              程序都是从问题出发的,一个良好的程序应该具备....

              从开始的引入问题 -> 到对问题的思考 ->提出设计方案 -> 尝试设计方案 ->改进设计方案 

             -> 完成每一步的细节 -> 每完成一步细节进行测试 -> 总体测试

     从上面的流程中并没有什么特别的,但是初学者,在进行上面的过程中容易出现问题:

             

             ①目标具体化:要解决的问题是什么,应该站在用户的基础上去想

             

             ②另一个容易犯的错误是我们容易将问题复杂化,在描述一个问题时总是表现的过于贪心.实际上更好的方式是                 将问题简化

           

            ③记住在编写实用的程序时,重新设计基本模块是没有价值的


            ④基于已有的经验重新设计一个原型程序,直到找到一个满意的版本为止.不要在一个混乱的版本上面继续下去

                否则,那只会更混乱


            ⑤理想的情况是逐步构建组件来编写一个程序,而不是一下子写出所有的代码.

    

            ⑥采用伪代码描述问题,然后先不要去管它是函数调用还是其他的,更不要去管现在需要什么参数,这些问题在

                 策略的时候去理会这些细节过早.

    

            ⑦要始终保持对"当然"的怀疑.

 

            ⑧在程序设计的早期避免"功能蔓延"是很重要的,应该先构建一个简单的版本

                如果一开始就实现变量功能还有一个负面的影响:很难抵挡住添加"漂亮特性"的诱惑.


            ⑨最基本的做法是阅读代码并猜测错误出现在哪里,但是这个通常不是一个好方法一我们必须理解程序代码在

                做什么,必须能够解释它为什么有时候可以正确工作有时候不能.

                错误分析,通常是能够找出正确解决方案的最好方法.


             ⑩不断寻找更简单的方法.这与"优秀的程序员都是懒惰的"不谋而合.

             

          尚且不说Stroustrup是如何一步步的引入自己创造的Class Token,如何将"文法"再次引入进来,到最后的计算器可以支持变量,"不经意"的了解了编译器是如何工作的,这些思维的引导新东西的引入都显得那么自然同时有那么的实用.

____________________________________________________________________________________________

                                                            反思与收获

          回想起自己开始的时候写单片机程序,那个时候没有什么软件工程的概念.在大二时候,我记得我可以写模块,但是如何构架一个整体呢? 如果好的正确的架构好让它工作呢? 如何正确的完成多个(函数)模块的切换同时变量该如何相互传递呢?也就说初学者在如何完成从简单的当个程序上升到简单的层次化结构呢.  

    

      模块化(简单小程序用变量标志切换)  ->    层次化(用状态机或者类似状态机,自动机等等)  ->系统化(用RTOS)


     对于计算机相关专业,或者有良好思维习惯和软件工程培养学习的初学者而言,这个过程非常的顺利简单,水到渠成.

可是对于那些自学且没有看到这方面提示的初学者而言,这个过程显得有点点的艰辛.记得很清楚的是自己在大一学习单片机时候的第一个跳升困难.如果将程序写到2K行以上呢?


    非计算机专业的写大一点点的程序该如何正确的培养自己呢? 很多人在学习完单片机一些后开始看RTOS,最多最广的应该是看μC/OSII吧.其他的有可能看的是什么Tiny*** 或者是RTT,DJYOS,FreeRTOS.有的直接上Linux,WinCe,Android

    那直接上来,可以吗? 当然可以.

    只是基础不够好的时候应该会出现一些问题,例如因为对C语言一些基础的不够在看μC/OSII的时候出现有些源码不明白.对某一些特性不是很理解.例如:

《C++程序设计原理与实践》粗读 -- chapter6 Chapter7《C++程序设计原理与实践》粗读 -- chapter6 Chapter7

  这个里面很多C语言初学者(当然我也是),对里面的使用可能不怎么理解了.而这个东西我在里面的第一个标注现在回头翻出来发现说法是不对的(应该说是哪里也不指向的万能指针的大小).(Plus,这个文档可以下载到,是钟常慰先生做的中文源码说明,我是在ourdev里面下载的)钟先生在里面对自己的说明有了问号.或许钟先生也是记不清楚了.但是这个问题容易解决,看看C语言经典的书籍既可以完成,例如,<<C专家编程>>
<<
C与指针>>  <<C
陷阱与缺陷>> <<C>>甚至<<C
Primer Plus>>.  


    可是接下来可能会遇到另一个问题,就是读完了全部源码,可是对整体回想的时候又开始要完了某个细节.过几天后可能记不清楚了.大二的时候记得看傻孩子的书<<深入浅出AVR单片机:从ATmega48/88/168开始>>的最后一部分说到了程序结构化的方法和基础.但是我记忆深刻的是"看看得懂的代码,写会写的代码,读读得懂的书...",大意是如此,原话忘记了.那么这个其实就是前面摘抄<<C++程序设计原理与实践>>中的告诫和温馨提示.

 
 

 
   自然完成了这两个阶段就会水到渠成了.而这本书不得不说应该是我在大一时候看的.


 
前面的
我记得在大三国庆两天我做那个单片机课设的时候,一点点的感慨这些"废话"的重要性.我们都是很贪快的,还有就是容易陷入"功能蔓延",这个也同样的可以在我写单片机课设对应的上位机的过程中,"要不要加入数据库""加载一个皮肤"等等...这些想法这些"野心"让我多少去涉及了太多的面,但是这样子做是不适合的.


 
  在自己浮躁的时候,其实那个时候看也是不会真正的那样子做的,因为浮躁因为焦虑着急着学"
更多更高深"的东西,自然成长需要时间,但是多少会好些.所以这本书大一时候还是该看的.一步步一点点的学习才是最高效的.所谓的捷径是会造成瓶颈的.用心去学习就会成长很快的.

    




原文链接: https://www.cnblogs.com/tonyho/archive/2012/01/08/2742226.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    《C++程序设计原理与实践》粗读 -- chapter6 Chapter7

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/39921

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午4:34
下一篇 2023年2月8日 下午4:35

相关推荐