程序设计语言的分类

计算机只能执行机器语言,无论什么语言最终都要转换成机器语言才能被执行。高级语言又称算法语言(参考文章:计算机组成原理学习笔记)

#mermaid-svg-AIlC7ZzAFXy3c7aq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .error-icon{fill:#552222;}#mermaid-svg-AIlC7ZzAFXy3c7aq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AIlC7ZzAFXy3c7aq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .marker.cross{stroke:#333333;}#mermaid-svg-AIlC7ZzAFXy3c7aq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .cluster-label text{fill:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .cluster-label span{color:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .label text,#mermaid-svg-AIlC7ZzAFXy3c7aq span{fill:#333;color:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .node rect,#mermaid-svg-AIlC7ZzAFXy3c7aq .node circle,#mermaid-svg-AIlC7ZzAFXy3c7aq .node ellipse,#mermaid-svg-AIlC7ZzAFXy3c7aq .node polygon,#mermaid-svg-AIlC7ZzAFXy3c7aq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .node .label{text-align:center;}#mermaid-svg-AIlC7ZzAFXy3c7aq .node.clickable{cursor:pointer;}#mermaid-svg-AIlC7ZzAFXy3c7aq .arrowheadPath{fill:#333333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-AIlC7ZzAFXy3c7aq .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-AIlC7ZzAFXy3c7aq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AIlC7ZzAFXy3c7aq .cluster text{fill:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq .cluster span{color:#333;}#mermaid-svg-AIlC7ZzAFXy3c7aq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AIlC7ZzAFXy3c7aq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

程序设计语言
机器语言
汇编语言
高级语言

  • 编译型语言运行过程:效率高
#mermaid-svg-GxggTmPlr9QB3JJU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .error-icon{fill:#552222;}#mermaid-svg-GxggTmPlr9QB3JJU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GxggTmPlr9QB3JJU .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-GxggTmPlr9QB3JJU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GxggTmPlr9QB3JJU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GxggTmPlr9QB3JJU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GxggTmPlr9QB3JJU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GxggTmPlr9QB3JJU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GxggTmPlr9QB3JJU .marker.cross{stroke:#333333;}#mermaid-svg-GxggTmPlr9QB3JJU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GxggTmPlr9QB3JJU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .cluster-label text{fill:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .cluster-label span{color:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .label text,#mermaid-svg-GxggTmPlr9QB3JJU span{fill:#333;color:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .node rect,#mermaid-svg-GxggTmPlr9QB3JJU .node circle,#mermaid-svg-GxggTmPlr9QB3JJU .node ellipse,#mermaid-svg-GxggTmPlr9QB3JJU .node polygon,#mermaid-svg-GxggTmPlr9QB3JJU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GxggTmPlr9QB3JJU .node .label{text-align:center;}#mermaid-svg-GxggTmPlr9QB3JJU .node.clickable{cursor:pointer;}#mermaid-svg-GxggTmPlr9QB3JJU .arrowheadPath{fill:#333333;}#mermaid-svg-GxggTmPlr9QB3JJU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GxggTmPlr9QB3JJU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GxggTmPlr9QB3JJU .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-GxggTmPlr9QB3JJU .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-GxggTmPlr9QB3JJU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GxggTmPlr9QB3JJU .cluster text{fill:#333;}#mermaid-svg-GxggTmPlr9QB3JJU .cluster span{color:#333;}#mermaid-svg-GxggTmPlr9QB3JJU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GxggTmPlr9QB3JJU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

编译器
编译器
汇编器
链接器
源代码
预处理
目标代码
机器码
机器执行
  • 解释型语言运行过程:跨平台
#mermaid-svg-ZXnLz89NdKHHu7BG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .error-icon{fill:#552222;}#mermaid-svg-ZXnLz89NdKHHu7BG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZXnLz89NdKHHu7BG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZXnLz89NdKHHu7BG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZXnLz89NdKHHu7BG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZXnLz89NdKHHu7BG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZXnLz89NdKHHu7BG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZXnLz89NdKHHu7BG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZXnLz89NdKHHu7BG .marker.cross{stroke:#333333;}#mermaid-svg-ZXnLz89NdKHHu7BG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZXnLz89NdKHHu7BG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .cluster-label text{fill:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .cluster-label span{color:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .label text,#mermaid-svg-ZXnLz89NdKHHu7BG span{fill:#333;color:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .node rect,#mermaid-svg-ZXnLz89NdKHHu7BG .node circle,#mermaid-svg-ZXnLz89NdKHHu7BG .node ellipse,#mermaid-svg-ZXnLz89NdKHHu7BG .node polygon,#mermaid-svg-ZXnLz89NdKHHu7BG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZXnLz89NdKHHu7BG .node .label{text-align:center;}#mermaid-svg-ZXnLz89NdKHHu7BG .node.clickable{cursor:pointer;}#mermaid-svg-ZXnLz89NdKHHu7BG .arrowheadPath{fill:#333333;}#mermaid-svg-ZXnLz89NdKHHu7BG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZXnLz89NdKHHu7BG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZXnLz89NdKHHu7BG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZXnLz89NdKHHu7BG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZXnLz89NdKHHu7BG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZXnLz89NdKHHu7BG .cluster text{fill:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG .cluster span{color:#333;}#mermaid-svg-ZXnLz89NdKHHu7BG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZXnLz89NdKHHu7BG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

源代码
解释器
机器执行

各种语言类型的优缺点:(引自***好文值得推荐^_^)

汇编语言优缺点:

  • 优点:能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源,目标代码简短,占用内存少,执行速度快。

  • 缺点:不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性,难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试,使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。

高级语言的优缺点:

  • 优点:高级语言接近算法语言,易学、易掌握,级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;高级语言远离机器语言,与具体的计算机硬件关系不大,可移植性好,重用率高;由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
  • 缺点:运行速度基本上比直接用汇编写的慢,速度和程序大小与编译软件有关。

编译型语言的优缺点:

  • 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
  • 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型语言的优缺点:

  • 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
  • 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

拓展:

  • 编译程序:也称编译器,对源代码进行编译执行
  • 编译执行:将源代码(高级语言)一次翻译成目标程序(一般是低级语言,例如:汇编语言或者机器语言)
  • 解释程序:也称解释器(直译器),对源代码进行解释执行(不生成目标程序,会产生中间产物,例如:java通过编译器产生.class字节码文件,然后再通过jvm中的Java解释器解释执行,不产生目标程序所以Java是一种解释型语言)
  • 解释执行:将源代码一条一条的翻译成目标代码后,同时翻译一条就让计算机执行一条
  • 汇编程序:也称汇编器,将汇编语言翻译成机器语言
  • 链接程序:也称链接器,将一个或多个由编译器或汇编器生成的目标文件外加库打包成一个可执行文件
  • 预处理:编译器能够通过前后的代码,在不改变本来含义的前提对源代码做出相应的调整,使源代码更简洁,更高效

好文值得推荐 => 点击查看详情
编译器和解释器的区别 => 点击查看详情

程序设计语言的分类和详解相关推荐

  1. c语言菜单选择如何用字符形式,【创客天地】计算机二级C语言、VB考试详解分析...

    原标题:[创客天地]计算机二级C语言.VB考试详解分析 01 马上就要迎来计算机二级考试了,你准备好了吗?今天助手君准备了一点C语言干货,希望对即将考试的你有所帮助.(上期刚刚推了office,有需要 ...

  2. java文档注释定界符_c语言的注释定界符详解

    c语言的注释定界符详解 c语言的注释定界符是什么 1.最早期的C语言注释是:/* */ 2.后来又增加的行注释:// 其中/**/是多行注释,//是单行注释. 需要注意的是:C 语言的注释并不是可以出 ...

  3. 程序人生 | C语言字节对齐问题详解 - 对齐/字节序/位序/网络序等(上)

    本文首发于 2014-07-21 15:32:28 1. 引言 考虑下面的结构体定义: typedef struct{char c1;short s; char c2; int i; }T_FOO; ...

  4. C语言字节对齐问题详解

    转载原文连接:https://www.cnblogs.com/clover-toeic/p/3853132.html C语言字节对齐问题详解 引言 考虑下面的结构体定义: 1 typedef stru ...

  5. C语言基础之操作符详解

    C语言基础之操作符详解 操作符的分类 算术操作符 移位操作符 位操作符 逻辑操作符 逗号表达式 表达式求值 隐式类型转换 算术转换 操作符的属性 xwg今天就带各位大佬来了解一波C语言的操作符. 操作 ...

  6. 山西2019数据结构专升本_山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解...

    山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解 说明:本试题分C程序设计和数据结构(C语言版)两部分,各占100分,满分200分,考试时间150分钟. 第一部分C程序设计 一.单项选 ...

  7. 山西2019数据结构专升本_山西省2018年专升本选拔考试(C程序设计数据结构)历年真题详解...

    1 山西省 2018 年专升本选拔考试( C 程序设计数据结构)历年真题详 解 说明 : 本试题分 C 程序设计和数据结构 (C 语言版 ) 两部分, 各占 100 分, 满分 200 分,考试时间 ...

  8. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  9. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解

    原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...

  10. php mysql无限_php+mysql实现无限分类实例详解

    php+mysql实现无限分类实例详解 fenlei($arr[$i][0]);   //$arr[$i][1]表示第$i+1个分类的id的值.进行递归,也就是把自己的id作为f_id参数把自己的子类 ...

最新文章

  1. 墙裂推荐!卡神力作《代码随想录》,上架首日卖爆!
  2. b站2020用户画像_B站2020年度动画大选来袭!论引战,还是要看B站!
  3. Mac 环境变量配置
  4. 【渝粤教育】国家开放大学2018年秋季 0707-21T办公室实务 参考试题
  5. 前端学习(1868)vue之电商管理系统电商系统之登录退出实现表单的预先认证
  6. 对Url Schemes的简单了解
  7. mybatis sql xml 字符逃脱
  8. C++之new再探究
  9. 抽象类及继承(本科生和研究生类)
  10. 关于工作和人生观(转)
  11. php webservice 上传大文件,JS和WebService大文件上传代码分享
  12. Cadence PSpice 仿真6:反向放大器傅里叶仿真(FFT,谐波分析)实战图文教程
  13. FileZilla 使用技巧
  14. Android Studio中运行Android模拟器
  15. 从事大数据行业5年,峰哥总结出了以下 7 条建议
  16. 幂函数导数公式的推导
  17. ADL SDK V10.2 中文文档
  18. 地理Essay范文的组成剖析
  19. Java 语言有哪些特点?
  20. 短链接java代码_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

热门文章

  1. 湖北省金税盘服务器链接网站,湖北省网上税务局入口:https://wsswj.hb-n-tax.gov.cn...
  2. STM32串口通信详解
  3. CSS3实现DIV圆角完整代码
  4. 测试人员必知的软件测试文档有哪些
  5. 嵌入式系统安全实验-下载Linux内核源代码生成内核映像
  6. 数电笔记之逻辑函数卡诺图化简
  7. 单片机c语言取反符号怎么打,arduino取反怎么写
  8. android ts合并_ts视频合并工具安卓版
  9. 如何选择白盒测试工具
  10. 快速上手使用本地测试工具postman