1-计算机基础知识

1. 计算机系统

        计算机系统

        计算机系统可划分为软件系统与硬件系统两大类。(wiki百科)

        电脑硬件(英语:computer hardware)常简称为硬件,是电子计算机的物理设备。系统软件存储在硬件内,包含固件(如BIOS)以及操作系统,系统软件使应用程序可以提供用户所需的功能。操作系统通常借由总线与设备沟通,这就需要驱动程序。   

        计算机硬件包括计算机的物理,有形部件或组件,例如机柜、中央处理器、监视器、键盘、数据存储器、图形卡、声卡扬声器主板。相比之下,软件是可以由硬件存储和运行的指令。硬件被认为是因为它在变化或修改方面“硬”或严格,而软件是“软”的,因为它很容易更新或更改。软件和硬件之间的中间是“固件”,它是与计算机系统的特定硬件强耦合的软件,因此最难以改变,但在界面的一致性方面也是最稳定的。计算机系统中从“硬度”到“柔软度”的级别的进展与计算中的抽象层的进展相似。(这句话强调了计算机系统的设计和功能从固定的、限制较多的硬件(硬度)逐步向灵活、可变的软件(柔软度)发展,这种趋势与计算抽象层逐步提高的过程类似,都体现了从具体到抽象的进步。)

        硬件通常由软件指示以执行命令或指令。硬件和软件的组合形成可用的计算机系统,尽管存在仅具有硬件组件的其他系统。

1.1 硬件的主要组成

主板:

        主板是硬件的主要部分。它是一块大的方形板,上面有复杂的集成电路连接到电脑的其他部分,包含中央处理器随机存取存储器硬盘I/O连接口(例如电脑机箱上的USB接口和光盘读取器),以及其他借由插孔或是端口而连接的设备。在电脑主机(非移动型),主板上的硬件是可以被更新的,只需根据操作取下即可。而大部分的笔记本型电脑的主板的组件是直接焊接在主板电路上的,意味着不可更替;直接连接到主板的设备如下:

  • 中央处理器,又称CPU(Central Processing Unit),处理电脑内大部分的计算,其被认为是电脑的大脑。它藉散热器(例如风扇)来降温。中央处理器一般包含图形处理器。其中也有不带图形处理器的中央处理器(例如Intel的尾缀带F的中央处理器),其以更低的价格被电脑装机用户青睐,但是要单独通过PCI-E接口插入单独的图形显卡,否则将无法使用计算机。
  • 芯片组,作为中央处理器跟系统内其他组件两者间的联系工具。现在多为单独的一颗“南桥“芯片。随着时间的推移,当今的芯片多采用SoC模式,即随机存取存储器(RAM)、显卡(GPU)、中央处理器(CPU)和芯片组为一体的模式。例如Apple的M系列电脑芯片和大部分手机芯片。
  • 随机存取存储器存储正在执行的操作系统(指的是操作系统的核心)以及所有正在执行的程序(应用程序的部分,使用中央处理器或I/O通道,或是在等待中央处理器或I/O通道)。
  • 内部总线用来连接中央处理器和电脑内部其他组件或是显卡,声卡。

扩展卡:

        如声卡网卡显卡等设备。这些设备可能通过PCI Express(早年还有PCIAGP等接口)等总线连接到系统上,也可能是集成到主板上的设备(图形处理器可能被集成到中央处理器芯片组上)。

        电脑硬件设备不断发展的同时,扩充卡目前比较常用的有GPU(显卡)。网卡已多数集成至主板,或可通过主板I/O接口扩展。

        较知名的显卡公司有:英伟达(Nvidia)超威半导体(AMD)。其中,显卡因其强大的算力还用于AI模型训练、区块链等。

1.2 软件的组成

        系统软件(英语:System software),主要指用来运行或控制硬件所开发的计算机软件,如操作系统解释器编译器数据库管理系统公用程序等面向开发者的软件。

        系统软件一词常与系统程序(system program)混用,狭义而言,系统程序指的是操作系统设计,以及与操作系统相关的程序,例如行程排班、存储器管理、行程通信、平行程序、驱动程序等等;广义来说,系统程序泛指与计算机系统相关的程序设计,例如嵌入式系统、汇编语言程序设计、C语言程序设计、Linux核心程序设计等等;而系统软件主要指的是辅佐系统程序能够在电脑上运行或运行特定工作(例如调试、行程排班)等等的工具程序。

常见的系统软件包含:

  • 操作系统(operating system):负责控制与管理计算机硬件与软件资源,并提供用户操作接口,让用户可与计算机交互的系统软件,例如:UNIXLinuxOS XMicrosoft Windows
  • 编译器(compiler):将编程语言撰写的代码,转换成计算机可识读的机器语言,产生可执行文件,例如:GNU C Compiler(GCC)、LLVM,现今许多编译器包含了编译、汇编与链接等多种系统程序功能。
  • 解释器(interpreter):能够把高级编程语言逐行直接转译运行,而非将所有内容都转译后才运行。
  • 链接器(linker):将由编译器或汇编器产生的目标文件和外部程序库链接为一个可执行文件。
  • 加载器(loader):负责将程序加载到存储器中,并配置存储器与相关参数,使之能够运行,现今许多集成开发环境(IDE)集成了编译器与加载器,使的开发人员可以在编译后立即运行测试结果。
  • 汇编器(assembly):将用汇编语言编写,或是编译器转换过程中产生的汇编语言文件,转换成机器语言文件。
  • 调试器(debugger):用于调试其它程序,能够让代码在指令组模拟器(ISS)中可以检查运行状况以及选择性地运行(例如设置中断点)。
  • 硬件驱动程序(driver):它提供了一个软硬件接口,让电脑软件可以与硬件交互的程序。
  • 公用程序(utility software):管理电脑的许多工具程序,如:文件管理程序、格式化工具、磁盘管理。
  • 固件(英语:firmware),是一种嵌入在硬件设备中的软件。通常它是位于特殊应用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存EEPROMPROM里,有的可以让用户更新。可以应用在非常广泛的电子产品中,从遥控器计算器电脑中的键盘硬盘,甚至工业机器人中都可见到它的身影。

    顾名思义,固件是介于软件和硬件之间的。像软件一样,它是由电脑所执行的程序。然而它是对于硬件内部而言更加贴近以及更加重要的部分,而对于外在世界而言较无重要的意义。

  • 个人电脑中的BIOSUEFI
  • 硬盘固态盘的固件
  • SPARC架构电脑和PowerPC苹果电脑中使用的Open FirmwareIntel Mac则使用EFI
  • 只读存储器中的计算机程序
  • PROM中,这些程序只可以被特别的外部硬件来更改,而不能经由应用程序更新
  • PlayStation Portable系统软体
  • 路由器交换机的固件

2. 程序

        计算机程序(computer program),控制计算机的指令。

3.编程语言

        编程语言(英语:programming language),是用来定义计算机程序形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动。

        编程语言的描述一般可以分为语法语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。有些语言是用规格文件定义,例如C语言的规格文件也是ISO标准中一部分,2011年后的版本为ISO/IEC 9899:2017,而其他语言(例如Ada或者Perl)有一份编程语言实现文件,视为参考实现

        编程语言往往使程序员能够比使用机器语言更准确地表达他们所想表达的目的。对那些从事计算机科学的人来说,懂得程序设计语言是十分重要的,因为在当今所有的计算都需要程序设计语言才能完成。

        有许多用于特殊用途的语言,只在特殊情况下使用。例如,PHP专门用来显示网页Perl适合文本处理;C语言被广泛用于操作系统编译器的开发(所谓的系统编程)。

的出现使得计算机程序设计语言不再过度地依赖某种特定的机器或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言FORTRAN的一个主要目标,就是实现平台独立。

虽然大多数的语言既可被编译又可被解译,但大多数仅在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于BCPL,编译程序先编译一个叫做“0代码”的转换程序(representation),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,在很多时候,中间过渡的代码往往是解译,而不是编译的。

如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被称为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件(object code)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。

如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作直译。经直译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。

特点

每一种程序设计语言可以被看作是一套包含语法词汇含义的正式规范。

这些规范通常包括:

编程语言不成文规定:

大多数被广泛使用或经久不衰的编程语言,拥有负责标准化的组织,经常会晤来创造及发布该编程语言的正式定义,并讨论扩展或贯彻现有的定义。

数据和数据结构

现代计算机内部的数据都只以二元方式储存,即开-关模式(on-off)。现实世界中代表信息的各种数据,例如名字、银行账号、度量以及同样低端的二元数据,都经由程序设计语言整理,成为高阶的概念。

一个程序中专门处理数据的那个系统被称为程序语言类型系统(type system);对类型系统的研究和设计被称为类型理论(type theory)。语言可以被分为静态类型系统(statically typed systems),例如C++Java,和动态类型系统(dynamically typed systems),例如LispJavaScriptTclProlog。前者可被进一步分为包含宣告类型(manifest type)的语言,即每一个变量和函数的类型都清楚地宣告,或type-inferred语言(例如MUMPS,ML)。

大多数语言还能够在内置的类型基础上组合出复杂的数据结构类型(使用数组,列表,堆栈,文件等等)。面向对象语言(Object Oriented Language,又译作“对象导向语言”)允许程序员定义新的数据类型,即对象(objects),以及运行于该对象的函数(functions)和方法(methods)。

除了何时以及如何确定表达式和类型的联系,另外一个重要的问题就是语言到底定义了哪些类型,以及允许哪些类型作为表达式的值。诸如C编程语言之类的底层语言允许程序命名内存位置、内存区域以及编译时的常量;ANSI C甚至允许表达式返回结构值(struct values)。功能性的语言一般允许变量直接使用运行时计算出的值,而不是指出该值可能储存的内存地址

常见的数据结构

指令及流程控制

一旦数据被确定,机器必须被告知如何对这些数据进行处理。较简单的指令可以使用关键字或定义好的语法结构来完成。不同的程序语言利用序列系统来获取或组合这些语句。除此之外,一个程序语言中的其他指令也可以用来控制处理的过程(例如分支、循环等)。

引用机制和重用

引用的中心思想是必须有一种间接设计储存空间的方法。最常见的方法是通过命名变量。根据不同的语言,进一步的引用可以包括指向其他储存空间的指针。还有一种类似的方法就是命名一组指令。大多数程序设计语言使用调用、过程调用或函数调用。使用这些代替的名字能让程序更灵活,并更具重用性。

功能

编程语言可借助机械、电机、电子、电脑、手机完成人类需求的计算、功能与目的。

实体的传输链接

透过低级编程语言或高级编程语言,将实体间接达成传输链接或控制实体。

应用程序的发展

高阶编程语言可发展多功能的应用程序软件,例如工程计算、操作系统、文件处理、播放软件、网页设计、手机应用程序(App)等。

使用

编程语言已超过上千种,大部分用在计算领域[4]。编程语言和人类使用的自然语言在精确度和完整性上有很大的差异。

人们在用自然语言沟通时,内容可以不明确,甚至小的错误,而听的人仍然可能理解说的人想要说的内容。但电脑不同,电脑“只做被告知要做的事”,无法理解编程者想要写的程序。语言的定义、编程以及编程输入的组合需完整定义程序执行时的外部特性。另一方面,算法的概念可以表示为伪代码抑或者为编成码,是交织有自然语言和代码的编程语言,和其他人沟通时使用,此时就不一定要那么精确。

编程语言提供定义片段资料的结构化机制,以及在资料中需自动进行的运算或是转换。编程者利用编程语言提供的抽象化来表示计算的相关概念,这些概念则是由许多最简单元素(称为语言基元)的集合所组成[5]程序设计就是指利用语言基元来撰写新的程序,或是将旧程序改写,配合新的应用或是新的环境。

计算机程序语言可能是以批处理任务的方式执行,中间不需和用户交互,也有可能是由用户在解释器中指定执行特定的的程序。若某一编程语言的是目的是在某一应用软件(如Unix shell)或其他命令行接口执行其他程序,此编程语言会称为脚本语言

衡量各编程语言的使用量

很难去比较哪一种编程语言的使用量最大,而且“使用量”一词也很难定义。某一种编程语言可能需要较多的时间进行开发,另一种编程语言可能产生的代码较长,第三种编程语言可能在CPU中执行的时间较长。有些语言在特定的领域十分受欢迎,例如COBOL在公司的数据中心仍相当常用,多半是在大型计算机上执行,Fortran常用在科学及工程应用,C语言常用在嵌入式设备应用及操作系统Perl常用于系统管理和文本处理,JavaScript用于网页等。

有许多不同的测量编程语言使用的程度的方法,不同的测量方式各有误差:

  • 计算征才广告中提到各编程语言的次数。
  • 计算教授或描述各编程语言书籍卖出的数量。
  • 占计各编程语言目前仍在使用代码的长度,不过可能会低估一些公开搜索不容易找到的编程语言。
  • 利用搜索引擎计算找到不同编程语言的次数。

根据TIOBE指数在2022年3月,十大最受欢迎的语言如下:PythonVisual Basic .NETCC++C#JavaJavaScriptPHP汇编语言SQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值