首页 > 其他分享 >计算机语言的发展历史

计算机语言的发展历史

时间:2023-07-29 23:47:21浏览次数:30  
标签:历史 运算 计算机 汇编语言 程序 机器码 语言

1.计算机语言的发展历史

计算机编程语言的发展,是随着计算机本身硬件发展而发展的。硬件速度越快、体积越小、成本越低,应用到人类社会的场景就会越多,那么所需要的算法就会越复杂,也就要求计算机编程语言越高级。最初重达几十吨但一秒只能运算5000次的ENIAC(世界上第一台计算机),只能做非常小的应用,比如:某些情况的弹道计算。现在任何一个人的手机运算能力都可以秒杀那个年代地球上所有计算机运算能力的总和。计算机编程语言的发展历经了从低级到高级发展。发展的核心思想就是“让人更容易编程”。越容易使用的语言,就有越多人使用;越多人使用,就有越多协作;越多协作,就可以创造越复杂的物体;计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言。

image

【1】第一代:机器语言(相当于人类的原始阶段)

机器语言是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,从而进行运算。上面所说的计算机,指的是可以执行机器指令,进行运算的机器。这是早期计算机的概念。早期的程序设计均使用机器语言。程序员们将用 0、1 数字编程的程序代码打在纸袋或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,从而进行运算。

应用8086CPU完成运算s=768+12288-1280,机器码如下:

image
假如将程序错写成以下的错误,请你找出错误:

image
书写和阅读机器码程序不是一件简单的工作,要记住所有抽象的二进制码。上面只是一个非常简单的小程序,就暴露出机器码的晦涩难懂和不易查错。写如此小的一个程序尚且如此,实际上一个有用的程序至少要有几十行的机器码。那么,情况将会怎么样呢?

在显示器输出“welcome to masm”,机器码如下:

image

image
看到这样的程序,你有什么感想?如果程序里有一个“1”被误写成为“0”,又如何去查找错误呢?

【2】第二代:汇编语言(相当于人类的手工业阶段)

为了编程的方便,以及解决更加复杂的问题。程序员开始改进机器语言,使用英文缩写的助记符来表示基本的计算机操作。这些助记符构成了汇编语言的基础。如下是一些常见的汇编语言助记符(单词)比如:mov,add,sub之类,这样人更容易使用了。识别几百、几千个单词,感觉要比几百几千个数字,美妙多了。汇编语言相当于人类的手工业社会,需要技术极其娴熟的工匠,但是开发效率也非常低。汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。另一个复杂的问题,汇编语言以及早期的计算机语言(Basic、Fortran等)没有考虑结构化设计原则,而是使用goto语句来作为程序流程控制的主要方法。这样做的后果是:一大堆混乱的调转语句使得程序几乎不可能被读懂。对于那个时代的程序员,能读懂上个月自己写的代码都成为一种挑战。 汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。

下面以Masm软件为例,编写一个简单的“hello world!”程序。

image

【3】第三代:高级语言(相当于人类的工业阶段)

对于简单的任务,汇编语言可以胜任。但是随着计算机的发展,渗透到了工作生活的更多的方面,一些复杂的任务出现了,汇编语言就显得力不从心(应该说是程序员使用汇编语言解决复杂问题出现了瓶颈)。于是,出现了高级语言。像我们熟知的C、C++、Java等等都是高级语言。

高级语言允许程序员使用接近日常英语的指令来编写程序。例如下图所示:

image


标签:历史,运算,计算机,汇编语言,程序,机器码,语言
From: https://www.cnblogs.com/01way/p/17590790.html

相关文章

  • C语言分支与循环(12)--- 练习题
    一.练习题1.给定两个数,求这两个数的最大公约数,如求24与18的最大公约数方法:假设m=24n=181.将24与18进行取模,得到的结果是商1,余数为6,有余数证明并没有被整除2.将18再模6,可以得到商3余0,所以我们可以得到6是我们的最大公约数3.如果声明一个变量r来接收数据,如果r=0则代表n为最大公约数,......
  • Go语言中init函数执行的顺序
    init函数的执行规则:对于同一个go文件,init函数的执行顺序从上到下,即在代码中先出现的init函数会先执行。对于同一个package,不同文件是按照文件名字符串比较的结果决定执行顺序的,字符串越小的文件越早被初始化。对于不同的package,如果不相互依赖,则按照import的顺......
  • c语言预处理详解
    //externintADD(intx,inty);//声明引用外部文件//c语言预处理//文本文件翻译+链接二进制文件运行//test.cpp————————》test.exe————————》//编译器翻译环境链接器执行环境//test.obj(目标文件)////(linux系统)翻译器:/......
  • C语言中.与->的用法介绍
    (一)基础结构体用点,结构体指针用箭头。a->b 的含义是 (*a).b****。  现代的标准化的C语义上来说, -> 可以用 * 和 . 的组合实现。简单的说,就是一个快捷方式,一个语法糖。(二)例子在机器码和汇编的角度来看,不存在变量,不存在struct这种东西,只存在寄存器和一个叫做内存的大数......
  • C语言字符串的常用操作
    C语言是一种非常流行的编程语言,它支持各种数据类型,包括整数、浮点数、字符和字符串等。在C语言中,字符串是一种特殊的数据类型,它由一系列字符组成,以\0字符结尾。本文将介绍C语言中字符串的相关知识,包括字符串的定义、初始化、赋值、输入输出、比较、拼接、查找和替换等。一、字符......
  • 【C语言趣味教程】(4) 变量:代码注释 | 变量的声明 | 初始化与赋值 | 变量的命名 | 关
    Ⅰ.代码注释(Comment)0x00引入:注释的作用"程序员最讨厌两种人:一种是不写注释的人,一种是让我写注释的人。"相信大家对注释早已有所耳闻,对于注释,C语言有两种注释风格,我们下面会逐个讲解。 但在这之前,我们先来了解了解注释的作用,注释就是用于解释代码的文字的。注释通常用于版本、版......
  • c语言作业之登录账号
    intmain(){ inti=0; charpassword[20]={0}; for(i=0;i<3;i++) { printf("请输入密码:>"); scanf("%s",password); //if(password=="123456");//err,==不能用来比较两个字符串是否相等,应该使用一个库函数strcmp if(strcmp(password,......
  • Centos8 中文语言配置支持
    安装中文语言包如果不知道中文语言包,使用以下命令查看[09:39:51]root@ive:~#yumsearchChinese加载插件"osmsplugin"失败:Nomodulenamed'librepo'上次元数据过期检查:0:26:02前,执行于2023年07月29日星期六09时14分49秒。==================================......
  • c语言学习第一课
    VS工具提前输入#define_CRT_SECURE_NO_WARNINGS1数据类型char //字符数据类型short//短整型int  //整型long //长整型longlong //更长整型float //单精度浮点数double //双精度浮点数 printf(“%lf\n",d);   lf表示双精度浮点数类型用来向内存申请空间创......
  • VsCode如何配置C语言环境?
    以前学校上C语言课程都是使用VC++6.0上课,这个学期为了复习一遍C语言,而且自己经常使用VSCode开发前端项目,所以为了方便。这里把需要的环境和插件配置在这里介绍一下。Windows环境下安装C语言编译器MinGW-W64GCCC的下载地址为:https://sourceforge.net/projects/mingw-w64/下载......