Operational Semantics in Programing Language (编程语言的操作语义)

之前一直不懂什么是semantics (语义), syntax (句法) 和grammar (语法),也不懂environment (context 上下文)到底指的是什么。 现在先简单讲下在自然语言下这些都代表了个啥。syntax和grammer是语法,即句子或者短语的组成规则,规定了什么样的句子或者短语是合法的句子或短语。一个句子由主谓宾构成即最基本的语法。而语义是指句子符合语法后所表达的意思。符合语法的句子不代表有合适的意思/意义。如 『苹果 操 牛』这句话 复合基本语法,但没有表达任何实际意义,我们无法理解苹果是怎么能操牛的(什么你能理解?!那你牛逼。。)。对于编程语言也是同样道理,在用parser得到合法的abstract syntax tree后,我们想要理解这段程序所表达的含义是什么,也就是分析它的目的和行为,而这就是PL中的semantics。再说白点,semantics是一种抽象,我们在后面会发现operational semantics基本是个精简C语言,那我们为什么需要『C语言』来解释C语言呢?这是有历史原因的,C语言和罗马城一样不是一下子就有的。在C之前还是汇编的时代,那时候的汇编为了适应底层的硬件实现,还带了许多诸如出入程序栈,在寄存器之间移动这样的底层实现细节。C语言抽象了这些细节们解放了程序员。operational semantics也是同理,它抽象了语言的琐屑和实现细节(无论对象是高级语言还是汇编),类似于高级语言,用来解释程序是如何运行的。举个例子,在C代码中我们写的a + b是C的合法句法,它代表的意义即a 加上 b, 也就是说翻译过来同样是a + b,。但这俩a + b完全是俩码事了,后者翻译自前者,是前者的抽象。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值