计算机要素--第九章 高级语言

计算机系统要素,从零开始构建现代计算机(nand2tetris)
如果完成了本书所有的项目 你将会获得以下成就

  • 构建出一台计算机(在模拟器上运行)
  • 实现一门语言和相应的语言标准库
  • 实现一个简单的编译器

而且,这本书的门槛非常低,只要你能熟练运用一门编程语言即可。本课程综合了数字电路,计算机组成原理,计算机体系架构,操作系统,编译原理,数据结构等的主要内容,搭建了计算机平台的构建的框架,并未深入细节,如果需要了解细节,可由本书作为主线,逐步完善的知识体系。

QQ交流群(含资料):39014053
课程连接
项目地址Github


本章重点内容

  • 了解Jack语言

详细内容


Jack语言规范简述

程序入口:与Java语言类似,Jack语言执行总是从Main类的main函数开始执行,所以每个Jack程序至少要包含一个Main类,该类必须包含一个main函数。
函数、方法、构造函数:在类级别上的操作,类似于Java中的静态函数,用函数表示;作用在当前对象上的操作用方法表示;构造函数用于创建新的对象。
程序结构:Jack中的基本编程单元是类。每个类存在于独立的文件中。因此Jack是一种面向对象的语言。
变量:Jack中有四种类型的变量:成员字段,静态变量,局部变量和参数变量。
数据类型:Jack支持三种基本数据类型:int,char,boolean。其他的数据类型,又可以称为对象类型,例如String,可以基于这些基本数据类型进行扩展。
Array类:Jack程序使用内置的Array类来声明和构建数组,该类是Jack标准库的一部分。该类并没有指定类型,它可以包含任意类型的数据。该数组是一维的。
Strings类:字符串使用内置类Strings来声明。
类型转换:Jack是弱类型语言。该语言规范并没有定义从一种类型转为另一种类型的结果。类型转换主要包括这三种:字符和整数能够根据Unicode规范在必要时相互转换;整数可被赋给任何对象类型的引用变量,这时该整数被当做是内存中的地址;对象变量可被转换成Array变量,反之亦然,经过转换就可以像访问数组中的数据项一样去访问对象中的成员,反之亦然,这也是对象序列化的基本方法。
变量的类型和作用域:静态变量定义在类这一级,被该类的素有对象共享,参考之前的内存段的划分即可理解为什么静态变量会被共享。成员字段变量用于定义类对象的属性。局部变量被子程序使用,仅存在与子程序的生存周期内,这里参考堆栈虚拟机2可以很好的理解底层原理。参数变量用于传递变量给子程序。
表达式:Jack语言中没有定义运算符的优先级。为的是简化编译器的设计,所以涉及到优先级的表达式必须用括号显式说明优先级。
构造函数:对象的构造可以分为两个阶段:内存分配和构造对象。内存分配阶段开辟内存段,然后创建指向该内存段的指针。构造对象阶段完成对象的构造。
对象内存回收dispose():当对象使用完毕后必须进行内存释放,这与C编程类型,而Java却不用考虑这个问题,因为Java提供了垃圾回收机制。也许在Jack开发完成了,可以对其进行扩展,进而实现垃圾回收机制。这是操作系统提供的一种服务。

本章的课程项目主要是演示和尝试去测试,对于有编程经验的人来讲几乎可以不做,本章的重点在于了解Jack语言的语法,能编写Jack程序!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值