类型系统学习 篇2


https://www.cis.upenn.edu/~bcpierce/tapl/taplcover.jpg

插入(在厕所突然想到的):JS/TS 在Web时代可以说是必会的一门语言。可以不精,但不能不会。

http://laomst.site/article/3 《高级语言中的单词——5种类型的token》
作者有有一个论点,“学习高级编程语言的过程,类似我们学习英语的过程”。

我们将高级语言的语法进行抽象概括,剔除表现形式的差异,就形成了一个个表达语义的语言特性,有些特性是某个或者某些语言特有的,但是绝大多数的语言特性是很多高级语言所共有的。

我们有必要掌握很多门编程语言吗? 我也有这个疑问,在最近的学习中,我的体会是,需要多涉猎一些,但是要精一门语言。“精”的这门一定要是吃饭的家伙,“涉猎”的是感兴趣的,或者“补充”这样的。 就是一定要有目的的去学习。 在学习之前,想想我们的目的是什么? 我们为什么要去学习,这是行动之前必须要问自己的,才不会“东一榔头西一棒槌”。

在编译原理领域中我们称高级语言中的单词为token,token是构成源程序的基本不可再分割的单元。

笔记:高级语言的5大token,可以理解成英语中对英文单词的词性分类。
先说英语,从最常见的来看,有:

  • 名词
  • 动词
  • 形容词
  • 副词
  • 介词

高级语言的token分类,也大体如此,列举英语主要是为了便于理解:

  • 分隔符

    而我们又是如何分隔句子的呢?可以用句号、问号等标点符号来作为句子与句子之间的界限,而高级语言中最常见的分隔符有空格、换行符、分号、大括号等等,我们可以利用空格来分隔token、用换行符或者分号来分隔语句、用大括号或者是缩进(数量相等的空格或者是制表符)来分隔代码块(复合语句)。

  • 关键字和保留字

设计者在设计的时候,有独特的用意。 比如:import 很常见,在python中就是 导入一个包或者什么的(举个例子)。

  • 标识符

    编程语言的标识符是用来标识变量自定义类型函数等实体的符号名称,我们在后面想要使用这个实体的话只需要用这个实体的名字引用它就可以了。不同类型的标识符具有不同的作用,当标识符代表的是一个变量和函数的时候,它代表的其实是一个内存地址,我们使用变量进行内存访问、使用函数进行子程序的调用;而当标识符作为一个自定义数据类型的时候,它将在编译的时候为编译器提供组织内存的元数据信息。

理解成名词即可。

  • 操作符

操作符可以来构成表达式,完成计算任务,改变优先级()等

其实在实际的编程中,不推荐过分依赖语言的运算符优先级规则,我们也没有必要去专门记忆运算符的优先级,大多数情况下我们应该使用()去主动控制表达式的计算顺序。

操作符这块,我是直接跳过学习的,这块知识太多了,不在实际的porj里去感悟是不行的。

  • 字面值

    也就是说,字面值其实是程序中数据输入的最终来源。

这句话该如何去理解?

字面值这块其实,我没懂。 以下内容借助于chatGPT

编程语言中的字面值(Literal)是指表示数据的常量值,这些值直接出现在代码中,用于表示不同的数据类型,例如整数、浮点数、字符串、布尔值等。字面值是编程语言中的固定值,不需要进一步计算或解释。以下是一些常见的字面值示例:

  1. 整数字面值:在很多编程语言中,整数字面值可以直接写作数字,例如,42 表示整数 42。
  2. 浮点数字面值:浮点数字面值表示带有小数部分的数字,例如,3.14159 表示一个浮点数。
  3. 字符串字面值:字符串字面值通常使用引号括起来,例如,"Hello, World!" 表示一个字符串。
  4. 字符字面值:字符字面值表示单个字符,通常使用单引号括起来,例如,'A' 表示字符 'A'。
  5. 布尔字面值:布尔字面值表示逻辑真或假,通常为 truefalse
  6. 空值字面值:有些编程语言有表示空值的字面值,例如,nullnil

字面值在编程中用于初始化变量、定义常量、传递参数等等。不同的编程语言可能有不同的语法和规则来表示字面值。

您理解得非常正确。字面值是编程中数据的直接来源,它们表示着程序中的静态数据,不需要计算或处理,因为它们本身就是数据。下面是更详细的解释:

  1. 最终数据源:字面值是程序中最基本的数据,它们通常是数据的最终来源,不需要从其他地方获取。例如,当您写 int x = 42; 时,42 就是一个整数字面值,它直接赋值给了变量 x
  2. 数据初始化:字面值通常用于初始化变量、常量或数据结构。这是将数据存储到程序中的一种最简单方法。
  3. 表达数据类型:字面值的语法和格式通常表示数据的类型。例如,3.14 表示浮点数,而 'A' 表示字符。这有助于编译器或解释器正确地理解数据的类型。
  4. 直观性:字面值提供了代码的可读性和直观性。当其他程序员或您自己再次阅读代码时,能够清晰地看到数据的值,而不需要查找其他地方来获取数据。

总之,字面值是编程语言中用于表示数据的最直接、最简单的方式,它们在程序中充当了数据的初始源,使代码更易于理解和维护。

相关推荐

intel 8086 asm 基础1

1.进入debug模式 r 查看 2. mov指令测试 指令以CS:IP 格式进行读取,后跟8086 asm实 ...

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。