什么是超越编程(逾编程)(元编程?)
超越编程(逾编程)(元编程?)(meta-programming)
目录
1. meta- 的词源
2. 逾编程(meta-programming) 的直实含义
2.1 定义
2.2 说明
3. 翻译成“元编程”应该是一种错误
1. meta- 的词源
这是一个源自希腊语的构词元素,其有三种含义:
(1) 在……之后(after),在…… 后面(behind); 在……之中(among), 介于……之间(between)。
(2) 变更(changed), 改变(altered)。
(3) "higher, beyond;" from Greek meta (prep.) "in the midst of; in common with; by means of; between; in pursuit or quest of; after, next after, behind," in compounds most often meaning "change" of place, condition, etc. (“更高,超越,”来自希腊语“meta”(介词),“在……之中;与……相同;通过……的方式;介于……之间;追求或寻求;在……之后,紧随……之后,”,在复合词中经常指地点、条件、等的“改变”。)
The notion of "changing places with" probably led to the senses of "change of place, order, or nature," which was a principal meaning of the Greek word when used as a prefix (but it also denoted "community, participation; in common with; pursuing"). (“交换位置”的概念可能导致“改变地点、秩序或性质”的感觉,这是该希腊词用作前缀时的主要含义(但它也表示“社区、参与;共同;追求”)。)
The third, modern, sense, "higher than, transcending, overarching, dealing with the most fundamental matters of," is due to misinterpretation of metaphysics (q.v.) as "science of that which transcends the physical." This has led to a prodigious erroneous extension in modern usage, with meta- affixed to the names of other sciences and disciplines, especially in the academic jargon of literary criticism: Metalanguage (1936) "a language which supplies terms for the analysis of an 'object' language;" metalinguistics (by 1949); metahistory (1957), metacommunication, etc. (第三个现代意义是“高于、超越、统领、处理……的最基本的问题”,这是由于形而上学(有形事物之上的学问)被误解为“超越物理的科学”。这导致了现代用法中出现了巨大的错误扩展,将“meta”附加到其他科学和学科的名称上,尤其是在文学批评的学术术语中:元语言(1936 年)“一种为分析‘对象’语言提供术语的语言”;元语言学(1949 年);元历史(1957 年)、元交流等。)
2. 逾编程(meta-programming) 的直实含义
2.1 定义
Metaprogramming is a computer programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyse, or transform other programs, and even modify itself, while running.[1][2] In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time.[3] It also allows programs more flexibility to efficiently handle new situations with no recompiling.
逾编程是一种计算机编程技术,计算机程序能够将其他程序视为自己的数据。这意味着程序可以设计为在运行时读取、生成、分析或转换其他程序(译注:这里指其它程序代码,也就是让程序本身也可以生成代码),甚至修改自身。[1][2] 在某些情况下,这允许程序员最大限度地减少表达解决方案的代码行数,从而缩短开发时间。[3] 它还允许程序更灵活地高效处理新情况而无需重新编译。(译注:也就是说,这种编程技术所写出的代码,可以做程序员做的事情,这是越超了原来的编程只实现程序本身的功能,这正是meta-programming 的本来含义。)
2.2 说明
传统程序主要是操纵数据结构并产生输出的代码。例如,sqrt() 函数以整数(即数据结构)作为输入,对其进行操纵,然后输出其平方根。当然,数据结构可能比简单的整数或双精度数复杂得多,但这是程序(program)的一般概念。
在另一方面,编译器是一个程序,它将源代码(同样是数据结构)作为输入,将其转换为一堆可以更好地理解的数据结构,并产生可能是二进制代码、字节码或中间语言等格式/结构的输出。解释器大致就是每次运行代码时执行此过程的编译器。
现在,如果我们可以编写操纵数据结构的代码,并编写将人类编写的代码视为数据结构的编译器,为什么我们不能写出编写或操纵其他代码的代码呢?事实证明,我们可以!而且这已经持续了很长一段时间! Lisp 于 1958 年推出,是首批具备此类功能的语言之一。原因是 Lisp 使用 S 表达式作为语法和数据结构。因此,Lisp 代码可以作为输入数据结构输入到 Lisp 程序中,并由它们进行操作!这在某种程度上是 Lisp 首创的。其他通用语言使用的语法比 S 表达式更易读。在现代语言中,逾编程以不同的方式表示。C++ 中的模板是编译时逾编程的一种形式。其他语言使用 eval、goto、自动编程和其他技术在运行时提供逾编程功能。一类特别鼓励逾编程的语言是动态语言。这类语言通常是动态类型的,通常非常灵活。Ruby 和 Python 就是这类语言的很好例子。
现在,所有这些都很好,但为什么首先要使用动态编程呢?你可能会想,编写代码的代码?谁需要它?我为什么不自己写代码呢?!这些都是合理的问题,所以让我们举一个真实的例子来说明它的用法。在 Ruby on Rails 中(注:一个 Web 应用程序框架,包含根据模型-视图-控制器 (MVC) 模式创建数据库支持的 Web 应用程序所需的一切),数据库表(例如“学生”表)由类表示。所以现在您有一个刚刚从该类实例化的“学生”对象,并且想要查找 GPA 低于 3.0 的所有大三学生,您会怎么做?您可以随时编写 Sql 查询,但说真的,您该怎么做?!如果您使用 Rails,那么您只需调用 student.find_all_by_year_and_gpa() 并向其传递您的条件!但是等等,谁定义了该方法?!Rails 团队不能只定义世界上所有可能的方法吗?毕竟,其他人可能会做 student.find_all_by_name_and_year(),甚至只是反过来,如 student.find_all_by_gpa_and_year()!员工表怎么样?或者产品表?这太疯狂了!您可以看到,即使 Rails 团队知道我们的数据库列的名称,这里也有无限的可能性和排列!那么这是怎么发生的呢?好吧,Rails 使用 Ruby 的逾编程功能来提供如此出色的功能。事实证明,Ruby 有一个名为“method_missing?”的方法,它可以拦截对对象上未定义方法的调用,并对其进行处理!换句话说,您刚刚调用的方法在您调用它之前并不存在!Rails 拦截了对不存在的 find_by_year_and_gpa() 方法的调用并解析了它的名称。它以“find_by_”开头,后跟“xxx_and_yyy”,因此它知道您正在尝试使用其两个列在数据库表中查找某些内容。因此,它只需获取“xxx”和“yyy”并检查是否可以找到具有相同名称的数据库列,如果可以,它会调用 define_method(),该方法会为您编写一个构造该查询的方法,在 Student 类上定义它,最后返回结果!现在,每次您在该学生对象上调用 find_all_by_year_and_gpa() 时,都会调用新定义的方法,而不是每次都经历整个过程!当然,您可以只在 method_missing?() 中处理请求,但每次都经历这个过程效率低下。如果我们有一个循环,每次迭代都调用此方法会怎么样?这只是您可以使用逾编程做什么的一个例子!它很有意义,在许多情况下非常需要!您只需要花时间了解它是什么以及如何以及何时使用它。
3. 翻译成“元编程”应该是一种错误
在汉语中,“元”的词义有很多,最常见的词义有:
(1) 头、首、始、大:~凶。~首。~旦。~年。~勋。~帅。状~(科举考试第一名)。
(2) 基本:单~。~件。~气(精气,根本)。~素。~音。
(3) 同“圆”。
(4) 未知数:一~二次方程。
(5) 中国朝代名:~代。~曲。
(6) 姓。
(7) 古同“玄”,清代避康熙皇帝(玄烨)名讳,以“元”代“玄”。
但是,以上词义没有一个与“meta-programming”所要表达的思想贴合。为什么翻译成“元编程”可能是因为在最初网页设计中有一种元素放在文件头部,以方便搜索引擎进行搜索,而这种元素称“meta”元素,这时候翻译成“元”是合理的。但后来但凡在编程界出现“meta-”就统统译为“元”则是错误的。
综合以上说明,我认为这个“meta-”在“meta-programming”中译为“超越”更为合理,如果用一个字表达表就使用“逾”。即译为“逾编程”。
相关文章:
什么是超越编程(逾编程)(元编程?)
超越编程(逾编程)(元编程?)(meta-programming) 目录 1. meta- 的词源 2. 逾编程(meta-programming) 的直实含义 2.1 定义 2.2 说明 3. 翻译成“元编程”应该是一种错误 1. meta- 的词源 这是一个源自希腊语的构词元素,其有三种含义ÿ…...
深入理解设计模式之解释器模式
深入理解设计模式之解释器模式 在软件开发的复杂世界中,我们常常会遇到需要处理特定领域语言的情况。比如在开发一个计算器程序时,需要解析和计算数学表达式;在实现正则表达式功能时,要解析用户输入的正则表达式来匹配文本。这些场景都涉及到对特定语言的解释和执行,而解…...
用户体验测试
引言 在数字化时代,用户体验(UX)是衡量产品成功与否的关键指标之一。它不仅关乎产品的功能和性能,更涉及用户在使用过程中的情感反应和信任建立。作为软件测试专家,深入理解并实践用户体验测试是确保产品竞争力的关键。…...
51单片机-串口通信编程
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制盒中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器)计算T1的初值,装载TH1\TL1启动T1(编程TCON中的TR1位…...
论文略读:Uncovering Hidden Representations in Language Models
202502 arxiv 说一下主要结论吧 对于下游任务,语言模型的中间层在所有架构和任务中始终优于最后一层 这挑战了使用最后一层表示的传统观点。 不同的架构表现出不同的信息压缩模式。自回归模型在中间层存在瓶颈,而双向模型则保持更均匀的趋势 BERT通过双…...
正确清理C盘空间
一.系统清理 正确清理C盘空间主要是删除不需要的文件和应用程序,以释放磁盘空间。以下是一些常用的方法: 删除临时文件:在Windows搜索框中输入“%temp%”,打开临时文件夹,将其中的文件全部删除。 清理回收站…...
数据表的存储过程和函数介绍
文章目录 一、概述二、创建存储过程三、在创建过程中使用变量四、光标的使用五、流程控制的使用六、查看和删除存储过程 一、概述 存储过程和函数是在数据库中定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可…...
IntelliJ IDEA 控制台输出中文出现乱码
IntelliJ IDEA 控制台输出中文出现乱码通常是由于编码设置不一致导致的。以下是常见原因及解决方法 1. 项目编码设置 检查路径:File → Settings → Editor → File Encodings 确保 Project Encoding、Global Encoding 和 Default Encoding for Properties Files 均…...
ARMS 助力假面科技研发运维提效,保障极致游戏体验
客户介绍与项目背景 假面科技成立于 2014 年,致力于打造创新的数字产品,火爆一时的“狼人杀”、“谁是卧底”、“足记相机”都是假面科技旗下产品,公司产品总数超过 40 款,覆盖用户数超过 2 亿人。 随着业务的持续发展ÿ…...
go json处理 encoding/json 查询和修改gjson/sjson
推荐 标准库encoding/json import ("encoding/json""log" )// Student1 注意点: // 1. 注意alain别名的写法: json:"name1" 而非 "json:name1" // 2. 注意json.Marshal的时候只输出首字母大写的属性 // 3. jso…...
Web Worker终极优化指南:4秒卡顿→0延迟的实战蜕变
💡 导读:从4秒卡顿到丝滑响应 真实痛点场景:当斐波那契数列计算量达10亿次时,页面完全冻结4.2秒!通过Web Worker优化后,UI响应时间降至16ms以内。本文手把手带您实现性能蜕变! 一、Web Worker核…...
python读取pdf文档
import io import pdfplumber from opencc import OpenCC import fitz # pymupdf import osfile_path /document/pdf/xxx.pdf output_dir /classification/pdf/images #获取图片 demo def extract_images_from_pdf(pdf_path, output_dir):# 确保输出目录存在if not os.path.…...
CSS垂直居中终极方案:告别复杂计算,拥抱现代布局
CSS垂直居中终极方案:告别复杂计算,拥抱现代布局 📌 前言:为什么垂直居中如此重要?一、2024年最推荐的3种方案1. Flexbox布局(首推方案)2. Grid布局(未来趋势)3. Transfo…...
ROS2 应用:按键控制 MoveIt2 中 Panda 机械臂关节位置
视频讲解 ROS2 应用:按键控制 MoveIt2 中 Panda 机械臂关节位置 创建 ROS 2 包 进入工作空间的 src 目录,然后创建一个新的 Python 包: ros2 pkg create --build-type ament_python panda_joint_control --dependencies rclpy control_msgs…...
SHELL32!Shell_MergeMenus函数分析
SHELL32!Shell_MergeMenus函数分析 UINT Shell_MergeMenus( [in] HMENU hmDst, [in] HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags ); 参数 [in] hmDst 类型: HMENU 要向其添加 hmSrc…...
python: SQLAlchemy (ORM) Simple example using SQLite
领域层(Domain Laye):定义了 School 实体类和 SchoolRepository 抽象基类,明确了业务实体和数据访问的契约。 基础设施层(Infrastructure Laye):通过 SQLAlchemy 实现了 SchoolRepository 类&am…...
MySQL 视图入门
一、什么是 MySQL 视图 1.1 视图的基本概念 在 MySQL 中,视图是一种虚拟表,它本身并不存储实际的数据,而是基于一个或多个真实表(基表)的查询结果集。可以把视图想象成是一个预定义好的查询语句的快捷方式。当你查询…...
【洛谷排序算法】P1012拼数-详细讲解
这道题本质上是通过确定数字的拼接顺序来得到最大拼接数,虽然主要思路是利用字符串及其比较规则来实现,但也可以基于数组结合一些转换操作来解决,以下是大致思路和代码示例: 【算法思路】 首先将输入的数字存储在数组中。然后自…...
在WPS中设置word的页码不从第一页开始,从指定页开始插入页码
大家好,我是小鱼。 在日常的办公中为Word文档页面插入页码是经常要做的。如果一个文档有几十页,插入页码不仅可以快速定位到文章的内容,如果需要制作目录也方便制作。正确情况下插入页码都是从第一页开始的,但是有些文档比如说标…...
鸿蒙app 开发中 对于数组方法 filter 的理解
这段代码是 TypeScript 中数组 filter 方法的类型定义,下面将详细解释其各个部分的含义、作用及使用场景。 整体功能概述 filter 方法是 JavaScript 和 TypeScript 中数组对象的一个内置方法,它的主要功能是创建一个新数组,新数组中的元素是…...
【废物研究生刷算法】字符串
文章目录 1. 反转字符串2. 替换数字3. 反转字符串中的单词4. 右旋字符串总结1、字符串处理函数2、字符串切片 如果使用python处理字符串,有很多py内置的函数可以使用,主要还是记住这些处理方法。 1. 反转字符串 class Solution:def reverseStr(self, s, …...
深入理解 SQL 注入漏洞及解决方案
一、引言 在当今数字化时代,数据库作为存储和管理数据的核心组件,其安全性至关重要。SQL 注入是一种常见且极具威胁性的数据库安全漏洞,它可能导致数据泄露、篡改甚至系统被完全控制。本文将深入探讨 SQL 注入漏洞的产生原因、表现形式以及如…...
Next.js 学习-1
Next.js学习 引用:https://www.nextjs.cn/learn/basics/create-nextjs-app 先试试水吧,正好dify用的这个构建的前端项目。 使用 如果您尚未安装 Node.js,请 从此处安装。要求 Node.js 10.13 或更高版本。 好吧得用新的了,记得…...
[ComfyUI]Recraft贴图开源方案,实现服装印花自由
一、介绍 今天发现了一个简单又好用的插件,可以实现类似Recraft的贴图功能,这是一个作者开发的ComfyUI插件,叫做Comfyui-Transform 这个插件比我们简单的图像覆盖多了一些可控参数,形状、透明度、倾斜、拉升和混合模式等诸多可控…...
JavaScript 数组连接方法
在 JavaScript 中,有多种方法可以连接数组。每种方法都有其自身的优点和缺点。常见的方法包括 concat()、扩展运算符(...)、push()、splice()、slice()、join()、forEach()、reduce() 以及 Array.from() 等。下面是这些方法的详细说明和示例代码。 1. concat() co…...
Windows安装MySQL教程
1.下载 下载地址:https://www.mysql.com/downloads/ 下载版本:MySQL Installer for Window 2.安装MySQL 以下只列出需要注意的一些界面,没出现的界面默认继续即可。 1.选择安装类型 提供了多种安装模式,包括默认开发版、仅…...
VOS3000线路对接、路由配置与路由分析操作教程
一、VOS3000简介 VOS3000是一款常用的VoIP运营平台,支持多种线路对接和路由配置,适合新手快速上手。本教程将带你了解如何对接线路、配置路由以及进行路由分析。 二、线路对接 准备工作 获取线路信息:从供应商处获取线路的IP地址、端口、用…...
PiscTrace的开发者版
基于 PiscTrace 架构的视图处理的纯开发板,支持静态图片、实时视频流、摄像头视频流和网络视频流的处理。与 PiscTrace 应用版相比,开发者版通过直接的代码开发,提供了更高的灵活性和可定制性,适用于需要深度定制和复杂处理的应用…...
OnlyOffice:前端编辑器与后端API实现高效办公
OnlyOffice:前端编辑器与后端API实现高效办公 一、OnlyOffice概述二、前端编辑器:高效、灵活且易用1. 完善的编辑功能2. 实时协作支持3. 自动保存与版本管理4. 高度自定义的界面 三、后端API:管理文档、用户与权限1. 轻松集成与定制2. 实时协…...
github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新
1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥(如果还没有…...
本周行情——250222
本周A股行情展望与策略 结合近期盘面特征及市场主线演化,本周A股预计延续结构性分化行情,科技成长与政策催化板块仍是资金主战场,但需警惕高标股分歧带来的波动。以下是具体分析与策略建议: 1. 行情核心驱动因素 主线延续性&…...
分发糖果(力扣135)
题目说相邻的两个孩子中评分更高的孩子获得的糖果更多,表示我们既要考虑到跟左边的孩子比较,也要考虑右边的孩子,但是我们如果两边一起考虑一定会顾此失彼。这里就引入一个思想:先满足右边大于左边时的糖果分发情况,再…...
QML ToolButton与DelayButton的使用、详解与自定义样式
QML MenuBarItem与MenuItem的使用、详解与自定义样式 一、介绍1、ToolButton常见用法基础示例设置图标 常用属性texticonenabledshortcutcheckable & checked 信号onClickedonPressed 和 onReleased 样式和外观使用场景 2、DelayButton使用场景核心属性1. delay 核心信号1.…...
动态规划
简介 动态规划最核心两步: 状态表示:dp[i]代表什么状态转移方程:如何利用已有的dp求解dp[i] 只要这两步搞对了, 就完成了动态规划的%95 剩下的就是细节问题: dp初始化顺序(有时是倒序)处理边…...
SQL FIRST() 函数详解
SQL FIRST() 函数详解 在SQL中,FIRST() 函数是一个用于处理查询结果的聚合函数。它通常与 GROUP BY 子句结合使用,用于返回每个分组中的第一个记录。本文将详细解释 FIRST() 函数的用法、参数、返回值以及与它的关联函数。 1. 函数概述 FIRST() 函数的…...
ClickHouse系列之ClickHouse安装
ClickHouse系列之ClickHouse安装 1 ClickHouse2 Docker安装ClickHouse2.1 docker 启动脚本2.2 默认用户及密码2.3 8123和9000端口的作用2.3.1 81232.3.2 9000 3 Clickhouse连接3.1 命令行客户端连接3.1.1 常见的客户端脚本3.1.1.1 查看数据库:show databases;3.1.1.…...
大模型监督微调(SFT)技术解析
大模型监督微调(SFT)技术深度解析 一、基本知识介绍 监督微调(Supervised Fine-Tuning)是连接预训练与具体应用的关键技术层。其本质是通过特定任务的标注数据,在保持预训练模型核心能力的前提下,调整模型…...
PTA: 有序顺序表的合并
请设计一个能够将有序顺序表LA,LB进行合并的算法,要求合并后的顺序表LC依然有序。 例如: LA的元素 1 3 5 7 LB的元素 2 4 LC的元素 1 2 3 4 5 7 其中,LA和LB的长度不超过1000,当中的元素为非递减排序。 输入格式: 第…...
Vuetify解决与旧版浏览器(如Internet Explorer 11)的兼容性问题
简介 由于Vuetify使用了ES2015/2017的特性,这些特性在旧版浏览器中可能不被支持,因此需要通过配置来确保这些特性能够被正确转换。 配置1 在项目项目根目录下的vue.config.js文件,或nuxt.config.ts中,添加 transpileDependencies …...
android,flutter 混合开发,pigeon通信,传参
文章目录 app效果native和flutter通信的基础知识1. 编解码器 一致性和完整性,安全性,性能优化2. android代码3. dart代码 1. 创建flutter_module2.修改 Android 项目的 settings.gradle,添加 Flutter module3. 在 Android app 的 build.gradl…...
Shell文档归档、压缩与解压
Shell文档归档、压缩与解压 1、文件归档与压缩2、zip、gzip与tar指令2.1、zip指令2.2、gzip指令2.3、tar指令 1、文件归档与压缩 归档文件是指将一组文件或目录保存到一个文件中;压缩文件是指将一组文件或目录按照某种存储格式保存到一个文件中,所占磁盘…...
【Bluedroid】AVRCP 连接源码分析(一)
一、AVRCP协议简介 AVRCP(Audio/Video Remote Control Profile)是蓝牙协议栈中的一个重要部分,它定义了蓝牙设备之间的音视频传输控制的流程和特点。AVRCP使得用户可以通过一个蓝牙设备(如手机)远程控制另一个蓝牙设备(如蓝牙耳机或音箱)上的音视频播放,如播放、暂停、…...
CMake入门
1.什么是CMake Makefile想必大家都不陌生吧,它能够解决我们的自动化编译问题,大多是IDE软件都集成了make,譬如 Visual C的 nmake、linux 下的 GNU make、Qt 的 qmake 等等。 不同的IDE所集成的make工具所遵循的规范和标准都不同,也…...
基于vite6创建项目
pnpm create vue vite已自动配置路径,在.config.js jsconfig.json 中 按需引用element-plus 官网中有 pnpm install element-plus npm install -D unplugin-vue-components unplugin-auto-import // vite.config.ts import { defineConfig } from vite import Aut…...
简单封装一个websocket构造函数
问题描述 最近维护一个老项目,发现项目中有大量重复代码,特别是websocket的调用这一块,同样的代码复制了十几个页面,于是自己封装了一个websocket调用的构造函数。 export default class CreateWebSocket {constructor(url) {//…...
大模型产品Deepseek(八)、数据嵌入+知识库管理+联网搜索,实现精准的知识查询
如何将数据嵌入到DeepSeek中以实现精准的知识查询 1. 目标 DeepSeek是一个强大的基于大模型的知识查询工具,能够通过数据嵌入和智能查询功能提供精确的答案。本文将详细介绍如何在DeepSeek中进行数据嵌入,以便最大化其在实际应用中的价值。 2. 推荐使用的Page Assist插件 …...
探索Vue:数字翻滚动画的实现与优化
在前端开发中,动画效果总能为用户界面增添一抹生动与趣味。今天,我们将深入剖析一个基于Vue 3实现的数字翻滚动画组件,从代码结构到功能实现,再到性能优化,一步步揭开它的神秘面纱。 组件概述 这个Vue组件名为Number…...
POI pptx转图片
前言 ppt页面预览一直是个问题,office本身虽然有预览功能但是收费,一些开源的项目的预览又不太好用,例如开源的:kkfileview pptx转图片 1. 引入pom依赖 我这个项目比较老,使用版本较旧 <dependency><gro…...
力扣LeetCode: 2506 统计相似字符串对的数目
题目: 给你一个下标从 0 开始的字符串数组 words 。 如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。 例如,"abca" 和 "cba" 相似,因为它们都由字符 a、b、c 组成。然而,"aba…...
DeepSeek模型量化
技术背景 大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。常见的就是把Float16的浮…...