计算机相关语言、系统、软件出现顺序

2023-11-28 16:59

本文主要是介绍计算机相关语言、系统、软件出现顺序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图灵机Turing machine/stored-program computer

1940s,图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

汇编语言(assembly language)

Assembly languages date to the introduction of the stored-program computer.程序存储计算机 The first assembly language was developed in 1947 by Kathleen Booth for the ARC2 at Birkbeck, University of London following work with John von Neumann and Herman Goldstine at the Institute for Advanced Study.The Electronic Delay Storage Automatic Calculator (EDSAC) had an assembler (named "initial orders") integrated into its bootstrap program that used one-letter mnemonics in late 1948 developed by David Wheeler and credited by the IEEE Computer Society as the creator of the first "assembler."Reports on the EDSAC introduced the term "assembly" for the process of combining fields into an instruction word.SOAP (Symbolic Optimal Assembly Program) was an assembly language for the IBM 650 computer written by Stan Poley in 1955

 x86把用宏汇编语言编写的源程序翻译成目标程序的工作是由宏汇编程序来完成的。
 

汇编语言典型应用

  • 计算机boot系统使用。Assembly language is typically used in a system's boot code, the low-level code that initializes and tests the system hardware prior to booting the operating system and is often stored in ROM. (BIOS on IBM-compatible PC systems and CP/M is an example.)
  • 有些编译器在编译前将目标语言翻译成汇编语言,为了调试及优化。Some compilers translate high-level languages into assembly first before fully compiling, allowing the assembly code to be viewed for debugging and optimization purposes.
  • 低层级语言编程允许汇编语言嵌入程序,针对不同硬件环境使用不同汇编语言,系统可通过统一接口调用。Some compilers for relatively low-level languages, such as Pascal or C, allow the programmer to embed assembly language directly in the source code. Programs using such facilities can then construct abstractions using different assembly language on each hardware platform. The system's portable code can then use these processor-specific components through a uniform interface.
  • 用于反向工程???Assembly language is useful in reverse engineering. Many programs are distributed only in machine code form which is straightforward to translate into assembly language, but more difficult to translate into a higher-level language. Tools such as the Interactive Disassembler make extensive use of disassembly for such a purpose. This technique is used by hackers to crack commercial software, and competitors to produce software with similar results from competing companies.
  • Assembly language is used to enhance speed of execution, especially in early Personal Computers with limited processing power and RAM.
  • Assemblers can be used to generate blocks of data, with no high-level language overhead, from formatted and commented source code, to be used by other code.

UNIX系统

1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS(Multiplexed Information and Computing Service)操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson(后被称为UNIX之父)已经有一个称为"星际旅行"的程序在GE-635的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的PDP-7(Digital的主机),Ken Thompson和Dernis Ritchie就将"星际旅行"的程序移植到PDP-7上。

Brian Kernighan就开玩笑地称他们的系统其实是:"UNiplexed Information and Computing Service",缩写为"UNICS",后来,大家取其谐音,就称其为"UNIX"了。1970年可称为"UNIX元年"。

1971年,Ken Thompson写了充分长篇的申请报告,申请到了一台PDP-11/24的机器。于是Unix第一版出来了。在一台PDP-11/24的机器上完成。这台电脑只有24KB的物理内存和500K磁盘空间。Unix占用了12KB的内存,剩下的一半内存可以支持两用户进行Space Travel的游戏。而著名的fork()系统调用也就是在这时出现的。

C语言

到了1973年的时候,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,于是就改良了B语言,这就是今天的大名鼎鼎的C语言。于是,Ken Thompson 与Dennis Ritchie成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。

Unix的第一篇文章 “The UNIX Time Sharing System”由Ken Thompson和Dennis Ritchie于1974年7月的 The Communications of the ACM发表。这是UNIX与外界的首次接触。结果引起了学术界的广泛兴趣并对其源码索取,所以,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和扩展。于是,Unix开始广泛流行。

BIOS(Basic Input Output System)

中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。

其实,它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

BIOS设置程序是储存在BIOS芯片中的????,BIOS芯片是主板上一块长方形或正方形芯片,只有在开机时才可以进行设置。(一般在计算机启动时按F2或者Delete进入BIOS进行设置,一些特殊机型按F1、Esc、F12等进行设置)。BIOS设置程序主要对计算机的基本输入输出系统进行管理和设置,使系统运行在最好状态下,使用BIOS设置程序还可以排除系统故障或者诊断系统问题。有人认为既然BIOS是"程序",那它就应该是属于软件,感觉就像自己常用的Word或Excel。但也有很多人不这么认为,因为它与一般的软件还是有一些区别,而且它与硬件的联系也是相当地紧密。形象地说,BIOS应该是连接软件程序与硬件设备的一座"桥梁",负责解决硬件的即时要求。主板上的BIOS芯片或许是主板上唯一贴有标签的芯片,一般它是一块32针的双列直插式的集成电路,上面印有"BIOS"字样。

DOS(Disk Operating System)磁盘操作系统

磁盘操作系统是1979年由微软公司为IBM个人电脑开发的MS-DOS,它是一个单用户单任务的操作系统。后来DOS的概念也包括了其它公司生产的与MS-DOS兼容的系统,如PC-DOS  、DR-DOS, 等。它们在1985年到1995年及其后的一段时间内占据操作系统的统治地位,最著名和广泛使用的DOS系统从1981年直到1995年的15年间微软在推出Windows 95之后,宣布MS-DOS不再单独发布新版本。不过FreeDOS等与MS-DOS兼容的DOS则在继续发展着。

虽然大多数用户将1981年最早发表的术语“PC”与IBM PC或PC兼容机等同看待, 但是实际上个人计算机在1970年已经开始使用。DOS是IBM PC及其兼容机用的操作系统。在DOS之前,一些微机为其操作系统使用内部BASIC编程语言,而另外一些使用Digital Research公司开发的CP/M操作系统(此公司提供了DR DOS)。Microsoft公司于1970年后开发了MS-DOS,当时,该公司为不同微机开发了像BASIC这类编程语言;1980年IBM正在设计最早的IBM PC并请Microsoft为其新型机开发多个编程语言。这次CP/M作为选择的操作系统并成为IBM新机种的操作系统。在Microsoft为IBM PC 设计语言的过程中,尽管Microsoft公司改进了IBM PC的语言设计和应用程序设计,但是他们认识到开发PC操作系统才是其努力方向。然而,由于没有足够的时间从零开始开发一个操作系统。为解决这个问题,Microsoft购买了一个用于8086处理器的操作系统86-DOS,86-DOS操作系统是西雅图电脑产品公司(Seattle Computer Products)的一名24岁的程序员蒂姆·帕特森(Tim Paterson)花费了四个月时间编的,该操作系统与最早的IBM PC中的8086处理器非常相似。给每台IBM电脑安装一个DOS系统,微软就收取200美金的商业运作模式,造就了微软的初期辉煌。

DOS模块和层次

         

Windows操作系统

Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化。随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、16+32位混合版(Windows9x)、32位再到64位, 系统版本从最初的Windows 1.0 到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10 和 Windows Server服务器企业级操作系统,不断持续更新,微软一直在致力于Windows操作系统的开发和完善。现在最新的正式版本是Windows 10。

GNU编译器套件GCC

GNU编译器套件GCC(GNU Compiler Collection)。GCC的初衷是为GNU操作系统专门编写的一款编译器。

原本只能处理 C语言。扩展可处理 C++。后来又扩展如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。也包括了这些语言的库(如libstdc++、libgcj等等)。

GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。

1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的 Cygnus Solutions。

到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。

1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,已经发布Beta版本。)

GNU 认为任何软件都应当以 自由软件 发布。要让一个软件成为自由软件,您需要把它以自由软件许可证发布。我们通常使用 GNU 通用公共许可证 (GNU GPL) 发布软件,但有时我们也使用 其它自由软件许可证 发布软件。在 GNU 软件包中,GNU 只使用与GNU GPL兼容的许可证。

GPL协议条款:GNU通用公共许可证(GNU General Public License)。这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。

GPL通过如下途径实现这一目标:

1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。

2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。

3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。

由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证

在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)

μC/OS II(Micro-Controller Operating System Two)

μC/OS-II实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的BBS上。

是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,μC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。 μC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。从1992年开始,由于高度可靠性、鲁棒性和安全性,μC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中。

那么移植了μC/OS II的和原本的单片机、DSP的操作有何不同?指令之类的是否有区别?

μC/OS II是一个小型操作系统,单片机和DSP相当于小型PC的CPU,组合起来就是简易的PC机。开发者相当于二次开发。

如果不装μC/OS II,各种功能操作就要自己写。

计算机语言层级:

1、程序本体编码

下图程序用C语言编写,文本文件名为hello.c。

程序以每个字符的ASCII码方式存储在文件中,ASCII码是规范的文本(键盘上的字符)字符标准,适用于所有机器???

也就是在任意计算机中,查看该文本的存储器上的内容,都是这堆ACSSII码。

对于特殊字符(罗马)有统一字符集Unicode标准(如UTF-8、UTF-16、UTF-32)。与ASCII码兼容。

2、译码

程序以byte为单位存储在计算机中,不同机器编译同一段程序的机器代码(汇编代码)不同。

机器代码就是即将执行的程序代码,取指令的源,即hello.o。

p35.

3、为什么不同机器译码后的机器代码不同?

即hello.c相同,而hello.o不同?

见编译过程。

不同的CPU,不同的编译器,都会在编译过程中产生不同的代码。

4、举例(第三章)

在linux中用GCC编译器编译C程序。指令分别为:

以下关键代码分别为:C语言代码,汇编代码(ATT格式,其他格式:intel格式),机器代码。都非完整代码。

               

想要查看机器代码对应的程序功能,可采用反汇编命令:p115

问题:

机器代码采用什么规范?

计算机编程语言的六十年历史(1956-2016)

ASCII码:占一个字节的空间。

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节







国际单位制(SI):

1KB=1024B;1MB=1024KB=1024×1024B。

1B(byte,字节)= 8 bit(位,比特);

1KB(Kilobyte,千字节)=1024B= 2^10 B;

1MB(Megabyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;

1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;

1TB(Terabyte,万亿字节,太字节)=1024GB= 2^40 B;

1PB(Petabyte,千万亿字节,拍字节)=1024TB= 2^50 B;

1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 2^60 B;

1ZB(Zettabyte,十万亿亿字节,泽字节)= 1024EB= 2^70 B;

1YB(Yottabyte,一亿亿亿字节,尧字节)= 1024ZB= 2^80 B;

1BB(Brontobyte,一千亿亿亿字节)= 1024YB= 2^90 B;

1NB(NonaByte,一百万亿亿亿字节) = 1024BB = 2^100 B;

1DB(DoggaByte,十亿亿亿亿字节) = 1024 NB = 2^110 B;

国际电工委员会的电气技术用字母符号标准IEC 60027-2IEC 80000-13

数据存储是以10进制表示,数据传输是以2进制表示

参考文献

1、wiki百科

2、《深入理解计算机系统》第三版

3、《DOS原理与结构》

4、世界第一台电子计算机 哔哩哔哩  https://www.bilibili.com/bangumi/play/ss21761/

这篇关于计算机相关语言、系统、软件出现顺序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430001

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为“C”,“h”,“i”,“n”,“a”,经过运算,使c1,c2,c3,c4,c5分别变成“G”,“l”,“m”,“r”,“e”。分别用put

【数据结构】线性表:顺序表

文章目录 1. 线性表2. 顺序表2.1 概念及结构2.2 接口实现2.3 顺序表的问题及思考 1. 线性表 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录: 首次使用需注册账户,并根据指引完成注册流程。注册完成后,使用用户名和密码登录软件。 二、电子盖章操作 文档导入: 在e-章宝软件中,点击“添加”按钮,导入待盖章的PDF文件。支持批量导入多个文件,

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

剑指offer(C++)--翻转单词顺序列

题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? class S