用笔者的经历现身说法,编程的确是一件需要极大、极大耐心的活儿。加上使用的是Emacs编辑器(谢谢老顾的建议和他的耐心:D),会犯更多的小错误,解决起来也更加令人烦恼。耐心很重要。对于第五条,也比较赞同,笔者已经习惯了遇到错误去百度一下错误代码,同时会浏览一下相关的错误例子以及原因,学习很快。最后一条同样重要,周围的很多同学,遇到一点小问题就跑到论坛问老师,个人很反感。我想:在现在这个阶段,只要你想,应该没有你不可能独立解决的问题。
每个人刚开始的编程技术都不理想,所以我们决定列出一张清单,写上大家都能接受的理由,还有提高编程能力的建议。
1. 编程适合所有人吗?
开门见山地说,编程并不适合所有人。它比较适合那些有耐心去解决难题,改变生活的人。
我们就以一个16岁的孩子克里斯蒂安·欧文斯(Christian Owens)为例子吧,他追随他的英雄史蒂夫·乔布斯,从事自己喜欢的工作。他从7岁开始接触计算机。3年后,他获得一台Mac电脑,随后开始自学网页设 计。2008年,他建立了自己的公司。 这是一个不少人都知道的小网站Mac Bundle Box。该网站符合苹果的设计指南和风格,在两年的时间中赚到了人生的第一个100万美元。
他成功的唯一要素,就在于他做什么事都有耐心。所以,如果你发觉自己缺乏某些激励因素,或许那就是你无法取得成功的原因了。我继续研究并最终发现,金钱推动着很多人勇攀高峰。
克里斯蒂安·欧文斯
2. 编程是一项需要花时间才能掌握的技术
像其他东西一样,编程本身就是一门艺术。是的,你最初可能会遇到麻烦,但是如果你坚持下去,你的编程技术将会得到提高,你会成为一个干劲十足的程序 员。很多人被书呆子、白痴、天才儿童,甚至是编程本身吓到了。不用害怕,无视他们,把精力集中在于你的技术有关的事情上面。我在大学刚开始学习计算机时并 不是很了解编程;在我认识编程之前,我是一名敢于提出问题并面对挑战的程序员。
3. 他们的观点错误
当人们开始抱怨不懂得传授技术的专家、助教、蹩脚的编译器、集成开发环境,甚至操作系统的时候,我已经习以为常了。只要你不断的抱怨,你的编程技术只会原地踏步。所以,请用积极的态度面对问题吧。
你知道“梦幻游乐园”游戏几乎都是用汇编语言写程序吗?想想看吧。有志者,事竟成。
4.我一点都不理解抽象概念
编程需要你创造性思考(think outside the box)。当你是初学者时,你会遇到算法、数据结构、协议,还有一大堆让你摸不着头脑的东西。
慢慢来,无论开始学习什么,都要从点滴做起。如果你不了解维基百科,Google一下,或者问那些知道的人(顺便提一下,这是我学习新事物的秘方)。试着弄懂一些例子,直到你完全理解。
如果你连基础知识都不知道,你又怎么能弄懂更高深的问题呢?
5.等等,我们可以借助Google
当你在调试代码时遇到困难,或者不知道如何解决某些问题时,Google是你最好的朋友。由于代码抄袭的原因,我并不鼓励借助Google去解决问题。如今我支持这种做法,是因为有很多人也许碰到过相似的问题。你猜怎么着!其他人在Google上面帮助他们解决问题,并提供解决方案。
就这么做吧。每个人都这样,因为这是最明智的办法。
所以,如果你忘记怎么去生成一个随机数,你不理解一个程序错误,或者你只不过是解决不了某些问题,那就Google一下吧。如果你想更进一步了解如何掌握搜索技巧,请参见国外开发人员 Andriy Solovey 在他的博文《如何使用搜索技巧来成为一名高效的程序员》。
6.认真的规划和设计?对,需要未雨绸缪。
在我帮助他们编程之前,我会先看看他们的算法。如果他们无法提供的话,我会让他们先把算法写出来,然后他们就会知道为什么他们的程序不能运行了。
所有的算法都是一个框架,是一个程序的根基。很多初学者都不去设计算法,只是根据他们的想法去编程。当问题发生的时候,他们就迷失了解决问题的方向,程序变得难以调试。
所以下次,省下你自己的时间,把编程的规划写在纸上。直到你知道如何去解决问题之后才动手编程。我是这样做的,这个方法非常奏效。
你不希望你的程序看起来像个蹩脚的家伙吧。所以你在编程之前得好好地规划一下算法,未雨绸缪。这也是成为一名优秀程序员所需要知道的15件事之一。
7. 我的程序有一大堆错误!!我该怎么办??
冷静下来,放松点。错误是难免的,而且出现的频率比你想象的还要多。错误发生的时候,往往伴随着有行数、简单的说明,有时候还有一条建议。返回去尽力弄明白哪里出错了。如果还弄不明白,那就把出错信息拷贝复制粘贴到Google中。大多数时候都能找到相应解决方案。
另外我们可以试试以简短片段的方式编码和频繁地编译。这个方法可以保证你不用关注所有你不理解的错误提示信息,并且将提高你的编程速度。
8. 我不理解编程语言、语法、或者编程环境
好吧,如果你不理解这些东西,那确实是一个大问题。在我的高级设计培训班,我们正在用Ogre3D语言设计一个视频游戏。我跟你说吧,这不是最好的经历,因为我们从课程一开始我们一直在编程,从来就没有很好地认识编译环境。我们终止开始了8周的项目,不得不花费两个星期,平均每天8小时的时间去做这件事。最后几天我们花了超过14个小时的时间,同时上了3-4节其他课程……
这段经历教导我们在开始编程之前,要预先花时间去真正理解与编程语言相关的所有细节,语法、概念和编译环境有关的所有东西。这样做,节省的不仅是小时数,而且是天数。
9.但这个问题好难!
看看我是如何解决这些难题的!!
你有程序算法吗?这是你的第一个问题。如果你还没有解决,那就休息一下吧。人们在离开电脑时,往往会想出怎样去解决问题。我试过很多次在睡梦中制定出问题的解决方案。很多时候一个程序员需要的全部东西,只是一些新鲜的空气,甚至一种娱乐而已。这能让你的思维焕然一新,可能会让你看到之前你所看不到的东西。
甚至有时候,解决问题的最好办法需要一个优雅的环境。所以下次你在尝试为一个IPhone游戏提供费解的主意时,试试Doodle Jump这款游戏吧。你所需要做的只是跳跃运动,别人会设法卖出五百万张这款游戏光盘。
10. 我在等我的朋友来解决这个问题
为什么一些人编程不怎么样,这也许是上面所提到的之外的头号原因了。如果你所做的就是等你的伙伴来帮你解决问题,那么你将学不到任何东西。很明确的说,他们花了时间去试着解决问题,不过最终,经验才是解决问题的关键。
所以停止去依赖别人,以及学习如何独立做事。如果你无法这样做,或许就是你为什么不能成为一个大人物的原因了。(也许你有幸成为像Mark Zuckerberg那样的人)。
感谢Tony、Jay、 Chris、 William、Miguel、 Al、 Roby、Joseph、 Felicia、Benjamin、Jesse、 Pierre和Erick给出的建议。
相关推荐
《程序员编程艺术系列之程序员编程艺术》是一本深入探讨编程技巧和思维的艺术性书籍,旨在提升程序员的专业素养和代码质量。编程艺术不仅关乎技术的掌握,更在于如何将技术运用得巧妙、优雅,以实现高效、可维护的...
标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...
程序员编程艺术pdf可编辑,教你如何将编程作为一门艺术
发那科机器人程序员操作编程培训教材
在C++编程语言中,模板是一种强大的特性,它允许程序员编写与数据类型无关的代码,从而达到代码复用的目的。模板可以应用于函数和类,分别称为...通过对模板的深入理解和实践,程序员可以写出更加高效、可维护的代码。
5. 并发编程:由于C语言在系统级编程上的优势,高级程序员编程指南应该包括对线程同步机制的讲解,如互斥锁、信号量、条件变量等。 6. 性能优化:程序性能是高级程序员必须关心的问题,书中可能包含性能分析、算法...
《编程之道》是一本专为程序员打造的书籍,它深入探讨了编程世界中的哲学与实践,旨在提升程序员的技能和理解。这本书不仅涵盖了技术层面的知识,更包含了如何成为一名优秀的程序员所必需的生活态度和思维方式。书中...
【程序员笔记 编程体会】是一份集合了个人编程经验与理解的宝贵资源,旨在帮助提升程序员的编程技能和问题解决能力。这份笔记涵盖了作者在编程实践中遇到的问题、解决策略以及对各种编程概念的深入剖析,是提升电脑...
对于已经熟悉C或C++的程序员来说,学习Java编程可以拓展其技术栈,增强其在软件开发领域的竞争力。下面将详细讨论C++与Java之间的异同以及如何从C/C++过渡到Java编程。 首先,C++是C语言的一个扩展,增加了面向对象...
包括人工智能、大数据、区块链、物联网等相关领域,随着技术的发展,词典也会不断更新,以满足程序员对新兴技术的学习需求。 总的来说,《程序员编程最需要的计算机词典》是程序员提升自身技能、扩展知识视野的重要...
【标题】"程序员鱼皮的编程宝典"是一份由知名程序员鱼皮原创的编程学习路线,旨在为编程初学者及求职者提供一套系统性的学习路径。这份宝典涵盖了丰富的经验分享、技术知识、学习资源以及实用的学习建议,旨在帮助...
### 游戏程序员编程方向知识点解析 #### 一、游戏程序员学习方向概述 在游戏开发领域,游戏程序员扮演着至关重要的角色。他们不仅需要具备扎实的编程基础,还需要对特定的技术领域有深入的理解。根据提供的部分...
本文档为程序员编程艺术系列:http://blog.csdn.net/v_july_v/article/category/784066,的PDF电子版,它最初由朋友吴超和花明月暗于04.03制作,而在此之前,你在任何一个地方都找不到它。 特此分享,完全免费0积分...
程序员编程艺术第一~三十七章集锦.pdf
《C/C++程序员Java编程》是一本专门为已经熟悉C或C++语言的程序员设计的书籍,旨在帮助他们平滑过渡到Java编程环境。这本书详细介绍了Java语言的特点、语法以及与C/C++的不同之处,旨在让程序员能够快速掌握Java的...
黑马程序员,C++核心编程
程序员编程艺术第一~二十七章集锦与总结(教你如何编程)(by_July)定稿版.rtf
本书通过对大量程序实例的分析,深入浅出地讲解了C/C++/C#语言基本知识、编译方法和程序设计技术,并给出了众多的编程技巧与应用。全书首先介绍了C语言的基本知识,对C语言编程的实际方法、技巧,以及常见的问题和...
对于C++程序员来说,掌握经典编程经验和技巧是提高编程水平的关键。这本书名为“C++程序员经典编程经验”,显然是为了帮助开发者深入理解和运用C++,提升他们的编程素养。 C++语言的特点包括面向对象编程(OOP)、...