架构师备考-背诵精华(计算机语言)

定义

  • 计算机语言是指用于人与计算机之间交流的一种语言,是人与计算机之间传递信息的媒介。
  • 计算机语言主要由一套指令组成,而这种指令一般包括:表达式、流程控制和集合三大部分内容。
    • 表达式包括:变量、常量、字面量和运算符
    • 流程控制包括:分支、循环、函数和异常
    • 集合包括:字符串、数组、散列表等数据结构

计算机语言的分类

        计算机语言分为机器语言、汇编语言、高级语言、建模语言、形式化规格语言。

  • 机器语言
    • 机器语言是最早使用的程序设计语言,是第一代计算机语言。
    • 机器语言围绕的中心是指令,每条机器指令就是一个0,1串。指令的集合称为指令系统,也就是机器语言。
  • 汇编语言
    • 用一些简洁的英文字母,符号串来替代一个特定指令的二进制串,这种语言称为汇编语言,即第二代计算机语言。
    • 汇编语言的语句格式包括:指令语句,伪指令语句,宏指令语句。
  • 高级语言:
    • 高级语言是一类语言的统称,它比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。
  • 建模语言
    • 1997年10月17日,OMG 采纳UML1.1作为面向对象技术的标准建模语言。
    • UML 是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它的作用不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
  • 形式化规格语言
    • Z语言:建立于集合论和数理逻辑的基础上。集合论包括标准的集合运算符、笛卡尔积和幂集;数理逻辑包括一阶谓词演算,二者合二为一,形成了易学易用的数学语言。

程序设计语言的分类

类型

示例

命令式和结构化程序设计语言(过程式)

Fortran,PASCAL,C语言

面向对象的程序设计语言

java,C++,C#

函数式程序设计语言

lisp,scala

逻辑型程序设计语言

Prolog

脚本语言

PHP,js,Python

  • 程序设计语言可根据其编译方式分为解释型语言和编译型语言
    • 解释型语言:解释型语言在执行时,是逐行读取、解释并执行的。解释器读取代码的每一行,将其转换为机器代码,然后执行。这意味着解释型语言不需要预先编译即可执行。常见的解释型语言包括 Python、JavaScript 和 Ruby。
      • 特点:不产生目标程序、效率低、灵活性好、可移植性高
    • 编译型:编译型语言在执行前需要经过一个编译过程,将整个代码转换成机器可读的指令。这个过程通常由编译器完成。编译后的代码可以直接由计算机的处理器执行,因此通常执行速度更快。常见的编译型语言包括 C、C++ 和 Java。
      • 特点:生成目标程序、效率高、灵活性差、可移植性差

编译程序的过程

        编译程序的过程包括:词法分析、语法分析、语义分析、生成中间代码、中间代码优化、目标代码生成(可选)

  1. 词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误;
  2. 语法分析:语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。通过语法分析确定整个输入串是否构成一个语法上正确的程序
  3. 语义分析:主要检查源程序是否存在语义上的错误,并收集类型信息供后面的代码生成阶段使用。语义分析分为静态分析和动态分析两个部分。静态语义分析使用语法指导翻译。
  4. 中间代码:不依赖计算机,有四种表现形式
    1. 后缀式,(逆波兰式)
    2. 树型表示
    3. 三元式(三地址码)
    4. 四元式 (四地址码)
  5. 出错处理
    1. 静态错误:编译时出现语法错误,静态语义错误(运算符与运算对象类型不合法)
    2. 动态错误:程序运行时出现 (变量取0做除数,数组下标越界等)

文法

        文法 G 定义为一个四元组(VN,VT,P,S),

  • VN: 非终结符集合 ;指在文法中可以代替其他符号的符号集合
  • VT: 终结符集合 :指在文法中不能再分解成其他符号的符号集合
  • P: 产生式集: 是指在文法中定义的语言规则集合
  • S:识别符或开始符号,:在文法中作为句子开头的符号,也是一个非终结符,至少要在一条产生式的左边出现

文法类型

示例

0型文法

短语文法,图灵机,递归枚举

1型文法

上下文有关文法

2型文法

上下文无关文法 (语法规则)

3型文法

正规式 (词法分析)

  • 0型文法:0型文法也称为无限制文法或短语结构文法,是最一般形式的文法。在这种文法中,生成规则没有限制。任何字母都可以替换为任何字符串,包括空字符串。
  • 上下文有关文法:生成规则的形式是A → β,其中A是一个非终结符号,β是一个由终结符号和非终结符号组成的字符串。此外,A必须在β中出现。
  • 上下文无关文法:形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法。由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。
  • 正规式
    • 正规式

      正规集

      ab

      字符串ab构成的集合

      a|b

      字符串a,b构成的集合

      a*

      由0个或多个a构成的字符串集合

      (a|b)*

      所有字符a或b构成的串的集合

      a(a|b)*

      以a为首字符的a,b字符串的集合

      (a|b)*abb

      以abb结尾的a,b字符串的集合

有限自动机

  • 确定的有限自动机 DFA:该状态机在任何一个状态,基于输入的字符都能做成一个确定的状态转换
  • 不确定的有限自动机 NFA:该状态机在任何一个状态,基于输入的字符都不能做成一个确定的状态转换;1,对于一个输入,它有两种状态可以转换;2,存在空的情况,既没有任何字符输入的情况下,NFA可以从一个状态迁移到另一个状态;

常见高级语言简介

  • Fortran(公式翻译)是最早的高级编程语言之一,于1957年由IBM开发,适用于科学计算和数值分析。
  • Lisp是第二古老的编程语言,于1958年由John McCarthy设计。支持宏系统,高度可扩展。代码即数据(Code as Data)的理念。主要用于人工智能研究。
  • Pascal是由Niklaus Wirth在1970年设计的,旨在提供一种用于教育目的的编程语言。强类型语言,有助于减少错误。
  • Prolog是1972年开发的一种逻辑编程语言。基于事实和规则进行逻辑推演。自动内存管理。主要用于人工智能和专家系统
  • C语言于1972年由Dennis Ritchie在贝尔实验室开发,用于Unix操作系统。高效、灵活、功能强大。
  • C++是由Bjarne Stroustrup在1983年开发的,是C语言的超集。支持面向对象、过程化、泛型编程。高效、功能丰富。广泛用于系统软件、游戏开发、实时系统。
  • PHP是一种开源的服务器端脚本语言,由Rasmus Lerdorf于1994年创建。易于学习,广泛用于网页开发。大量的内置函数库。
  • JavaScript是一种轻量级的编程语言,由Netscape于1995年开发。主要用于网页前端开发。支持事件驱动、函数式编程。
  • Java由Sun Microsystems于1995年推出,是一种面向对象的编程语言。“一次编写,到处运行”,强大的标准库。广泛用于企业级应用、安卓应用开发。
  • Python由Guido van Rossum于1989年圣诞节期间开始编写,第一个公开发行版发行于1991年。语法简洁、可读性强。强大的标准库和第三方库支持。广泛应用于数据分析、人工智能、网页开发等领域
  • C#是微软在2000年推出的面向对象的编程语言。集成了.NET框架。广泛用于开发Windows应用程序、Web应用程序
  • Scala于2003年推出,结合了面向对象和函数式编程的特性。运行在JVM上,与Java兼容。支持并发编程。适用于复杂的应用程序开发。

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

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

相关文章

一个简单的 uas_send_bye.xml for SIPp

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name"iinv-o200-obye.xml -- wjd 2014"><recv request"INVITE" rrs"true"/><send>&l…

【瑞吉外卖】-day01

目录 前言 第一天项目启动 获取资料 创建项目 ​编辑 连接本地数据库 连接数据库 修改用户名和密码 ​编辑创建表 创建启动类来进行测试 导入前端页面 创建项目所需目录 检查登录功能 登录界面 登录成功 登录失败 代码 退出功能 易错点 前言 尝试一下企业级项…

时间序列预测(十五)——有关Python项目框架的实例分析

#1024程序员节&#xff5c;征文# 在之前的学习中&#xff0c;已经对时间序列预测的相关内容有了大致的了解。为了进一步加深理解&#xff0c;并能够将所学知识应用于实际中&#xff0c;我决定找一个完整的Python框架来进行深入学习。经过寻找&#xff0c;我终于找到了一篇非常具…

Prometheus+Telegraf实现自定义监控项配置

系列文章目录 运维监控平台搭建 运维监控平台监控标签 golang_Consul代码实现Prometheus监控目标的注册以及动态发现与配置V1版本 Prometheus运维监控平台之监控指标注册到consul脚本开发、自定义监控项采集配置调试(三) golang开发alertmanagerWebhook,实现prometheusalertma…

基于Mysql、JavaScript、PHP、ajax开发的MBTI性格测试网站(前端+后端)

源码地址&#xff1a;https://download.csdn.net/download/2302_79553009/89933699 项目简介 本项目旨在构建一个基于MBTI&#xff08;迈尔斯-布里格斯性格分类指标&#xff09;理论的在线平台——“16Personalities”。该平台利用PHP、MySQL、JavaScript等技术栈开发&#xf…

uniapp的IOS证书申请(测试和正式环境)及UDID配置流程

1.说明 本教程只提供uniapp在ios端的证书文件申请&#xff08;包含正式环境和开发环境&#xff09;、UDID配置说明&#xff0c;请勿用文档中的账号和其他隐私数据进行测试&#xff0c;请勿侵权&#xff01; 2.申请前准备 证书生成网站&#xff1a;苹果应用上传、解析&#x…

【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!

前言 &#x1f31f;&#x1f31f;本期讲解关于TCP协议的重要的机制“连接的建立和断开”~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1…

Docker部署教程:打造流畅的斗地主网页小游戏

Docker部署教程&#xff1a;打造流畅的斗地主网页小游戏 一、项目介绍项目简介项目预览 二、系统要求环境要求环境检查Docker版本检查检查操作系统版本 三、部署斗地主网页小游戏下载镜像创建容器检查容器状态查看容器日志安全设置 四、访问斗地主网页小游戏五、总结 一、项目介…

【Unity】游戏UI中添加粒子特效导致穿层问题的解决

这里介绍一下简易的ui系统中&#xff0c;添加粒子特效导致的穿层问题 首先是在ui界面中添加粒子特效预制体&#xff0c;这个时候&#xff0c;控制这个粒子显示层级的有两个方面 上图中&#xff0c;如果你的Sorting Layer ID的值&#xff08;Layer排序&#xff09;是大于当前C…

以太网交换安全:DHCP Snooping

一、DHCP Snooping的概念及功能 DHCP Snooping是一种用于增强网络中DHCP服务安全性的技术。以下是对以太网交换安全中的DHCP Snooping进行详细的介绍&#xff1a; 基本概述 定义目的&#xff1a;DHCP Snooping是一种网络安全技术&#xff0c;旨在防止未经授权的DHCP服务器在网…

[Linux进程控制]进程创建|进程终止|进程等待

目录 一、进程创建 1.fork函数 2.写实拷贝 二、进程终止 1.进程退出场景 2.进程常见退出方法 &#xff08;1&#xff09;从main函数返回 &#xff08;2&#xff09;_exit &#xff08;3&#xff09;调用exit 三、进程等待 1.进程等待的方法 &#xff08;1&#xff…

12. MapReduce全局计数器

一. 计数器概述 在执行MapReduce程序时&#xff0c;控制台的输出中一般会包含如下内容。 这些输出就是MapReduce的全局计数器的输出信息。计数器是用来记录job的执行进度和状态的&#xff0c;它的作用可以理解为日志&#xff0c;方便用户了解任务的执行状况&#xff0c;辅助…

超好玩又简单-猜数字游戏(有手就行)

云边有个稻草人-CSDN博客 我的个人主页 目录 云边有个稻草人-CSDN博客 前言 猜数字游戏的游戏要求 1. 随机数的生成 1.1 rand 1.2 srand 1.3 time 1.4 设置随机数的范围 2. 猜数字游戏实现 2.1 游戏实现基本思路 2.2 代码实现 Relaxing Time! —————————…

基于Qt的多线程并行和循序运行实验Demo

致谢&#xff08;Acknowledgement&#xff09;&#xff1a; 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程&#xff0c;感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]&#xff1a; 在计算机科…

2024年9月电子学会青少年软件编程Python等级考试(三级)真题试卷

2024年9月青少年软件编程Python等级考试&#xff08;三级&#xff09;真题试卷 选择题 第 1 题 单选题 以下python表达式的值为True的是&#xff1f;&#xff08; &#xff09; A.all( ,1,2,3) B.any([]) C.bool(abc) D.divmod(6,0) 第 2 题 单选题 下列python代码的…

smuge error

0 Preface/Foreword 1 解决方法 第一步&#xff1a;跳过大文件下载&#xff0c;到时候统一使用快速批处理fast batch git lfs install --skip-smudge 故意敲错指令&#xff0c;会出现git lfs install 的usage&#xff1a; 第二步&#xff1a;clone仓库 下载结果&#xff1a;…

如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?

在OA系统或者合同管理系统中&#xff0c;我们会经常遇到网页在线编辑Word文档形式的公文及合同的情况&#xff0c;并且需要上级对下级的公文进行批注等操作&#xff0c;或者不同部门的人需要签字审核&#xff0c;这就需要用到文档流转功能&#xff0c;如何用猿大师办公助手实现…

HTB:Analytics[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many open TCP ports are listening on Analytics? 2.What subdomain is configured to provide a different application on the target web server? 3.What application is running on data.analytical.htb? 4.What version of…

计算机网络IP地址分类,子网掩码,子网划分复习资料

IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址&#xff0c;它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成&#xff0c;分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA&#xff0c;转运到另一个数组DataB中&#xff0c;这个基本结构里的各个参数应该如何配置呢&#xff1f; 首先是外设站点和存储器站点的起始地址、…