精华内容
下载资源
问答
  • 形式语义描述对于编程语言的设计,推理和标准化具有重要意义,并且在编译器的优化中起着重要的作用。 但是,与四十多年来对各种语义框架的研究所付出的努力相比,它们的实际应用无疑令人沮丧。 这项调查回顾了编程...
  • 元数据编程,在jdk1.5... 这其实代表着将编程语言语义提高了一个层次,比如,某些数据需要"持久保存",是一个应用层的基本要求,代表一个应用层的基本语义,但对应的编程语言,没有一个能实现这个功能的关键字或操作
    元数据编程,在jdk1.5叫Annotation,在ms叫属性化编程。只需要在普通类前面加上Annotation或Attribute,就可以得到想要的特性,比如O/R mapping,比如将一个类变成COM组件,等等。 这其实代表着将编程语言的语义提高了一个层次,比如,某些数据需要"持久保存",是一个应用层的基本要求,代表一个应用层的基本语义,但对应的编程语言,没有一个能实现这个功能的关键字或操作符,这些关键字、操作符构成了编程语言的语义层次,于是我们不得不编写大量代码来实现这个功能。另外一个例子,为实现一个COM组件我们不得不编码实现各种接口,也是一样的道理。现在,"元数据"将将编程语言的语义提高到了应用的层次,通过@Entity,@Remot,或[coclass]这些元数据,我们可以在代码里相当简单、对应地表达出应用层的语义了! 就是说, 元数据编程将语言的语义提高到需求的层次,编程语言将可以非常直接地表达出需求了!
    展开全文
  • 之前一直不懂什么是semantics (语言), syntax (句法) 和grammar (语法),也不懂environment (context 上下文)到底指的是什么。 现在先简单讲下在自然语言下这些都代表了...而语义是指句子符合语法后所表达的意思
    之前一直不懂什么是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完全是俩码事了,后者翻译自前者,是前者的抽象。 
    展开全文
  • 介绍编程语言语义的结构化,可操作的方法。
  • 编程语言的语法和语义

    千次阅读 2016-02-28 22:48:16
    为了完整地定义编程语言,我们需要: 语法,描述程序看起来是什么样的; 语义,描述程序的含义。

    为了完整地定义编程语言,我们需要:
    语法,描述程序看起来是什么样的;
    语义,描述程序的含义。

    语法

    语法的定义

    每一种编程语言都有一系列规则,描述在那种语言中什么样的字符串被认为是有效程序。这些规则定义了这种语言的语法。通过语言的语法规则,我们能把像 y = x + 1 这样可能有效的程序与像 >/;x:1@4 这样毫无意义的字符串区分开。

    抽象语法树

    当然,计算机程序的预期用途是被计算机读取,而要读程序就需要语法解析器:这个分析器程序能够读取代表程序的字符串,根据语法规则检查它是否有效,然后把它转换成一个适合被进一步处理的结构化表示。 有各种各样的工具能把一种语言的语法规则自动转换成一个语法解析器。 总体来讲一个语法解析器应该读入像 y = x + 1 这样的字符串,然后把它转换成抽象语法树( AST)。抽象语法树是源代码的一种表示,去掉了空格之类的无关细节,而只关注程序的分层结构。

    语法总结

    语法关心的只是程序的表面是什么样的,而不是它的含义。程序有可能语法正确但没有任何实际意义。例如,程序 y = x + 1 本身可能没有任何意义,因为并没有事先说明 x 是什么,而程序 z = true + 1 可能会在运行时候报错,因为它试图在一个布尔型值上加数字。

    操作语义

    操作语义定义

    考虑程序含义的最实际方法是思考它做了些什么:在运行程序的时候,我们期望发生什么呢?在运行时编程语言中不同的结构都是如何表现的?把它们放到一起组成更大的程序时会是什么效果? 这是操作语义学( operational semantic)的基础,这种
    展开全文
  • 只要是solidity语言中array和struct类型在storage和memory情况下的引用语义的理解问题 另外对于不同语言的引用语义的理解其实是不一样的,这一点对于新人来说就比较坑~ 对于值语义,各个语言没有差别的,这个很好...

    最近在使用 solidity(以太坊ethereum的智能合约的语言)的语言的时候,发现一些问题,

    只要是solidity语言中array和struct类型在storage和memory情况下的引用语义的理解问题

    另外对于不同语言的引用语义的理解其实是不一样的,这一点对于新人来说就比较坑~

    对于值语义,各个语言没有差别的,这个很好理解

    但是对于引用语义,这里以c++和php中的引用类型中的意义为准;php的对象和golang中引用类型,其实是有区别的,这里我自己用了个名字来表示“指针语义”

    现在梳理总结如下

    值语义:

    变量赋值后,两个变量拥有的存储空间是独立的,相互之间不影响

    引用语义:

    变量引用赋值后,两个变量只有一份的存储空间,相互之间可以理解为是别名,操作任意一个变量,就可以认为是操作另外一个变量,效果完全一样

    c++里面的引用类型,php里面的引用类型,都是这样的,不过他们还是有稍微区别(php里面可以重新引用复制,这样两个变量又没有关系了)

    指针语义:

    拿 golang 里面 slice 来举例吧(map,chan也类似)

    变量赋值后,比如 b:=a,数据存储如下

     

    就是a和b都有自己对应的存储空间,存储的是一个struct,里面有一个指针,他们的值是相同的,这个指针都指向同一块底层数据

    所以对于a或者b进行底层数据的修改来说,两者是互相影响的,比如a[0]=1, 这个是相当于作用于底层市局data

    但是若是直接修改a或者b,比如a=[]int{},那么就相当于a对应的struct的值变了,里面的指针p变了之后,就相当于指向了另外一个data。这个时候a和b之间的操作就没有关系了

    属于这种类型的有golang里面的slice,map,chan,interface;php里面的class对象

    可以发现,这种情况非常类似于c++里面的指针的效果,所以这里就叫做“指针语义”吧

     

    话说回来,对于solidity语言的变长array和struct类型来说(官方手册里面把这个都称之为引用类型)来说,

     

    1. 如果是storage的话,就属于引用语义(存疑,不清楚当初为什么这么写了,最近写代码的时候发现,其实是指针语义的)
    2. 如果是memory的话,就属于是指针语义

     

    展开全文
  • atitit 编程语言课程 v1 t55.docx 1. 编程语言概念(what 5 1.1. 自然语言与编程语言的关系 5 1.2. 开发中常用的编程语言 5 1.3. 编程语言代际 5 1.4. 编程语言能力模型金字塔 6 2. 学习编程语言的用途 7 ...
  • Beaver 是一种语义编程语言。 它以 RDF 图的形式接受和操作数据。 要安装,请导航到源目录并运行python setup.py install 。 Beaver 是 Turtle RDF 序列化格式的解释超集。 因此,任何有效的 Turtle 文件也是有效...
  • 编程语言的进化

    2012-09-28 11:31:38
    早上读到了一篇文章《Lisp的永恒之道》 这一篇文章解决了我一直以来对Lisp编程语言的疑惑,加深了对DSL(领域编程语言),同时对...最早的编程语言是卡带,也就是机器语言,这种语言没有语义和语法,操作符和数据混
  • 为NGSOS智能操作系统设计编程语言

    千次阅读 2015-03-26 11:44:36
    最近空明魏在全栈工程师网站发起一场有关智能操作系统开发的倡议,诸多大牛热烈参与讨论,涉及编程语言如何选择,已成为其中一个焦点问题,多方争执不休,莫衷一是,本文就这个话题谈谈个人浅见。
  • 本文是《打破国外垄断,开发中国人自己的编程语言》系列文章的第1篇。本系列文章的主要目的是教大家学会如何从零开始设计一种编程语言(marvel语言),并使用marvel语言开发一些真实的项目,如移动App、Web应用等。
  • 从斯瓦希里语中借用了一种具有语义的新编程语言,以帮助向讲斯瓦希里语的本地学生教授编程概念。 开始使用 安装 斯瓦希里语建立在Node之上。 首先,您可以安装斯瓦希里语,也可以按照说明进行操作而无需安装。 npm ...
  • 编程语言的本质到底是什么?”
  • 简单谈谈编程语言(二)

    千次阅读 2019-03-09 21:38:34
    本文续上一篇简单谈谈编程... 从历史回到现实中,其实我们不难看出:随着时间的推移,编程语言的逐步完善,语义化和思维模式已经给很接近我们平时的思考问题的模式。然而,随着我们需求的增大,越来越多领域开始使...
  • 解释定义编程语言语义的符号和方法,特别是那些操作语义。 解释评估顺序对终止、效率和程序推理难易程度的影响。 解释编程语言的类型安全意味着什么。 解释多态的不同变体,并将它们与当代编程语言的特征联系起来。 ...
  • 编程语言

    千次阅读 2014-07-01 15:25:16
    编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下...
  • 什么是高级编程语言

    千次阅读 2019-06-07 23:26:42
    人们都是直接输入01010101这样的没有语义的二进制指令来让计算机工作的,可读性几乎没有,没人愿意直接编写那些没有可读性、繁琐、费时,易出差错的二进制01代码,所以后来才出现了编程语言编程语言的诞生,使得...
  • 常用编程语言简介大全

    千次阅读 2020-05-19 15:42:55
    一、计算机编程语言分类;二、高级语言分类;三、常用语言的用途
  • 编程语言,一路走来

    千次阅读 2014-05-21 21:02:08
    人类发明了编程语言,本是为了能控制机器。计算机越来越强大,编程语言也不断革新。于是我大胆地认为,编程语言的意义将超越对机器的控制,它或许是一种文明的出发点——机器人文明。为了能更好地展望编程语言,让...
  • 编程语言复习笔记

    千次阅读 2018-08-06 11:29:48
    编程语言复习笔记 在期末复习的时候将上课课件以及课本内容进行了整理。 编程语言复习笔记 一、课程内容简介&&绪论 1.1 语言评价准则 1.2 语言的分类 1.2.1 过程式语言 1.2.2 面向对象...
  • 计算机编程语言可用于将指令传达给计算机。下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些?解释型编程语言 函数式编程语言 编译型编程语言 过程式编程语言 脚本编程语言 标记编程语言 基于...
  • 目录 文章目录目录前文列表语法解析mpc 语法解析库 前文列表 《用 C 语言开发一门编程语言 — 交互式 Shell》 ...当我们开发编程语言也一样,首先要考虑的就是语言的语法、及其语义。 mpc 语法解析库 ...
  • 高级编程语言的发展历程

    千次阅读 2012-08-27 13:35:16
    高级编程语言的发展历程 作者: 徐宥 原文链接  全屏阅读  [收藏]   目录  高级编程语言的发展历程(一)创始纪  高级编程语言的发展历程(二)虚拟机的前世今生  高级编程语言的发展历程(三)...
  • Rust 编程语言

    千次阅读 2015-05-18 10:11:57
    欢迎,本书将教你一些 Rust 编程语言 这方面的知识。Rust 是一门由 Mozilla 主导开发的实验性跨平台编译型编程语言,它的设计准则为“安全,快速,并发”。Rust 没有垃圾回收。相对其它语言,Rust 有一些优点:容易...
  • 总有人会告诉你,你应该学习这个,学习那个,亦或者是刷题根本没用,你应该去做项目,亦或者你看这个视频没什么卵用,你应该自己去实现一遍,亦或者是你应该使用xxx框架,xxx语言,做一个xxx系统,这样你才能学到很...
  • 程序员常用的计算机编程语言介绍

    千次阅读 2019-03-25 21:37:36
            ...以下是对八种主流编程语言或脚本的对比,希望对大家了解编程语言有帮助。 C语言     【概述】     ...
  • 语言的总体体系:1. 编译型语言:做好一桌饭菜,再开吃。首先将源代码编译,再生成机器语言。 编译型语言快,但缺点是跟平台关联性强。 上图为C程序在Windows下的编译过程,其中exe为Windows的可执行文件,并不是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,807
精华内容 35,122
关键字:

编程语言操作语义