“计算机系统”版本间的差异

来自iCenter Wiki
跳转至: 导航搜索
计算机软件
参考课程
 
(相同用户的16个中间修订版本未显示)
第6行: 第6行:
 
=计算机系统=
 
=计算机系统=
  
计算系统(computing system)由计算硬件和计算机软件部分组成。计算机是负责信息的存储,传输与处理的基本设备。计算机硬件的核心是处理器,主要的计算机软件有操作系统、数据库等。
+
计算系统(computing system)由计算硬件和计算机软件部分组成。计算机是负责信息的存储,传输与处理的基本设备。计算机硬件的核心是处理器,计算机软件主要有操作系统、数据库等。
  
 
个人电脑(Personal Computer,简称PC)是个人使用的计算机系统。Xerox Alto是第一台个人电脑,由Xerox公司的Charles P. Thacker于1973年研发。
 
个人电脑(Personal Computer,简称PC)是个人使用的计算机系统。Xerox Alto是第一台个人电脑,由Xerox公司的Charles P. Thacker于1973年研发。
第18行: 第18行:
 
==计算机组成(Components)==
 
==计算机组成(Components)==
  
计算机硬件的主要组件(Components)有中央处理器(Central Processing Unit, CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。
+
计算机硬件的主要组件(Components)有中央处理器([[Central_Processing_Unit_CPU|Central Processing Unit]], CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。
  
 
==计算机存储(Memory Hierarchy) ==
 
==计算机存储(Memory Hierarchy) ==
第32行: 第32行:
 
磁盘Disk (magnetic)
 
磁盘Disk (magnetic)
  
=处理器架构 =
+
==处理器架构(CPU) ==
  
 
[[Central_Processing_Unit_CPU]]
 
[[Central_Processing_Unit_CPU]]
第38行: 第38行:
 
=计算机软件=
 
=计算机软件=
  
[[Programming_Program]]
+
软件开发编程:[[Programming_Program]]
  
=常用软件 =
+
常用软件包括:操作系统、数据库、其他工具软件。
  
 
==操作系统(OS)==
 
==操作系统(OS)==
 +
 
管理计算机硬件的软件。
 
管理计算机硬件的软件。
  
第58行: 第59行:
 
苹果公司推出的操作系统,如Leopard。
 
苹果公司推出的操作系统,如Leopard。
  
==数据库==
+
==数据库(DB)==
 
数据是描述客观事物的属性的量化值,数值与数值之间有联系,又称为关系(relations)。
 
数据是描述客观事物的属性的量化值,数值与数值之间有联系,又称为关系(relations)。
  
数据库(database)是管理数据的系统软件。SQL是结构化查询语言的缩写。
+
* 数据库(database)是管理数据的系统软件。SQL是结构化查询语言的缩写。
  
 
关系型数据库是目前数据管理中最常用的软件。
 
关系型数据库是目前数据管理中最常用的软件。
第80行: 第81行:
 
规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。
 
规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。
  
==设计模式 Design Pattern==
+
[[Software_Engineering]]
  
程序是解决客观问题的计算机软件。编程语言本质上是对计算机解决问题能力一个抽象。
+
==Web应用开发==
  
编程是用于描述客观事物及其问题的一种工具。编程这种描述的解决过程可以在机器上运行完成。
+
JavaScript
  
===C++ 面向对象编程===
+
PHP
  
C++之父:[https://en.wikipedia.org/wiki/Bjarne_Stroustrup Bjarne Stroustrup]
+
==移动应用开发==
  
"No programming language is perfect. Fortunately, a programming language does not have to be perfect to be a good tool for building great systems"
+
===Android平台开发===
 +
开发环境 Android Studio 23+
  
====基本概念====
+
===iOS平台开发===
 +
开发环境Xcode
  
对象(object):是一个自包含的实体,用一组可识别的特性和行为来标识。C++以数据成员(data member)表达属性,以成员函数(member function)表达行为。
+
Swift编程语言
 
+
类(class):是具有相同属性和功能的对象的抽象集合。
+
 
+
对象实例(instance):是真实的对象。实例化就是创建对象的过程,使用new关键字来创建。
+
 
+
构造方法(constructor):又叫构造函数,其实就是对类进行初始化。在new时候调用。
+
 
+
方法重载(overloading):提供了创建同名的多个方法的能力,但这些方法需要使用不同的参数类型。
+
 
+
public:表示它所修饰的类成员可以允许其他任何类来访问,即是公有的。
+
 
+
private:表示只允许同一个类的成员访问,其它类包括它的子类都不能访问,即是私有的。
+
 
+
封装(Encapsulation):每个对象都包含它能进行操作所需要的所有信息,这个特性叫封装,因此对象不必依赖其他对象来完成自己的操作。
+
 
+
对象的继承(inheritance):代表了一种“is-a”的关系。继承者可以理解为是被继承者的特殊化,不仅有被继承者的特性,还有自己独有的个性。继承定义了类如何相互关联,共享特性。
+
 
+
protected:表示继承时,子类可以完全访问基类。用protected修饰的类成员,对子类公开,但不对其他类公开。
+
 
+
virtual:为了让子类的实例完全代替父类的类成员,父类必须把该成员申明为虚拟的。子类使用override关键字,将父类实现替换为它自己的实现,这就是方法重写(override)。
+
 
+
多态(polymorphism):表示不同的对象可以执行相同的动作,但是要通过他们自己的实现代码来执行。
+
 
+
====Generic Programming 泛型编程====
+
 
+
模板(Template)指C++编程语言中的函数模板(function template)与类别模板(class template)。
+
 
+
template<class T>
+
 
+
容器(Container):<vector>, <list>, <bitset>, <set>, <map>, <stack>, <queue>, <dequeue>.
+
 
+
迭代器(iterator):<iterator>
+
 
+
算法(Algorithm):<algorithm>, <cstdlib>
+
 
+
 
+
===C++ 标准库===
+
C语言的标准库 <X.h>,定义在std名字空间中<X>.
+
 
+
标准模版库(Standard Template Library, STL)
+
 
+
 
+
===Boost C++ 库(Libraries)===
+
 
+
Boost是一组扩充C++功能的经过同行评审(Peer-reviewed)且开放源代码程序库。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。
+
 
+
==敏捷编程 Agile Programming==
+
 
+
==代码管理 ==
+
 
+
===Make ===
+
自动化编译链接管理工具。
+
 
+
* CMake
+
 
+
CMake是"cross platform make"的缩写,是个开源的跨平台编译链接管理工具。
+
 
+
它用配置文件控制建构过程(build process)的方式和Unix的Make相似。CMake的配置文件取名为CMakeLists.txt。
+
 
+
===Git ===
+
协同开发代码管理工具。
+
 
+
[[Gitlab系统的安装配置]]
+
 
+
[[Gitlab的使用和操作]]
+
 
+
===CI ===
+
自动化连续集成和测试。
+
 
+
===单元测试===
+
Unit Test
+
 
+
=Web应用开发=
+
 
+
Javascript
+
 
+
PHP
+
 
+
=移动应用开发=
+
 
+
Android平台开发
+
 
+
iOS平台开发
+
  
 
=参考文献=
 
=参考文献=
第198行: 第118行:
  
 
#Shore, James. The art of agile development. " O'Reilly Media, Inc.", 2007.
 
#Shore, James. The art of agile development. " O'Reilly Media, Inc.", 2007.
 +
 +
=参考课程=
 +
 +
#斯坦福大学:[https://web.stanford.edu/class/cs101/ CS101 - Introduction to Computing Principles]
 +
#CS 4 HS Summer Workshop : [http://introcomputing.org/ CS for High School]

2018年8月10日 (五) 04:50的最后版本


计算的基础是指令集。通信的基础是协议集。标准是信息技术的基础。

计算机系统

计算系统(computing system)由计算硬件和计算机软件部分组成。计算机是负责信息的存储,传输与处理的基本设备。计算机硬件的核心是处理器,计算机软件主要有操作系统、数据库等。

个人电脑(Personal Computer,简称PC)是个人使用的计算机系统。Xerox Alto是第一台个人电脑,由Xerox公司的Charles P. Thacker于1973年研发。

计算机硬件

基本设计原则

  • 设计原则:计算机硬件的组织方式,如计算、存储、通信之间的模式,应该和功用相适应。

计算机组成(Components)

计算机硬件的主要组件(Components)有中央处理器(Central Processing Unit, CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。

计算机存储(Memory Hierarchy)

寄存器 Register

缓存Cache

主存RAM(Main memory)

固态盘SSD(Solid-state disk)

磁盘Disk (magnetic)

处理器架构(CPU)

Central_Processing_Unit_CPU

计算机软件

软件开发编程:Programming_Program

常用软件包括:操作系统、数据库、其他工具软件。

操作系统(OS)

管理计算机硬件的软件。

操作系统的向下兼容原则,或称为向后兼容(backward compatibility)。

  • Linux :

发行版 Ubuntu Linux, CentOS Linux,

  • Windows :

微软公司推出的操作系统, 如Windows 10。

  • Mac OS

苹果公司推出的操作系统,如Leopard。

数据库(DB)

数据是描述客观事物的属性的量化值,数值与数值之间有联系,又称为关系(relations)。

  • 数据库(database)是管理数据的系统软件。SQL是结构化查询语言的缩写。

关系型数据库是目前数据管理中最常用的软件。

  • 关系型数据库

微软SQL server,oracle 数据库,MySQL等等。

  • NoSQL ->NewSQL

随着大数据的出现与新应用的需求,出现了一大批弱化关系型数据库的内在限制的新型的数据管理软件。

这些新型的数据管理系统被称为NoSQL或NewSQL。

其他工具软件

办公软件office套件。

软件工程

规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。

Software_Engineering

Web应用开发

JavaScript

PHP

移动应用开发

Android平台开发

开发环境 Android Studio 23+

iOS平台开发

开发环境Xcode

Swift编程语言

参考文献

编程语言

  1. Google C++ Style Google C++ Style
  2. PEP 8 - Style Guide for Python Code PEP_8
  3. David Flanagan, JavaScript: The definitive guide: Activate your web pages. " O'Reilly Media, Inc.", 2011.
  4. Weiss, Mark Allen, Data structures and algorithm analysis in Java, Addison-Wesley Longman Publishing Co., Inc., 1998.
  5. Bjarne Stroustrup, The C++ programming language. Pearson Education, 2013.

计算机应用基础

  1. John L. Hennessy, and David A. Patterson. Computer architecture: a quantitative approach. Elsevier, 2011.
  2. Neil Matthew, and Richard Stones. Beginning linux programming. John Wiley & Sons, 2011.
  3. Miguel Grinberg, Flask Web Development: Developing Web Applications with Python. O'Reilly Media, Inc., 2014.

软件开发

  1. Shore, James. The art of agile development. " O'Reilly Media, Inc.", 2007.

参考课程

  1. 斯坦福大学:CS101 - Introduction to Computing Principles
  2. CS 4 HS Summer Workshop : CS for High School