编译原理1.3习题 程序设计语言的发展历程

news2024/11/15 8:48:03

图源:文心一言

编译原理习题整理~🥝🥝

作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡

  • 第1版:自己的解题,与AI老师的判卷~🧩🧩

编辑:梅头脑🌸 

审核:文心一言

题源:龙书《编译原理》 Alfre V.Aho 等著  赵建华 等译


📇目录

📇目录

🧵本篇参考答案

🧵练习1.3.1

🧩题目

🌰答题

🔚结语


🧵本篇参考答案

——

🧵练习1.3.1

🧩题目

指出下面的术语:

1)强制式的;2)声明式的;3)冯.诺依曼式的;4)面向对象的;

5)函数式的;6)第三代;7)第四代;8)脚本语言;

可以用于描述下面的哪些语言:

1)C;2)C++;3)Cobol;4)Fortran;5)JAVA;

6)Lisp;7)ML;8)Perl;9)Python;10)VB;

🌰答题

📇阿梅答题

首先,我只知道1)2)5)9)10),而且仅限于知道,5)和10)甚至都没用过,呃——

  • 第一代语言是:机器语言;
  • 第二代语言是:汇编语言;
  • 第三代语言是:高级程序设计语言,那应该包括1)C;2)C++;3)Cobol;4)Fortran;5)JAVA;6)Lisp;9)Python;
  • 第四代语言是:为特定应用程序设计的语言,如生成报告的NOMAD,用于数据库查询的SQL,和用于文本排版的Postscript;那应该包括为数学而生的7)ML语言;为文本处理而生的7)perl ;以及为图形开发而生的10)​​​​​​​Visual Basic;
  • 第五代语言是:基于逻辑和约束的语言,比如Prolog和OPS5.
  • 强制式语言:程序中指明如何完成一个计算任务的语言,在我的理解应该第三代语言吧;
  • 声明式语言:程序中指明要进行哪些计算的语言称为声明式语言,在我的理解应该第四代和第五代语言吧;
  • 冯.诺依曼语言:1)C;4)Fortran;
  • 面向对象语言:2)C++;5)JAVA;
  • 脚本语言:具有高层次运算符的解释型语言,通常被用于把多个计算过程粘合在一起:8)Perl;9)Python;JavaScript;PHP; 

就算是开卷也实在是编不下去了,就这样吧—— 

📇AI审核

AI回复详细版本:

  • 您的回答中有些部分是不准确的,我将尝试纠正并提供更清晰的解释。首先,我们需要明确每个术语的含义,然后将其应用于给定的编程语言。

    • 强制式语言(Imperative Language):这类语言明确地告诉计算机如何执行任务。大多数流行的编程语言,如C、C++、Java,都是强制式的。
    • 声明式语言(Declarative Language):与强制式语言不同,声明式语言告诉计算机需要做什么,而不是如何做。SQL和Haskell是声明式语言的例子。
    • 冯·诺依曼式的(Von Neumann Architecture Language):这并不是一个用于描述编程语言的术语。冯·诺依曼架构是指一种计算机硬件设计,其中程序和数据都存储在同一个内存中。但是,像Fortran和C这样的早期语言,在设计时考虑到了这种架构的特点。
    • 面向对象的(Object-Oriented):面向对象的语言支持类和对象的概念,如C++、Java和Python。
    • 函数式的(Functional):函数式语言强调函数的计算而不是状态的变化。Lisp和ML是函数式语言的例子。
    • 第三代语言(3GL):这是高级编程语言的另一个名称,包括C、C++、Cobol、Fortran、Java等。
    • 第四代语言(4GL):这些语言是为特定应用而设计的,通常更易于使用。您提到的NOMAD、SQL和Postscript并不直接对应于编程语言,而是特定领域的工具或语言。不过,可以说4GL的目的是让非程序员也能更容易地开发应用程序。您列出的ML、Perl和VB并不完全符合这个分类。
    • 脚本语言(Scripting Language):脚本语言通常用于自动化任务,它们是解释执行的,不需要预先编译。Perl和Python都是脚本语言的例子。
  • 现在,让我们将上述术语应用于给定的编程语言:

    • C:强制式、第三代
    • C++:强制式、面向对象、第三代
    • Cobol:强制式、第三代(主要用于商业应用)
    • Fortran:强制式、第三代(主要用于科学计算)
    • Java:强制式、面向对象、第三代
    • Lisp:函数式(也可以是声明式的)、第三代
    • ML:函数式、第三代
    • Perl:强制式(尽管有声明式元素)、脚本语言
    • Python:强制式(但有声明式元素,如列表推导)、面向对象、脚本语言、第三代
    • VB (Visual Basic):强制式、面向对象、第四代(但通常被视为第三代语言的一个变种)
  • 请注意,某些语言可能具有多个分类的特点。例如,Python既可以是强制式的,也可以具有声明式的特点。同样,一些现代语言(如Python和Java)通常被归类为第三代语言,尽管它们具有第四代语言的某些特点(如易用性和面向特定应用)。

📇参考答案

——


🔚结语

博文到此结束,写得模糊或者有误之处,欢迎小伙伴留言讨论与批评,督促博主优化内容{例如有错误、难理解、不简洁、缺功能}等,博主会顶锅前来修改~~😶‍🌫️😶‍🌫️

我是梅头脑,本片博文若有帮助,欢迎小伙伴动动可爱的小手默默给个赞支持一下,感谢点赞小伙伴对于博主的支持~~🌟🌟

同系列的博文:🌸编译原理_梅头脑_的博客-CSDN博客

同博主的博文:🌸随笔03 笔记整理-CSDN博客

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

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

相关文章

内存操作函数

一、memcpy函数 memcpy(void * destination, const void * source, num)表示将source中的前num个字符复制到destination中,不允许source和destination的内存区域重叠memcpy(a, bn1, n2)表示从b中第n11个字符开始复制,复制n2个字符到a中为了防止溢出&…

框架基础-Maven+SpringBoot入门

框架基础 Maven基础 Maven概述 Maven是为Java项目提供项目构建和依赖管理的工具 Maven三大功能 - 项目构建构建:是一个将代码从开发阶段到生产阶段的一个过程:清理,编译,测试,打包,安装,部署…

给WordPress网站增加一个带时间的led广告牌

WordPress 后台》外观》小工具》自定义html》添加到合适位置 其他系统可自行添加合适位置 <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;hei…

Spring IOC 之加载 BeanDefinition

1、前言 前面的文章我们已经对IOC之Spring统一资源加载策略有了一定的了解&#xff0c;本文我们将探讨Spring IOC 加载 BeanDefinition的整个过程。 我们先先看一段熟悉的代码&#xff1a; ClassPathResource resource new ClassPathResource("bean.xml"); // &l…

Java NIO (二)NIO Buffer类的重要方法(备份)

1 allocate()方法 在使用Buffer实例前&#xff0c;我们需要先获取Buffer子类的实例对象&#xff0c;并且分配内存空间。需要获取一个Buffer实例对象时&#xff0c;并不是使用子类的构造器来创建&#xff0c;而是调用子类的allocate()方法。 public class AllocateTest {static…

Flutter GetX 之 国际化

今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大家起到了…

CAN 节点状态转换

CAN节点 按照错误严重程度可分为三种不同的状态 主动错误状态&#xff08;Error Active&#xff09; 被动错误状态&#xff08;Error Passive&#xff09; 总线关闭状态&#xff08;Bus Off&#xff09; 存在两种错误计数器 发送错误计数值 TEC : Transmit Error Counter …

Python - 深夜数据结构与算法之 Sort

目录 一.引言 二.排序简介 1.排序类型 2.时间复杂度 3.初级排序 4.高级排序 A.快速排序 B.归并排序 C.堆排序 5.特殊排序 三.经典算法实战 1.Quick-Sort 2.Merge-Sort 3.Heap-Sort 4.Relative-Sort-Array [1122] 5.Valid-anagram [242] 6.Merge-Intervals […

Go新项目-配置文件的选取及区别和写法(1)

先说结论&#xff1a;我们选型TOML yaml&#xff0c;toml&#xff0c;json&#xff0c;ini 实际业务都有用 实际栗子是&#xff1a;我们想要把Go的切片作为配置文件&#xff0c;YAML写起来比较吃力&#xff0c;TOML就很容易了。 配置文件是用于配置计算机程序的参数、初始化设…

linux创建文件

创建文件夹&#xff1a; mkdir folder_name其中&#xff0c;folder_name是想要创建的文件夹的名称。 例如&#xff0c;如果想在当前目录下创建一个名为 "my_folder" 的文件夹&#xff0c;可以运行以下命令&#xff1a; mkdir my_folder如果想在特定路径下创建文件…

计算机导论10-软件与软件工程

文章目录 软件软件的概念软件的定义软件的特征 软件的保护与授权软件的法律保护软件许可 软件工程软件危机软件危机的概念产生软件危机的原因 软件工程的概念软件工程的定义软件工程基本原理软件工程框架软件工程三要素 软件工程方法学软件工程方法软件工程工具软件工程过程 软…

详细讲解Python中的aioschedule定时任务操作

目录 前言1. 基本概念2. 基本API3. Demo 前言 如果下面的函数库无法执行&#xff0c;出现类似&#xff1a;&#xff08;前提是python3.7以上&#xff09; AttributeError: module ‘asyncio‘ has no attribute ‘run‘请检查run是否可跳转&#xff0c;如果无法跳转&#xff…

【RPC】网络通信:哪种网络IO模型最适合RPC框架?

一、背景 RPC是解决进程间通信的一种方式。一次RPC调用&#xff0c;本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息&#xff0c;服务提供者接收并解析&#xff0c;处理完相关的业务逻辑之后&#xff0c;再发送一条响应消息…

Qt命令行安装:linux(ubuntu)

起因是我上一篇文章说的&#xff0c;官网下的安装包卡死在第一步安装界面了。 于是我就问GPT有没有纯命令行的安装方式&#xff0c;果然是有的。 在Ubuntu上安装Qt可以使用以下命令&#xff1a; 1. 首先&#xff0c;添加Qt的官方存储库到系统中&#xff1a; sudo add-apt-rep…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

使用PyTorch实现混合专家(MoE)模型

Mixtral 8x7B 的推出在开放 AI 领域引发了广泛关注&#xff0c;特别是混合专家&#xff08;Mixture-of-Experts&#xff1a;MoEs&#xff09;这一概念被大家所认知。混合专家(MoE)概念是协作智能的象征&#xff0c;体现了“整体大于部分之和”的说法。MoE模型汇集了各种专家模型…

Transformer详解(附代码实现及翻译任务实现)

一&#xff1a;了解背景和动机 阅读Transformer论文&#xff1a; 阅读原始的Transformer论文&#xff1a;“Attention is All You Need”&#xff0c;由Vaswani等人于2017年提出&#xff0c;是Transformer模型的开创性工作。 二&#xff1a;理解基本构建块 注意力机制&#…

软件研发过程中,项目管理工具应该如何选择?

本文作者&#xff1a;极狐GitLab 资深解决方案架构师 尹学峰 许多企业依旧在用老旧的方式&#xff0c;如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求&#xff0c;更无法实现与企业员工的日常即时通信系…

MATLAB - 加载预定义的机器人模型

系列文章目录 前言 一、 要快速访问常见的机器人模型&#xff0c;可使用 loadrobot 功能&#xff0c;该功能可加载市售的机器人模型&#xff0c;如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器…