程序员的学习能力-----作文与编程、编程境界 ---数据结构和 算法 , 数学的重要性。

程序员的学习能力

孔子曾跟师襄学琴,师襄就随手扔给他一首曲子,让他自已练习。孔子呢,把这首曲子都练了十几天,还是不厌其烦地继续练习。
师襄忍不住了,对孔子说:“你可以再换个曲子练习了。”
孔子回答说:“我虽然已熟悉了曲调,但还没有把握曲中的韵律。”
过了好些天,师襄又说:“你已把握到曲中的韵律了,可以换曲子练了。”
谁知,孔子又说:“我还没有感受到曲中的人物形象呢。”
过了一段时间,师襄又说:“你已经感受到曲中的人物形象了,可以换曲了!”
孔子还是说:“我虽已感受到曲中的人物形象,但还没有达到他的心智境界。”
终于有一天,师襄看到孔子神情庄重,器宇非凡,志向高远,仿佛完全变了一个人。
还未等师襄开口,孔子便说:“我感悟到了,曲中人物黝黑高大,目光深邃,心怀天下苍生,真乃王者气象,此人必定是周文王!”
师襄听罢,大吃一惊,因为此曲就叫《文王》,而他从未对孔子说过!
这是一种怎样的学习精神呢?
这就是一种把知识学透的精神!不但要学习人家的概念和技巧,还要学习方式和方法,更要学习人家的思想境界。没有那种刨根问底的精神,是很难将知识学透的。
学习就要刨根问底!任何事情喜欢刨根问底的人,一定能成为优秀的程序员!


作文与编程、 编程境界

1.比如,面向对象编程是大家都在用的技术吧。有的程序员已经能用C++JavaC#写一个类,定义属性,编写方法,然后创建一个对象,就可以调用它的方法,操纵它的属性了。这样,他也可以编写出面向对象的程序。不过,他所看到的只是程序对象。

深入学习和理解面向对象的思想之后,我们就会明白:所有的对象都是对现实世界的抽象,面向对象编程就是用人类最自然的思维模式来编写程序。这时,我们看到的分类就是现实世界的门纲属科,那些对象也就成了现实世界的活物,属性和方法也就成了他们的性格和活动。

这时候,我们再写面向对象的程序,就像写作文一样。各种命名都很自然地用到现实世界的各种名词,代码本身就无需多少注释,因为它们大都是自注释的。编写代码逻辑,就像编写现实世界的游戏规则。整个程序的思路非常清晰明了,代码也显得非常简洁优雅,运行效率也自然会高些。   

参考:女程序员编程就像写作文,语言是基础,构思是关键

因此,学会技术的思想之后会对使用技术的能力产生一个质飞跃,可以更深层次地使用这些技术,而不会被表现的形式所迷惑。事实上,只要掌握了面向对象思想的本质,即使不用面向对象的语言,也能编写有面向对象思想的程序。就好像武林高手用树枝也能玩剑法,虽然树枝不是剑,但处处体现剑法的精髓。

学会编程思想就足够了吗?如果还想更上一层楼,就得追求编程的境界。境界这个东西很虚,看不见摸不着,但可以从内心感觉得到。这种感觉有点像心灵相通的默契,若有若无。编程的境界追求的是人与程序间的心灵相通和情感交融,将自己的身心与程序世界融为一体,与现实世界融为一体。

编程境界这个东西的确有点玄,境界这个东西是因人而异的,每个人的感悟都不同。就像佛教里的禅的思想,什么是禅呢?禅是需要自己体验的东西,别人说的都不算,是不能用语言来描述的。所谓,不立文字,直指人心。我也是只知皮毛啊。

如果要我说什么是禅?一句话:通过感悟生活,得到生命的快乐。

编程之禅也就是:通过感悟编程的真谛,得到编程的快乐。

编程的境界只有高低之分,而且永远没有尽头。当你的编程境界到了一定高度,你的思想将会跳出编程的范畴。你将会发现,软件的根本实际上是哲学问题,很多方面都是和其他科学相通的。就像现代的量子理论发展到最后,发现量子论事实上是与哲学相关的一样。这个撤得就远了,但是喜欢哲学思考的程序员一定会成为一名优秀的程序员。

不过,再高的思想境界也得落到实处。光玩思想境界也不行啊,毕竟大家都在软件企业工作,都得道成仙了,谁来编码呢?

优秀的程序员也一定是务实的程序员。务实就是理论与实践相结合,追求的是完美与现实的平衡。毕竟理想和现实是有差距的,我们只有胸怀远大理想,面对残酷现实。

前段时间我还给人讲过一句话:

为了玩刀而上战场的人大都死于刀下,临死时怪自己的刀没有选好。

为了杀人而上战场的人大都成了将军,临死时放下屠刀立地成佛了。

所以,程序员要想成佛,不但要追求编程境界,还要学会在残酷的现实中拼杀,解决具体的问题才行。

经常会看到这样的情况,几个程序员一起参加一个软件项目。项目结束之后,有些程序员提高很快,有的进步很慢,有的却原地踏步。这是什么原因呢?

         提高较快的程序员大都勤奋好学,喜欢探究编程的规律,并能逐渐总结出自己的方法。而进步较慢的程序员虽然也勤奋努力,但往往只着眼于具体的代码,不善于抽象和总结规律。而原地踏步的程序员呢,大都是混饭吃的,根本没有主动学习和提高自己的意识。

         程序员不但要修炼自己的技术,还要善于修炼自己的人品。不是说编程中的大多数问题都是人品问题吗?当然,这里说的是程序员性格和人格的修养。


 参考:http://blog.csdn.net/superman200322/article/details/2580799

数据结构和 算法 , 数学的重要性。 

学习编程并不是学习什么语言,语言只不过是工具而已(网上一大堆,老生常谈了)。一般写的程序都有两部分组成:一个是数据结构;一个是算法。

        数据结构就是某种语言所特有的规则,他就像任何游戏一样都有一种规则,这个没有任何捷径,只能平常多看看,多练习,记住它就行了。在实战中才能把它理解的更加深刻、更加透彻。

        算法,也就是我们通常在编程中用到的函数或方法,为了使程序更加健壮、更高的可读性和结构更加紧凑,一般都把某种算法封装起来,这样便于移植和测试。其实向俗里说,算法就是我们平常为了解决问题而用到的方法,只不过它用语言描绘出来了而已,怎么想就怎么写就行,只要不违背游戏规则就行了。

       学习编程,其实我觉得我们从上学就开始学习编程了,而且我们那是学习的还是编程的精华-------数学。他们学习的方法几乎都是一样的,遇到一个问题(当然最终都是为了解决这个问题),首先分析一下要想解决它必须先解决什么问题?把每一个问题都列出来,再把这些小问题一个一个分解,直到分解成你可以解决的问题为止!当然也可以从两边向中间凑:有这个问题我们首先可以解决什么?不能解决什么?把这些问题尽量向中间靠拢,一步步也可以把它解决掉。当发现,最后出现了错误时,我们再从那些小的问题入手,一个一个分析,把错误的问题找到,最终把它解决掉。数学在理工科中是尤其重要的,因为它在无形中影响我们的思维,呵呵,怪不得有人说数学发展到哪里,这个社会就会进不到哪里呢。

       现在我们学的编程基本上就有四种模型:面向过程的,基于对象的,面向对象的,基于泛型的。如果把编程比喻成堆积木,那别人提供给我们的API函数都是一个个零散的小积木,有时我们为了更快的堆积成我们想要的东西,我们再把这些小积木在堆积成另一个形状,当我们需要它时,直接拿过来用就行了,不用再重新堆积了,这就是类。

        发现问题,解决问题------测试,因为我也从来没有学习过测试,只会一点最基本的方法,那就是跟着程序走,程序运行到哪里,就检查到哪里,问题总会发现的,最简单的方法是通过输入输出跟踪运行的程序,直到发现它出现了异常。

        进步的泉源----错误。人往往从失败中才会得到更多的经验。编程也是,当你运行程序遇到某个错误了,那时最好自己独立解决,因为只有这样你才会有更大的进步,千万不要怕走弯路,有时候在弯路中你学到的东西更多。遇到错误时,先分析错误提示,一般IDE都有错误提示和错误出现在哪一行,尽管有的指示的不够明确,但通过分析错误行的上下文,也可以有助于你找到错误的根源所在,把错误提示看一下,这样也有助于你以后发现错误。

        学编程是符合“理论→实践→创新→再理论→再实践→再创新”的一个认识过程。把编程也可以看成一门技术,对于技术,只能通过实战来提高自己了。我们有时可能遇到这样的问题,新学习一门软件课程时,看那些书感觉很吃力,有时看了一遍也不知道它讲了个什么,我觉得这是因为你缺少实践的原因,当你真正实践过,反过头来再看那些书,“哦,原来如此”,才恍然大悟,当你再实践后,再去看这本书,“呵呵,怪不得呢”,这个时候你可能会责备自己“怎么原来我没看到呢,哎,真是太笨了”,到那时,当有个白痴问起你”这门课程好学吗?“,我觉得你就可以告诉它,这门课程太简单了,正常人都可以学会!

        系统之上的应用编程,基本上和我们平常解决生活中的问题一样,在脑袋中想,再在纸上写出来(呵呵),编程想想其实也是如此,在内存中保存所计算的,在外存中写出该如何计算,再把外存中的数据放到内存中保存,把内存中的数据返回到外存加以利用,如此反复一个问题就解决了。

        系统中的和系统之下的编程,还没有学,不敢妄加评论。

参考: http://blog.csdn.net/dahailinan/article/details/5699014
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,但是我没有找到关于程序员编程艺术1-38的PDF。根据引用\[1\]中的信息,程序员编程艺术的总结只包括前二十二章。引用\[3\]提供了一个下载地址,但是只包含了前37章的PDF。所以,目前我无法提供程序员编程艺术1-38的PDF下载地址。 #### 引用[.reference_title] - *1* [程序员编程艺术第一~二十七章集锦与总结(教你如何编程),及PDF免分下载](https://blog.csdn.net/v_JULY_v/article/details/7506231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [程序员编程艺术第二十五章:Jon Bentley:90%无法正确实现二分查找](https://blog.csdn.net/iteye_20954/article/details/82237124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [程序员编程艺术第一~三十八章集锦与总结,及Github地址、PDF下载](https://blog.csdn.net/v_JULY_v/article/details/17303459)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值