三种程序设计语言概要

作者: hylerrix | 来源:发表于2016-07-27 23:16 被阅读668次

引言

毕竟西邮编程气氛浓厚,加上大神学长学姐的支持和学弟学妹对编程的兴趣,上一篇简书文章《浅谈C语言历史》的分享效果还可以,自己在校内建立的编程讨论群短短几天就有了两百多的成员,并开始以内部推荐的形式邀请新成员一同加入学习编程的氛围。好的分享内容才能引发持续交流,这一期,我们来简单了解下三种程序设计语言 -- 机器语言、汇编语言和高级语言的区别与联系,做好充足的准备迎接编程成长之路。

语言只是工具,不要过早的去想着如何编写代码。
要让自己的第一个 “Hello World” 敲得振振有力。

第一台通用计算机 -- ENIAC

由于第二次世界大战的需要,历经4年的科研与实践,世界上第一台通用计算机、第二台电子计算机 ENIAC(Electronic Numerical Integrator And Calculator)于 1946 年 2 月 14 日在美国宾夕法尼亚大学宣告诞生,标志着计算机时代的到来。

世界上第一台通用计算机 ENIAC

ENIAC 是基于真空管技术研发的第一代计算机,无操作系统,采用机器指令或汇编语言编程,下图便是编程语言的层次结构,具体概念将一一道来。

编程语言的层次结构

机器语言

机器语言(机器码)是用二进制代码(只包含“0”和“1”的代码)表示的、计算机能直接识别和执行的一种机器指令的集合。最早的计算机直接靠机器语言运行,输入方法是靠打孔带(一个条带上面有实心空心的小点,对应1和0)。后来出现了磁带,但指令输入的本质没有改变。
通俗来讲,那时需要靠科研人员给计算机一段对应 0 和 1 的打孔带,计算机才能执行相应的操作并返回预期的结果。

用机器语言与计算机沟通

这些包含 “0”、“1” 的二进制机器码具有灵活、直接执行和速度快的特点,可以根据计算机设计者的实际需要直接操作计算机的硬件结构。但由于机器语言与硬件构造密切相关,每个计算机的硬件也不尽相同,因此不同型号的计算机其机器语言是不相通的,按照一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

一个机器语言源码示例

二进制的机器语言也是有规则的,每一串相应的01映射着一条特定的指令。

机器语言的简要实例

计算机发展至今,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不用再去学习机器语言了。

汇编语言

汇编语言(符号语言)是将二进制的机器码通过助记符的方式让人可以更方便地编写并检查的低级语言。汇编语言接近机器语言,可以看做是机器语言的另一种形式,计算机在运行时也需要将汇编语言变为机器语言的二进制形式才可运行,这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。

一个汇编语言源码示例

汇编语言的特点:

  1. 面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
  2. 保持了机器语言的优点,具有直接和简捷的特点。
  3. 可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
  4. 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
  5. 经常与高级语言配合使用,应用十分广泛。

汇编语言在编程发展史中承前启后,它第一次摆脱了机器语言的束缚,进入到以接近人类语言为发展目标的时代。

高级语言

高级语言是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,但机器是无法直接执行的,需要最终编译链接成二进制的机器代码才可被计算机直接执行。

高级语言并不特指某一种具体编程语言,而是包括很多编程语言在内。如目前流行的 JAVA 、 C 、 C++ 、 C# 、 Pascal 、 Python 、 PHP 、VC 语言等等,这些语言的语法、命令格式不尽相同。

一个简单的高级语言程序 -- C语言

因此将程序设计语言从机器语言抽象到高级语言,带来的主要好处是:

  • 高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
  • 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
  • 高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
  • 由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。

编译型语言和解释型语言

高级语言又分编译型语言(C、C++等)和解释型语言(JAVA、JavaScript、PHP等),虽然最终都需要编译成机器语言才能被计算机识别和执行但是——

  • 编译型语言需要将源码一并地转换成机器语言的程序之后再执行,针对不同计算机结构编译后的机器语言无法跨平台运行;
  • 解释型语言是在运行的时候将程序先编译成字节码(可以理解为一个中间语言),再在运行的时候由运载解释型语言的环境将字节码翻译成机器语言。但这个过程中可以依靠运载环境根据不同的计算机硬件结构生成相应的机器语言,从而具有跨平台的特性。

相关文章

  • 三种程序设计语言概要

    引言 毕竟西邮编程气氛浓厚,加上大神学长学姐的支持和学弟学妹对编程的兴趣,上一篇简书文章《浅谈C语言历史》的分享效...

  • 一 MVC发展史历程

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 四 属性注入的三种实现方式

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 七 Spring-IoC 注解

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 二 Spring概要

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 五 Spring-IoC XML配置

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 三 Spring-依赖注入概要(IOC)

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 六 Spring-XML设置Bean的值

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 九 Spring-AOP切面编程(1)

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

  • 十一 Spring-AOP切面编程(3)

    目录 1. Web MVC发展史历程2.Spring概要3.Spring-依赖注入概要(IOC)4.属性注入的三种...

网友评论

  • 人可工作室:这种科普文章,严谨点、多写点,很棒,必须点赞👍
  • 书痕:现在解释型语言/编译型语言的分法有点儿不大恰当了,解释和编译是语言转换成机器码的不同方法,而不是语言本身的特性。比如java,有解释执行的,也有即时编译执行的(AOT什么的),也可以编译成独立.exe执行,已经很难说它是解释型还是编译型语言了
    书痕:@icorvoh 共同学习^_^
    hylerrix:@书痕 恩恩,我会在之后的学习中改改的。这同时也是笔记的地方吧~谢谢你的点醒。
  • 00a6bfe567f8:我是武术专业,计算机小白,希望多了解一些这样的知识
    00a6bfe567f8:@icorvoh 嗯呐! :relaxed:
    hylerrix:@少先队长MG 嗯~计算机知识在互联网上找起来很方便的,有时候认识一些业界的人,看看他们到底在做什么更能帮助成长哈。一起努力 :smiley:
    hylerrix:@少先队长MG 嗯~计算机知识在互联网上找起来很方便的,有时候认识一些业界的人,看看他们到底在做什么更能帮助成长哈。一起努力 :smiley:
  • 怎宽:就是我对这了解得不多,看起来都是强行记忆
    hylerrix:@独Q慕Q周 很高兴认识你。我的专业是软件工程,大二~一起努力 :sunglasses:
    怎宽: @icorvoh 好的,谢谢。我是电子商务的,大一
    hylerrix:@独Q慕Q周 如果你是计算机专业的话,这些都不用太多的去“记忆”的,都是基础~我也是在确定这篇文章的大致主题后,慢慢查资料补充内容的,而非一气呵成的去默写。在写作之中记忆比“强行”记忆更好吧~
  • 怎宽:写得挺好的

本文标题:三种程序设计语言概要

本文链接:https://www.haomeiwen.com/subject/fuxojttx.html