当前位置: 首页 > news >正文

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

定义

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

计算机语言的分类

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

  • 机器语言
    • 机器语言是最早使用的程序设计语言,是第一代计算机语言。
    • 机器语言围绕的中心是指令,每条机器指令就是一个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.mrgr.cn/news/61366.html

相关文章:

  • EFCore HasDefaultValueSql
  • excel仅复制可见单元格,仅复制筛选后内容
  • 汇总统计数据--SQL中聚集函数的使用
  • 利用Python爬虫从义乌购获取商品详情
  • node 发送邮件 nodemailer插件的使用
  • 牛客周赛 Round 76题解
  • Java Lock Condition 源码
  • 代码质量与项目进度的博弈
  • Homework 1 - Random Distribution Related
  • 手写ioc容器(简易版)
  • 【jvm】如何设置堆内存大小
  • 事务学习一
  • 年薪百万打工人自爆:我的大厂生存指南!
  • 使用DeepLabV3实现植叶病害检测
  • File类踩坑记录
  • 细胞核荧光探针(一):一种红色发光、NADPH响应的的喹啉基
  • 【点云异常点检测数据集】Real3D-AD数据集介绍
  • 基于SSM大学生互动交流网站设计与实现
  • 四元数各个旋转API的使用
  • 【JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总】
  • mongo实操笔记
  • 美团外卖霸王餐系统如何对接?有哪些具体步骤?
  • Java Lock LockSupport 源码
  • 代码学习:如何阅读开源代码
  • 网络搜索引擎Shodan(6)
  • 今日总结10.29