思考程序与写程序的关系

  首先引用孔夫子的一句话:学而不思则罔,思而不学则殆。

  首先,学而不思者罔这句话的意思就是如果做一件事情,我们只是为了完成任务才去做这件事情,如果我们不对问题进行思考,那么我们就会感觉知其然而不知其所以然。

思而不学则殆这句话就是,如果我们不动手去做,而一味的去思考结果,那么就会在一个点停滞不前。

其实我很赞成孔夫子的话,我个人认为这2句话很适合编程的人,当然“学而不思者罔”这句话,我个人觉得更适合于我们程序员。

  其中造成学习而不去理解它的原理有几点原因。

  1. 任务本身的进度很赶,没时间去研究那么深刻,只是把东西拿来用就行了。
  2. 语言本身的封闭性造成的,比如某些不开源的语言(本人只是发表观点,不针对任何人)。
  3. 算法和数学的复杂性让一部分基础差的人望而却步。

  我虽然不算是特别会思考的人,当然,我也是从从不思考的拿来主义者变成了一个有思考习惯的人,我一般做一件事情的话,我都会去思考我拿来的代码为什么这么写。现在我来比较一下拿来主义者和真正的思考程序的人的区别,当然我现在也算是半个拿来主义的人, 所以有不好的地方请多多指教。

  我就拿我们项目出现的一件事情来说,因为我们这次做的项目是以ASP.NET的CMS模板为基础来建设的,所以我的另一位同事碰到了一个问题:因为企业之窗是展示企业的地方,所以是动态的数据,他问我,模板怎么配,其实说白了,配出来的模板都是以文章的形式显示的,所以我就想到了用ajax去展示结果。

  从这件小事可以看出,思考是必须的,如果只是一味为了完成任务去写程序,就会造成一个死结,这个死结就是程序员常常提到的瓶颈

瓶颈是怎么形成的,其实我认为,无论是大师(图灵),还是小到我们普通的代码搬运工,或者是新人。都会有一个瓶颈,这个瓶颈就像我们小时候学的井底之蛙一样,只是每个人的高度不同,所以造成的瓶颈也会大小不一。

  瓶颈的形成并不是一天两天形成的,瓶颈的形成是一个潜移默化的过程,也就是说,在你开始编程的那天起,或许就已经慢慢形成了瓶颈的影子,当你积累到一定的程度以后,这个瓶颈就会被无限放大,成为阻碍你前进的一个不可逾越的障碍。

  那么怎么才能让瓶颈变大呢,我认为,既然对于任何人都有一个瓶颈,那么瓶颈是不可能消失的,我们只可能让我们站得更高。我的认为有以下几点:

  • 注重英语和数学基础的培养。

  为什么我特意提到的英语,有些人认为,现在网络资源那么发达,不一定你要看原版的,我个人认为,英语好可以更好的理解代码,因为代码不是中文的。至于数学基础大家应该没什么异议,我的理解就是兴趣为王,我特别喜欢学离散数学,同事有时候问我为什么毕业了,工作了还要学这东西,还问我是不是为了考研,其实不是 的,我是个人喜欢学习数学,就像我喜欢代码,打游戏一样。

  •  注意创新能力的培养。

  创新能力是一个很概括的讲法,我以前一直以为创新能力就是你能想到多少别人想不到的奇思妙想,纵观人类的历史,伟大的发明创造都是一个好的灵感。如果要我定义创新,我个人认为:创新能力包括联想能力和灵感(奇思妙想),但是有了这些是不够的,因为这样仅仅是停留在你的大脑里,如果想要把这些奇思妙想转化为有用的代码,就要想方设法把一些想法应用到代码里,牛顿曾经说过一句话,伟大的人是站在巨人的肩膀上的。就是说,我们在想象的同时要把一些前人总结的经验融合到自己的思想里去,只有这样,才能提高,O(∩_∩)O哈哈~,说得不对请多指教。

  •   保持对编程的热情

  这一点很重要,当新技术出来的时候,我们无限热情,当然,热情和好奇心能保持多久,你也就会得到多久的快乐,你也会在这个行业一直发展下去。还有思考也会让你进步,写出更加有效率的代码,另外,不管你是C#,JAVA程序员,建议你去学一下C或者C++当中的一门,对于理解底层代码,我个人认为,会更好的帮你写好高一级的编程语言。

  好了,就写这么多了,有不妥或者疑问的地方,还请指出,我会修正。

时间: 2024-10-28 23:03:14

思考程序与写程序的关系的相关文章

怎么才能有写程序的思路

[提问] 老师,您好!请教一下写一个程序的整体思路是什么样的? 看老师写的程序基本都能看明白,但自己写的时候,思路有点混乱,不知道先写什么,后写什么!逻辑前后联系在写程序之前,好多都考虑不到. [答复] 若论步骤.思路,各种书上写得多的是了,认真读一读,比我在这里罗嗦几句管用得多.对于实践而言,除了能够按"套路"演练之外,还重在通过体验,获得那些不可言传.只可意会的东西.感觉你提这样的问题,就是积累的问题.读程序.写程序,多读,多写,这就是你能够有自己思路的过程.贺老师这里没有省时省力

雷军语录:写程序有写诗一样的感觉

01 只有真正喜欢才能写好程序 喜欢写程序,做程序员就是上天堂: 不喜欢写程序,做程序员就是下地狱. --雷军 程序员需要整天趴在电脑前,经常没日没夜的,非常辛苦,而且工作来不得半点虚假,少写一个标点符号都不行.喜欢的人,日子过得非常开心,每写一行代码,都会有新的成就,尤其当自己的作品被广泛应用的时候,那种自豪感油然而起.不喜欢的人,坐在电脑前极端无聊,被进度压得喘不过气来,天天为找bug改bug生气. 02 把程序当艺术品,象写诗一样来写代码 如果每个人写程序的时候当艺术品来写,写每行都认认真

写程序引发的思考

 最近2个月除了完成日常的工作以外,还在练习数据结构这一块的知识,因为感觉数据结构自己还不是很熟悉,最近 完成的练习如下: 数据结构练习连接:http://blog.csdn.net/qlx846852708 1.顺序表的实现 2.单向链表的实现--通讯录 3.队列的实现--银行排队系统 4.c语言猜数字小游戏 5.计算圆周率 6.输入年.月.日计算星期几 7.linux下tcp和udp的通信 8.熟悉了makefile的编写 9.linux下文件夹加密小程序 多动手: 总之,感觉就是还是要

数学知识对写程序有用吗?

对于这个标题,答案我是持肯定态度的,有的人可能说数学一般用于解决一些高端算法,我们测试脚本,哪用得上啊,其实也不然,适当的思考,适当的运用一些数学知识,可以使我们的测试脚本更加的有档次,效率也会更高,或者说也会更加易懂,我们来看一下下面这个方法: 计算从1加到100的值. 估计我们做测试的,很多人第一眼想到的就是用一个for循环,然后sum +=i; 这样就可以得出值了,有的人还可以再加以改善后,搞成一个通用的方法,可以计算任何连续块的值.这些都是OK的,都可以得出结论,但是,换个思路,如果用到

用C++写程序的一些感悟

前言 近期使用C++有了一些心得很感悟,这里整理一下. 心得1 如果只会使用LabVIEW写程序,还想要进一步深入程序设计,一定要学习一门文本语言. 什么是会用LabVIEW 会用是个比较笼统的概念. 只要能写一个简单运行的程序叫做会用 能写稍微复杂的仪器控制程序叫会用 能写大中型测控程序也叫会用 这里我认为至少能写稍微复杂的多个仪器联合控制程序,完成基本的测控系统应用叫做会用LabVIEW,用时间评估来说,使用LabVIEW作为主要编程语言至少工作2年以上. 什么是深入程序设计 写LabVIE

面向过程写程序完全要不得

第一次写ATM的程序,在程序主体的基础上,用面向过程的思想去不断的补充完善功能,写到后面,程序完全不能控制,为了实现补充的一个功能,需要补充很多的代码,而且多写出来的代码,仅仅是为了对补充的功能进行补充,且与原程序很不容易关联起来,导致程序根本无法受控制,条理不清晰,程序流程几乎不容易受控制, 写到后面根本感到力不从心,所以从根本上来说,不能用面向过程的思想去编写程序 函数就是具有特定功能的一段小程序,将一个具体的功能的实现 用函数的形式表现出来,在需要使用的时候就调用函数, 在一个程序中肯定是

用CIL写程序:这个叫“慕容小匹夫”的类

前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样,摸键盘的手都已经有点生疏了呢?所以,为了不忘却程序猿的使命,不冷落程序猿最好的伙伴--键盘.匹夫决定来写<用CIL写程序>的最新一篇文章.可是写什么主题呢?之前匹夫也介绍过CIL其实也是面向对象的,所以寻思着大过年的,不如就写一个类,一个用来抽象化小匹夫的类吧,既可以介绍下小匹夫,小匹夫也可以借

用CIL写程序:从“call vs callvirt”看方法调用

前文回顾:<用CIL写程序系列> 前言: 最近的时间都奉献给了加班,距离上一篇文章也有半个多月了.不过在上一篇文章<用CIL写程序:定义一个叫“慕容小匹夫”的类>中,匹夫和各位看官一起用CIL语言定义了一个类,并且在实例化之后给各位拜了大年.但是那篇文章中,匹夫还是留下了一个小坑,那就是关于调用方法时,CIL究竟应该使用call呢还是应该使用callvirt呢?看上去是一个很肤浅的问题,哪个能让程序跑起来哪个就是好的嘛.不是有一句话:白猫黑猫,抓到耗子就是好猫嘛.不过其实这并不是一

【总结】学用python写程序

工作多年,因为项目需要,用过的编程语言不少了:c/c++.java.c#.汇编.vb.objective c.apple script.不过主要使用的还是c/c++,一方面是用得久了,习惯了.另一方面,思考问题的方式已经偏"底层"了,不想内存.不考虑指针,似乎就浑身冷汗,无法编程了.连带我在面试一些小朋友的时候也会不自觉的问一些底层的知识点.再有一方面,就是想要程序的运行效率更高一些,个人一直以写高效的(算法)程序为目标,而c/c++是除了汇编之外的,能写出的运行效率最高的编程语言--