Romantics三大浪漫(编译原理+操作系统+计算机图形学)

news2025/7/14 10:49:26

Romantics三大浪漫

  • 一、编译原理
    • 1.1 研究翻译的科学
    • 1.2 编译器和解释器
    • 1.3 编译的流程(JIT为例)
    • 1.4 词法分析器
    • 1.5 多有限状态机提取Token- 实现词法分析器lexer
    • 1.6 实现流的peek和putBack操作

在这里插入图片描述
在这里插入图片描述

一、编译原理

本章目标: 提升编程能力

  • 区别于面向研究人员、学者的编译原理教学,目标是让大家从更深层次理解程序语言架构、面向对象、算法和数据结构以及编程思想。
  • 化繁为简,掌握思想、原理、编程技巧,弱化高等数学、逻辑学等。
  • 为了教学用创造了一门语言TinyScript并手把手带大家实现。(多语言Java/Javascript)

在这里插入图片描述

1.1 研究翻译的科学

编译的作用:一种语言翻译成另一种语言。

  • 如高级语言->低级语言->机器语言
  • 如硬件语言->电路布线
    在这里插入图片描述
    翻译的理解:只作用于形式语言
    在这里插入图片描述

1.2 编译器和解释器

编译器:将源程序编译成目标程序。如C

在这里插入图片描述
解释器:同时接受源程序输入,执行并返回输出。如Javascript请添加图片描述
混合编译器:如过去的JAVA

  • 中间代码更容易被翻译成目标程序,优化空间更大
  • 中间语言的存在更利于编译器的实现
  • 让虚拟机处理复杂的执行环境 (跨平台)在这里插入图片描述

即时编译器JIT(Just-in-time compiler):一种提高效率的方法,中间代码不是直接执行,而是先被编译成机器码再执行。如现在的JAVA

交叉编译:在一个平台编译产生多个平台的可执行代码。

1.3 编译的流程(JIT为例)

分层架构设计关注度分离(每层都有意义)、层足够强大(每层优质的数据结构)

分析一对源程序进行分析形成中间表示(抽象语法树、符号表
–词法分析
–语法分析
–语义分析
–翻译
综合一根据中间表示生成目标语言,提供运行环境等
–中间语言
–代码优化
–机器码生成
–运行环境及其他
在这里插入图片描述

Step1:词法分析(分词短句+判断词性)
在这里插入图片描述
Step2:语法分析(语法规则)
在这里插入图片描述
Step3:语义分析
在这里插入图片描述
Step4:翻译为中间代码
在这里插入图片描述
Step5:生成机器码
在这里插入图片描述

Step6:提供运行时环境

  • 有的编译器将代码编译成机器码,按照操作系统的约定编译成一个应用,运行成为操作系统的进程
  • 有的编译器将代码编译成中间代码 (字节码、三地址代码等) ,然后在操作系统中启动一个虚拟容器 (进程)来执行他们
  • JIT编译器一边执行中间代码,一边编译他们

1.4 词法分析器

词法分析:将字符流转成符号流Token。{输入:源代码 (字符流) 输出: 符号流 }
符号Token : 词法分析的结果,每个字符是一个词法单元,即元组(一个字符串 : 一个词性描述)
词性描述 : Keyword(关键字)、Variable(变量)、Operator (操作符)、Bracket (括号)、String(字符串)、Float(浮点数)、Boolean(布尔)

在这里插入图片描述

1.5 多有限状态机提取Token- 实现词法分析器lexer

在这里插入图片描述
Token.java实现各个有限状态机独立提取Token
Lexer.java实现多个有限状态机的词法分析器
TokenType.java实现词法分析器的接口

1.6 实现流的peek和putBack操作

Stream:随着时间推移逐渐产生的可用数据序列。
类比:工厂流水线上需要处理的一个个产品。 每个工人从流中拿起物件进行加工再放回去 (流的处理节点)。
作用: 抽象出像工厂流水线一样处理数据的标准过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS学习笔记(三)

her~~llo,我是你们的好朋友Lyle,是名梦想成为计算机大佬的男人! 博客是为了记录自我的学习历程,加强记忆方便复习,如有不足之处还望多多包涵!非常欢迎大家的批评指正。 目录 一、CSS 的三大特性 1.1 层叠…

mybatis复习05,mybatis的缓存机制(一级缓存和二级缓存及第三方缓存)

mybatis复习05,mybatis的缓存机制(一级缓存和二级缓存)MyBatis的缓存机制MyBatis的一级缓存MyBatis的二级缓存二级缓存的相关配置MyBatis缓存查询的顺序整合第三方缓存EHCacheEHCache配置文件说明:MyBatis的缓存机制 MyBatis作为持久化框架&…

社区故事|SmartX 用户社区技术发烧友独家专访

小伙伴们,SmartX 用户社区已经陪伴我们走过近两年的时光,这期间有一千多位小伙伴加入我们,共同讨论问题、分享经验。今天,SmartX 用户社区的一线记者小乐为我们带来了独家采访,揭秘社区中两位技术发烧友的幕后故事&…

葡萄糖-聚乙二醇-转铁蛋白|Transferrin-PEG-Glucose|转铁蛋白-PEG-葡萄糖

转铁蛋白又名运铁蛋白 transferrin,TRF,siderophilin)还可以提供PEG接枝修饰葡萄糖,葡萄糖-聚乙二醇-转铁蛋白,Transferrin-PEG-Glucose,转铁蛋白-PEG-葡萄糖 中文名称:葡萄糖-转铁蛋白 英文名称:Glucose…

Java学习——Servlet服务器请求响应程序

Servlet服务器程序 1. Servlet的概念 Servlet(Server Applet):运行在Web服务器端(Tomcat)的小程序。 Servlet的主要作用:接收客户端浏览器的请求,还可以为客户端浏览器做出响应。 学习Servl…

戴尔笔记本重装系统按f几进入

有不少使用戴尔笔记本电脑的用户对于u盘重装系统中的按f几进入u盘启动的操作不熟悉,导致自己无法独立完成戴尔笔记本重装系统的步骤怎么办?其实相关的方法不难,下面小编就教下大家戴尔笔记本重装系统按f几进入u盘启动项安装。 工具/原料&…

【培训】MMEdu离线版的使用:实现石头剪刀布图像分类的检测

一、MMEdu离线版的使用 1.双击XEdu v1.0.exe解压缩到某个盘,会是一个文件夹XEdu 2.进入XEdu,双击运行“点我初始化.bat”,等待至运行结束命令提示符窗口自动关闭 3.双击运行“jupyter编辑器.bat”,将会打开一个网页版jupyter&…

第五站:操作符(第二幕)

在前面的文章中我们详细讲解了操作符的一些内容, 今天我们来继续了解操作符剩余的内容 操作符第一幕的传送门在这:第五站:操作符(第一幕) 目录 七、关系操作符 八、逻辑操作符 1.基础知识 2.几道经典的题目 九、条…

视频压缩软件哪个好?万兴优转:好用的视频无损压缩软件

如今,无论是学生党,上班族还是专业的视频制作者,都会遇到视频文件体量太大,需要对视频文件进行压缩的时候,但是又会担心视频压缩以后,画质受损,清晰度不如从前,所以一个好用的视频压…

机器学习笔记之高斯网络(三)高斯马尔可夫随机场

机器学习笔记之高斯网络——高斯马尔可夫随机场引言回顾:马尔可夫随机场——团、势函数高斯马尔可夫随机场点势函数关联的项边势函数相关的项关于多元高斯分布学习任务的核心思想关于条件独立性的总结引言 上一节介绍了高斯贝叶斯网络(Gaussian Bayesian Network,G…

c语言tips-带参main函数

0.写在最前 最近因为工作需要开始重新学c语言,越学越发现c语言深不可测,当初用python轻轻松松处理的一些数据,但是c语言写起来却异常的复杂,这个板块就记录一下我的c语言复习之路 1. main函数的两种表现形式 main函数是c/cpp语言的…

python破解wifi教程

目录 一、安装pywifi 二、构建wifi密码字典 三、python实现wifi破解 四、结果展示 4.1 选择要破解的wifi名称 4.2 获取字典 4.3 成功破解 一、安装pywifi pywifi是在python中一个用于操作无线接口的模块,可以跨平台使用,Windows和Linux都支持 …

Linux下Jenkins服务搭建及配置

一、简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,为软件的持续集成提供了一种便捷的方式。 二、Jenkins自动化部署实现原理 Jenkins的自动化部署实…

现代密码学导论-14-基于伪随机发生器的EAV安全

目录 3.3.3 基于伪随机发生器的EAV安全 用伪随机发生器进行加密的图示 CONSTRUCTION 3.17 一种基于伪随机发生器的私钥加密方案 THEOREM 3.16 基于伪随机发生器的私钥加密方案的EAV安全 THEOREM 3.16 的证明 最后来理一下 3.3.3 基于伪随机发生器的EAV安全 用伪随机发生…

pandas是什么以及pandas的三种数据结构Series、DataFrame、MultiIndex的创建方式函数代码

一、pandas概述 pandas是2008年WesMcKinney开发出的专门用于数据挖掘的开源python库,以Numpy为基础,借助numpy模块在计算方面性能高的优势,基于matplotlib,能够简便的画图,具有独特的数据结构 pandas特点 图表的可读…

深度强化学习中深度Q网络(Q-Learning+CNN)的讲解以及在Atari游戏中的实战(超详细 附源码)

需要源码请点赞收藏关注后评论区留下QQ~~~ 深度强化学习将深度学习的感知(预测能力)与强化学习的决策能力相结合,利用深度神经网络具有有效识别高维数据的能力,使得强化学习算法在处理高纬度状态空间任务中更加有效 一、DQN算法简…

牛客小白月赛62 幼稚园的树

2022.11.25 今晚闲来无事,在zhoj群中看到管理员发布的牛客小白月赛的通知,就和舍友一起参加了。 题目描述 来源:牛客网 牛牛在幼稚园做义工,幼稚园中共有 nnn 颗树,第 1 天中午时它们的高度分别为:h1,h2…

体系结构27_多处理机(1)

单处理机的发展正在走向尽头? 并行处理机在未来将会发挥更大的作用。 1.获得超过单处理器的性能,最直接的方法就是把多个处理器连在一起。 2.自1985年以来,体系结构的改进使性能迅速提高,这种改进的速度能否持续下去还不清楚&a…

Day11--首页-轮播图效果

1.创建 home 分支 我的操作: ************************************************** ************************************************** ******* 2.配置网络请求 博主文档: 我的操作: 1》.先初始化一个package.json文件。 2》根据博主的…

MyBatis-Plus 01入门

参考网站 官网:http://mp.baomidou.com 参考教程:http://mp.baomidou.com/guide/ 一、简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率…