给软件开发初学者(精)
- 格式:doc
- 大小:22.50 KB
- 文档页数:8
软件工程师入门学习一.概述什么是软件工程,为什么要软件工程?1.软件要知道什么是软件工程,当然得先知道什么是软件.软件就是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据和相关文档的完整组合.注意:软件不仅包括程序,还包括文档.所以做软件也不仅仅是编程序,还需要写文档,后者应该提到与前者并重的地位。
2.软件危机从50年代到60年代,人们曾经把程序设计看作是一种任人发挥创造才能的技术领域,只要程序能得到正确的结果,程序的写法可以不受任何约束.人们认为好的程序应该是运用了许多与众不同的技巧和窍门的程序.这种观点好象把编程序当成了一种艺术,因为艺术总是宣扬个性,喜欢与众不同.(实际上,编程序的确可以看做是一种艺术,不过这种艺术是在遵循一定范式和准则这个前提下的艺术,个人观点)然而,随着软件的规模越来越大,人们在实践中发现随心所欲编写的程序给维护,修改带来了很大的麻烦.程序晦涩难懂,不同程序员,不同时期编写的模块难以接口.因此,软件开发遇到了很大的困难.往往投入很大,收获甚微.做的软件漏洞百出,或无人使用.这就是软件危机.于是,人们在茫然中,渐渐的抛弃了原先的观点,开始探索一种新的软件开发的思想.这就导致了软件工程的产生.程序也从按个人意图创造的"艺术品"转化为一种工程化的产品。
3.软件工程的定义软件工程的定义很多,如:“软件工程是开发,运行,维护和修复软件的系统方法”;“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”等等。
定义是抽象的,掌握精髓才是关键。
对软件工程的最好理解就是“只可意会,不可言传”,试问各位看官,您们都学过化学,但化学的定义是什么呢?但是,为了更快的意会,有必要在此废话几句。
软件工程可以看作是一种方法,一种思想,就是指导大家如何更好地开发软件的方法和原则。
软工也可看作是一种工具,就是帮助大家分析,设计软件的工具,如:流程图,数据字典,以及一些辅助软件等。
软件开发培训资料软件开发是当今信息时代的核心技术之一,其需求量日益增长。
为了满足这一需求,各种软件开发培训课程应运而生。
本文将为大家提供一份软件开发培训资料,帮助初学者系统学习软件开发的基础知识和技能。
1. 软件开发培训介绍软件开发培训旨在培养学员的软件开发能力,使其具备开发高质量软件的能力。
通过系统的学习和实践,学员能够掌握软件开发的基本原理、常用工具和技术,为他们今后的职业发展打下坚实基础。
2. 培训内容(1)编程基础:学员将学习常用的编程语言,如C、Java等,并了解基本的编程概念和技巧。
通过编写简单的程序,学员将熟悉编程过程和常见的错误处理方法。
(2)软件工程:这一模块将介绍软件工程的基本概念和流程,包括需求分析、设计、编码、测试和维护等。
学员将了解如何通过系统化的方法来开发高质量的软件,并学会使用相关的工具和技术。
(3)数据库设计与管理:学员将学习使用数据库来存储和管理数据。
他们将学会设计数据库模型,并使用SQL语言进行数据操作。
此外,学员还将了解数据库的安全性和性能优化等方面的知识。
(4)Web开发:这一模块将介绍Web开发的基本概念和技术,包括HTML、CSS、JavaScript等。
学员将学会使用Web开发工具和框架,开发各种类型的Web应用程序。
3. 学习方法为了帮助学员更好地掌握软件开发技能,培训课程采用了多种教学方法:(1)理论讲授:通过课堂讲解,学员将了解软件开发的基本原理和理论知识。
(2)实践操作:学员将进行实际的编程练习和项目开发,通过实践来提升自己的编程能力。
(3)案例分析:通过分析实际的软件开发案例,学员将学会如何应用所学知识解决实际问题。
4. 培训目标软件开发培训的目标是使学员掌握软件开发的基本知识和技能,并能够独立完成一些简单的软件开发任务。
具体目标包括:(1)熟悉常用的编程语言和开发工具。
(2)了解软件工程的基本概念和流程。
(3)具备设计和管理数据库的能力。
软件开发语言的分类与入门介绍引言:在当今信息技术飞速发展的时代,软件开发已经成为了一项非常重要的技能。
而软件开发语言,则是进行软件开发的基础。
本文将对软件开发语言进行分类,并对其中的一些常见语言进行入门介绍,帮助读者初步了解各种开发语言的特点和用途。
一、高级语言和低级语言在软件开发中,常见的分类方式是将开发语言分为高级语言和低级语言。
这两种语言主要区别在于其与计算机硬件的关系以及对开发者友好程度。
1.高级语言高级语言是相对于低级语言而言的,它们更加接近人类自然语言。
高级语言主要用于提高开发效率,让开发人员能够更快地编写程序。
通常情况下,高级语言需要通过编译器或解释器将其转化为机器码才能被计算机执行。
常用的高级语言有Python、Java、C#、Ruby等。
以下是对其中几种语言的简单介绍:(1)PythonPython是一种高级、通用、可扩展且功能丰富的编程语言。
它的语法简洁易读,适合初学者学习。
Python广泛应用于Web开发、数据分析、人工智能等领域。
(2)JavaJava是一种面向对象的高级语言,具有跨平台性和可移植性。
它被广泛应用于企业级开发、Android应用开发等领域。
(3)C#C#是微软开发的一种高级编程语言,专门用于开发Windows平台的应用程序。
它易于学习,兼容性强,被广泛用于Windows桌面应用与游戏开发。
2.低级语言低级语言与计算机硬件更加接近,直接操作计算机底层资源。
低级语言分为汇编语言和机器语言两种形式。
(1)汇编语言(Assembly Language)汇编语言使用助记符来代替机器码,易于理解和编写。
但是,由于直接操作底层资源,编写汇编语言程序的花费精力较多。
(2)机器语言(Machine Language)机器语言是计算机能够直接理解并执行的一种语言。
它是由二进制形式的指令组成,难以阅读和编写。
二、领域特定语言(Domain Specific Languages,DSL)除了高级语言和低级语言的分类方式,还有一种按照应用领域来划分的语言,即领域特定语言。
从零开始作软件初学者的入门教程学习软件开发是一个具有挑战和激动的过程。
对于从零开始的初学者而言,面对无垠的学习资料和复杂的技术术语,可能感到有些迷茫。
然而,只要掌握了正确的入门方法和学习路径,就能够有效地建立起坚实的基础,并迅速提升自己的技能。
本文将为初学者提供一份全面而系统的软件初学者入门教程,帮助他们从零开始学习软件开发。
第一步:选择适合的编程语言在软件开发领域中,各种编程语言实际上就是工具,用来实现软件的功能。
因此,初学者首先需要选择一门适合自己的编程语言。
目前市场上最常用的编程语言包括Java、Python、C++和JavaScript等。
初学者可以根据自身的兴趣、用途和学习资源来选择合适的编程语言。
例如,如果初学者对网页开发比较感兴趣,可以选择学习JavaScript。
如果对人工智能或数据分析感兴趣,可以选择学习Python。
第二步:掌握基本概念和语法无论选择哪门编程语言,初学者都需要掌握基本的编程概念和语法。
这包括变量、数据类型、运算符、控制结构等。
初学者可以通过阅读相关的教材、教程或参加在线学习平台上的课程来学习这些知识。
此外,在掌握基本概念和语法的同时,实践也是非常重要的。
初学者可以尝试编写一些简单的程序来巩固所学知识,并逐渐提升自己的编程能力。
第三步:了解常用开发工具和环境软件开发需要借助各种开发工具和环境来实现。
初学者应该学会使用常用的集成开发环境(IDE)和代码编辑器。
例如,Java开发可以使用Eclipse、IntelliJ IDEA等;Python开发可以使用PyCharm、Sublime Text等。
此外,还需要了解版本控制工具如Git的使用,以便在团队协作或个人项目中进行代码管理。
第四步:培养解决问题的能力软件开发过程中会遇到各种问题,初学者需要培养解决问题的能力。
这包括通过查阅文档、搜索引擎、技术论坛等途径获取帮助,并学会分析问题、调试代码、排除错误。
切勿对遇到的问题感到气馁,相反,要将其看作提升自己技术水平的机会。
说起软件开发,大家都不陌生。
作为互联网行业中的金牌职业,软件开发的高薪回报和良好前景受到许多年轻人的青睐。
不少0基础想学软件开发的人士都有这样的疑问,软件开发需要学习多久,主要学习什么呢?小编在咨询北大青鸟佳音校区资深的软件开发老师后,结合自己的经验给大家总结了几点。
1、基础知识学软件开发往往要与数学和英文打交道,所以要有一定的数学、英语基础,有一定的基础在学习软件开发上可以说是事半功倍了。
如果英语、数学不错的,可以跳过这一步。
2、基础编程语言知识北大青鸟佳音校区的资深软件开发老师指出,实现软件运行都由某种程序语言来实现,所以学好程序语言是做好软件开发工作的必修课。
因此想要学习软件开发,要做的第二步就是选择一门编程语言进行学习(对于有英文、数学基础的算是第一步),并且专心学好一门语言,因此初学者最好根据自身喜好以及对自身将来的职业定位来选择要学习的语言。
对于软件开发,确定一个感兴趣的或者擅长的方向很重要。
一般来说想做好软件开发,学习的编程语言不得少于一门,目前主流的编程语言有Java、PHP、.net、C#语言等,软件开发形式多种,先学好这些基础语言,之后字慢慢扩展。
其实编程语言之间有它们的共通性,比如每种编程语言都有数据类型、变量、常量、流程控制语句、函数、输入输出等概念,但不同语言针对这些概念有他们自己的表现形式,而在学习的过程中,最重要的是要养成“编程的思想”,了解编程的内涵,将自己培养成一个开发人员。
3、数据库(SQL Server)知识除了学习基础语言,还要学习数据库的知识,数据的存储、调用在软件开发中是必不可少的。
4、web相关知识HTML、CSS、JavaScript。
经过这四个学习阶段,基本已经掌握了一个完整的开发基础了,之后就是深入的学习各种框架(比如spring、structs2、hibernate 等)之类的了。
软件开发要学多久?对于有意向学习软件开发的人士来说,学习时间是首要考虑的一个问题。
python入门菜鸟教程Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言。
有丰富的数据结构,例如列表、字典、集合等。
具有可移植性,支持面向过程和面向对象〔编程〕,并且开源。
以下是我为你整理的〔python〕入门菜鸟教程下载安装:从python官网下载开发和运行环境程序。
本例下载python-3.3.3.amd64的安装包,并安装。
开发工具:window系统中,python有多种开发工具,比如,一、直接在cmd命令窗口执行,但此种仅能单条语句执行,不能运行完整的程序。
二、python自带的集成开发环境,可通过开始所有程序python3.3IDLE(Python GUI)启动。
三、其他集成开发环境,如PythonWin等,有编辑和调试能力,还实现了MFC类库存的包装。
本例中,使用python自带的开发环境。
FileNew File,新建py文档,编写程序,储存。
RunRun module,可得到运行结果。
封装性:可以把属性、方法结合在一起,不可以直接访问对象的属性,仅能通过接口与对象发生联系。
以下把方法和属性封装成了一个类。
构造器:python有3种类型的构造器,且一个类中仅可以定义一个构造器,假设多个,则以最后为准。
1.假设不声明,则默认为一个没有任何操作的特别的__init__方法,__init__(self),此时可通过obj = my_class()声明实例。
2.自声明__init__构造器,会覆盖默认的,且可以更新类的数据属性。
3.构造器方法__new__(),用于不可变内置类型派生,不能通过实例访问属性,仅能通过类访问。
继承性:python支持多继承,且子类继承了父类的方法和属性。
假设子类中有和父类相同名称的方法,则子类会覆盖(Override)父类方法。
父类方法依旧可以访问。
数据结构:有丰富的数据结构,例如列表、字典、集合等。
本例简单介绍字典的使用。
字典是键值对的无序集合,是可变对象。
软件工程初学者必读:入门教程一、软件工程的定义和作用软件工程是通过系统化的、可量化的方法进行软件的开发、运维和改进的过程。
随着信息技术的发展,软件在我们的日常生活和各行各业中扮演着越来越重要的角色。
软件工程的目的是为了提高软件开发的可靠性、可维护性、可扩展性和安全性,以满足用户和业务的需求。
二、软件开发的生命周期软件开发通常按照一系列阶段来进行,这些阶段被称为软件开发生命周期。
常见的软件开发生命周期包括需求分析、系统设计、编码、测试、部署和维护。
在每个阶段中,不同的活动和工具被用来支持软件的开发和管理过程。
三、需求分析需求分析是软件开发的第一步,也是最为关键的一步。
在这个阶段,开发团队需要与用户合作,明确软件的功能和性能要求。
通过与用户沟通和理解他们的需求,开发团队可以准确地捕捉到用户的期望,为后续的开发工作打下坚实的基础。
四、系统设计在需求分析之后,开发团队需要进行系统设计。
系统设计阶段包括架构设计、模块设计和数据库设计等,旨在确定软件系统的整体结构和组成部分。
在设计过程中,开发团队需要重点考虑系统的可扩展性、灵活性和可重用性,以便在后续的开发和维护过程中更加方便。
五、编码编码阶段涉及将系统设计的概念转化为实际的代码。
在这个阶段,开发团队需要根据设计文档实现各种功能模块,并遵循编码规范和最佳实践。
编码是软件开发的核心环节,需要开发人员具备良好的编程技巧和逻辑思维能力。
六、测试测试是软件开发过程中不可或缺的一环。
通过测试,开发团队可以发现和修复软件中的缺陷和问题,确保软件的质量和可靠性。
测试可以分为单元测试、集成测试和系统测试等不同层次,每个层次都有其独特的目的和方法。
开发人员需要熟悉各种测试技术,并编写高质量的测试用例来验证软件的功能和性能。
七、部署和维护部署和维护是软件开发生命周期的最后两个阶段。
在部署阶段,开发团队需要将软件安装到目标服务器或用户设备上,并进行系统配置和网络连接等相关工作。
从零开始的计算机软件入门教程计算机软件是现代社会中不可或缺的一部分,它为我们提供了丰富多样的功能和服务。
很多人对计算机软件的开发和应用感兴趣,想要入门学习。
本篇文章将为大家提供一个从零开始的计算机软件入门教程,帮助初学者迅速入门,并按照不同的类别进行章节划分。
第一章:计算机软件入门的基础知识在开始学习计算机软件之前,我们首先需要了解一些基础知识。
这包括:1. 计算机软件的定义和分类:了解计算机软件的概念以及常见的软件分类,如系统软件、应用软件、工业软件等。
2. 软件开发的基本流程:软件开发包括需求分析、设计、编码、测试、发布等多个阶段,了解这些阶段的主要内容和流程可以帮助我们更好地理解软件开发的全过程。
3. 常见的编程语言:选择一门编程语言作为入门学习的起点是很重要的。
常见的编程语言包括C、C++、Java、Python等,了解它们的特点和应用领域可以帮助我们做出选择。
第二章:编程语言入门在选择了一门编程语言之后,我们需要学习该语言的基础知识和语法规则。
这包括:1. 变量和数据类型:了解如何声明变量和设置数据类型,以及常见的数据类型如整数、浮点数、字符串等。
2. 运算符和表达式:学习如何使用运算符进行数值计算和逻辑操作。
3. 控制结构:学习条件语句、循环语句等控制结构,以实现程序的流程控制。
第三章:软件开发的基础知识学习编程语言的基础知识之后,我们需要了解一些软件开发的基础知识,包括:1. 数据结构和算法:学习常见的数据结构(如数组、链表、树等)和算法(如排序、查找等),以解决实际问题和提高程序的效率。
2. 软件测试和调试:学习如何编写测试用例、进行软件测试和调试,以确保软件的质量。
3. 版本控制和项目管理:学习如何使用版本控制系统(如Git)进行代码管理和团队协作,以及如何进行项目管理和组织开发过程。
第四章:常见的软件开发工具和框架学习了软件开发的基础知识之后,我们可以学习一些常见的软件开发工具和框架,如:1. 集成开发环境(IDE):学习如何使用常见的IDE,如Eclipse、Visual Studio等,提高开发效率。
怎样开发软件当今社会,软件开发已成为一项充满活力和前景广阔的职业。
无论是开发应用程序、网站还是移动应用,软件开发都是一门关键的技能。
本文将介绍一些建议和最佳实践,以帮助初学者开始他们的软件开发之旅。
1. 设计和规划在开始编码之前,重要的一步是设计和规划。
这个阶段需要你思考软件的目标、功能需求以及与用户的交互方式。
你可以使用草图、流程图或其他工具来帮助你可视化你的设计和规划。
首先,明确软件的目标,并尽可能将其划分为更小的任务。
这将使开发过程更有条理,并有助于管理项目。
其次,考虑软件的用户。
了解他们的需求、目标和使用场景,以确保软件功能和界面设计的贴合度。
最后,创建一个详细的开发计划,包括时间表、里程碑和预期的交付日期。
这将帮助你掌握整个开发过程,并有助于你管理时间和资源。
2. 编写代码一旦你完成了设计和规划阶段,下一步就是编写代码。
编写高质量的代码是软件开发过程中最关键的一步。
以下是一些建议,可帮助你编写更好的代码:- 使用清晰且有意义的变量和函数名称:这将使你的代码更易于阅读和理解。
- 编写注释:为你的代码添加注释,以解释代码的功能和目的。
这将帮助其他人更好地理解你的代码,并使维护和修改过程更容易。
- 遵循编程标准和最佳实践:了解并遵循特定编程语言的标准和最佳实践,以确保你的代码可读性和可维护性。
3. 测试和调试测试和调试是软件开发过程中不可或缺的一部分。
通过测试和调试,你可以确保软件的质量和稳定性。
以下是一些测试和调试的最佳实践:- 编写单元测试:编写针对各个模块和组件的单元测试,以确保每个部分的功能正常运行。
- 进行集成测试:将各个组件整合在一起,并测试它们之间的相互作用。
- 进行用户测试:将软件提供给真实用户,并接收他们的反馈。
这将帮助你发现和修复潜在的问题。
4. 文档和维护文档和维护是软件开发周期的最后阶段。
以下是一些建议,可以帮助你更好地进行文档和维护:- 编写文档:编写用户手册、API 文档和其他相关文档,以帮助用户理解和使用你的软件。
软件开发技术培训资料软件开发是当今信息技术领域中的一个重要方向,掌握相关技术已成为众多企业和个人发展的必备技能。
本文将为大家提供一份软件开发技术培训资料,帮助读者了解软件开发的基本概念、流程和技术要点。
一、软件开发概述1.1 什么是软件开发软件开发是指通过编写、测试和维护计算机程序,实现对一定功能需求的满足。
软件开发过程中涉及到的技术和方法有很多,其中包括需求分析、系统设计、编码、测试等。
1.2 软件开发的流程软件开发一般包括需求分析、设计、编码、测试和上线等多个阶段。
需求分析阶段主要是确定软件的功能需求和用户需求;设计阶段着重于构建整个系统的结构设计和模块设计;编码阶段是将系统设计转化为计算机可执行的代码;测试阶段是验证开发的软件是否符合需求和规范;上线阶段是将软件部署到实际的生产环境中,供用户使用。
二、软件开发的基本技术要点2.1 编程语言选择在软件开发中,常用的编程语言包括Java、C++、Python等。
针对不同的开发需求和场景,可以选择最适合的编程语言进行开发。
2.2 开发框架与工具软件开发中的框架和工具可以极大地提升开发效率。
比如,Java 开发可以使用Spring框架、C#开发可以使用.NET框架等。
此外,还可以使用IDE(集成开发环境)来提高开发效果,如Eclipse、Visual Studio等。
2.3 数据库管理软件开发中通常需要与数据库进行交互,存储和管理数据。
常见的数据库软件有MySQL、Oracle、SQL Server等,开发人员需要掌握数据库的基本操作和优化技巧。
2.4 版本控制和协作开发在多人协作开发中,版本控制工具是不可或缺的。
常用的版本控制工具有Git和SVN,可以方便地管理代码版本、协同开发和解决代码冲突等。
2.5 系统架构与设计模式一个好的软件系统应具备良好的架构和设计模式。
软件架构决定了系统的整体结构和模块划分;设计模式则提供了解决常见问题的经验总结,如单例模式、工厂模式等。
给软件开发初学者在论坛上呆久了, 发现很大一部分有关开发的帖子都是有关心怀梦想, 立志成为一个软件英雄或者响当当的黑客人物; 或者是狂热的游戏玩家, 突然想迈入游戏开发的殿堂, 自己打造一个完美的游戏;或者被以前 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的《 EssentialC++》和《 C++ Primer》是我优先推荐的,而《 Essential C++》因为篇幅较小,讲解内容适当,而且对 C++ STL的运用有不少描述, 显得相当实用, 我认为最适合初学者使用。
无论选择了那本书做为入门教材,都应该逐个例子逐个例子的消化,不要贪快, 但同时要对重点内容有所侧重。
我们学习任何东西都是为了解决实际问题, 所以请把重点放在我们实际中最常用的部分, 而不要过多的追究一些细节和艰深晦涩的不常用技术。
此刻我们会碰到很多过后看来非常简单幼稚的问题, 比如为什么编译出错, 为什么按照书中的例子输进去却无法通过编译, 找不到头文件等等, 大体上这是因为刚刚接触程序开发, 对程序理解还很初级,以及对于所使用的开发环境不够了解,特定编译器对标准 C++的支持程度不一导致。
请多阅读关于所使用开发环境的各种文档, 以及查阅帮助文档。
以我最经常使用的 Visual C++配合 MSDN 来说,当出现一个我不能理解的编译错误时,按 F4键编辑器就会自动跳到当前错误地点,下面的输出窗口也会给出错误代码(比如 C××× × ,把错误代码记下,打开 MSDN ,在索引一栏输入错误代码,就能够查到详细的关于此错误的说明,当然,是英文的(不要问你不会英文怎么办,这是基本要求。
现在的开发工具查错排错非常方便。
当然, 有时很多错误原因并不是编译器所提示的地方, 而是往前或往后一些地方,长期的编程经验可以提高查错速度。
此时也请多练习练习 Debug 技术。
此阶段只要能够掌握 C++的基本语言要素,对结构化程序设计和基于对象的设计有一定理解, 能够完成一些简单的小程序就可以结束了, 毕竟 DOS 程序现在很难勾起我们学习的欲望了 :P 在此之后可以视自己的情况决定是否学习数据结构,数据结构是程序员的必修课, 不可或缺, 地位非常重要, 即使你现在希望马上进入图形界面程序开发的世界, 这一课我也提醒你记着早点补上。