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

图源:文心一言

编译原理习题整理~🥝🥝

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

  • 第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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java SE语法篇】11.异常

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 1. 异常的概念和体系结构1.1 异常的概念1.2 异常体系…

企业微信开发:自建应用:access_token

access_token 过期后接口响应 access_token 已经过期(2小时)后,调用接口的响应;本文中以发送消息接口为例,说明接口响应的情况。 官方开发文档链接:获取access_token access_token 过期后调用接口 响应体 …

大模型学习与实践笔记(六)

一、finetune 简介 两种微调模式:增量预训练 与指令跟随 1.增量预训练 2.指令微调 二、LoRA 与 QLoRA 介绍 三、XTuner 介绍 四、低显存玩转LLM的方法

ASP.NET Core 的 Web Api 实现限流 中间件

Microsoft.AspNetCore.RateLimiting 中间件提供速率限制(限流)中间件。 它是.NET 7 以上版本才支持的中间件,刚看了一下,确实挺好用,下面给大家简单介绍一下: RateLimiterOptionsExtensions 类提供下列用…

【jupyter添加虚拟环境内核(pytorch、tensorflow)- 实操可行】

jupyter添加虚拟环境内核(pytorch、tensorflow)- 实操可行 1、查看当前状态(winR,cmd进入之后)2、激活虚拟环境并进入3、安装ipykernel5、完整步骤代码总结6、进入jupyter 添加pytorch、tensorflow内核操作相同,以下内容默认已经安…

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 […

idea设置编辑器背景颜色

文章目录 一、Ided常用工具栏显示二、更改idea主题设置三、设置代码编辑器背景颜色为豆沙绿四、设置新项目 默认Jdk配置、maven配置1、settings for new projects2、structre for new projects 五、修改代码中注释的字体颜色六、设置编辑器字体大小七、文件编码的设置(可以设置…

leetcode-344. 反转字符串、9. 回文数

题目1: 解题方法 直接用reverse()即可 代码: class Solution(object):def reverseString(self, s):""":type s: List[str]:rtype: None Do not return anything, modify s in-place instead."""return s.reverse()如果不…

翻译: Pyenv管理Python版本从入门到精通二

Pyenv系列: 翻译: Pyenv管理Python版本从入门到精通一 1. 高级 Pyenv 用法 1.1 在 pyenv-virtualenv 中使用虚拟环境 可以使用 pyenv-virtualenv 扩展 Pyenv 来管理虚拟环境。这是隔离项目环境并有效管理其依赖项的好方法。以下是使用 pyenv-virtualenv 创建虚…

C# 面向切面编程之AspectCore实践(二)

写在前面 在上一篇中对AspectCore进行了初步的了解,用于拦截的属性加在了具体类的方法上。 C# 面向切面编程之AspectCore初探 这一篇验证一下把拦截属性加在接口上,这样实现该接口的类中所对应的方法都会被拦截到;另外示例中还尝试对方法的…

如何从命令行运行testng.xml?

目录 创建一个新的java项目并从命令行运行testng.xml 使用命令行运行XML文件 从命令行运行现有maven项目的XML文件 在这篇文章中,我们将使用命令行运行testng.xml。有多种场景需要使用命令行工具运行testng.xml。也许您已经创建了一个maven项目,现在想…

【VTKExamples::PolyData】第三期 DecimatePolylineDeleteCell

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例 DecimatePolyline折线抽取和 DeleteCell样例,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. DecimatePo…

YOLOv8改进 | 主干篇 | 低照度增强网络PE-YOLO改进主干(改进暗光条件下的物体检测模型)

一、本文介绍 本文给大家带来的改进机制是低照度图像增强网络PE-YOLO中的PENet,PENet通过拉普拉斯金字塔将图像分解成多个分辨率的组件,增强图像细节和低频信息。它包括一个细节处理模块(DPM),用于通过上下文分支和边缘分支增强图像细节,以及一个低频增强滤波器(LEF),…

C语言经典算法之顺序查找算法

目录 前言 A.建议 B.简介 一 代码实现 二 算法时空复杂度 A.时间复杂度: B.空间复杂度: 三 优点和缺点 A.优点: B.缺点: 四 现实中的应用 前言 A.建议 1.学习算法最重要的是理解算法的每一步,而不是记住算…

steam搬砖项目风险在哪里?这几点一定要记牢

你可能已经听说过Steam搬砖项目,这是一个通过在Steam平台充值美元,购买道具,然后将这些道具转移到BUFF平台进行交易,从而获取利润的方式。这个项目的操作方法主要是利用一些渠道和经验技巧,购买低价道具,然…

力扣每日一练(24-1-17):轮转数组

方法一:使用额外的数组 这个方法的思路是创建一个新的数组,然后将每个元素放到正确的位置上。新数组的第i个元素应该是原数组的第(i len(nums) - k) % len(nums)个元素。 def rotate(nums, k):n len(nums)rotated [0] * nfor i in range(n):rotated[(…

用Axure RP 9制作元件教程

制作 软件:Axure RP 9 图标:iconfont 制作流程 1.打开Axure RP 9 2.iconfont 搜索眼睛 图标 图标找好之后 我们可以开始了 3.制作 我们用文本框 如图片 第2步 我们选中这2个把他们变成动态面板 在动态面板增加一个状态 如图片 我们接下来…

locust快速入门--使用分布式提高测试压力

背景: 使用默认的locust启动命令进行压测时,尽管已经将用户数设置大比较大(400),但是压测的时候RPS一直在100左右。需要增加压测的压力。 问题原因: 如果你是通过命令行启动的或者参考之前文章的启动方式…

Python - 深夜数据结构与算法之 DP 串讲

目录 一.引言 二.DP 知识点回顾 1.递归 2.分治 3.动态规划 三.DP 经典题目回顾 1.Climb-Stairs [70] 2.Unique-Paths [62] 3.House-Robber [198] 4.Min-Path-Sum [64] 5.Best-Time-Sell-Stock [121] 6.Min-Cost-Climb [746] 7.Edit-Distance [72] 8.Longest-Sub-…

AI大模型预先学习笔记一:transformer和fine tune技术介绍

一、商业观点:企业借助大模型获得业务增长可能 二、底层原理:transformer 1)备注 ①下面每个步骤都是自回归的过程(aotu-regressive):已输出内容的每个字作为输入,一起生成下一个字 ②合起来就…