分享

?陈兆君:初学编程的小感想

 lion__ 2017-07-31

近几天,爸爸开始教我学习编程。虽然只学了一点皮毛,暂时还没完全入门,但也有了一些感触。

如爸爸所说,编程序解决问题的第一步是考虑人会怎么解决这个问题,人解决这个问题的方法计算机可以做到吗,如果做不到如何调整;再想怎么用程序语言把算法表达出来。这两步都并不简单,尤其是第一步,算法的考虑。很多时候需要一点数论的知识。比如说求两个数最大公约数的程序,就需要用到这样一个知识:两个整数a,b(a>b),如果a不是b的倍数,若a=bk+r(k、r为整数),a、b的最大公约数等于b、k的最大公约数。这毕竟不是一篇数学小论文,证明就不便多说了。但总之,通过爸爸引导我想出各种问题的算法,我增长了一些数论的知识,也感受到了各种知识之间的息息相关。另外,我第一眼看到那些习题,比如说判断一个数是不是素数、求两个数最大公约数、求斐波拉契数列第n项……作为一个初学者,我毫无头绪,但是当爸爸教会我方法时,我发现其实是如此的简单。所以,我明白了当生活中遇到一些问题,你毫无头绪时,不要慌,更不要发牢骚,冷静下来想办法,只有这种态度才能解决问题。

当然,一个优秀的程序员,是绝不会仅仅满足于想出一种算法的,TA还会仔细思索,试图对算法作进一步的优化。我还没有真正入门,但已经从爸爸身上感受到了这一点。比如说爸爸教我编写判断一个数是不是素数的程序时,最开始采用的算法是输入一个正整数n,然后算出mod(n,2)~mod(n,n-1),这些余数中有一个为0,n就不是素数,反之则是素数。这样一来,如果n是一个素数,计算机就要运行n-2次才能得出结果,如果输入一些较小的素数还是非常快的,但如果你输入一个较大的素数,如2147483647,就需要等十多秒才能得出结果。根据数论知识,爸爸提出事实上只要在大于1小于等于√n的范围内没有n的约数,n就肯定是素数了。因为n如果有一个大于等于√n小于n的约数a,就必然有一个大于1小于等于√n的约数n/a。在此基础上我们对程序进行了修改,再次输入2147483647时,不到一秒就得出了结果。

其实,不仅编程时如此,生活中处理其他事情也一样,除了要能想出对策,还要考虑能不能用更好的方法去解决。人要对自己要求严格一些。

总而言之,至少目前我感觉编程并不简单,尤其考虑算法时很需要动脑筋,好不容易解决了问题还要绞尽脑汁思考能不能进一步优化程序,但这也正是编程的乐趣所在。编程不仅是一门有用的技能,更有利于帮助我培养一种处理问题认真、严谨、精益求精的态度。我知道在今后的学习中我还要学一些更复杂、深层次的东西,但我一定会用100%的努力把programming学好的。 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多