如何学习编程 (2)

上传人:fgh****35 文档编号:178161103 上传时间:2022-12-27 格式:DOC 页数:5 大小:39KB
收藏 版权申诉 举报 下载
如何学习编程 (2)_第1页
第1页 / 共5页
如何学习编程 (2)_第2页
第2页 / 共5页
如何学习编程 (2)_第3页
第3页 / 共5页
资源描述:

《如何学习编程 (2)》由会员分享,可在线阅读,更多相关《如何学习编程 (2)(5页珍藏版)》请在装配图网上搜索。

1、数据库的基本概念:使用文件存储数据存在的缺点:(1) 不安全;(2) 不利于查询和管理数据;(3) 不利于存储海量数据(4) 虽然程序可以按多种方式访问文件,但在程序中控制文件不方便数据库则更能有效的管理数据,按照数据结构来组织、存储和管理数据的仓库。J.Martin:数据库是存储在一起的相关数据的集合,这些数据是结构化的、无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据、修改和检索原有数据均能按一种公用的和可控制的方式进行。数据库的基本结构:(1) 物理数据层:磁盘(2) 概念数据层(3) 逻辑数据层:用户看到的表。数据库的基本特点:(1)可以实现数

2、据共享,(2)减少数据冗余度(3)实现数据的集中控制(4)(5)故障恢复主流数据库:微软:sql server(和access(内存CPU要求低)MySQL:AB公司(火)功能免费、linux上很好用DB2:处理海量数据优选,伸缩性和可靠性好SybaseInformix(IBM):Oracle:易语言公司三流一流公司做标准(Intel、IEEE),IP地址分配权限位于美国,花生壳?二流公司做服务:电信、中国移动三流公司做产品:用友、金蝶四流公司做项目:给地税局或某公司做个项目。小型数据库:access中型数据库:大型数据库:mysql oracle sql server Sybase info

3、mix(安全性很好,银行喜欢用)海量数据库:DB2(电信喜欢用)社会服务好。数据库的选择:1.成本2.功能3.并发性要求(最终用户)4.安全性要求,oracle,infomix,Sqlserver,oracle,mysqlJAVA之网络编程Java面向对象编程,界面编程,网络编程,多线程,文件i/o操作,数据库68讲:33项目开发流程如何学习编程在软件这个行业里,很多比较资深的人员对如何学习编程是有统一认识的:学一点,实践一点,再学一点,再实践一点。但困难的是每个人对每次迭代的“一点”究竟是多少认知不同,对“一点”是什么的定义也是不同。我个人的观点是以 3000 代码行为界算第一个一点,也就是

4、说一个人学会某个语言后小练习不算,先完成一个 3000 代码行左右的,没有 UI 的独立程序。为解释什么叫独立的程序,举一个具体的例子。在敏捷软件开发:原则、模式和实践一书中有一个薪水支付的例子程序,正好是这个规模,很适合帮助达成这一目的。这个程序的基本规格说明是:(下文引自敏捷软件开发:原则,模式与实践)l 有些雇员是钟点工。会按照他们雇员记录中每小时报酬字段的值对他们进行支付。他们每天会提交工作时间卡,其中记录了日期及工作小时数。如果他们每天工作超过 8 小时,那么超过的部分会按照正常报酬的 1.5.倍进行支付。每周五对他们进行支付。l 有些雇员完全以月薪进行支付。每个月的最后一个工作日对

5、他们进行支付。在他们的雇员记录中有一个月薪字段。l 同时对于一些带薪(Salaried)雇员,会根据销售情况,支付给他们一定数量的酬金。他们会提交销售凭条其中记录了销售的日期和数量。在他们的雇员记录中有一个酬金字段。每隔一周的周五对他们进行支付。l 雇员可以选择支付方式。可以选择把支付支票邮寄到他们指定的邮政地址;也可以把支票保存在出纳人员那里随时支取;或者要求将薪水直接存入他们指定的银行账户。l 一些雇员会加入协会。在他们的雇员记录中有一个每周应付款项字段。这些应付款必须要从他们的薪水中扣除。协会有时也会针对单个协会成员征收服务费用。协会每周会提交这些服务费用。服务费用必须要从相应雇员的下个

6、月的薪水总额中扣除。l 薪水支付程序每个工作日运行一次,并在当天为相应的雇员进行支付。系统会被告知雇员的支付日期。这样它会计算从雇员上次支付日期到规定的本次支付日期间应付的数额。在学完编程语言、面向对象、UML 之后可以先参照这份规格说明,什么例子程序都不看,自己完整的做一份实现,实现中要包含 UML 图和代码,接下来可以去把 Robert C.Martin的例子程序下载回来,同自己的实现在设计上和实现细节上做详细的比较,找出那点自己好,那点 Robert C.Martin 的好。这样对编程语言、对面向对象、对设计原则就可以有比较踏实的一些理解。此外,这个程序的一个额外的好处是它可以完全独立于

7、平台,只依赖于语言和标准库即可。假设说一个新手已经熟练掌握了一门语言,那么完成上述的任务估计需要 24 人周,当然有经验的人 1 个人周左右已经足够了。在此之后,可以精读一个上点规模的(15 万行最佳)独立性比较强的应用程序,由于已经上了规模,做到完全的与平台相隔离就有点难了,没法提供统一的例子作参考。但选择标准主要有两个,一个是尽可能和自己未来期望的方向相吻合,一个是尽可能比较独立和经典。独立的目的是方便调试,经典的目的是确保代码质量。比如:如果是 Windows 本地应用就可以考虑 Notepad+类的开源应用,Web 应用就可以考虑 PetShop 等。这个时间点上需要避免好高骛远,Li

8、nux 内核与 Chrome 当然很好,但它们并不适合初学者的。在精读过程中可能需要几类书籍:一是平台框架相关的(线程机制等),一类是模式相关的,一类是工具型的书(如何调试)。这个时候是要耐下心来读几本比较经典的书的。精读之后,就要再找到一个项目来实践。这里的关键是真的项目,至少要有真的用户,并且用户数目越多越好。最好是能够向知名开源项目提交代码。各种基础知识中比较例外的是计算机体系结构、数据结构和算法这类理论性比较强的东西,这种学习曲线比较陡的东西需要结合大学的课程把它学会,接下来再在实践中逐渐应用,而不能一边做事一边学习。原因是学习曲线越陡的东西越需要大块时间,毕业之后再学效率会差。总的来

9、看,上述几个步骤,应该在大学毕业后 23 年内完成,最好在大学里完成,这样可能会有点优势。这些完成之后,打基础阶段可以算是基本结束。开源软件之道蔡俊杰那具体来讲,那些东西可以被认为是编程的根基,需要在学习阶段扎实的掌握?下面将通过推荐几本书(或者说几类书)来描述一个共通于所有程序员的最小集合。l 计算机体系结构这一类别下最具代表性的书籍是深入理解计算机系统,作者是 Randal E.Bryant 和David OHallaron。读这本书的目的是了解计算机到底是怎么个东西,软件到底运行在什么样的基础之上。l 算法和数据结构这一类别下最具代表性的书籍是算法导论,作者是 Thomas H.Corm

10、en,CharlesE.Leiserson,Ronald L.Rivest,Clifford Stein。读这本书的目的是了解软件到底可以用什么样的手段干些什么事情。软件是一种工具,可以帮助解决人类面临的许多问题,而主要手段则只有两种,一种是这本书里所介绍的算法和数据结构;另一种则是下一类别中所涉及到的分析和设计方法。它们像小刀子一样,可以把各种领域中的各种问题进行分割,并映射到程序的世界里来。l 设计原则和模式这一类别中比较有代表性的书籍是敏捷软件开发:原则、模式与实践,作者是 RobertC.Martin。读这本书的目的是了解数据结构和算法之外另一种对现实问题进行抽象的方法如面向对象以及进

11、行这种抽象时所要遵守的原则。这类书籍经典的还有很多比如:GoF 的设计模式,而之所以选择上述这本是因为这本书里提供一些比较完整的例子,更适合初学者一些。l 软件工程这一类别中最具代表性的书籍是代码大全,作者是 Steve McConnell。读这本书的目的是建立对软件开发的全局视图。知道一个软件从无到有所要经历的一系列过程。软工的书还有很多,比如很有名的人月神话,但人月神话类书其实对很多人是不适合的,对初学者就更不适合。上面四本书是一个最小集合,针对不同场景需要进行不同的增加,比如可能需要进一步了解某种框架的机制,那就需要读Hadoop 技术内幕这类书。但即使是读这几本书也不适合只读书而不动手

12、,最好是穿插在上一节中提到的实践中来读,否则的话对后两本的理解会有所欠缺。上面四本书是一个最小集合,针对不同场景需要进行不同的增加,比如可能需要进一步了解某种框架的机制,那就需要读Hadoop 技术内幕这类书。但即使是读这几本书也不适合只读书而不动手,最好是穿插在上一节中提到的实践中来读,否则的话对后两本的理解会有所欠缺。如果想走厚积薄发这条路的上面几本书是一定要预先读通的。阅读过程中,如果发现有些细节问题彻底无法理解,那就要在实践过程中进一步琢磨,找到自己的答案。读者类书时,有一件事情一定要有心理准备:虽然这些书读通并不容易,很花时间,但想读了这些书后立刻写出来一个能卖点钱的工具是不太可能的

13、,这真和大楼的地基一样,没什么立竿见影的效果。如果想尽快达成后者这样的目的,那很可能就要走速成的道路,去读些介绍 IDE怎么用,某个框架怎么用的书,比如:C#高级编程这类。为避免误解,有一点需要额外进行一点说明。前面强调的避免过度 IDE 依赖主要是指不要用封装良好的模块来取代对基础知识的学习,不是说不需要建立自己的工具箱。查找工具、调试工具(进程线程查看等)、二进制数据查看工具、正则表达式工具、持续集成工具、文档生成工具(JavaDoc)、正则表达式工具等对一个程序员的生产力是非常有帮助的,应该在学习过程中逐个掌握。软件开发工作发展到现在,任何一个类别下面都有相当多的比较成熟好用工具了,关键

14、选定一个把它用熟。如果条件实在不允许厚积薄发,非要速成,我觉得可以尝试用这样一种方法:死磕一个流行的开源程序。比如国内用的比较多的是 WordPress,那如果狠狠心花半年一年把WordPress 搞透了,技能能提升不说,对找份合适的工作也还是很有帮助的。掌握读代码的方法和技巧不管最终想成为什么,刚入行之后,一定离不开的是读代码和写代码。这里将介绍一些读代码的方法和技巧。读代码这事,先要分是精读还是泛读。从学习的目的来看,一定要精读一定量的经典代码。而精读是指每行都读懂,不看代码脑子里就能勾画出程序的基本结构。要想判断是不是精读了有个很形象的判断方法:精读代码时会满脑子都是代码,放不下,甚至睡

15、觉前脑子里也是代码。达到这个程度就是精读了,否则应该就还不是。精读代码要控制规模(初始阶段一万行以下即可)并用心,不太需要什么特别的方法。这节里主要关注的是如何泛读较大规模代码,不是精读。精通一门最常用的语言l 了解一个最常用平台的基本机制,比如:内存管理、线程机制等l UML 图和面向对象分析设计方法l 设计原则,如:职责单一等l 设计模式l 代码大全里讲的一切l 精读一个知名的,但有点规模的程序。这点上要感谢开源项目给我们提供了这么多优秀程序。但要谨防好高骛远,动辄挑战 Linux 内核,精读是关键。l 累积一定的代码量,比如:独立的完整做过一个数万代码行的东西。这里的关键是完全自己打造,一定不要拷贝粘贴。l 掌握基本算法和数据结构(可以不自己写,但至少要知道其复杂度和区别)l 养成一种清晰的编码风格l 有自己的专业(金融、高并发网站,图像处理,TTS 等)Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!