以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- WinCE应用开发 (http://sun4.cn/bbs/list.asp?boardid=35) ---- 如何学编程 (http://sun4.cn/bbs/dispbbs.asp?boardid=35&id=1801) |
-- 作者:wangxinxin -- 发布时间:2010-11-26 9:30:30 -- 如何学编程 如何学编程,这是一个老话题,是一个老生常谈的话题。百度一下,找到相关网页约195,000篇(2009.11.15),除了重复的文章外,足以知道多少人在问,多少人在谈,但是还有多少人迷茫? 关于这个问题自然是仁者见仁,智者见智。如果你在网上百度一下和编程相关内容,一定会看到:Visual Basic 、Delphi 、C、C++、VC++、汇编语言、Visual Foxpro 、SQL Server、Oracle、DB2、Sybase、Power Builder、Java、J2SE、JavaEE、JavaScript、PHP 、ASP(ASP.NET) 、JSP 、ISAPI 、NSAPI 、CGI、VS2005/VS2008 等等(这些有语言、数据库或者开发工具)。 这些不是全部,如果你在网上问该怎么学呢?有让你从C语言开始学的,也有让你从Pascal开始学的,也有让你从VB开始学的,也有让你直接学习C#的,更有让直接学Java的……,网友的热心反而让你更是一头雾水,很难知道谁对谁错。 实际上如果是学习一门入门语言,任何一个都够了,区别仅在于入门的难与易。但是倘若作为“就业”之本,仅有一门语言基础显然不够,欲知后事,请接着往下看: 一、学习目的与软件企业招人要求 (一)准备从事软件开发职业:无论你是一个在校大学生也好,还是一个已经在职但准备转行也罢。 1、首先,最好了解一下软件的开发模式:C/S模式、B/S模式。 C/S模式:我们看到的一些客户关系管理、进销存软件、医院管理系统。显著特点需要在电脑上装一个软件才能使用。可以使用语言有:VB、Delphi、PB、VC++等。多用于局域网,但也有不少用于互联网(典型的有QQ等)。 B/S模式,也称WEB开发:网上银行、163与126电子邮件、网上纳税等。只需要浏览器就可以了。可以使用语言有:VB Script(ASP)、C#(ASP.NET)、JAVA(JSP)、PHP等。多用于互联网,但也有不少用于局域网。 2、其次,你看一下软件企业都招什么样的人。 除了个别领域,不难看到目前主要分为两大阵营:.NET阵营和JavaEE阵营。两大体系都非常不错,不要看网上互相攻击的那些无聊文章。在后面我会谈到,这只是工具。 看看用人单位要求:这才是你真正的学习导向。 .NET体系 (1)计算机相关专业大专或本科学历,二年以上.NET开发工作经验; (2)熟练C#语言、.net平台,vs2005,vs2008开发环境;熟练C/S,B/S结构软件,有相关项目经验。 (3)熟练运用SQL Server数据库设计与开发,熟悉存储过程及触发器,有过大批量数据处理与优化经验; (4)精通ASP.NET、WebService进行相关的开发,有HTML、XML、JavaScript经验者优先; (5)良好的团队开发意识,较强的沟通、学习能力,认真负责的工作态度。 .JavaEE体系 (1)计算机相关专业,大专或本科学历,具有1年以上相关工作经验; (2) 要求精通Java语言,精通JavaEE技术框架,熟悉SPRING、HIBERNATE、STRUTS、WEBWORK、MVC架构,熟悉Weblogic,jboss,Tomcat等应用服务器,并可做应用部署及调优; (3)对网络系统有相当的理解,熟悉Oracle/SQL-Server/Sybase等数据库,可以熟练的使用PL/SQL语言进行存储过程和函数等的编写; (4)熟悉UML建模技术优先,熟悉现代软件项目管理优先,英语技能较好者优先; (5)具有编写需求说明书、设计说明书等软件开发相关文档的能力; (6)思路清晰,工作规范,良好的执行能力、较强的团队协作精神和高度的责任心; (7)2年以上软件开发工作经验。 .其他 诸如单片机、PLC等也很多。 ―――――――――――――――――――――――――――――――――――― 不难看出,近年来尽管学历一路飙升,但是软件企业却仍然定位是大专或者本科学历,但是都要求有项目经验(对此,你将来当了老板会更明白,你也不愿意替别人作嫁衣)。 选择一个体系作为你的目标很重要,无论是.NET还是JavaEE都行,千万不要什么都学,最终却什么都不懂。 另:你在网上也许看到很多这样的建议,学习C语言、C++ For Dos(面向对象的思想用DOS就足够了)、C For Windows、C++ For Windows(MFC),我是这样一路学过来的,更知道其中的艰辛。但是我更坚信按照这个建议,更多人的不到山顶就放弃了。并不是学美术的一定都要成为画家,做广告设计也是挺有意思的一件事。 (二)纯粹的编程爱好者 这个我没有太多的发言权,只要你认为怎么适合你都行。 二、关于文化基础: (一)数学:很多人都谈到要有高数、离散、线性等基础。但如果你做的只是一个网站后台、普通的管理系统,那么也许有高中的数学知识足够了。 (二)英语:入门学习编程不需要过四、六级,高中英语基础学习编程没有一点问题。但是还是希望英语你能够更上一层楼。道理很简单,原因有二: 1、如果你英语不好,不可能等你过了六、八级再学编程,可以边学编程边学英语,毕竟英语高手≠编程高手。即使先用拼音作为变量名,先学会编程也是好的,但最好能用英文命名。请看一个表名Yybrdab(拼音首字母),你再看一个表名Yiyuanbinrendanganbiao(拼音全拼),再看表名PatientFiles(英文缩写),你有什么看法呢?Yybrdab很难猜,Yiyuanbinrendanganbiao全拼太长了,英文命名PatientFiles是不是更容易理解一些, 2、毕竟国外在软件开发方面比我国先进不少,有时你查阅的是英文资料,如果你的英语好自然会助你一臂之力。 三、语言是工具、功夫在诗外 你想一下,一个知名作家,不会用电脑而是用普通的钢笔写文章、甚至是铅笔,一个打字员每分钟在电脑打一百字以上,那么谁写的文章好呢?编程语言也一样,你应聘工作时说:我会VB、Delphi、JAVA、C#等等,但是什么样的项目也做不出来,和那个打字员有什么区别呢? 李白的《静夜思》我们每一个字都认识,是否每一个人都能写得一首好诗呢?我们知道一个演员、一个作家、一个诗人必须要具备更多的生活阅历与历练才能演出好作品、写出好文章、写出好诗,我们程序员又何尝不是呢? 当然能够用好工具则能更好的为你服务,作家能够用电脑写文章,估计效率更高一些,你选择正确的编程语言,至少会让你如虎添翼,但千万不要认为你学的是比较流行的语言而对别人学的可能不入时的语言而不屑一顾,你的道行修得越高才会知道高手并不是都写在脸上,你会有更好的心态去学习,明白人外有人,天外有天,自己实在微不足道。 知识是无穷的,但我们生命是有限的,所以我们应该在有限的生命里学习更有用的知识应用到实践中来。学习编程是为了更好解决我们工作和生活中的问题,而不是让你成为纸上谈兵的军事家。 四、如何学习? 就像武术一样,门派如此之多,很难一下都告诉你。我也从一个门派说起吧,就从.NET体系(B/S模式)说吧。 (一)打基础 勿在沙丘上建浮雕! 避免眼高手低,切忌急功近利! 你可能要学习的有以下内容:Dreamweaver、HTML/XHTML、CSS、JavaScript、XML、SQL SERVER、VS2005/VS2008与IIS设置、C#、WebForm(ASP.NET)、Ajax。 1、Dreamweaver:可能没有人会把它和编程联系起来,我们更多的认为它是做网页用的(网页三剑客之一),的确是这样,之所以我列出来,是希望你如果做B/S模式开发,它做界面有时比VS2005/VS2008好的多,这可能要引出你可能还要懂点Photoshop。门面也很重要,它会让你的程序增色不少,不见得你进的公司都会给你配一个专业美工。 2、HTML/XHTML:超文本标记语言/扩展超文本标记语言,尽管听起来是个“语言”,但严格来说,它确实不是语言,只是一堆标签而已。在浏览器上点右键,“查看源文件”,里面有不少类似HTML、TABLE、TR、TD等,这些都是HTML的一部分。懂了它你会更明白将来Javascript脚本语言放在哪。 3、CSS:层叠样式表,它常常和HTML、Javascript结合起来做出更绚丽和大方的界面。 4、JavaScript:这是客户端的脚本语言,你可能还不能一下子理解什么是客户端、什么是服务器端,这都没有关系。你一定见过很多网站显示今天是:xxxx年xx月xx日,大多数就是用Javascript做的,曾记得1998年,一个朋友问我是不是每天晚上要把网页上传一遍,我奇怪问他为什么?(他那时不懂脚本编程),他说日期每天都要变的。也许今天很多人看了都是笑话(但他现在已经是高手了)。 5、 XML:扩展标记语言,尽管它与HTML名字很相似,但骨子里面的东西却大不一样,如果让我说有什么用还真得想一想怎么给你说,但将来你一定会明白,它真的很有用。 6、SQL SERVER:数据库,你去银行取钱,你的信息存在哪呢?就是在数据库中。所以如果你开发的是管理系统,那么数据库是非常有用的。还有Oracle、DB2,这些你只要懂一个就行了,它们都是相通的。尽管数据库系统往往是幕后英雄,红花尚需绿叶衬。 7、VS2005/VS2008与IIS设置:前者是搭建C#运行的集成环境IDE,后者则是学习ASP.NET的环境搭建。 8、C#:这是一门真正的语言,微软比尔·盖茨靠basic起家,直到现在.NET框架中都有VB.NET语言,但C#则更是其推荐语言,如果你懂点C++或者Java学习一定会很轻松,没有也没有关系,很重要的语言啊。 9、Asp.NET:.NET体系不仅可以开发B/S模式的程序,还可以开发C/S模式的程序或者手机WinCE上的程序,当然Asp.NET则是指B/S模式开发。 10、Ajax:你一定有过在网上注册过,发现有的是在你填入用户名尚未登录就提示有重复的登录名,而有的直到你提交后才提示,你输入的东西可能还要重新输入,这就是前者利用了Ajax的妙用。 上面列出的十项是不是已经吓住你了,如果你感觉太多了,不妨先学第6、8、9项,其余的放到后面再学也可以。 纸上得来终觉浅,绝知此事要躬行。 ——陆游 学习每一门都要理论与实践相结合,不要认为这个简单那个简单,一看都明白,做起来眼高手低,唯有实践才能有更深的体会。看看书做做题,这个时候你仅仅学会了造句而已,还要参考一些优秀的文章和代码,模仿着写才能真正的提高。 大多数人学习主要还是靠自学的,但学习方法还是至关重要的,有的人喜欢从第一页一页页往后翻,一种可能是坚持下来了,最后可能会“顿悟”,还有一种可能每次都是看前面几十页,不信你可以看一下,你的多少本书都是开了个头,从侧面看前面黑乎乎的(不是你手脏),而后面却是崭新的。最终也未能攻克。放弃了重新捡起再放弃。 我推荐一种方法先囫囵吞枣,你想一下你做的第一道菜是如何做出来的(从没有做饭经验的朋友是没有……),难道是一字不拉地研究了一遍菜谱吗?NO,这就对了,计划做什么样的一道菜,然后挑相关章节选读,有些难以读懂的章节暂时跳过去,等以后再回来读,你应该有这种体会,刚开始看时很难的东西,过一段时间再看却变得如此易解。注意我说的是先囫囵吞枣,想成为厨师还是要好好研究菜谱了。但往往是万事开头难,等你熟悉了就可以在业界内为解决实际问题而结交高手的时候了。绝不会像BBS中许多问的傻呆问题了。 学而不思则罔,思而不学则殆。 ——孔子 你在学习任何一门编程语言一定学过循环与条件,你会让电脑计算1+2+3+…+100也是会用循环了;先给x赋值为9,会让电脑判断x的值大于5输出“大于”,否则输出“小于”,也是你会了。 但是如果你模拟一下银行取款的过程:在ATM上可以有机会输入三次密码,如果密码正确则可以进行取钱操作,密码错误提示重新输入,一旦超过三次则卡被吞掉,相信你的功力已经提升了不少,而且感觉编程与现实并不遥远。 (二)仿照真实项目 经过基础知识的修炼,也许你已经感觉自己差不多了,满怀信心的去应聘工作,结果却碰壁了,问你有项目经验吗?你一脸的委屈:没有上过班则没有项目经验?没有项目不能上班?是不是陷入两难境地?你可能说我在你们这实习吧,不要工钱都可以,你会发现这个机会对方一般都不会给你,别怨天尤人了,求人不如求己! 实际上现在网上已经有很多试用版,你完全可以比葫芦画瓢,你能真正的做一个项目,对前面知识的理解和运用一定会更上一个台阶! (三)提升 不登高山,不知天之高也;不临深溪,不知地之厚也。——荀子 我们看电视,看到高手总是杀人于无形,编程也一样,经过第二阶段,这回你可能已经踌躇满志了,呵呵,一不小心又碰壁了,但也许你幸运的找到了一份工作,这是软件企业急着用人,看你“孺子可教”,收留了你。如果不要你,一点也不奇怪,是别人比你优秀! 比如,添加一个客户,你是不是在页面上画了几个文本框和按钮,然后再按钮上写了个事件就提交到数据库了,能够做得出来固然比不会要好,但是你面向对象了吗?太多太多的人学的是面向对象的语言,但是写的却是面向过程的程序。关于学习.NET体系的不妨看一下伍迷先生的《戏说面向对象程序设计C#版》、《大话设计模式》,我与伍迷先生不认识,没有替他推销图书之意,只是他的创作与我心有戚戚焉,挺适合入门或者进阶者。然而由于很多面向对象以及软件工程、项目管理、设计模式之类的书籍过于深奥,或者国内有些为了评高级职称而胡拼乱凑的狗屁书籍,让更多人忘而却步。 能不能更上一层楼,那就看你的造化了! 不经历风雨,哪能见彩虹! 五、学习编程的捷径 我们做任何事情都喜欢找捷径,世上根本没有捷径!实际上不走弯路就是捷径! 我的这篇文章就是力争让你避免或少走弯路,也就成为了捷径。 当然加入我们的QQ群(95472365)也是一个不错的方法! 或者到“跟我学编程”网站转转也许有一个意外的收获! 六、成功和失败的唯一区别,就是坚持与否 “想起来一件有意思的事情,上大学时,到了晚上11点就关灯,我是很喜欢看书,就跑到男厕所去看看技术方面的书籍,唉想想那时候的确是苦了一点儿,不过没有当时的努力,怎么可能就有今天的我呢,虽然比上不足,比下还是蛮有余的,知足常乐,何必跟自己过不去呢。” 这是从网上看到的一位,与我当年颇为相似。不过似乎我比他幸运一些,图书馆里面老书居多,平时省吃俭用买一些书,尽管父亲告诉我:孩子,买书只管买,不要为了学习舍不得花钱!所以过早的学习了C语言、数据结构(那时候教学语言Pascal几乎一统天下),有一次去图书馆借一本新书,图书馆管理员认为我看不懂,就是不借给我(当时恨透她了,这个老太太,太可恶了)。我固执地说可以看懂,这位老师说明天你来一下,第二天接到了一份试卷,所幸我答的不错,后来我借书几乎不限本数,因为老师知道书的资源不多,总是借给需要的学生和老师,那种恨瞬间变为一种感动。 再后来,由于前面打的基础,班主任(辅导员)把我推荐给了我们学校一名权威,这是一名我们当时只能仰视的学者,自己比较愚笨,此后得到导师一年有余的指导,平生受益匪浅。自此我也几乎是在宿舍熄灯后才从教研室回到宿舍,故而在静谧的晚上经常有繁星或明月相伴,工作这么多年则很少看到星星,很怀念大学那段时光。 |