计算机编程语言发展史

作者:码农洞见 时间:2022-10-07 21:28:49 

1 编程语言简介

编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。一方面,人们要使用计算机语言指挥计算机完成某种特作,就必须对这种工作进行特殊描述,所以它能够被人们读懂。另一方面,计算机必须按计算机语言描述来行动,从而完成其描述的特定工作,所以能够被计算机“读懂”。

计算机编程语言发展史

2 编程语言发展

计算机编程语言能够实现人与机器之间的交流和沟通,而计算机编程语言主要包括低级语言、高级语言以及面向对象设计语言,具体内容如下:

计算机编程语言发展史

2.1 机器语言

机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。二进制用两个不同的符号0(代表零)和1(代表一)来表示 。现代的计算机和依赖计算机的设备里都使用二进制。早期的程序设计均使用机器语言,程序员用0、1数字编程的程序代码打在纸带或卡片上,1打孔、0不打孔,再将程序通过纸带机或卡片机输入计算机从而进行运算。机器语言,也就是第一代编程语言。

2.2 汇编语言

不难看出机器语言作为一种编程语言, 灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令。通过这种方法,人们很容易去阅读 已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言, 即第二代计算机语言。

2.3 高级语言

在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。同时,因为资源的稀缺,计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简的编程语言的追求。用高级编程语言编写的程序需要经过翻译,翻译成机器所能识别的二进制数才能由计算机去执行。

2.4 面向对象语言

随着计算机硬件的飞速发展,以及应用复杂度越来越高,软件规模越来越大,原有的程序开发方式已经越 来越不能满足需求。传统的面向过程(包括 结构化程序设计)方法已经越来越不能适应快速多变的业务需求了,软件领域迫切希望找到新的银弹来解 决软件危机,在这种背景下,面向对象的思想开始流行起来。

面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分,有识认性、多态性、类别性和继承性四个主要特点。

计算机编程语言发展史

3 码农洞见

3.1 编程语言Bug的由来

Bug一词的原意是“臭虫”或“虫子”。但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”,这是怎么回事呢?

1945年,计算机还是由机械式继电器和真空管驱动的,机器有房间那么大。体现当时技术水平的MarkⅡ,是由哈佛大学制造的一个庞然大物。当技术人员正在进行不整机运行时,它突然停止了工作。他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。

原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug)钻进了一支真空管内,导致整个计算机无法正常工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,用来表示电脑系统或程序中隐藏的错误、缺陷、漏洞等问题。

来源:https://blog.csdn.net/pangpengshuai/article/details/121778322

标签:Java,计算机,编程,语言,发展史
0
投稿

猜你喜欢

  • c#实现断点续传功能示例分享

    2022-05-03 04:39:49
  • 基于Mock测试Spring MVC接口过程解析

    2023-11-27 12:04:30
  • Java实现从Html文本中提取纯文本的方法

    2023-06-18 20:28:26
  • C#设置自定义文件图标实现双击启动(修改注册表)

    2023-08-21 08:43:46
  • Java 1.8使用数组实现循环队列

    2022-02-11 04:00:10
  • Android 使用mediaplayer播放res/raw文件夹中的音乐的实例

    2023-12-19 08:28:11
  • Java 中的字符串常量池详解

    2023-08-15 04:43:45
  • java多线程编程实例

    2022-12-08 18:51:29
  • 解决SpringBoot web项目启动后立即关闭的问题

    2023-07-26 02:33:37
  • java.math.BigDecimal的用法及加减乘除计算

    2022-01-15 15:55:20
  • C# protobuf自动更新cs文件

    2021-10-08 10:16:28
  • Java String类简单用法实战示例【字符串输出、比较】

    2021-09-22 11:59:51
  • mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法

    2023-01-10 15:46:37
  • Android自定义StepView仿外卖配送进度

    2022-07-30 01:34:35
  • springboot2.x使用Jsoup防XSS攻击的实现

    2023-11-17 06:40:47
  • wpf将表中数据显示到datagrid示例

    2023-06-13 04:14:06
  • ClassLoader类加载源码解析

    2023-11-25 18:17:09
  • SpringBoot 创建容器的实现

    2022-04-03 08:41:02
  • 解决C#中Linq GroupBy 和OrderBy失效的方法

    2022-11-21 00:25:11
  • Java 继承与多态超详细梳理

    2023-11-26 09:01:08
  • asp之家 软件编程 m.aspxhome.com