计算机语言

文章详细介绍了计算机程序的概念,从机器语言到高级语言的演变,特别是面向过程和面向对象编程的对比,包括它们的优劣和应用场景。同时,讨论了高级语言的分类,如编译型和解释型语言,以及动态类型和静态类型语言的特点和适用场景。最后,提到了强类型和弱类型语言的区别及其在开发效率和安全性上的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、计算机与程序

二、机器语言和高级语言

三、高级语言分为面向对象编程语言和面向过程编程语言

(一)面向过程编程语言(POP)

面向过程编程的优劣:(与面向对象编程对应)

(二)面向对象编程语言(OOP)

面向对象编程的优劣:

面向对象的三大特性:

(三)由面向过程过渡为面向对象的原因

四、高级语言分为编译型语言和解释型语言

(一)编译型语言

(二)解释型语言

五、高级语言分为动态类型语言和静态型语言

(一)动态类型语言(弱类型语言)

动态类型语言优劣:

(二)静态类型语言(强类型语言)

静态类型语言优劣:

六、高级语言分为强类型语言和弱类型语言

(一)强类型语言

(二)弱类型语言

(三)两者的优劣


一、计算机与程序

(1)计算机只能识别和执行二进制(0和1)的一系列指令信息

        人们为了让计算机能够工作,就编写由0和1组成的指令,指挥计算机工作,而这些指令的集合称为程序。

(2)程序与源程序

  • 程序就是一组计算机能识别和执行的指令。
  • 高级语言编写的程序称为源程序

二、机器语言和高级语言

(1)机器语言(低级语言)

  •  定义:能够被计算机直接识别的指令
  •  特点:难(学、记、写、修改、维护)互不通用

(2)高级语言

  •  定义:比较接近于人们习惯使用的自然语言和数学语言
  •  特点:易(学、理解、写、修改、维护、推广)且计算机之间通用

三、高级语言分为面向对象编程语言和面向过程编程语言

(一)面向过程编程语言(POP)

概念:以过程为中心的编程思想。将问题解析成多个步骤,按照步骤过程进行解决  —— 具体化。比如:C语言

举例:洗衣机里有脏衣服,怎么洗干净

实现:(里面和外面的执行方式)

  1. 打开洗衣机盖
  2. 添加洗衣粉 和 水
  3. 关闭洗衣机盖
  4. 执行清洗功能
  5. 执行烘干功能

面向过程编程的优劣:(与面向对象编程对应)

  • 优点:运行性能比面向对象强,但是比较消化资源
  • 缺点:难维护、难复用、难扩展

(二)面向对象编程语言(OOP)

概念:将问题解析划分并构建联系,拆分成对象【类(Class)】,给每个对象设定特有的操作【属性和方法】,再将对象进行实例化【实例化对象(Instance)】,通过访问(调用)实例对象来执行属性和方法  <目的:问题在解决过程中,通过对象执行操作处理> ——  模型化。比如:C++、python、Java

举例:洗衣机里有脏衣服,怎么洗干净

实现:(里面的执行方式)

  • 分析联系:洗衣机洗衣服,人操作洗衣机和完成其他工作  ==>  对象:洗衣机、人
  • 对象特有的操作:
    • 洗衣机:清洗功能、烘干功能
    • 人:打开洗衣机盖、添加洗衣粉和水、关闭洗衣机盖
  • 实例化对象:实例对象——(人)我、(洗衣机)机器
  • 执行:
    1. 我.打开洗衣机盖
    2. 我.添加洗衣粉 和 水
    3. 我.关闭洗衣机盖
    4. 机器.清洗功能
    5. 机器.烘干功能

看着比面向过程编程的操作繁琐,但是在外面就是(我让洗衣机洗衣服)—— 封装、继承和多态

举例:如何吃到一份鱼香肉丝

  1. 自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里
  2. 去饭店,张开嘴:老板!来一份鱼香肉丝!

1就是面向过程,2就是面向对象

面向对象编程的优劣:

  • 优点:高内聚,低耦合
    • 高内聚:你只负责喊菜;老板只负责做菜(面向过程:自己想吃,还要自己买菜,还要自己做菜)
    • 低耦合:突然不想吃鱼香肉丝,想吃宫保鸡丁,就让老板换成宫保鸡丁(面向过程:重新买菜)
  • 优点:代码复用、便于管理、便于调用、维护性高、易扩展
    • 代码复用、维护性高、易扩展可体现在低耦合
    • 便于管理和调用:老板做得难吃,你可以直接找老板,老板去找厨师
  • 缺点:运行性能比面向过程差

面向对象的三大特性:

  • 封装:隐藏对象的属性和实现细节,仅提供对外公共访问方式(提高复用性和安全性)
  • 继承:继承是多态的前提(提高复用性)
  • 多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象(提高了拓展性)

(三)由面向过程过渡为面向对象的原因

 面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便使用的就是面向对象。

  • 面向对象编程可以实现低耦合

    耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:

            如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。

  • 面向对象更符合人类的思维,面向过程则是机器的思想。

四、高级语言分为编译型语言和解释型语言

        高级语言编写的程序,计算机不能直接识别和执行,需要通过编译系统(编译器)解释系统(解释器),转换成可被计算机执行的语言(机器码)

(一)编译型语言

概念:使用编译器,针对特定的平台,将源程序一次性编译成可被该平台硬件执行的机器码,并包装成可被该平台所能识别的可执行程序的格式(exe文件)。比如:C、C++

特点:

  • 一次编译,多次执行,运行效率高(不用每次运行都要编译)
  • 无法移植到其他平台
  • 会生成exe文件,需将代码编译成二进制后才能运行

(二)解释型语言

概念:使用解释器,对源程序解释成特定平台的机器码并立即执行。每次运行,都要解释成机器码,并且是动态解释(行行解释)。比如:Java、python

特点:

  • 每次运行,都要解释(缺点:代码越多,运行效率越低)
  • 只要平台提供相应的解释器,就可以运行源程序,可以移植到其他平台
  • 不生成exe文件,可以直接运行代码

五、高级语言分为动态类型语言和静态型语言

数据类型检查:确保表达式中的变量类型是否合法。

(一)动态类型语言(弱类型语言)

概念:在运行阶段中进行数据类型检查的语言。在编写代码中,变量在使用前可以不声明数据类型。在运行程序中,系统会自动分配数据类型。比如:Php、Asp、JavaScript、python。

f = 0.5     #定义变量不需要显示声明

动态语言思维不受约束,可以任意发挥,把更多的精力放在产品本身上;集中思考业务逻辑实现,思考过程就是实现过程。

动态类型语言优劣:

  • 优点:方便阅读,不需要写非常多的类型相关代码。
  • 缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等。

(二)静态类型语言(强类型语言)

概念:在编译阶段中进行数据类型检查的语言。在编写代码中,变量在使用前必须声明数据类型。比如:Java、C、C++、C#。

float f = 0.5      #定义变量必须显示声明类型

静态语言由于强制声明数据类型,让开发工具(IDE)对代码有很强的判断能力,在实现复杂的业务逻辑和开发大型商业系统、以及那些声明周期很长的应用中,开发者可以依托强大的IDE来更高效、更安全地开发。

静态类型语言优劣:

  • 优点:把数据类型检查放置编译期,提前检查可能出现的类型错误。
  • 优点:使变量的数据变量的结构规范,便于调试和数据类型安全。
  • 缺点:结构规范会导致其需写更多的类型相关代码,导致不易阅读。

六、高级语言分为强类型语言和弱类型语言

(一)强类型语言

概念:变量不通过强制转换,那么该变量永远是该数据类型,不允许隐式的类型转换。有更强的类型检查机制,表达式计算中会做严格的类型检查。

举例:定义了一个double类型变量a,不经过类型强制转换,那么程序int b = a无法通过编译。

data = 5 # 在运行时,data被赋值为整型
data = data + "xiaoming" #报错

(二)弱类型语言

概念:与强类型语言相反,但允许编译器进行隐式的类型转换。允许各种变量类型间做一些运算。

var data = 5
data = data + 'xiaoming' //string和int可以结合,程序正常执行

(三)两者的优劣

  • 在速度上,弱类型语言 > 强类型语言。
  • 使用弱类型语言可节省很多代码量,有更高的开发效率。
  • 在构建大型项目中,使用强类型语言可能会比使用弱类型更加规范可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值