高级语言相关理论[编译VS解释,动态VS静态,强类型VS弱类型]

news2024/9/22 5:37:02

编译型语言 VS 解释型语言

计算机高级语言按程序执行方式分为编译型和解释型

编译型和解释型语言的执行流程

编译型语言

  • 所有源代码一次性通过编译器转换成二进制指令,即生成一个可执行程序(如Windows下的.exe),可执行程序包含的就是机器码;且无需重新编译,实现一次编译,无限次运行
  • 运行可执行程序时,不再需要源代码和编译器,因此编译型语言可以脱离开发环境运行
  • 编译型语言一般不能跨平台,因为编译型语言与平台联系比较紧密(操作系统都是用编译型语言编写的),不同平台(操作系统)可能有其特定的编写规则,即不能在不同的操作系统之间随意切换
  • 编译型语言包括诸如C、C++、Golang、Pascal(Delphi)、汇编等编程语言

编译器的类型

  • 前端编译器:编译器的分析阶段也称为前端,它将程序划分为基本的组成部分,检查代码的语法、语义和语法,然后生成中间代码。分析阶段包括词法分析、语义分析和语法分析
  • 后端编译器:编译器的合成阶段也称为后端,优化中间代码,生成目标代码。合成阶段包括代码优化器和代码生成器

解释型语言

  • 每次执行程序都需要通过解释器一边执行一边转换,需要哪些源代码就转换哪些源代码,不生成可执行程序
  • 每次执行程序都需要重新转换源代码,所以无法脱离开发环境,所以解释型语言的执行效率天生就低于编译型语言,甚至存在数量级的差距
  • 解释型语言能跨平台,即实现“一次编写,到处运行
  • 解释型语言包括诸如Python、JavaScript、PHP、Shell、MATLAB等编程语言

半编译半解释型语言(结合编译和解释)

  • 源代码需要先通过前端编译器转换成中间文件(字节码文件),然后再将中间文件加载虚拟机中解释和编译执行,由于每个平台对应一个虚拟机,因此是源代码是可跨平台的,即实现“一次编写,到处运行”
  • 既使用解释器也使用编译器
  • 半解释和半编译语言包括诸如Java和C#等编程语言
    比如Java源代码执行流程

 编译和解释型语言对比

动态 VS 静态 & 强类型VS弱类型

概述

概述

详情

名称定义举例优势劣势编程语言
动态语言类在运行时可以改变其结构的语言。(强调改变代码结构)例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。//Object-C、C#、JavaScript、PHP、Ruby、Python、Erlang。
静态语言与动态语言相对应的,运行时结构不可变的语言就是静态语言。(强调改变代码结构)///Java、C、C++。
动态类型语言在运行时,确认数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型(强调检查数据类型)伪代码:

s ="hello";
i = 0;
b = true;

1.思维不受束缚,可以任意发挥,把更多的精力放在产品本身。
2.集中思考业务逻辑实现,思考过程即实现过程。
代码运行期间有可能会发生与类型相关的错误。PHP、ASP、JavaScript、Python、Perl、SQL、Ruby、ABAP、Unix Shell等。
静态类型语言在编译时,变量的数据类型就可以确定的语言。
多数静态类型语言要求在使用变量之前必须声明数据类型。(强调检查数据类型)
伪代码:

String s="hello"; //String 类型的变量
int i=0; //int 类型的变量
boolean b=true; //boolean 类型的变量

1.由于类型的强制声明,IDE(集成开发环境)有很强的代码感知能力,因此,在实现复杂的业务逻辑,开发大型商业系统,以及那些生命周期很长的应用中,依托IDE对系统的开发很有保障。
2.由于静态类型语言相对比较封闭,使得第三方开发包对代码的侵害性可以降到最低
1.开发代码的时候,需要格外注意变量的类型。
2.过多的类型声明会增加更多的代码
C、C++、Java、Delphi、C#等。
强类型语言强制数据类型定义的语言。
一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型。(强调转换数据类型)
例如,不能把一个整形变量当成一个字符串来处理。强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。Java、C#、Python、Object-C、Ruby
弱类型语言数据类型可以被忽略,一个变量可以赋不同数据类型的值。(强调转换数据类型)一个变量可以赋不同数据类型的值。/JavaScript、PHP、C、C++(C 和 C++ 有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近弱类型)
简图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/834824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana集成prometheus(1.Prometheus安装)

下载docker镜像 docker pull prom/prometheus docker pull prom/node-exporter启动 node-exporter 该程序用以采集机器内存等数据 启动脚本 docker run -d -p 9100:9100 prom/node-exporter ss -anptl | grep 9100启动截图 prometheus 启动脚本 # 3b907f5313b7 为镜像i…

工业电子中的安森美推出PWM控制器 NCP1252ADR2G 用于正向和反激应用

NCP1252ADR2G 深力科 控制器提供了构建专用于 ATX 电源和任何正向应用的成本高效且可靠的 AC-DC 开关电源所需的一切内容。由于使用内部固定的计时器,可以在不依赖辅助 Vcc 的情况下检测输出过载。欠压输入针对低输入电压提供保护,提高了转换器安全性。最…

c语言——杨辉三角

//杨辉三角 #include<stdio.h> int main() {int i,j,k,n0,a[10][10];while(n<0||n>13){/*行数不超过13&#xff0c;为了显示规范*/printf("n即输入行数");scanf("%d",&n);}printf("%d行杨辉三角如下&#xff1a;\n",n);for(i1;i…

迁移学习:使用Restnet预训练模型构建高效的水果识别模型

目录 引言 1 迁移学习 1.1 什么是迁移学习 1.2 迁移学习能解决什么问题 1.3 迁移学习面临的三个问题 1.3.1 何时迁移 1.3.2 何处迁移 1.3.3 如何迁移 1.4 迁移学习的分类 1.4.1 按照学习方式的划分 1.4.2 按照使用方法的划分 2 Restnet网络 2.1 Restnet介绍 2.2 Re…

【FAQ】EasyGBS平台通道显示在线,视频无法播放并报错400的排查

EasyGBS是基于国标GB28181协议的视频云服务平台&#xff0c;它可以支持国标协议的设备接入&#xff0c;在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能&#xff0c;既能作为业务平台使用&#xff0c;也能作为能力层平台调用。 我…

sentinel组件

目录 定义 4.加SentinelResource,blockHander是超过阈值之后执行的函数 5.设置阈值 6.springboot集成sentinel 定义 1.sentinel知道当前流量大小&#xff0c;在浏览器和后端之间加sentinel控制流量&#xff0c;避免大批量的瞬时请求都达到服务上&#xff0c;将服务压垮 2.…

数学建模-爬虫系统学习

尚硅谷Python爬虫教程小白零基础速通&#xff08;含python基础爬虫案例&#xff09; 内容包括&#xff1a;Python基础、Urllib、解析&#xff08;xpath、jsonpath、beautiful&#xff09;、requests、selenium、Scrapy框架 python基础 进阶&#xff08;字符串 列表 元组 字典…

Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

工具&#xff1a; win10、WinSCP 服务器生成ssh密钥&#xff1a; 打开终端&#xff0c;使账号密码登录&#xff0c;输入命令 ssh-keygen -t rsa Winscp下载 Downloading WinSCP-6.1.1-Setup.exe :: WinSCP window 生成密钥 打开powershell ssh-keygen -t rsa 注意路径 …

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本 tbms

​功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

js获取30天前的日期(不含今天)

js获取30天前的日期&#xff08;不含今天&#xff09; 例如&#xff1a;2023-8-4 let currentDate new Date(); // 获取当前日期currentDate.setDate(currentDate.getDate() - 30); // 将当前日期减去30天let year currentDate.getFullYear(); // 获取年份let month current…

行业追踪,2023-08-03

自动复盘 2023-08-03 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Element-plus中tooltip 提示框修改宽度——解决方案

tooltip 提示框修改宽度方法&#xff1a; 在element中&#xff0c;想要设置表格的内容&#xff0c;超出部分隐藏&#xff0c;鼠标悬浮提示 可以在el-table 上添加show-overflow-tooltip属性 同时可以通过tooltip-options配置提示信息 如下图代码 <el-tableshow-overflo…

C语言笔试训练【第二天】

文章目录 第一题 第二题 第三题 第四题 第五题 第六题 第七题 大家好&#xff0c;我是纪宁。 今天是C语言笔试训练的第二天&#xff0c;一起加油&#xff01; 第一题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() {char…

【雕爷学编程】 MicroPython动手做(38)——控制触摸屏

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片&#xff1a;K210&#xff08;64位双核带硬件FPU和卷积加速器的 RISC-V CPU&#xff09; 显示屏&#xff1a;LCD_2.8寸 320*240分辨率&#xff0c;支持电阻触摸 摄像头&#xff1a;OV2640&#xff0c;200W像素 扬声器&#…

Android 9-- 源码角度: Home键的监听和拦截

在做应用层APP需求的过程中&#xff0c;HOME键的监听&#xff0c;Back键的监听&#xff0c;这都是很常见的问题&#xff0c;那你有试过&#xff0c;去拦截HOME键的事件吗&#xff0c;有去了解过如何处理吗&#xff0c;流程如何 首先大家应该先了解一种情况&#xff0c;就是Andr…

Grafana集成prometheus(2.Grafana安装)

查找镜像 docker search grafana下载指定版本 docker pull grafana/grafana:10.0.1启动容器脚本 docker run -d -p 3000:3000 --namegrafana grafana/grafana:10.0.1查看是否启动 docker ps防火墙开启 检查防火墙3000端口是否开启 默认用户及密码 admin/admin 登录 ht…

Mapping温度分布验证选择数据记录仪时需要考虑的13件事

01 什么是温度分布验证&#xff1f; 温度分布验证是通过在规定的研究时间内测量定义区域内的多个点来确定特定温度控制环境或过程&#xff08;如冷冻柜、冰箱、培养箱、稳定室、仓库或高压灭菌器&#xff09;的温度分布的过程。温度分布验证的目标是确定每个测量点之间的差异&…

PHP客服系统聊天页面-thinkphp加载页面源码解释

PHP workerman客服系统加载聊天页面的代码逻辑流程&#xff0c;可以进行参考。如果想要二开修改的&#xff0c;可以根据这个流程来修改。 thinkphp的router部分 Route::get(kefu/:u/:f?, index/index/chat);查看控制器加载页面逻辑 application/index/controller/Index.php pu…

接口返回 blob 格式怎么转成 json

问题 工作中遇到一个接口逻辑是有时候会返回文件有时候会返回json&#xff0c;为了保证能接收到文件&#xff0c;需要将 responseType 设置为 blob。但是如果此时需要根据返回的是文件还是json来进行后续不同的操作&#xff0c;你在控制台输出返回的结果&#xff0c;会发现输出…

SpringBoot第16讲:如何生成接口文档之Swagger技术栈

SpringBoot第16讲&#xff1a;如何生成接口文档之Swagger技术栈 SpringBoot开发Restful接口&#xff0c;有什么API规范吗&#xff1f;如何快速生成API文档呢&#xff1f;Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。通俗的来讲&#xff0c;Swagger 就是将项目…