www.728.com www.947.com www.038.com www.206.com
  • 给软件开辟初学者

来源:本站原创    日期:2019-07-27

  给软件开辟初学者 正在论坛上呆久了, 发觉很大一部门相关开辟的帖子都是相关心怀胡想, 立志成为一个软件英 雄或者响当当的黑客人物;或者是狂热的玩家,俄然想迈入开辟的,本人打制 一个完满的;或者被以前 IT 行业的“钱”途所吸引,为了经济要素但愿成为一个程 序员的,而寻求进入软件开辟范畴之门的求帮帖子。 这些诸如“你好,我想做法式员,该当怎样做?”,“初学 C++,请问看什么书好”,“请高手帮 我看看这个法式”, “我想转行, 请高手指导”……的帖子占了各大软件开坛帖子总量的很 大一部门,并且内容是长年不变,反复来反复去 :P 自从做了 epubcn 的 C++板块的版从,经常收到不了解网友的动静或 Email,根基上仍是问 这些问题。看到这些帖子和 Email,不由想起本人方才迈入软件开辟的范畴,茫茫然不知何 去何从,兴奋而又彷徨不安的过去,如许的履历一次又一次,正在分歧的地址、分歧的时间仍 然正在不竭的反复。今天终究坐下来,写下一点文字,但愿可以或许对彷徨的伴侣们有点帮帮。 确认你实的要迈入软件开辟范畴 软件开辟是一项纯智力勾当 (现正在人们都认识到长时间超负荷的持续写法式并不会提高软件 出产率,反而会对软件质量形成很大负面影响,所以虽然良多法式员仍然长时间加班,但这 种现象正正在逐渐削减并最终会消逝,所以体力要求并不会比其他行业高) ,若是你不是一个 智力高于平均程度的人,说实话,软件开辟并不适合你,你根基不成能正在软件开辟范畴取得 很高的成绩和地位,并且不久就会由于春秋的增加而被裁减。 若是你以那些开辟出共享软件的软件豪杰和出名黑客为楷模, 立志也要成为他们的一员, 像 武侠小说中的大侠一样仗剑江湖。 我要先给你泼上大大一盆冷水, 把你从幻想拉到现实中来。 起首, 现正在的软件其复杂度和规模都远远跨越以前, 想一小我独力完成一个规模稍大的软件, 根基没有可能(虽然仍是有些特例, but trust me,那些仅仅是特例,请不要把本人想像成 并世无双的超人、幸运儿) ;其次,无论是软件豪杰仍是仗剑江湖的顶尖黑客,他们的软件 开底和智力都远远跨越软件行业从业者的平均程度, 没有多年的堆集和坚韧超的毅 力,是不成能,换句话说,想成为他们的一员,能够,但请起首成为一个及格的软件开辟人 员。 若是你是由于传说中法式员的所谓“高薪”,对本人现正在处置的工做不合错误劲,而萌发转行的念 头,我劝你仍是再慎沉考虑一下。法式员的待遇一般来说,是要比平均程度高一些,但远远 谈不上高薪,并且以现正在法式员的工做量来算,其实同样的付出,法式员所获得的能和平均 程度看齐就不错了, 法式员的合作和裁减也长短常的。 手艺的更新速度更是其他行业所 稀有,每个法式员都要不断的跑步跟上,不使本人后进,所以正在这个层面上来说,没有谁可 以停下来歇息, 独一可以或许堆集下来的就是你的经验, 但经验中可以或许为你的合作力添加筹码的 并不多。 说了这么多,并不是我居心贬低,而是但愿告诉你我所晓得的软件开辟行业的实正在环境,基 于此请再慎沉考虑你是不是实的要迈入软件开辟范畴。 查验一下你能否适合当个法式员 正在我看来,要做一个及格的法式员,你需要具备下面几个前提: 1. 强烈的猎奇心和求知欲 2. 逃求完满的 3. 优良的逻辑阐发能力 其他方面的前提几乎所有雷同的帖子都有提 及:若是你不是预备单打独斗,那么团队合做能力必不成少;英语我就懒得说了,没有根基 的阅读英文材料的能力,我劝你仍是撤销做个法式员的设法,没无为什么;数学能力也是必 不成少的,若是不是做算法,高中程度的数学能力就脚够了,但必然要成就很好才行。 那么为什么我要强调列的三点呢? 具有强烈的猎奇心和求知欲,可以或许让你跟上手艺成长的程序,仅仅靠危机感和义务感,你对 手艺的进修会有很强的功利性质, 导致你的手艺系统不克不及形成一个完整自包涵的全体, 并且 很难敌手艺有高条理的认识和控制。 我认识的一个资深系统设想师跟我说过:做软件,“做出来”和“做的好”完满是两个概念,所 要求的投入和手艺程度是天地之别。 现正在国内良多法式员仅仅把软件开辟当做养家糊口的谋 外行段,国内打算经济时代凑合、敷衍了事干活的思惟也渗入到了软件业,良多法式员仅仅 是把功能做出来,底子不会去考虑提高沉用性、可性,也不会去考虑提高不变性、运转 速度,以至连代码也是参差不齐,根基的编码规范都不恪守(正在我看来,如许的人不配“程 序员”这个称号) 正在我们高声国内软件业欠好, , 拉项目靠关系, 没有质量系统, 老板不注沉法式员,疯狂抽剥法式员的时候,我们是不是该问问本人,你是不是只把眼睛盯 着别人? 现正在各类软件开辟包包罗万象,一应俱全,编程东西也非常强大便利,对于国内占支流的 MIS 系统来说,要完成一个功能实正在不是很难的工作,可是若是把系统做为一个全体,则大 大都都是运转迟缓、占用资本过大、兼容性差、可性差、不不变的系统,你可曾测验考试过 开辟一个优良的系统,若是有,你就会发觉开辟优良软件是何等坚苦,敌手艺的要求是何等 高,而你正在勤奋做到完满的过程中程度的提拔是何等快。没有逃求完满的,无论外部环 境若何好,你也是不会开辟出优良软件的,期待你的是无休止的点窜和~,你的手艺水 平也永久逗留正在简单的编码阶段,最终只要转行。 好了,我实的适合当个法式员,那我该若何起头? 起首选择一门编程言语和操做系统平台。 操做系统平台国内比力风行的根基有 Windows、Linux(Unix) 、Mac OS。一般来说大师都 选择的是 Windows 平台,由于此平台是国内处于垄断地位的操做系统,并且有良多优良的 开辟东西可供选择,错误谬误就是 Windows 平台的性不高,往底层探究比力坚苦(但我对 于言必称底层的概念比力反感, 不是所有搞开辟的都要对底层很是领会, 做出用户对劲的系 统才是我们逃求的底子,玩些底层的 trick 只是一种满脚而已。当然我们需要有一些掌 握底层手艺的高手,但这个是小我选择的问题) ,并且用惯 Windows 的法式员正在设置装备摆设、脚 本等方面比力弱。Linux 是开源平台,当然从理论上你能够 Linux 的一切,可是有几个 人可以或许达到这一程度?方才起头进修开辟的法式员,正在 Linux 上也仅仅可以或许开辟一些使用 软件而已。Linux 下的开辟东西不敷人道化,但这种环境正正在逐渐获得缓解,Eclipse 就是 很是超卓的开辟平台。正在 Linux 下开辟,你能够获得大量优良的源代码,而且一切都是通明 的(只需你想) ,但你必需进修良多号令行指令,控制各类系统和参数设置装备摆设以及脚本方面的 学问。 编程言语的选择更是令人头痛,我涉猎不多,对于有些言语,我无法给出任何,只好等 这方面的高手来给大师弥补了。我仅仅对 C++和 Java 进行一些申明,当然这个也仅仅是基 于小我体味,绝对不是权势巨子概念 :P C++仍然是目前占支流的开辟言语(细致的能够阅读 TCPL 中的相关阐述) ,并且一种言语 的成长或都是一个渐进的过程,正在能够预见的未来,C ++仍然是一门举脚轻沉的开辟 言语,但其所针对的范畴和标的目的可能会有所调整,我认为最次要的变化是 C++会逐渐从商 业 MIS 系统市场上退出。选择 C++的来由是关于 C++的优良开辟册本和开辟东西最多,相 关的资本也非常丰硕,待对于一般使用法式的开辟控制之后,无需过渡,就能够深切进修各 种手艺,由于现阶段讲述系统底层奥妙和高级手艺的册本,根基都是选用 C\C++做为示例 言语。 加上微软细心打制的开辟平台 Visual Studio 或 Borland 的 C++ Builder 系列, 进修起 来更是如虎添翼。但 C++现正在的错误谬误也是比力较着的,我最深的感到就是对于 XP 和 Agile Development 的支撑欠好。 Java 简化了 C++的语法,进修起来比力容易(但跟着 Java 的日益普及和成长,能否可以或许 继续连结这一劣势,我不敢断言) ,Eclipse 常优良的 Java 开辟平台,支撑 XP 的整个 过程:设想、测试、编码、沉构……现阶段火速软件开辟的次要言语就是 Java。并且 Java 的跨平台特征更常大的劣势。 现实上,选择哪门言语都没相关系,按照你的成长规划和目前身边的选择就能够,没有 需要跟风,其后的才是难点。 好,假设你选择了 C++做为开辟言语,正在 Windows 平台上开辟,那么我给你如下的进修建 议(其他的选择请列位积极弥补……) : C++言语的进修当然是根本,这个阶段因为没有任何正在特定平台上的开辟经验,我们只能按 照书中的例子一个一个输入运转,临时辞别熟悉的图形界面,回到陈旧的 DOS 了。参考书 的选择是这个阶段良多伴侣关怀的,Stan Lippman 的《Essential C++》和《C++ Primer》 是我优先保举的,而《Essential C++》由于篇幅较小,内容恰当,并且对 C++ STL 的 使用有不少描述,显得相当适用,我认为最适合初学者利用。无论选择了那本书做为入门教 材,都该当逐一例子逐一例子的消化,不要贪快,但同时要对沉点内容有所侧沉。我们进修 任何工具都是为领会决现实问题, 所以请把沉点放正在我们现实中最常用的部门, 而不要过多 的逃查一些细节和艰深艰涩的不常用手艺。 此刻我们会碰着良多事后看来很是简单老练的问题, 好比为什么编译犯错, 为什么按照书中 的例子输进去却无法通过编译,找不到头文件等等,大体上这是由于方才接触法式开辟,对 法式理解还很初级,以及对于所利用的开辟不敷领会,特定编译器对尺度 C++的支撑 程度纷歧导致。请多阅读关于所利用开辟的各类文档,以及查阅帮帮文档。以我最经常 利用的 Visual C++共同 MSDN 来说,当呈现一个我不克不及理解的编译错误时,按 F4 键编纂 器就会从动跳到当前错误地址,下面的输出窗口也会给犯错误代码(好比 C××× ×) ,把错 误代码记下,打开 MSDN,正在索引一栏输入错误代码,就可以或许查到细致的关于此错误的说 明,当然,是英文的(不要问你不会英文怎样办,这是根基要求) 。现正在的开辟东西查错排 错很是便利。当然,有时良多错误缘由并不是编译器所提醒的处所,而是往前或往后一些地 方,持久的编程经验能够提高查错速度。此时也请多 Debug 手艺。 此阶段只需可以或许控制 C++的根基言语要素,对布局化法式设想和基于对象的设想有一 解,可以或许完成一些简单的小法式就能够竣事了,终究 DOS 法式现正在很难勾起我们进修的欲 望了 :P 正在此之后能够视本人的环境决定能否进修数据布局,数据布局是法式员的必修课, 不成或缺,地位很是主要,即便你现正在但愿马长进入图形界面法式开辟的世界,这一课我也 提示你记取早点补上。 终究能够迈入图形世界,我们要从 SDK 编程起头,不要担忧,这不会破费你太长时间,但 倒是对 Windows 法式运转机制进行深切领会的好机会, 正在此的勤奋都不会白搭 (trust me) , 此时的参考书没有什么好考虑的,根本的有 Charles Petzold 的《Windows 法式设想》 ,进 阶的有《Windows 焦点编程》 。请从《Windows 法式设想》起头,Charles Petzold 的书通 俗易懂,进修起来很是轻松,并且对你的言语要求不高,只需懂 C 就能够了。 此时容易碰着的问题大多取项目设置相关,若是利用 Visual C++,请按 Alt+F7 调出项目设 置对话框细心查抄,并阅读相关文档,熟悉各项设置装备摆设的意义。 此阶段请沉点控制 Windows SDK 法式的编写方式,Windows 法式的运转机制和 Windows 动静机制,和常用的 Windows API。我们还能够更进一步:测验考试用前一阶段学到的 C++知 识对过程化的 SDK 法式进行初步的,将我们敲入计较机的法式变得可沉用,按照本人 对基于对象思惟和面向对象思惟的理解来从头编写例子法式。 OK,现正在你曾经初步入门了,控制了 C++的根基用法,对面向对象有了一点恍惚而自认为 是的认识,也可以或许写出 Windows 法式了,虽然还有点简单,还有点丑恶,不外,总归是图 形界面啊。起头有点感受了,是吗? :P 别急着往前冲,停一停,将 C++和 Windows SDK 的根本打牢,贪多嚼不烂吗。此时有良多典范册本期待你去控制,也有几乎无限的题材供你 ,请尽量多阅读接触下面的资本: 《C++ Primer》 《Windows 焦点编程》 《使用法式调试手艺》 面向对象开辟设想方面的册本 MSDN 的 Platform SDK 部门,Periodicals 部门(包含了大量有价值 C++、SDK 方面的技 术文章) CodeProject 里相关的源代码是很好的弥补进修材料 现正在继续往前走吧,操纵 SDK 开辟终究有时过分于费时吃力,仍是利用更高级的使用法式 开辟框架的好,次要的有 MFC 和 VCL,关于这些框架谁好谁坏的辩论我曾经听烦了,一句 话,能帮帮我们完成使命就行,它们无非都是东西,你本人随便选择吧。不外选择好之后, 你该当大白,对于你的东西,领会越深,越能阐扬它的能力。若是你选择了 MFC,我 进修下面的册本: 《深切浅出 MFC》 :关于此书毋庸多说,虽然有人不断的贬低,但它的地位是无可置疑的, 并且也是对我最有帮帮的册本之一。 《MFC 法式设想》 《Visual C++手艺黑幕》 然后就遏制找书吧,网上开辟坐点的数不堪数的源代码就是最好的教员了…… 进修过程中碰着问题我该怎样办? 我一直认为进修软件开辟过程中碰到的问题只要本人尽最大的勤奋去处理, 才能收到最大的 成效, 对于那些动不动就把问题发到网上希望高手帮你处理的做法我很是不附和, 由于如许 你并不克不及从中学到几多。我的做法是,起首测验考试本人独力处理问题,花几个小时处理一 个问题,是很一般的,不要几分钟处理不了就放弃了;实正在无决的时候,请测验考试尽量减 小涉及范畴,将问题归结一下,初步构成本人的结论;然后操纵搜刮引擎或者开坛中的 搜刮功能来搜刮能否有对于本人问题的解答; 实正在没有的时候, 再发帖子求帮。 请领会一点: 你碰到的问题都是别人碰到过的, 网上必定有现成的处理方式 (由于你还没有到开辟研究前 所未有的问题的程度:P) 只看你找不找获得了, , 请极力去操纵现有的资本而不是麻烦别人。 CSDN 的论坛、MSDN 正在线文档都常好的资本,根基上我们碰到的问题正在这里都能找 到解答。 (写的有点乱,大师凑合看吧 B))




Copyright 2017-2018 www.yiguannetwork.com. All Rights Reserved.