给软件开发初学者
- 格式:doc
- 大小:39.50 KB
- 文档页数:5
软件行业入门基础知识在软件行业入门之前,了解以下几个基础知识可以帮助您更好地理解和适应这个行业:1. 编程语言:了解一种或多种编程语言,例如Java、Python、C++等。
不同的编程语言有不同的语法和特点,了解编程语言可以帮助您编写和理解代码。
2. 数据结构和算法:熟悉常见的数据结构(如数组、链表、栈、队列、树等)和算法(如排序、搜索、图算法等)。
这些知识对于优化代码和解决问题非常重要。
3. 操作系统和网络基础:了解基本的操作系统原理和网络概念,例如进程管理、内存管理、文件系统、网络通信等。
这些知识有助于理解软件运行环境和网络交互。
4. 软件工程和开发方法:学习软件开发的基本原理和方法,如需求分析、设计、编码、测试、部署等。
了解软件工程和开发流程可以帮助您设计和开发高质量的软件。
5. 数据库和SQL:了解关系型数据库的基本概念和SQL语言的基本操作。
数据库是存储和管理数据的关键组件,而SQL是用于查询和操作数据库的重要语言。
6. 版本控制系统:熟悉版本控制系统,如Git或SVN。
版本控制系统可以帮助团队协作开发,并保留代码的历史记录。
7. Web开发基础:了解基本的前端(HTML、CSS、JavaScript)和后端(如服务器端语言、数据库等)开发概念。
Web开发是软件行业的一个重要领域。
8. 软件测试:学习基本的软件测试技术和方法,如单元测试、集成测试、系统测试等。
软件测试是确保软件质量的重要环节。
9. 常见开发工具和框架:掌握常见的开发工具,如集成开发环境(IDE)、代码编辑器、调试器等。
了解流行的开发框架和库,如Spring、Django、React 等,可以提高开发的效率。
10. 持续学习和技术跟进:软件行业发展迅速,持续学习和跟进新技术是非常重要的。
关注行业动态、参与开发社区、阅读技术博客和书籍可以帮助您保持竞争力。
以上是软件行业入门的基础知识。
不同的职位和领域可能需要不同的专业知识,但这些基础知识是通用且重要的。
从零开始作软件初学者的入门教程学习软件开发是一个具有挑战和激动的过程。
对于从零开始的初学者而言,面对无垠的学习资料和复杂的技术术语,可能感到有些迷茫。
然而,只要掌握了正确的入门方法和学习路径,就能够有效地建立起坚实的基础,并迅速提升自己的技能。
本文将为初学者提供一份全面而系统的软件初学者入门教程,帮助他们从零开始学习软件开发。
第一步:选择适合的编程语言在软件开发领域中,各种编程语言实际上就是工具,用来实现软件的功能。
因此,初学者首先需要选择一门适合自己的编程语言。
目前市场上最常用的编程语言包括Java、Python、C++和JavaScript等。
初学者可以根据自身的兴趣、用途和学习资源来选择合适的编程语言。
例如,如果初学者对网页开发比较感兴趣,可以选择学习JavaScript。
如果对人工智能或数据分析感兴趣,可以选择学习Python。
第二步:掌握基本概念和语法无论选择哪门编程语言,初学者都需要掌握基本的编程概念和语法。
这包括变量、数据类型、运算符、控制结构等。
初学者可以通过阅读相关的教材、教程或参加在线学习平台上的课程来学习这些知识。
此外,在掌握基本概念和语法的同时,实践也是非常重要的。
初学者可以尝试编写一些简单的程序来巩固所学知识,并逐渐提升自己的编程能力。
第三步:了解常用开发工具和环境软件开发需要借助各种开发工具和环境来实现。
初学者应该学会使用常用的集成开发环境(IDE)和代码编辑器。
例如,Java开发可以使用Eclipse、IntelliJ IDEA等;Python开发可以使用PyCharm、Sublime Text等。
此外,还需要了解版本控制工具如Git的使用,以便在团队协作或个人项目中进行代码管理。
第四步:培养解决问题的能力软件开发过程中会遇到各种问题,初学者需要培养解决问题的能力。
这包括通过查阅文档、搜索引擎、技术论坛等途径获取帮助,并学会分析问题、调试代码、排除错误。
切勿对遇到的问题感到气馁,相反,要将其看作提升自己技术水平的机会。
编程技术初学者的入门教程在当今数字化的时代,编程技术已经成为一项越来越重要的技能。
无论是为了解决问题、创造创新的软件应用,还是为了提升自己的就业竞争力,学习编程都是一个不错的选择。
然而,对于初学者来说,编程世界可能显得复杂而艰难。
本文将为初学者提供一些入门教程,帮助他们迈出编程的第一步。
1. 选择合适的编程语言编程语言是编写代码的工具。
对于初学者来说,选择一门易于理解和上手的编程语言非常重要。
Python是一门非常适合初学者的编程语言,它的语法简洁易懂,上手容易。
而且,Python拥有广泛的应用领域,包括数据分析、人工智能等,这也使得学习Python具有更广阔的发展前景。
2. 学习基本的编程概念在开始编程之前,初学者需要了解一些基本的编程概念。
例如,变量、数据类型、条件语句、循环等。
这些概念是编程的基石,理解它们将帮助初学者更好地理解和编写代码。
可以通过在线教程、编程书籍或者参加编程培训班来学习这些概念。
3. 解决问题的思维方式编程是解决问题的一种方式。
在学习编程的过程中,初学者需要培养解决问题的思维方式。
这意味着要学会将一个大问题分解成小问题,并逐步解决。
同时,还要学会利用搜索引擎、编程社区等资源寻找解决方案。
通过不断解决实际问题,初学者可以提高自己的编程能力。
4. 实践编程项目理论知识只是编程学习的一部分,实践是提高编程能力的关键。
初学者可以选择一些简单的编程项目来实践。
例如,编写一个计算器程序、一个简单的游戏等。
通过实践,初学者可以巩固所学的知识,并且更好地理解编程的应用。
5. 参与编程社区编程是一个社区活动。
与其他编程爱好者交流、分享经验是提高编程能力的一种有效方式。
初学者可以加入一些编程社区,例如GitHub、Stack Overflow等。
在这些社区中,初学者可以提问问题、参与讨论,并从其他人的经验中学习。
6. 持续学习和实践编程是一门不断学习和实践的技能。
初学者应该保持持续学习的态度,不断提升自己的编程能力。
软件工程初学者必读:入门教程一、软件工程的定义和作用软件工程是通过系统化的、可量化的方法进行软件的开发、运维和改进的过程。
随着信息技术的发展,软件在我们的日常生活和各行各业中扮演着越来越重要的角色。
软件工程的目的是为了提高软件开发的可靠性、可维护性、可扩展性和安全性,以满足用户和业务的需求。
二、软件开发的生命周期软件开发通常按照一系列阶段来进行,这些阶段被称为软件开发生命周期。
常见的软件开发生命周期包括需求分析、系统设计、编码、测试、部署和维护。
在每个阶段中,不同的活动和工具被用来支持软件的开发和管理过程。
三、需求分析需求分析是软件开发的第一步,也是最为关键的一步。
在这个阶段,开发团队需要与用户合作,明确软件的功能和性能要求。
通过与用户沟通和理解他们的需求,开发团队可以准确地捕捉到用户的期望,为后续的开发工作打下坚实的基础。
四、系统设计在需求分析之后,开发团队需要进行系统设计。
系统设计阶段包括架构设计、模块设计和数据库设计等,旨在确定软件系统的整体结构和组成部分。
在设计过程中,开发团队需要重点考虑系统的可扩展性、灵活性和可重用性,以便在后续的开发和维护过程中更加方便。
五、编码编码阶段涉及将系统设计的概念转化为实际的代码。
在这个阶段,开发团队需要根据设计文档实现各种功能模块,并遵循编码规范和最佳实践。
编码是软件开发的核心环节,需要开发人员具备良好的编程技巧和逻辑思维能力。
六、测试测试是软件开发过程中不可或缺的一环。
通过测试,开发团队可以发现和修复软件中的缺陷和问题,确保软件的质量和可靠性。
测试可以分为单元测试、集成测试和系统测试等不同层次,每个层次都有其独特的目的和方法。
开发人员需要熟悉各种测试技术,并编写高质量的测试用例来验证软件的功能和性能。
七、部署和维护部署和维护是软件开发生命周期的最后两个阶段。
在部署阶段,开发团队需要将软件安装到目标服务器或用户设备上,并进行系统配置和网络连接等相关工作。
软件工程初学者必读:入门教程引言在数字化时代的今天,软件工程已成为一个备受追捧的行业。
无论是从事软件开发、测试还是项目管理,掌握软件工程的基本知识和技能都至关重要。
本文将为软件工程初学者提供一份入门教程,引导他们迈出成功的第一步。
第一部分:了解软件工程在开始学习软件工程之前,首先需要了解什么是软件工程以及它的基本概念。
软件工程是一门学科,旨在通过系统化的方法开发和维护软件。
与一般的编码不同,软件工程强调的是从需求分析到软件交付的全过程管理。
第二部分:软件开发方法软件开发方法是软件工程的核心,它指导着开发团队如何有效地构建软件。
常用的软件开发方法包括瀑布模型、敏捷开发和迭代开发等。
每种方法都有其优势和适用场景,初学者应了解各种方法的基本原理和应用场景,以便选择适合自己的开发方法。
第三部分:需求工程需求工程是软件开发的起点,它负责从用户和利益相关者那里获取、分析和规划开发项目的需求。
初学者应学习如何进行需求工程,包括需求获取、需求分析和需求规划等。
同时,掌握合理的需求管理工具和技术,如用例图、需求追踪等,对于初学者来说也是至关重要的。
第四部分:软件设计软件设计是将需求转化为实际的软件系统的过程。
在软件设计阶段,初学者需学习如何进行系统架构设计、模块设计、接口设计等。
同时,掌握常用的设计原则,如单一职责原则、开放封闭原则等,有助于提升软件设计水平。
第五部分:编码与测试编码是将软件设计转化为可执行代码的过程。
初学者需要熟悉常用的编程语言,如Java、C++等,并学会使用开发工具和版本控制系统。
测试是保证软件质量的重要环节,初学者应学习软件测试的基本概念和常用的测试方法,如单元测试、集成测试等。
第六部分:项目管理对于软件工程初学者而言,项目管理也是必不可少的一部分。
学会使用项目管理工具,如甘特图、PERT图等,能够帮助初学者合理规划和控制软件项目的进展。
此外,了解项目管理的基本理论和实践经验也非常重要。
结论软件工程是一门复杂而具有挑战性的学科,但它也是一门充满乐趣和机遇的学科。
软件开发者必备基础知识完整版
1. 编程语言
- 掌握至少一门编程语言,如Python、Java、C++等。
- 了解编程语言的基本语法和特点。
2. 数据结构与算法
- 熟悉常见的数据结构,例如数组、链表、栈、队列和树。
- 理解常用的算法,例如排序、搜索和图算法。
3. 数据库知识
- 理解数据库的基本概念,如表、字段和索引。
- 掌握SQL语言,能进行基本的CRUD操作。
4. 网络与协议
- 熟悉网络编程和Socket编程的基本知识。
5. 操作系统
- 熟悉常见操作系统,如Windows和Linux。
- 了解操作系统的基本原理,如进程管理、内存管理和文件系统。
6. 版本控制工具
- 了解并熟练使用版本控制工具,如Git。
- 掌握基本的版本控制流程,如代码提交、分支管理和合并。
7. 软件开发流程
- 理解软件开发的基本流程,如需求分析、设计、编码和测试。
- 掌握常用的软件开发方法论,如敏捷开发和水fall模型。
8. 编码规范与测试
- 遵循良好的编码规范,如命名规范和代码风格。
- 掌握基本的单元测试和集成测试的方法和工具。
9. 安全与性能
- 了解常见的安全漏洞和攻击手法,如SQL注入和跨站脚本攻击。
- 关注软件性能,了解优化技术和工具。
以上是软件开发者必备的基础知识,掌握这些知识将有助于你成为一名优秀的软件开发者。
不断学习和实践,保持对新技术的敏感度,使自己能够紧跟行业发展的步伐。
软件开发知识点在现代社会中,软件开发已经成为一项重要的技能和行业。
无论是开发网站、手机应用,还是编写程序,软件开发知识都是必不可少的。
本文将介绍一些软件开发的基本知识点,帮助初学者快速入门。
一、编程语言编程语言是软件开发的基础,它是开发者与计算机之间进行交流的桥梁。
常见的编程语言包括Java、Python、C++、JavaScript等。
不同的编程语言适用于不同的应用场景,初学者可以根据自己的兴趣和需求选择合适的语言进行学习。
二、算法与数据结构算法与数据结构是软件开发中非常重要的知识点,它们是解决问题的核心。
算法是一系列解决问题的步骤,而数据结构是组织和存储数据的方式。
掌握好算法与数据结构可以帮助开发者提高编程能力,写出更高效、优雅的代码。
三、版本控制版本控制是软件开发中必不可少的工具,它可以帮助开发团队管理和跟踪代码的变化。
常用的版本控制工具包括Git、SVN等。
通过版本控制,开发者可以轻松地协作、回滚代码,提高开发效率。
四、测试与调试软件开发过程中需要对代码进行测试与调试,以确保程序的正确性和稳定性。
测试是检验代码是否符合预期的过程,而调试是查找并修复代码中的错误。
掌握好测试与调试技巧可以帮助开发者快速定位并解决问题。
五、框架与库框架与库是软件开发中常用的工具,它们可以帮助开发者快速搭建项目和实现功能。
常见的框架包括Spring、Django等,常用的库有NumPy、Pandas等。
熟练掌握框架与库可以提高开发效率,让开发者更专注于业务逻辑的实现。
总结以上是软件开发的一些基本知识点,希望能够帮助初学者快速入门并掌握软件开发的技能。
软件开发是一个广阔而充满挑战的领域,不断学习和提升才能成为优秀的软件开发者。
希望本文对您有所帮助,谢谢阅读!。
1:如果你能够熟练的使用Windows的话,你就可以开始你的程序生涯了!2:首先从C语言开始。
有的朋友可能认为C语言太难了,应该从VB开始。
虽然,对于一个初学者来说,用一些控件堆砌成一个小软件,是有一些成就感,但是,基础才是最重要的!C语言对于数据类型的描叙,远比VB里面说的更为全面,清楚,明白,而这些却是编程中的根本!3:学C语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,就可以了!一句话,到现在为止,你只要理解结构化程序设计的思想也就够了!4:有了以上的基础,就要开始学汇编了。
汇编开始的时候是很难,那些各种各样的寄存器,分段的内存地址,是很难理解,可是这些知识理解了以后,后面的内容就简单了,学习8086的那些指令,再加上一些伪操作,还有DOS和BIOS中断的调用,就可以看懂书上的汇编程序了。
(着重是理解算法,对于后面的那些汇编的应用有兴趣的可以看一下!)到此,你应该会对计算机的理解更深一层!5:有了汇编的基础,再来学习C语言中的精华部分----指针,可谓如鱼得水了。
现在你要对C语言全全面面的学一遍了,谭版的教材要从头到尾认认真真的看两遍以上。
6:学完以上的内容,有必要研究一下数据结构了,线性表,堆栈,队列,树,图,二叉树,等等,都要滚瓜烂熟!(最好是清华严蔚敏老师的那本教材)7:请时刻记住:浮躁是学习编程的大忌!8:现在,你应该学习一些数据库的知识,还有一些常用的算法了!9:如果以上的知识你都学精通的话,就可以开始C++的课程了,找本C++上手的书,用一个星期的时间大概了解一下C++,然后找一本VC上手的书,再花一个星期的时间学习VC的界面和用法,就可以做一些简单的应用了!10:要想学好VC,没有扎实的C++知识是不行的,以下书籍是VC程序员必须翻的烂熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++深入浅出MFC。
如何自学软件开发软件开发是一门技术领域,涉及到设计、编码、测试和维护软件应用程序。
在今天的数字时代,软件开发已成为一项重要的技能。
许多人都希望能够自学软件开发,以便能够构建自己的应用程序或为公司提供技术支持。
下面将介绍一些自学软件开发的方法和建议。
1. 确定学习目标在自学软件开发之前,首先要明确自己的学习目标。
软件开发是一个广泛的领域,包括前端开发、后端开发、移动应用开发等各种方向。
确定自己感兴趣的领域,以及想要达到的技能水平,可以帮助你更好地规划学习路线。
2. 学习编程基础知识学习软件开发的第一步是掌握基本的编程知识。
编程语言是软件开发的基础,因此你需要选择一门编程语言进行学习。
常见的编程语言包括Python、Java、C++等。
可以通过学习在线教程、参加培训课程或购买相关教材来掌握编程基础知识。
3. 练习编程技能掌握基本的编程知识之后,就需要不断地练习编程技能。
编程是一门实践性很强的技能,只有不断地练习才能掌握。
可以从简单的编程题开始,逐渐提高难度,挑战自己的编程能力。
同时,还可以尝试参与开源项目或者自己构建一些小型的应用程序来锻炼实际项目开发的能力。
4. 学习相关工具和框架为了提高软件开发的效率,可以学习一些常用的开发工具和框架。
例如,前端开发可以学习HTML、CSS和JavaScript等技术,后端开发可以学习数据库和服务器管理等知识。
此外,还可以学习一些流行的开发框架,例如React、Vue、Spring等,以提高软件开发的效率和质量。
5. 参与社区和社交媒体在学习软件开发的过程中,参与社区和社交媒体是一个很好的学习方式。
可以加入一些软件开发的论坛或社区,和其他开发者交流经验和学习资源。
此外,社交媒体平台如Twitter和LinkedIn也是了解最新的技术动态和拓展人脉的好途径。
6. 持续学习和更新知识软件开发是一个不断变化和更新的领域,因此,持续学习和更新知识是非常重要的。
可以通过订阅软件开发相关的博客、订阅技术期刊或参加行业研讨会来跟进最新的发展和技术趋势。
软件编程入门1. 引言软件编程是一门与计算机交互的艺术和科学。
它涵盖了从问题分析、算法设计到代码实现的整个过程。
本文将介绍软件编程的基本概念和步骤,帮助初学者了解软件编程的入门知识。
2. 编程语言编程语言是用于编写软件的工具。
常见的编程语言包括C、C++、Java、Python等。
每种编程语言都有其特定的语法和特性,选择合适的编程语言取决于项目的需求和开发者的个人偏好。
3. 开发环境的设置在开始编程之前,需要将开发环境设置好。
首先,需要安装相应的编程语言解释器或编译器,以便运行和测试代码。
其次,选择一个集成开发环境(IDE)或文本编辑器用于编写代码。
IDE提供了更多的功能和工具,方便开发和调试代码。
4. 编程基础4.1 变量和数据类型变量用于存储数据,可以是数字、字符串、布尔值等。
在编程中,我们需要声明变量并为其赋值。
不同的编程语言有不同的数据类型,如整数(int)、浮点数(float)、字符(char)等,选择合适的数据类型能提高代码的效率和可读性。
4.2 运算符在编程中,我们可以使用运算符对变量进行数学运算和逻辑判断。
常见的运算符包括加减乘除、取余、比较、逻辑与或非等。
熟悉运算符的使用可以简化代码并提高算法的效率。
4.3 条件语句条件语句用于根据条件执行不同的代码块。
常见的条件语句包括if语句和switch语句。
if语句根据条件判断是否执行代码块,而switch语句根据不同的值选择执行不同的代码块。
4.4 循环语句循环语句用于重复执行一段代码。
常见的循环语句包括for 循环、while循环和do-while循环。
熟练使用循环语句能提高程序的效率和灵活性。
4.5 函数函数是一段具有特定功能的代码块,可以被多次调用。
函数可以接受参数并返回结果。
合理使用函数可以提高代码的可复用性和可扩展性。
5. 调试和错误处理在编程过程中,会遇到各种错误和bug。
调试是解决这些问题的关键。
常用的调试技术包括打印调试信息、使用断点、追踪变量等。
给软件开发初学者在论坛上呆久了,发现很大一部分有关开发的帖子都是有关心怀梦想,立志成为一个软件英雄或者响当当的黑客人物;或者是狂热的游戏玩家,突然想迈入游戏开发的殿堂,自己打造一个完美的游戏;或者被以前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进行一些说明,当然这个也仅仅是基于个人体会,绝对不是权威观点:PC++仍然是目前占主流的开发语言(详细的可以阅读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核心编程》。