学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?
得到经验和浪费时间终归是两回事吗。
我是个完完全全自学入门的人,现在虽已经进入科班,但是我认为经验还是可以分享给想自学编程的大家
的。当然如果题主是想要为了信息学的竞赛学习,那我觉得这个答案就不适合你了,你应该选择更为系统,更为针对,强度也更大的训练方法。
1.
大多数人学习编程最早的懊恼就是不明所以的“烫烫烫烫烫烫烫烫”,虽然基本教育的节奏都是从伟
大的C语言开始,但是作为一个早早自学编程的人来看,C语言作为入门语言是很容易打击人的(教材本身的质量也是一个因素),所以如果是自学入门的话,不妨学一学的入门容易规则简单的语言培养语感和基本素养,例如PHP、VB这样的东西,可以很快做出一个可以看可以用的东西,是很有成就感的,有了自信就自然而然得会想深入的提升自己了。
2.
自己当年中学的时候做论坛,那时候流行的是Discuz!,为了做好玩的互动插件学的PHP。当时的感觉是,自学一门编程语言并不轻松,在会的人看来容易的概念其实不容易灌输给完全不会的人。最开始自己就是啃书本,上课都不记笔记的我把学习到的东西规规整整地记在本子上,直到把基础的语法和语言特性都了解了才停止。不一定像我这样,但是作为一个一清二白的菜鸟,一定要让自己有一个把基础的基础看下去的驱动力才可以。
3.
实践是检验真理的唯一标准。实践对于初学者而言非常重要,但是C语言课本上的实践大多是一些就事论事,针对知识的题目,面对一个控制台程序,其实做完了……过几天也不会觉得这个有什么意思,所以我认为一定要尽可能的尝试去做一个可以用的东西。学PHP做个登陆页面呀~学VB仿个Win计算器呀~学Java做个扫雷~总之做出能够对除你之外的人都能有一点点兴趣的东西,对自己是很鼓舞的。在这方面,C语言这种,对于初学者做图形界面比较不友好的语言……主要的问题就是不会让你产生那种真正解决问题的成就感。
4.
最开始的实践是一种拼凑,因为知识的不牢靠,但是需要解决的问题对自己又是如此的庞杂,所以那个时候的代码都是以能解决问题为主,而不是以好的方法解决问题为主。现在回过头来看当年写过的论坛家族,论坛宠物中心,从外观上讲确实是当时一流的,但是背后的代码着实惨不忍睹。不过对于初学的人而言,能够利用现有知识达成目标已经是竭尽全力了。那个时候的编程没有精雕细琢,就是为了实现而实现,也不管有多少if套着if,甚至变量名我都能起成$if。不过我必须承认的是,没有那段经历,我可能不会如此的喜欢编程。当有人使用了你的成果,不管是对他提出建议还是提出赞美,对于一个尚未破壳的菜鸟而言,都是很棒的感觉。说实话,作为初学者,敢写代码,就是个里程碑了。
5.
历史和人的感觉是很像的,当你的代码写得多了的时候,你自然就会觉得写得不好看。照现在的话讲,那些代码一点都不优雅。作为一个逼格满满的人,完成任务已经不再是一个追求,当Ctrl+C/V成了编程的必备步骤的时候,你自然而然的就会思考了:是不是可以不这样做?这是一个重要的过程,你会想要提升你代码的执行效率,你会想减少查询数据库的次数,你会想用轻便的代码实现想要的功能……当你步入这个阶段的时候,恭喜,菜鸟终于入门了。
这是三个大坑,算法优化、数据库查询优化、代码复用。
你得心甘情愿跳进去,再慢慢往外爬。
5.
看上去我好像在抬高PHP一样,其实不是这个意思。我只是觉得作为一个可以立竿见影的入门语言,它是很合适的。进入大学计算机专业后,我和同学一样,一起学习C语言,我没有接触过这门语言,但是我却比周围的初学者们更快更好地接受了它,即便是像内存、数据类型、指针等从没有接触过的概念,我也比别人更快的认识清楚。我觉得这一方面是因为编程所带来的学习能力的提升,另一方面也是因为我自认为我不是菜鸟所带给我的自信和动力。我当时做了很多出格的事情,当讲课、教科书都在用VC的时候,我执拗的使用VS2010,因为我觉得这个用户体验好。在课设说明书还在按照Turbo C说明图形界面的时候,我却找了个能在VS下使用的仿造的图形库EasyX。其实人都是追求美的,老师也不喜欢你开个DOSBOX滚动翔一样的Turbo C给他演示。擅用和检索现有的工具和资源,是这个时期我最大的收获。
当然,这里也挖了一个大坑,用户体验。
前几天知道,我的学弟学妹们都放弃Turbo C了。
6.
在学校的学习过程是这样的:C -> C++ -> Java。
C++和C截然不同,作为一个拥有面向对象特性的语言,它带给我们很多新鲜的概念。尽管初次见面的时候我们彼此都如此羞涩,谁都看不懂谁。在学习C++的时候,其实我并没有提起多大的劲头,只是觉得STL很好很方便,在OJ上刷题的时候能比C省事不少。不过之后看到一本国外的关于物理引擎的书,便又是提起了12分的兴趣看了看。那本书终归我是没有看完,不过只看一部分我便能感受到自己的肤浅——原来类是这么用的啊。
很久之后我才知道这是一个高级坑:设计模式。
7.
之后数据结构的课程设计,按照套路是要用Java做UI的,但是Java的IDE在我的电脑上一直表现不佳,加上调试时候的种种不顺畅,使得我我对Java做窗体程序好感不佳。于是我想起了初中的VB,随后又联想到了它的同门C#(求别问怎么联想的=。=),那种拖拽做界面的爽快感……经过我的推广,班里最后只有一人用Java做UI,还有另外一个人用的MFC。这个其实是想说,我这个人比较懒,所以喜欢找更好的解决方案,存在就有存在的价值,短短5天,所有人都可以用C#做出一个好看的界面,而Java搞得很麻烦又不好看。这不是在谈优劣或是投机取巧,而是在谈生产力、效率。我训练的人可以5天上岗,做得比你训练一个学期的人还要好,那这就是价值。
8.
其实一路走来,站的越高,自己就越容易被颠覆。
当PHP写代码觉得原始的时候,框架这样的东西就会跳在你眼前打脸。
当WinForm程序做起来感觉到代码混搭的怪异的时候,就发现其实还有个WPF。
当觉得Java臃肿性能堪忧的时候,高级的Web技术又会颠覆你对Java的偏见。
……
学习编程的人需要这样一个自我认知和自我提高的过程,老实说,我觉得这其实不算弯路,这可都是经验呀。这些所谓的弯路是你只要踏上这条路就必走不可的,就像是宜家的步道设计,人家设计好就是要你走遍全程。因为这是一个过程,学习过程上的弯路是宝贵的。
至于我之前所说的学习方法上的弯路,大多是指教材选择、训练方法上的弯路,这些弯路可以通过前辈的指导来避免,我觉得这种弯路走上了,就是浪费时间。现在时间这么宝贵,我们都要讲效率的。当大家都说谭老的书不好的时候,就不要选这本书了。当大家都说某些习题没有用的时候,就不要去做了。学会选择,学会甄别,学会找到适合自己的方法,这才是最重要的吗。 2/2 首页 上一页 1 2
更多阅读
学习英语的心得中王完小陈沙沙
学习英语的心得中王完小 陈沙沙英语学习现在已经成为现代人工作、生活中的一个重要组成部分。英语是与人沟通的桥梁,是提高工作能力的工具,是国际交往的纽带。因此,学习英语对个人,对企业,对社会都是一种进步的表现。作为英语学习的爱
吴劲松:做多的过程中多一份警觉
周四大盘冲破4100点,顽强收出连续第六根阳线。个股涨多跌少,盘面一片平和景象。但是,不和谐的一幕仍然存在,即价量背离明显,导致目前尚未能确认新的主升行情来临,反而提示投资者做多的过程中多一份警觉。 从盘面观察,大盘走出六连
转载 管理一个团队的过程中,如何让队员们形成良性竞争呢 良性竞争的例子
原文地址:管理一个团队的过程中,如何让队员们形成良性竞争呢作者: 无尽的任务2011很多人都面临着如何带好自己团队的问题,我把自己的一些做法写出来,大家共同讨论交流。1:熟悉的过程在这之前,人员一般由你来申请或者上级指派,那么你肯定已经
大学生创业陷阱 创业加盟的过程中,最常遇到的创业陷阱有哪些?
对加盟者而言,在创业加盟的过程中,最常遇到的创业陷阱有下列六项: 总部吹嘘夸大连锁店数编辑本段 许多总部为了招募加盟店,往往会在店数上灌水,宣称自己的加盟店高达多少家,但家数是否真的有如宣称的那么多,外界往往不得而
炮灰成长史 成长的过程中我们不是“炮灰”
一个公司总是要从小公司做起,在做的过程中公司也要学会成长的,有的企业长大了,因此,我们记住了它们,也有些企业在成长的过程中夭折了,我们淡忘了它们。我相信,在伴随着企业成长的过程中,肯定会有很多员工也在长大。对于这些成长或是正在