语言的产生和执行(1)

第0部分:自然语言和形式语言
语言的两个方面:语法和语义
 Syntax(语法):语法规则包括Token的规则和Structure的规则。
 Token(符号):代表某一现实或抽象对象的符号。相当于自然语言中的词汇和标点、数学式中的数字和运算符、化学分子式中的元素名和数字。
 Lexical(词法):关于Token的规则——如何创造一个正确的Token。比如C中给标识符命名的规则(可以用小写字母、大写字母、数字和下划线命名,且首字母不能为数字)
 Structure(结构):Token的排列方式。
 Grammar(也翻译成语法,不过包含于Syntax):关于Structure的规则——如何创造一个正确的Structure。
Tips:
Syntax:The grammatical arrangement of words in a sentence. 一个句子中单词的语法排列。
Grammar:The rules about how words change their form and combine with other words to make sentences. 关于单词如何改变它们的形式,如何与其他单词组合成句子的规则。
 Semantic(语义):根据上下文(Context) Parse(解析)Token和Structure的过程。

人—机交流
 人和人交流使用自然语言;
 人和机器交流(命令)使用计算机语言;
 机器和机器交流使用网络协议。

自然语言(Natural Language)
人类讲的语言。这类语言不是人为设计(虽然有人试图强加一些规则)而是自然进化的。
即Token和Structure是自然演化来的。
 自然语言处理
为了实现人机间自然语言通信,或实现自然语言理解和生成。
造成该领域研究困难的根本原因是自然语言的歧义&多义(ambiguity)。

形式语言(Formal Language)
为了特定应用而人为设计的语言。精确的数学或机器可处理的公式定义的语言。
即Token和Structure已经事先被定义好。
例如数学家用的数字和运算符号、化学家用的分子式等。
 编程语言也是一种形式语言,是专门设计用来表达计算过程的形式语言。
计算机程序是毫无歧义的,字面和本意高度一致,能够完全通过对Token和Structure的分析加以理解。
 形式语言理论是用数学方法研究自然语言(如英语)和人工语言(如程序设计语言)的语法的理论。它只研究语法,不研究语义。
第1部分:机器语言与图灵机
计算机语言分成机器语言(二进制语言),汇编语言(符号语言),高级语言三大类,前两者共称为低级语言。二进制是计算机的语言的基础。

Structure and Interpretation of Computer Programs中对计算机语言的解释
构造新语言解决问题是控制问题复杂度的第三个也是最后一个技术。每种语言各有所长,隐藏部分细节,强调其他方面。新的语言可能使我们用不同的原语,不同的组合和抽象方式描述问题——当前的工具解决不了问题,就自己创造工具,即元语言抽象。
一门计算机语言的三个基本元素:
 构成语言的基本元素;
 如何将基本元素组合;
 如何将组合封装,在更高级的层面上构建更大的对象。
Turing Machine图灵机
图灵机是一种抽象计算模型,基本思想是用机器来模拟人们用纸笔进行数学运算的过程。
只要图灵机可以被实现,就可以用来解决任何可计算问题。

图灵机的组成:
 右端可无限延长的纸带(Tape),纸带被分成一个个相邻的格子(square),每个格子都可以写上一个字符(symbol),或者一个空白字符(blank),即此格子没有任何字符。
 读写头(Head),可理解为指向其中一个格子的指针。它可以读取/擦除/写入当前格子的内容,此外也可以每次向左/右移动一个格子(每次一个!!)。当读写头在左端时,接受向左一位将会原地不动。
 有限的指令集(instructions Table)
 状态寄存器(state register),它追踪着每一步运算过程中,整个机器所处的状态。

图灵机的七元组定义
 状态集:非空且有穷;
 无空白符输入字母表:非空且有穷;
 有空白符输入字母表:非空且有穷,{无空白表}∪{blank}={有空白表};
 下一动作函数(转移函数):{L(左移) R(右移) -(不动)};
 起始状态:属于状态集;
 accept停机状态:立刻停机并接受输入的字符串的状态,属于状态集;
 reject停机状态:立刻停机并拒绝输入的字符串,属于状态集。

图灵机的工作原理
作为有效过程或算法的形式模型,

  1. 图灵机的每个动作过程都应该是有穷且可描述的;
  2. 每个过程应该由离散的步骤组成,每一步都能够机械地实现。
    图灵机决策和行为的根本:输入集合、输出集合、内部状态、固定的程序指令。
    图灵机的运行即不断地循环(输入——当前状态信息——处理——输出——下一个状态信息)的过程,直至执行到终止状态。

Machine Language机器语言
是一台计算机全部指令的集合。这种指令集,称Machine Code(机器代码/机器码),机器代码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库与运行平台相关的部分。
Machine Code是电脑的CPU可直接识别和执行的数据。直接执行,速度快,资源占用少,但是可读性、可移植性差,编程繁杂。
Tips:
Machine Code:A set of numbers that gives instructions to a computer. 给计算机指令的一组数字。
在中文百度百科中,把机器码解释为“将硬件序列号经过一系列加密、散列形成的一串序列号”、“计算机的唯一编号”应该是一种通俗使用上的谬误。这里的内容应该是指电子序列号(ESN:Electronic Serial Number)而非“机器码”Machine Code。——ESN也不太符合,ESC指的是移动设备(平板电脑、手机等)的序列号。
 为了指出数据的来源(输入)、操作结果的去向(输出)及所执行的操作(过程),一条指令包含两种信息即操作码&地址码(都存入指令寄存器)。
 操作码(Operation Code,OP):其实就是指令序列号,占一个字节的长度。用来指示CPU需要执行Machine Code中规定的哪一条指令。
 地址码:地址码用来描述该指令的操作对象,它或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。
 操作数的地址:CPU通过该地址就可以取得所需的操作数。
 操作结果的存储地址:把对操作数的处理所产生的结果保存在该地址中,以便再次使用。
 下条指令的地址:执行程序时,大多数指令按顺序依次从主存中取出执行,只有在遇到转移指令时,程序的执行顺序才会改变。为了压缩指令的长度,可以用一个程序计数器(Program Counter,PC)存放指令地址。每执行一条指令,PC的指令地址就自动+1(设该指令只占一个主存单元),指出将要执行的下一条指令的地址。当遇到执行转移指令时,则用转移地址修改PC的内容。由于使用了PC,指令中就不必明显地给出下一条将要执行指令的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值