软件研发技术

计算机基础

1. 计算机发展史中计算机诞生时间的三个第一

世界上发明的第一台电子计算机 ENIA C 1946.2 美国

世界上第一台按存储程序控制功能设计的计算机 EDVA C 1946 1950 美国

世界上第一台投入运行的实现存储顺序控制功能的计算机 EDSA C 1947 1949.5 英国

2. 计算机发展的四个阶段和计算机时代的开始

⑴计算机发展的分代按照不同的规范有不同的分法。

通常是按计算机中硬件所采用的电子逻辑器件划分成电子管、晶体管、中小规模集成电路、大规模超大规模集成电路四个阶段;

也有一种观点把计算机的发展大致分为四个时期,即大型机时期、小型机时期、 PC 时期(或客户 / 服务器、 PC/ 服务器)时期和 Internet 或以网络为中心)时期。

⑵通常 所说的计算机时代 ” 从何时开始?

认为 1951 年,世界上第一台商品化批量生产的计算机 UNIVA C-I 投产,计算机从此从实验室走向社会,由单纯为军事服务进入为社会公众服务,被认为是计算机时代的真正开始。

3. 计算机的特点

从计算机的特点理解计算机的定义,要清楚

计算 机的实质是一种信息处理机

计算机是一种能够输入信息,存储信息,并按照人们意志(这些意志就是顺序)对信息进行加工处理,最后输出人们所需要信息的自动执行的电子装置。

计算机的特点:处置速度快、处置精度高、可存储、可进行逻辑判断、可靠性高、通用性强。

4. 计算机的主要性能指标

主频、字长、存储容量、存取周期、运行速度。

运算速度是个综合性的指标, MIPS 含义

影响运算速度的因素,主要是主频和存取周期,字长和存储容量也有影响。

正确理解 字长 概念。

5. 计算机的主要应用领域

科学计算

信息处置

过程控制

辅助系统

通信

6. 计算机中为什么要采用二进制及二进制的基本运算规则

计算机中采用二进制是由计算机所使用的逻辑器件所决定。这种逻辑器件是具有两种状态的电路(触发器)好处是

运算简单

实现方便

利息低

要清楚逻辑运算和算术运算规则的不同。

7. 二进制数据与十进制、八进制、十六进制数据之间的转换

要求:这几种进位计数制的数据,一定要会互相转换。

清楚各种数制的表示。如: 1010BH什么进制的数?十六进制数,不要答成二进制数。

8. 计算机中字符数据的表示方式

字符数据主要指西文的 A SCII 码和汉字,计算机内是用什么代码表示的

A SCII 码:用 7 位二进制数表示的或用一个字节表示,最高位为 0 这是事实上的国际规范。

汉字编码:用连续的两个字节表示,且规定最高位为 1 这是中国国家规范。

9. 存储容量和地址

存储容量是存储部件存储单元的总和;

地址是存储单元的编号。

10. 存储顺序和程序控制原理

1945 年,冯 诺依曼提出的现代计算机的理论基础。现代计算机已经发展到第四代,但仍遵循着这个原理。

存储顺序和程序控制原理的要点是顺序输入到计算机中,存储在内存储器中(存储原理)运行时,控制器按地址顺序取出存放在内存储器中的指令(按地址顺序访问指令)然后分析指令,执行指令的功能,遇到转移指令时,则转移到转移地址,再按地址顺序访问指令(顺序控制)

11. 指令和程序

指令是包括有操作码和地址码的一串二进制代码。其中操作码规定了操作的性质 什么样的操作 地址码表示了操作数和操作结果的存放地址。

程序是为解决某一问题而设计的一系列排列有序的指令或语句(顺序设计语言的语句实质包括了一系列指令)集合。

12. 计算机硬件的组成及各组成部分的功能

要理解以存储器为中心的计算机组成原理图

运算器:对信息和数据进行运算和加工处理,运算包括算术运算和逻辑运算。

控制器:实现计算机自身处置过程的自动化,指挥计算机各部件按照指令功能的要求进行所需要的操作。

存储器:存储顺序和数据。

输入部件:输入顺序和数据。

输出部件:输出计算机的处置结果。

13. CPU 微处理器的概念

⑴ CPU 即中央处理单元,计算机的核心部件,包括了运算器和控制器两大部件

⑵微处理器:微型机上使用的 CPU 利用大规模集成电路技术把运算器和控制器制作在一块集成电路中的芯片。

⑶微型计算机:以微处理器为核心,加上用大规模集成电路做成的 RA M 和 ROM 存储芯片、输入输出接口芯片等组成的计算机。

14. 构成内存储器的半导体存储部件 RA M 和 ROM 特性

内存储器由两种半导体芯片构成。

RA M 随机存取存储器,也叫读写存储器。用来存放用户输入的顺序和数据,断电后, RA M 中的信息随之丢失。为什么在输入文稿时要经常随时存盘)

ROM 只读存储器,断电后, ROM 中的信息坚持不变,用来存放固定的顺序和信息。

15. 内存和外存的区别

内存和外存本质的区别是能否被中央处理器( CPU 直接访问。 CPU 不能直接执行外存中的顺序,处置外存中的数据。

两者的主要区别是

从原理上讲位置不同,主机内还是主机外

构成资料不同,半导体还是磁介质(光介质)

存储容量不同,内存小,外存大。

价格不同:价格 / 每存储单元内存高,外存低

存取速度不同:内存高,外存低。

16. 显示系统的组成和性能指标

显示系统包括显示器和显示适配器 显示卡 两部分 , 性能也由这两部分的性能决定。

①像素:即光点

②点距:像素光点圆心之间的距离,单位 mm 点距越小,显示质量就越好。

③分辨率:

④显示存储器:也叫显示内存、显存,显示卡上,显存容量大,显示质量高,特别是对图像。

17. 软件的含义和分类

⑴计算机软件的含义

计算机软件:指能指挥计算机工作的顺序与程序运行时所需要的数据,以及与这些程序和数据有关的文字说明和图表资料,其中文字说明和图表资料又称文档。

裸机的概念:不装备任何软件的计算机称为硬件计算机或裸机。

计算机硬件与软件的关系:计算机软件随硬件技术的迅速发展而发展,软件的不时发展与完善,又促进了硬件的新发展。实际上计算机某些硬件的功能可以由软件来实现,而某些软件的功能也可以由硬件来实现。

⑵系统软件:系统软件是计算机系统必备的软件,主要功能是管理、监控和维护计算机资源 包括硬件和软件 以及开发应用软件。包括四个方面的软件:

操作系统

各种语言处置顺序

系统支持和服务程序

数据库管理系统

⑶应用软件

应用软件是为解决计算机各类应用问题而编制的软件系统,具有很强的实用性。应用软件是由系统软件开发的可分为

用户顺序:用户顺序是用户为了解决自己特定的具体问题而开 发的软件 , 系统软件和应 用软件包的支持下进行开发。

应用软件包:应用软件包是为实现某种特殊功能或特殊计算,经过精心设计的独立软件系统,一套满足同类应用的许多用户需要的软件。

软件开发概述

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。

软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。

软件一般是用某种程序设计语言来实现的。

通常采用软件开发工具可以进行开发。

软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。

软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

软件开发技巧

在日常开发中,使用或者测试中出现问题,一般都喜欢打补丁,补丁这个概念被用错了。

补丁不是凑合。补丁不是简单粗暴,毫无业务逻辑性的凑合。

如果为了修复一个问题,而让你的代码变得不能体现或者表达它的业务含义或者污染了现有的代码逻辑,那么这个修复就埋下了一个日后潜在的更大的问题。

为了清晰性,为了功能的单一性,为了以后的可维护性,代码不能凑合。

软件开发前提取并搞清楚核心领域对象

如果让你实现一个功能,包括增删改查,那么你非常清楚这个核心领域对象是什么吗?它业务含义是什么?什么是这个核心领域对象的属性?或者说这个核心领域对象包括的属性有哪些?

讨论需求的时候,也是如此,都要搞清楚或者把关注点放到核心领域对象建模和理解上。

比如,概念和术语都是什么含义等等。

应该给自测更多的时间和更多的关注

软件开发对过程中对于出现的设计或者开发问题,我们可以花费大量大量时间来排查,甚至推翻重来,那么为什么开发完成不进行好好自测,在自测上花点时间也能让你更加熟悉业务,因为看问题的角度变成使用者,因此自测时间要充足这个是值得的非常值得

软件开发五个新趋势

软件开发行业是当今发展最快的行业之一,世界各地都有对软件开发人员的需求。同时,未来的工作也是个热门话题——一方面,人们寄希望于有机会让任何人,在任何地方,工作时间更短,工作量更少,能够获得更好的工具,等等。

1.比专才更多的通才: 在数据驱动的世界,我们快速发布功能,以了解它们如何为客户增加价值并从结果中学习和迭代,会有更多的人准备好,不惧怕拿起任何新的或不熟悉的技术来完成任务,这比以往任何时候都重要。

2.合作超过资历: 将来,软件开发人员的协作技能会比现在更重要。候选人因为令人印象深刻的名牌大学资历而被聘用的日子一去不复返了。

3.全球化的思维: 拥有全球化的思维方式的第二部分是针对同事和与您合作的人。灵活性成为对下一代工作人员的首要要求,因此请务必记住,您的许多同事可能会在多个地点工作,有时甚至是远程工作。这意味着拥有全球化的思维模式,使您可以和没有见过面的来自不同背景的人一起工作,开放化和包容多元化的思维变得至关重要。未来的工作将是全球性的,远程和无国界的。

4. 网格而不是线性的职业发展: 将是网格化的职业生涯发展,您在整个职业生涯中移动的方向将会是横向、纵向,对角垂直,全方向的发展。这种职业发展形式在我们这代人中已经开始普遍,因为更多的工作场所具有更扁平的组织结构和灵活的工作方式。

5. 有创造性的自我驱动者而不是任务的执行者: 今天,如果不用监督就努力工作并按时完成任务,你会被认为是高绩效的。将来不再是这样,随着时间的推移,将变得越来越明显。愿意冒险提出创造性解决方案的自我驱动者将比没有犯错但只是执行别人解决方案的任务实施者更有价值。拥有创业精神将成为一种常态而不是新鲜事物,组织将希望并鼓励员工的这种特征。为什么?因为机器人能比人类更好更准确和快速地完成重复性的任务,但它们永远不会像人类那样有创新性。

软件开发的注意事项

1.系统流程梳理:对于软件开发来说也是同样的情况,每一个开发者不应该仅仅拿到的是一些文档,而是应该大家坐在一起,由熟悉该软件业务的管理者或者其他人来进行一次严谨的描述,并进行讨论,加以完善和改进,让参与编码的开发者在这个过程中不仅能够熟悉自己要做的那些功能的细节,还能对这个系统有一个大致的了解和熟悉,只有这样,在开发中才会避免一些不必要的问题发生,而且还能发现一些隐藏的问题,要知道修改问题是需要花费很多时间和精力的,比如编码和业务是有冲突的。

2.技术框架的选择:

一般选择技术架构有几个衡量的点:

第一点:效率。

第二点:成本

第三点:稳定性。

3.编码

第一点:代码风格。

第二点:注释。

第三点:代码目录结构。

第四点:命名。

第五点:赞成有必要的重构。

第六点:一些提高代码的工具使用。

第七点:不要随意修改代码,特别是别人的代码。