萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 先搭个模型,效果好就试着解释它,是我们常见的AI设计套路。 但,有人已经受够了这样“莫名其妙”的流程—— 既然人类总是试图解释AI模型,那为什么不能反过来,直接用看得懂的程序来设计AI模型权重呢? 这样做出来的模型,既提升了它的可解释性,又降低了设计架构的复杂度。 这是DeepMind针对Transformer模型设计的最新工具,被po到网上后爆火: 有网友惊讶表示: 这真有意思。它或许是第一个能将代码(软件1.0)变模型(软件2.0)的系统。 所
一、完整程序设计语言基础1.程序设计语言概括程序设计语言基本概念程序设计语言的基本成分2.语言处理程序基础汇编语言基本原理编译程序基本原理编译过程概述文法和语言的形式描述语法分析正规式有限自动机正规式与有限自动机之间的转换解释程序的基本原理二 、程序设计语言基础知识(2-4分)(重点)1.程序设计语言概述1.1 低级语言和高级语言程序设计语言可以分为低级语言和高级语言。 解释程序是逐行地解释高级语言代码,并执行相应的操作。解释程序不生成可执行文件,而是实时地解释代码并生成结果。解释程序的优点是具有良好的可移植性,同一份高级语言代码可以在不同的平台上运行。 解释程序是逐行地解释高级语言代码,并执行相应的操作。解释程序不生成可执行文件,而是实时地解释代码并生成结果。解释程序的优点是具有良好的可移植性,同一份高级语言代码可以在不同的平台上运行。 2.语言处理程序基础2.1 汇编程序基本原理汇编程序是一种底层编程语言,它使用机器指令来控制计算机的硬件,在计算机中执行特定的任务。
及时性 较短时间内响应(2-3秒) 交互性 实时系统 实时性 及时响应外部事件请求 应用需求 : (1)实时控制: 工业生产、武器控制、飞机的自动驾驶 (2)实时信息处理 订票系统 操作系统的基本特征 操作系统的五大功能 资源管理 (1)处理机管理(硬件) (2)存储器管理(硬件) (3)设备管理(硬件) (4)文件管理(软件) (5)用户接口 1)命令接口(联机用户接口,脱机用户接口) 2)程序接口 3)图形接口 联机用户接口 适用:几乎所有计算机的操作系统中 组成:命令+终端处理程序+命令解释程序 过程: 用户在键盘上输入命令; 终端处理程序接收命令并显示在屏幕上 命令解释程序解释并执行该命令 联机命令举例: UNIX:login;longout DOS:copy;format 命令解释程序:操作系统的最高层,如: MS-DOS:COMMAND.COM(一种命令解释程序) UNIX:shell 又称批处理用户接口 组成:JCL+作业说明书+命令解释程序 JCL:作业控制语言(job control language) 过程:用户把对作业的控制用JCL写在作业说明书上,命令解释程序按照作业说明书解释并执行
(2)分时系统中作业与进程的关系 在分时系统中,作业的提交方法,组织形式均与批处理作业有很大差异。分时系统的用户通过命令语言逐条与系统应答式地输入命令,提交作业步。 在系统启动时,系统为每个终端设备建立一个进程(称为终端进程),该进程执行命令解释程序,命令解释程序从终端设备读入命令,解释执行用户输入的每一条命令。对于每一条终端命令,可以创建一个子进程去具体执行。 命令解释程序流程扮演着批处理系统中作业控制语言的角色,只不过命令解释程序是从用户终端接收命令的。 系统有专门的作业调度进程负责从作业队列中选择作业,为被选取的作业创建一个父进程进行命令解释程序,解释执行作业控制说明书文件中的命令。
如果需要手动生成.pyc文件,可以这样操作: [root@localhost test]# ls 1.py 2.py 1.py 2.py [root@localhost test]# cat 2.py 之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给这个解释程序去执行。 如果#! 之后的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。 如果#! 指定的解释程序不存在,则会报错“bad interpreter: No such file or directory” 如果#! 指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied” 注意:#!
sys.modules 返回系统导入的模块字段,key是模块名,value是模块 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 、exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取Python解释程序的版本值 ,16进制格式如:0x020403F0 sys.version 获取Python解释程序的 sys.api_version 解释器的C的API版本 sys.version_info site模块使用了,他会从sys模块移除 sys.builtin_module_names Python解释器导入的模块列表 sys.executable Python解释程序路径 sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
解释:使用解释程序,对源程序逐个语句边解释边执行。 编译器:可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序,即能够完成编译程序的软件系统。 解释程序:是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句就提交给计算机执行一句,并不形成目标程序。 编译程序与解释程序的区别:最大的区别在于:前者生成目标代码,而后者不生成。编译程序是一种翻译程序,它把高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。 解释程序也是一种翻译程序,它将源程序作为输入并执行它,边解释边执行。 它与编译程序的主要区别在于在解释程序执行的过程中不产生目标程序,而是按照源语言的定义解释执行源程序本身。 ---- 1.3 编译过程 ---- 大致地,编译器编译一个语言源程序的过程如下: 顺序 阶段 描述 1 词法分析 将源文件分解为一个个独立的单词符号 2 语法分析 分析程序的短语结构 3 语义动作 建立每个短语对应的抽象语法树
确定解释程序 在找到程序之后呢,需要确定解释程序。什么意思呢? shell通常可以执行两种程序,一种是二进制程序,一种是脚本程序。 而一旦发现要执行的程序文件是文本文件,且文本未指定解释程序,那么就会默认当成shell脚本来执行。 /test.txt", line 2 echo -e "hello world" ^ SyntaxError: invalid syntax 是的 小结一下前面的内容,就是说,如果是文本程序,且开头没有指定解释程序,则按照shell脚本处理,如果指定了解释程序,则使用解释程序来解释运行;对于二进制程序,则直接创建新的进程即可。
1.2 解释程序有一种高级语言翻译程序(编译程序) ,从源程序的编译到执行只有一个阶段-解释执行阶段,同时处理源程序和数据。这种翻译程序叫解释程序。 2.变量重复声明。3.运算对象类型是否匹配。语义分析程序通常将源程序生成一种中间表示形式,即中间代码,包括三元式,四元式,逆波兰式1.3.3 代码优化提高目标程序的执行效率,首先在中间代码上进行。 1.3.4 目标代码生成目标代码的形式(分为三种):1.绝对指令代码2.可重定位的机器指令代码3.汇编指令代码三种指令代码要记住!!1.3.5 符号表管理符号表用来记录有关标识符的各种信息。
用来清除当前线程所出现的当前的或最近的错误信息 sys.exec_prefix 返回python文件安装的位置 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取python解释程序的版本值 ,16进制格式如:0x020103F0 sys.version 获取python解释程序的版本信息 sys.displayhook(value) 如果value非空,这个函数会把他输出到sys.stdout exc_type、exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取Python解释程序的版本值 ,16进制格式如:0x020403F0 sys.version 获取Python解释程序的版本信息 sys.platform 返回操作系统平台名称 sys.stdout 标准输出 Unicode文件名转换成系统文件名的编码的名字 sys.builtin_module_names Python解释器导入的内建模块列表 sys.executable Python解释程序路径
确定解释程序 在找到程序之后呢,需要确定解释程序。什么意思呢? shell通常可以执行两种程序,一种是二进制程序,一种是脚本程序。 而一旦发现要执行的程序文件是文本文件,且文本未指定解释程序,那么就会默认当成shell脚本来执行。 /test.txt", line 2 echo -e "hello world" ^ SyntaxError: invalid syntax 是的 小结一下前面的内容,就是说,如果是文本程序,且开头没有指定解释程序,则按照shell脚本处理,如果指定了解释程序,则使用解释程序来解释运行;对于二进制程序,则直接创建新的进程即可。
exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取Python解释程序的版本值 ,16进制格式如:0x020403F0 sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.maxunicode 记录python版权相关的东西 sys.api_version 解释器的C的API版本 sys.version_info >>> sys.version_info (2, 模块使用了,他会从sys模块移除 sys.builtin_module_names Python解释器导入的模块列表 sys.executable Python解释程序路径
[Sat Apr 01 13:30:03 2006] [error] [client 127.0.0.1] C:/Program > > Files/Apache Group/Apache2/ > > descriptor: don't know how to spawn child process: C:/Program Files/Apache > > Group/Apache2/ 前面不能有空格,后面紧跟解释程序; 第二,python等解释程序的目录是否正确; 第三,作为http协议的要求,一定要输出http headers; 第四,在存在http
Interface(公共网关接口),是Nginx和动态脚本程序的桥梁,Nginx通过FastCGI接口将动态请求发送给FastCGI,FastCGI中的Wrapper进程生成一个线程,将请求交给脚本解释程序执行 这样web服务器和解释程序之间完全可以独立开发,这样避免了解释程序直接调用服务器的接口而导致的出错和崩溃以及安全性问题。
一、编译程序和解释程序 1.1 定义 编译程序最初的定义是把一种高级语言设计的源程序(面向人的)翻译成另一种等价的低级程序设计语言(面向硬件的)即机器语言或汇编语 1.2 程序执行方式 程序设计语言源程序的执行基本有两种方式 解释:使用解释程序,对源程序逐个语句边解释边执行。 1.3 编译程序和解释程序的区别 主要区别在于是否生成目标程序,运行时的存储分配。 count; sum=first+count*10; } 翻译成如下的四元式序列(中间代码): (操作符,左操作数,右操作数,存储位置) (1) (inttofloat, 10, _, T1 ) (2) ( *, count,T1,T2 ) (3) ( +, first,T2,T3 ) (4) ( =, T3, _, sum) 其中,Ti为语义分析程序为存放中间结果而生成的临时变量
exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取Python解释程序的版本值 ,16进制格式如:0x020403F0 sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.maxunicode 记录python版权相关的东西 sys.api_version 解释器的C的API版本 sys.version_info >>> sys.version_info (2, 模块使用了,他会从sys模块移除 sys.builtin_module_names Python解释器导入的模块列表 sys.executable Python解释程序路径
Python的创始人为吉多·范罗苏姆(Guido van Rossum),于1989年底圣诞节期间,为了打发无聊的圣诞节,决心开发一个新的脚本解释程序,解释程序当时广泛用于Unix系统上,Guido最初取名为
第一章:编译概述 编译程序:将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序; 解释程序:也是一种翻译程序,将源程序翻译并执行,边解释边执行; 两者的区别:解释程序的执行过程不会生成目标程序 文法的二义性:一个文法存在某个句子有两种不同的语法树; 消除二义性方法:1.加一些语法的非形式规定,比如*比+先等;2.构造一个等价的无二义性的文法; 0型文法:左侧至少含有一个非终结符; A->AB (无限制文法) 1型文法:左右两侧有一个相容的符号; BA->BC (上下文有关文法) 2型文法:左侧有一个非终结符; A->aA (上下文无关文法) 3型文法;左侧只有一个非终结符,右侧有0个或一个非终结符 ; A->a A->aA(正规文法) 0>1>2>3
2、主内存与cache的映射有很多种。 1)全相联映射:可以实现主内存任意一块装入cache中任意位置,只有装满才需要替换。 2)直相联映射:主内存的某一块j只能映射到满足特定关系的cache中。与全相联映射相反。 3)组相联映射:兼顾两者优点,主内存和cache按同样大小划分为块和组。 3、位移指令中的 算术左移 指令操作结果相当于对操作数进行乘2操作。 算术位移对负数,符号可能需要特殊处理,逻辑位移中没有符号的概念,只是二进制位序列。 7、编译程序不参与与用户程序的运行控制,而解释程序则参与。 解释程序:又称为解释器,或者直接解释执行源文件,所以它参与程序的运行控制。 2)设备驱动程序:设备寄存器,检测状态。 3)设备无关软件:命名、保护、阻塞、缓冲、分配。 4)用户进程:进行i/o调用,格式化i/o,spooling。