给初学编程的人的新年干货

给初学编程的人的新年干货

一、这多东西啥时候能学完? 现在IT新技术日新月异。就常用编程语言而言,有c/c++、汇编、java,c#、Python等;操作系统平台有unix /linux,windows系列;开发工具有VC、visualStudio2008、Eclipse、NetBeans等;每个大平台下,还有很多的 的方向:如网络、数据库、脚本、HTML、动态网站、游戏开发等;有人还在学Dreamweaver做网页、Flash做动画、Photoshop做美 工、3DMax做三维动画…………是的,我们什么都想学。恨不得把所有的知识统统都塞到肚子里去。看到什么,想学什么!

今天看这VC的书,明天又看Java,后天又看C#,东搞西搞!看到别人做网页。自己兴趣了来了。好,学html语言,我也做网页,听说做 网页要会“网页三剑客”,所以又想学Dreamweaver、Flash。后来开始知道有JSP、PHP、ASP.NET做动态网站这玩意儿。也想去学, 学学学…… 这是几乎所有在校大学生的通病。但是,这不是坏事,甚至可以说是好事。说明了你“求知欲”高!总比那些,生活没有激情,整天知道泡妞、上网、打游戏、混日子的强。 但是如果你今天想学这个,明天又想学那个。这样你就能永远徘徊在技术的门外。很多人都有过或者正在经历这样的苦闷日子:总觉得有“太多东 西”要学了,然而人的精力是有限的,总有永远学不完的感觉,所以心理特别急,整天惶惶不可终日,不知道先要学哪个,一会儿拿起这本书,一会拿起那本书,折 腾了几个月,突然发现自己什么都没有学到…… 每一个大方向如果没有上几年的学习,很难能学习出什么来。但程序设计的最根本的东西是相同的。所以我们学习要抓根本。俗话说:通一理,融百里。 学程序设计就像习武一样,如果内功学的好,其他功夫就很容易上手。君不见《倚天屠龙记》中的张无忌练了“九阳神功”8年,练“乾坤大挪移”只需12个时辰吗? 习武之人,谁不想在“江湖”上扬名立万,谁不想成为万人敬仰的大侠?大侠之所以能成为“大侠”,当然有他们的看家本领。狄云的“神照神功”,金世遗的正邪融合的“乔北冥内功心法”,张无忌的“九阳神功”,段誉的“六脉神剑”,令狐冲的“独孤九剑”,哇,太多了… 古人历经千辛万苦才能找到这些“武功秘籍”。我们现在这些后辈,比起古人来说:简直太幸运了。去书店,各种各样的心功心法,剑法,拳法,应 有尽有,看得你眼花缭乱…你选什么呢?今天练“六脉神剑”几式,明天去学“降龙十八掌”几招,后天又去练“发暗器”,这样何时才有个尽头呢?你说,你 什么武功都会,但是“形似而神不似”,不得要领,不够火候。一上擂台,就被别人一掌打趴了。试问哪个软件公司敢要一个号称任何编程语言都会,而是每种语言 只能写出个“helloworld!”的程序员,你不被人家扫地出门才怪。 二、学**还是学**更有前途? 看了上面的话,有的同学已经开始烦了,“知道了知道了,不止一个像你这样的所谓的‘老前辈’跟我说过‘学什么都一样,思想才是最重要’的大 道理,可是你们站着说话不嫌腰疼呀,现实是有很多技术需要学,比如做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!到底学哪 个有前途呢?我必须要选择一个有前途的,选错了就麻烦了。” 其实像“学**还是学**更有前途”的话没意义,因为“选择JSP还是选择PHP”的前途的差别不像“选择英语还是选择日语”的前途差别那 样大,不存在“选错方向”的问题,因为都是相通的,你也不能保证你毕业以后搞的就是你学的那个方向,更不能保证你靠你学的这点东西就能吃一辈子。比如我上 大学的时候一直在钻研是Delphi语言,可是毕业校园招聘的时候我照样在Java职位的考试取得了第一名,而且工作以后经过简单的学习就掌握了Java 语言,并且后来还写了三本关于Java语言的书;再如我毕业后两年多的时间一直在用Java开发,后来公司要做一套基于.NET的产品,我只用了一个礼拜 熟悉了.NET体系以及C#的语法,然后就开始进行开发。 不过就像上边说的“做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!”这个问题是非常实际的,因为只有先学一 个才能深入这个方向,把这个方向学通了才能想以后“一通百通”。因此我的建议就是学校教过什么语言,你就继续深入学习这么语言,而不要去问“这么语言有没 有前途”这样的傻问题。尽量不要去学一门所谓“有前途”的新语言,因为你去学一门新语言就要把很多精力耗费在语言、语法本身,而耽误了编程的实战,而以一 个已经学过的语言来学习的话,起码语法本身不用再去学、开发工具本身不用再去熟悉,只要研究怎么使用这门语言开发有用的程序就ok了。比如大部分同学都学 过C语言(有的学校直接开了C++的课,但是C++的面向过程编程部分还是C语言),所以咱们就开了《C语言也能干大事》的课程,让同学们把精力放到学以 致用上,而不是学“有前途”的新语言上,这也是这个思想的一个体现。 举几个例子。咱们如鹏网的《计算机专业职业发展测评系统》是我用PHP开发的,但是在这之前我从来没写过PHP程序,但是我以前写过 JSP、ASP的程序,因为写网站程序的原理都是相通的,只是语法不同而已,因此我只用了几个小时的时间熟悉了开发PHP用的工具并且快速浏览了一下 PHP的语法,然后用半天时间就开发出了这个测评系统。想像一下一个整天在今天学JSP,明天学ASP,后天学PHP,大后天仰天长叹“到底学哪个有前 途”的人能用半天时间学会一门新语言吗? 我大学时有一个同学,他看我当时Delphi学的比较好,写了很多程序,他就说他也想学软件开发,让我教他Delphi,可是我们专业前一 个学期已经开了PowerBuilder的课,因此当时我就建议他还是继续深入学习PowerBuilder,用PowerBuilder写又实用价值的 东西,而不是像上课那样写HelloWorld的程序。当时Delphi还是如日中天的流行的编程语言,而PowerBuilder则市场占有率比较小, 他就说不想继续学PowerBuilder,因为PowerBuilder没前途,我就给他讲了“一通百通,从自己最熟悉的入手”这个道理,然后他就踏实 的深入研究PowerBuilder起来,到了毕业的时候他已经能用PowerBuilder写非常复杂的程序而且还学习了用PowerBuilder写 Web程序。毕业后没多久就应公司的要求用Delphi写程序,他只用了不到一周的时间学习了Delphi,然后就写出了一个符合公司要求的系统,当时他 就给我打电话向我报喜。前一阵子我听说他已经开始指导一些新员工用Java开发一个中型规模的企业级系统了。可以说他的成功就得益于“一通百通,从自己最 熟悉的入手”这个原则。 总结一下,不要管“哪门语言好就业、有前途”,因为那些“好就业、有前途”都是纸老虎。尽量不要学新语言,从自己最熟悉的语言入手,深入研究,出山后你就是被用人单位争抢的红人。 三、企业里都需要什么方面的才能? 这个要视用人单位的要求而定了。你现在还没有毕业,也不知道未来要面对什么样的岗位。因此建议大家在上学期间不要偏科,所以的课程都要好好学,学好专业课,培养自己的“内功心法”,然后进入一个大公司,那么大公司自然会为你安排一个人才培养计划,在工作的环境中学习就更有目的性。 学什么最容易 由于现在的快速开发工具的不断推出,使得软件开发越来越容易,进入软件开发的门槛也越来越低。很多人在IDE工具的诱骗之下,快的十天,慢的半个月就可以进入所谓“程序员”的领域,成了一个所谓的“程序员”。这对于IDE提供商来说是乐得合不拢嘴的事情,但是对于软件来说却是一个无形的打击。由于快速工具的盛行,很多人把开发看作小菜一碟,特别是很多在校的大学生,都认为现在教的内容一旦出了学校都已经是落伍,无形中产生了讨学的心理。 今后的软件开发逐渐趋于两极化,一方面有越来越多的人将从事简单的重复性开发,而且这部分的开发难度会逐渐降低;另外一方面核心部分的开发会越来越复杂,这部分的入门所涉及的知识内容会逐步增加。所以对于今后希望从事软件开发的同学们,需要好好的努力学习,学校的东西会有他们的用处,只要现在把基础打扎实了,即后你们在软件的领域会有很好的机会,不要盲目的放弃学习的机会。 有什么速成的办法没有? 有一种蛾子名叫“帝王蛾”。帝王蛾的幼虫时期是在一个洞口极其窄小的茧中度过的。当它的生命要发生质的飞跃时,这天定的窄小通道对它来说无疑成了鬼门关。那娇嫩的身躯必须拼尽全力才可以破茧而出。太多太多的幼虫在往外冲杀的时候力竭身亡,不幸成了“飞翔”这个词的悲壮祭品。 有人怀着悲悯恻隐之心,企图将那幼虫的生命通道修得宽阔些。他们拿来剪刀,把茧中的洞口剪大。这样一来,茧中的幼虫不必费多大力气,轻易地就从那个牢笼里钻了出来。但是,所有因得到救助而见到天日的蛾子都不是真正的“帝王蛾”,它们无论如何也飞不起来,只能拖着丧失了飞翔功能的累赘的双翅在地上笨拙地爬行。 原来,那“鬼门关”般的窄小茧洞恰恰是帮助帝王蛾幼虫两翼成长的关键所在。穿越的时刻,通过用力的挤压,血液才能顺利送到蛾翼的组织中去,惟有两翼充血,帝王蛾才能振翅飞翔。人为地将茧洞剪大,翼翅就失去了充血的机会,生出来的帝王蛾便永远与飞翔无缘。 没有谁能够施舍给帝王蛾一双奋飞的翅膀。不惧怕独自穿越狭长墨黑的隧道,不指望一双怜恤的手送来廉价的资助,将血肉之躯铸成一支英勇无畏的箭镞,带着呼啸的风,携着永不坠落的梦想,拼力穿透命运设置的重重险阻,义无反顾射向那寥廓美丽的长天…… 让一个“帝王蛾”速成的方式就是帮它把茧剪开;一个人学一门技术的速成方法就是不学那些“没用”的东西,直接告诉他最终结论和操作方式,但是很多东西是在探索中、学习中才能领悟的,很多人在钻研一个技术难题的过程中查资料、看书、求证,在这过程中不仅锻炼了自己思考问题的能力,而且夯实了基础知识,最重要的是在探索过程中收获了很多意想不到的新东西,有很多朋友在钻研一个问题的时候经常能无意中的学会很多新东西。 上山的“速成”方法是直接坐缆车上去,可是你会比那些登山者少看到很多路边的风景。那么你是愿意做一个掌握“速成”方法的人,还是愿意有机会看看路边的风景呢? 成功的秘诀 古希腊大哲学家苏格拉底,思想深邃,思维敏捷,关爱众生又为人谦和。许多青年慕名前来向他学习,听从他的教导,都期望成为像老师那样有智慧的人。他们当中的很多人天赋极高,天资聪颖者济济一堂。大家都希望自己能脱颖而出,成为苏格拉底的继承者。一次苏格拉底对学生说:“今天我们只学一件最简单也是最容易的事,每个人都把胳膊尽量往前甩,然后再尽量往后甩。”苏格拉底示范了一遍,说:“从今天起,每天做300下,大家能做到吗?”学生们都笑了,这么简单的事有什么做不到的? 第二天,苏格拉底问学生:“谁昨天甩胳膊三百下?做到的人请举手!”几十名学生的手都哗哗地举了起来,一个不落。苏格拉底点头。一周后,苏格拉底如前所问,有一大半的学生举手。过了一个月后,苏格拉底问学生:“哪些学生坚持了?”有九成的学生骄傲地举起了手。 一年后,苏格拉底再一次问大家:“请告诉我,最简单的甩手动作还有哪几位同学坚持了?”这时,整个教室里,只有一个学生举起了手,这个学生就是后来成为古希腊另一位伟大哲学家的柏拉图。 如果说柏拉图的故事太过遥远,那么就再给大家讲一个发生在眼前的故事。 一次英语课上,老师带来300句高考精华句子,并且许诺说:如果能够把这些背诵得滚瓜烂熟,高考成绩一定会提高。大部分学生以为又是老师哄学生的话,但身为有一个学生却有着迫切提高成绩的压力,对老师的话铭记在心。回去后,他把这300句话当作至宝,先翻译成中文,又翻译成英文,发现几乎每个句子都程度不同地存在错误,或时态、或单词、或结构出现错误。他把这些知识整理在一个本子上,重点记忆。随后的一个月,他仿佛吃了兴奋剂,拼命地背诵和默写这300句话,在付出一个个的清晨和夜晚的时光后,终于取得丰硕的成果,他能够一字不差地默写出这300句话。从此,这300句英文成为他的绝技,使他的英文成绩很快得到了提高。这个人就是现在留学培训的航母——新东方的掌门人俞敏洪。 有如鹏网的同学问我“学计算机有没有什么速成的办法”,我想说的是最好的速成的方法就是“坚持”。一切其他的速成方法学出来的东西都太容易,“越容易得到的东西越不值钱”这是一条永远不会变的价值规律。越是厉害的武功,越是难练,需要的时间越长。很多人,都是中途退场了。 坚持是最容易的,因为每个人都可以做到;坚持又是最困难的,毕竟没有几个人能够坚持下来。坚持下来的人就是成功的人。 最后一句话:切务浮沙筑高台,练从难处练,用从易处用!无速成,唯有坚持! 同学们千万不要犯大部分人都犯的错误: 下载了一硬盘的视频教程、电子,几乎没看过,即使看过也是看看就算了,根本没用心看过,更别说跟着老师进行代码练习。 光down不看是浪费硬盘和带宽 光看不练是浪费时间和青春! 不要光下载不看,不要光看不练! 错误认识1. C/C++太老了,过时了,平时用得很少,现在流行都Java、C#等等。 解惑:不要动不动觉得什么东西过时了,COBOL还有OO版本面世,还有FORTRAN,LISP,好古老的语言吧,现在还用得很广呢。杨中科老师经常提醒我们“一切语言都是纸老虎,一通百通”,学校已经开了C/C++的课,并且想继续深入学习编程,那么就继续使用学过的语言来学习,不要再去学一门新的语言。等把C/C++弄熟了以后,回头一看,相信你也能像杨中科老师那样“半天学会一门新语言”了吧。 错误认识2.入门要从OO开始,培养用OO方式思考的习惯。 解惑:初学者一入门便摆弄Java、C++等很容易形成误解,似乎OO=Java,C++…。一切编程语言的根本都是面向过程的,Java、C++等语言也是支持面向对象特性的面向过程的语言。面向过程就是if……else……、while、for这些东西,Java、C++等语言中难道就没有这些语句了吗? 过程式语言(或者说结构化方法)的精髓不会消亡,OO里面也不可能摆脱掉一条条的语句、函数调用,结构化方法还是需要提倡的。OO方法不是那么容易学会的(OO语言的语法弄得很熟练不代表你懂OO),而结构化那套方法,自个写个千把行的程序就很能体会了,我是说写个实用点的东西,比如试着自个实现一些数据结构和算法,写几个小游戏等。写个一千行Helloworld等于没写。 我觉得方法是实践中体会出来的,不是看看书就能学会的。过程式语言的代码一般比较简练,我们编程序最终的目的是要解决问题,是要计算,是要获取信息,不要被OO,设计模式等迷糊了。 错误认识3.过程式语言弄久了,很难转入OO的思维模式 解惑:我以前也没有深想过这个理由,不过时间久了,发觉自己不过是把数据和方法集中在一起而已,看着方便,其实有很多不合理的东西,这里头就需要OO的理论指导了,还是需要时间来体会。我相信有很多用OO语言的人也不过是在框架里头添添代码,调用来调用去而已,把人类当作数据和操作的打包器。 个人觉得只有在用过程式方法做了十来年,编码上十万行后才有思维定势,难以习惯用OO的眼光看待系统,然而这个转变,我仍觉得比改变一个人的恶习容易许多。OO方法不是学了个Java,C++等就能掌握的,需要实践,需要时间。过程式语言也容易培养一个人严谨的做事态度,比如用汇编,C等写代码,没有命名空间、没有一大堆类库,没有模板、没有异常,你要花很多心思处理一些细节,比如警惕数组索引越界、悬挂指针、野指针等等,请不要觉得麻烦,这个就是计算机啊,底层就是这样的啊。 错误认识4.别用C了,看我用Java、 VC等轻轻松松就写了个漂亮的图形界面 这篇文章是给初学者看的,也可以给一些浮躁的人看看,初学编程的人精力应该放在数据结构、算法上面,尽量多看一些底层的东西,数字逻辑,操作系统,编译原理,计算机组成、体系结构,计算机网络等等基础知识。编写GUI拖几个控件有什么好吹的,既然你会拖几个控件那么一个初中都没毕业的也会拖控件,你和他的差异性体现在哪里?你知道窗口消息怎么回事么,你编的界面是把易用放在第一位呢还是把漂亮放在第一位呢,你的GUI程序容易修改吗?比如我一会要加个button,一会去个listbox,你会不会改的疯掉呢?你是不是在OnClick里头写了大段大段的代码,做类似“从edit1.text中去掉不是数字的字符,搜索xxx再转成16进制,再复制到edit2.text”的事? 学习还是找纸版的书老实的看比较好,想想你积攒了多少电子书而又看了多少。 底层不了解,仅多也就飘在别人上头,别人一闪身,你就得摔下来。 初学编程的人一来就IDE, GUI,Network啥的猛搞,能不浮躁么?还是沉下心来研究一下基础知识吧,我以脑袋担保你有生之年会觉得他们有用的(呵呵,你转行我就没辙了),别看着别人弄JFC,Socket了你还在头大这个quicksort怎么就不对呢就心里惶惶的,你要知道在一批API不被支持后不少人心里空空的没个着落:天啊,我除了那个就啥都不会了,郁闷啊,花了我那么久时间钻研那套API,呜呜。。。。 错误认识5. C好难啊,我入门还是从Java,C#开始吧 解惑:语言只是表达思想的工具,不要只局限于一种语言,不要狂热于某一门语言。记住如鹏网的杨中科老师说那句话“价值规律就是——越是容易得到的越不值钱”。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2016-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》附录1 计算机简史附录1 计算机简史1.0 一切皆是映射ABPLTZ1.1 二进制01与易经阴阳1.2 向上抽象封装一层1.3 编程之初:从机械计算机到能接受指令的计

计算机领域中的所有问题,都可以通过向上一层进行抽象封装来解决.这里的封装的本质概念,其实就是”映射“。

1723
来自专栏Java架构师进阶

当世界上只剩下一个Java程序员

大约在2030年左右, 出现了一个叫做X的语言,它既能做系统级开发(操作系统、数据库、编译器), 也能做服务器端的开发,手机端,Web端都不在话下。

1153
来自专栏老九学堂

给所有初学编程的人的干货

现在IT新技术日新月异。就常用编程语言而言,有c/c++、汇编、java,c#、Python等; 操作系统平台有unix /linux,windows系列; 开...

3479
来自专栏老九学堂

这是一位师兄的算法学习之路

这篇文章讲了什么: 我这些年学习数据结构和算法的总结。 一些不错的算法书籍和教程。 算法的重要性 初学 第一次接触数据结构是在大二下学期的数据结构课程。然而这...

5947
来自专栏程序人生

颠覆者的游戏:程序语言

程序语言的用户是程序员,她们对语言的要求不外乎是:好用,没bug,能快速开发,容易写出高质量的代码,性能好,可伸缩,容易部署,生态圈完备,blablabla。所...

3808
来自专栏码洞

码农群英传连载(一) —— Go 语言之父 Rob Pike

近几年来在计算机语言排行榜上成长最快的语言就是 Go 语言。它勇往直前势如破竹,从几年前的 50 名之外快速跃进前十的宝座,而且还在马不停蹄向上攀登。

1173
来自专栏阮一峰的网络日志

关于《Joel on Software》副书名的翻译

1. 昨天我说,我要翻译Joel on Software这本书了。 image.png 我举了一个例子,说明它不好翻译。 Further Thoughts ...

3624
来自专栏PPV课数据科学社区

【资讯】七夕特辑,网恋比较靠谱吗?

曾被家长批判的一无是处的“网恋”终于扬眉吐气了。明天就是白色情人节了,小编整理出一张关于网恋的大数据信息图,数据显示,无论是速度上(从相识到结婚)、还是效率上(...

2768
来自专栏C语言及其他语言

给所有初学编程的人的干货

现在IT新技术日新月异。就常用编程语言而言,有C/C++、汇编、Java,C#、Python等;

1202
来自专栏程序人生

如何从零开始学一门程序语言?

今天一大早排队挂号给孩子看病,耽搁了,现在才发。 说实话,『能花钱的,就不要花时间』是篇即兴之作,本该随着时间被有限的听众渐渐淡忘。但没想到前有 @老赵 微博转...

3416

扫码关注云+社区

领取腾讯云代金券