【测试开发学习历程】计算机编程语言
前言:
学习完数据库,我们便要进入到编程语言的内容当中了。
这里先对编程语言写出大致的分类,
在这之后,我们会以Python为重点,
开始测试开发为重点的编程语言学习。
目录
1 计算机编程语言的发展
2 语言的分类
2.1 按照程序的执行方式
编译型
解释型
编译型与解释型的优劣势对比:
2.2 按照程序的设计思想来分
面向对象
1 计算机编程语言的发展
机器语言:计算机只能识别二进制(计算机内部的元件通过高低电压来表示信息,高电压是1,低电压是0),早期编程用二进制实现,比如:10100010;
面试问题:什么是二进制?
二进制逢二进一
- 汇编语言:通过指令集来表示具体的操作,不同硬件的指令集不同,程序可移植性差,比如mov ax bx;
- 高级语言:跟人的自然语言接近,易于理解,比如C/C++/Java/Python等。
2 语言的分类
2.1 按照程序的执行方式
-
编译型
-
编译型语言以
C/C++
为代表; -
编译型语言的程序在运行前需要先编译成机器语言,机器语言能够被计算机识别,因此不需要解释就直接运行;
C
语言的编译器有GCC
,C++的编译器有G++
;
-
-
解释型
-
解释型语言以
Python/Ruby/Perl
为代表 -
解释型语言的程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次;
注:
Java
语言较为特殊,先把.java
文件编译成.class
字节码文件(十六进制),然后再由JVM
解释运行,所以Java
既是编译型也是解释型;
-
-
编译型与解释型的优劣势对比:
-
编译型语言的优势在于运行效率更高,对系统的资源要求更低,一般来说编译型语言用于实现后台的复杂逻辑,比如
MySQL
数据库、Nginx
服务器、CPython
等都是用C语言编写的; -
解释型语言的优势在于跨平台性更好(相对而言编译型的可移植性差,
C
语言程序进行移植后,要重新编译),经常用于脚本的开发。
-
2.2 按照程序的设计思想来分
-
面向过程(Procedure Oriented Programming,简称POP)
-
面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。
-
举个例子,下五子棋,面向过程的设计思路是首先分析解决这个问题的步骤: (1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤2,重复步骤2到7 (9)输出最后结果。
-
代表语言:
C
语言 -
应用场景:
-
适合编写系统软件:编译器,
JVM
,驱动,操作系统内核 -
嵌入式设备的编程
-
-
-
面向对象
-
(Object Oriented Programming,简称OOP)
-
面向对象是一种以对象为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(简单说面向对象是完成一件事情,只需要找到某个或某些对象,一一组装完成即可)
-
在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象: (1)黑白双方,这两方的行为是一样的 (2)棋盘系统,负责绘制画面 (3)规则系统,负责判定犯规、输赢等 然后赋予每个对象一些属性和行为:第一类对象(黑白双方)负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
-
代表语言:
Java ,C++,C#,PHP,JavaScript,Python
-
Java
-
面向对象的语言
-
跨平台
-
-
web
开发-
Android
应用开发 -
服务端应用接口开发
-
微信公众号开发
-
-
C++
-
主要用于底层代码的开发(比如一些大型的游戏,比如
lol
) -
一个不完全面向对象的编程语言,也可以面向过程
-
之前用作
MFC
界面的开发 -
现在更多用于数据计算
-
数据仓库的开发
-
-
C#
-
读音:
Csharp
-
微软公司的面向对象的语法
-
运行在
.NET framework
-
主要开发
Windows
桌面应用,Windows store
应用 -
配合
asp.net
,开发基于Windows Server
服务器的web
应用
-
-
PHP
-
脚本语言,慢慢走向标准化面向对象语言
-
主要开发动态网页
-
web
开发
-
-
JavaScript
-
和
Java
没有关系 -
脚本语言
-
主要用作网页的交互以及动效
-
-
Python
-
脚本语言
-
语法很简单,优美
-
可以做
web
开发 -
数据计算开发
-
非常适合做自动化测试
-
-
-
-
面向过程语言和面向对象语言优缺点对比
-
面向过程:
-
优点:性能比面向对象高,因为面向对象的类调用时需要实例化;比如单片机、嵌入式开发、
linux/unix
等一般采用面向过程开发,性能是最重要的因素。 -
缺点:没有面向对象易维护、易复用、易扩展。
-
-
面向对象:
-
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护,适合开发复杂、庞大的大型系统。
-
缺点:性能比面向过程低。
-
-
相关文章:

【测试开发学习历程】计算机编程语言
前言: 学习完数据库,我们便要进入到编程语言的内容当中了。 这里先对编程语言写出大致的分类, 在这之后,我们会以Python为重点, 开始测试开发为重点的编程语言学习。 目录 1 计算机编程语言的发展 2 语言的分类…...

动态内存管理-传值调用错题解析
首先我们来看这个错误代码 首先我们看代码逻辑,首先main函数调用test,test接收的是void类型,设置一个指针变量,指向null,传递给get函数,也就是传递一个空指针给getmemory函数,这个函数接收了&a…...

Java特性之设计模式【装饰器模式】
一、装饰器模式 概述 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中,以…...

Leetcode算法题笔记(2)
目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 61. 分割回文串解法一 …...

二手车交易网站|基于JSP技术+ Mysql+Java+ B/S结构的二手车交易网站设计与实现(可运行源码+数据库+设计文档)
推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…...

lora-scripts 训练IP形象
CodeWithGPU | 能复现才是好算法CodeWithGPU | GitHub AI算法复现社区,能复现才是好算法https://www.codewithgpu.com/i/Akegarasu/lora-scripts/lora-trainstable-diffusion打造自己的lora模型(使用lora-scripts)-CSDN博客文章浏览阅读1.1k次…...
Acwing 503. 借教室
Problem: 503. 借教室 文章目录 思路解题方法复杂度Code 思路 这是一个二分查找问题。我们需要找到最大的借教室数量,使得每个教室的借用时间不超过其可用时间。我们可以通过二分查找来找到这个最大的借教室数量。 解题方法 我们首先对所有的借教室请求按照结束时间…...

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.1-3.5
目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第三周:浅层神经网络(Shallow neural networks)3.1 神经网络概述(Neural Network Overview)3.2 神经网络的表示(Neural Network Representation…...

Linux设备驱动开发 - 三色LED呼吸灯分析
By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…...

开发者的瑞士军刀:DevToys
DevToys: 一站式开发者工具箱,打造高效创意编程体验,让代码生活更加得心应手!—— 精选真开源,释放新价值。 概览 不知道大家是否在windows系统中使用过PowerToys?这是微软研发的一项免费实用的系统工具套…...

【vue3.0】实现导出的PDF文件内容是红头文件格式
效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…...
【CSP试题回顾】202012-2-期末预测之最佳阈值(优化)
CSP-202012-2-期末预测之最佳阈值 关键点 1.map的遍历方式 map<int, int>occ0Num, occ1Num; for (auto it thetaSet.begin(); it ! thetaSet.end(); it) {num num occ0Num[*it] - occ1Num[*it];auto nextIt next(it); // 获取下一个迭代器if (num > maxNum &a…...

docker学习笔记 三-----docker安装部署
我使用的部署环境是centos 7.9 1、安装依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2 安装完成如下图 2、添加docker的软件信息源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo url地址为如…...

FastAPI+React全栈开发02 什么是FARM技术栈
Chapter01 Web Development and the FARM Stack 02 What is the FARM stack and how does it fit together? FastAPIReact全栈开发02 什么是FARM技术栈 It is important to understand that stacks aren’t really special, they are just sets of technologies that cover…...
C#程序结构详解
目录 背景: 一、C#程序的基本组成部分 二、C# Hello World示例 三、程序结构解析 四、编译与执行C#程序 五、总结 背景: 在学习C#编程语言的过程中,了解程序的基本结构是非常重要的。C#程序由多个组成部分构成,每个部分都有其特定的功能和作用。下面…...
linux 清理空间
1. 根目录下执行命令,查看每个目录下文件大小总和 rootvm10-88-88-3 /]# du -h --max-depth1 79M ./tmp 123M ./etc 4.0K ./media 4.0K ./srv 104M ./boot 5.3G ./var 0 ./sys 8.6M ./dev 196G ./usr 4.0K ./mnt 285M ./opt…...

C语言:给结构体取别名的4种方法
0 前言 在进行嵌入式开发的过程中,我们经常会见到typedef这个关键字,这个关键字的作用是给现有的类型取别名,在实际使用过程中往往是将一个复杂的类型名取一个简单的名字,便于我们的使用。就像我们给很熟的人取外号一样ÿ…...

今天聊聊Docker
在数字化时代,软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术,正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景,帮…...

【C语言】结构体
个人主页点这里~ 结构体 一、结构体类型的声明1、结构的声明2、结构体变量的创建和初始化3、声明时的特殊情况4、自引用 二、结构体内存对齐1、对齐规则2、存在内存对齐的原因3、修改默认对齐数 三、结构体传参四、结构体实现位段 一、结构体类型的声明 我们在指针终篇中提到过…...

Git基础(24):分支回退
文章目录 前言放弃已修改的内容分支回退到指定commit 前言 将分支回退到之前的某个版本 开发中,可能开发某个功能不需要了,或者想要回退到之前历史的某个commit, 放弃后来修改的内容。 放弃已修改的内容 如果未提交,直接使用 …...
复试专业前沿问题问答合集1
复试专业前沿问题问答合集1 人工智能基础知识问答 Q1: 什么是人工智能(AI)? A1: 人工智能(AI)是计算机科学的一个分支,它涉及创建能够执行通常需要人类智能的任务的机器和软件。这些任务包括学习(获取信息并根据信息对其进行规则化以达到结论)、推理(使用规则达到近…...
C++标准库中提供的用于处理正则表达式的类std::regex
std 是 C 标准库的命名空间,包含了大量标准的 C 类、函数和对象。这些类和函数提供了广泛的功能,包括输入输出、容器、算法、字符串处理等。 通常,为了使用标准库中的对象和函数,需在代码中包含相应的头文件,比如 #in…...

.NET Core 服务实现监控可观测性最佳实践
前言 本次实践主要是介绍 .Net Core 服务通过无侵入的方式接入观测云进行全面的可观测。 环境信息 系统环境:Kubernetes编程语言:.NET Core ≥ 2.1日志框架:Serilog探针类型:ddtrace 接入方案 准备工作 DataKit 部署 DataK…...

AI基础知识扫盲
AI基础知识扫盲 AIGCLangchain--LangGraph | 新手入门RAG(Retrieval-Augmented Generation)检索增强生成fastGPT AIGC AIGC是一种新的人工智能技术,它的全称是Artificial Intelligence Generative Content,即人工智能生成内容。 …...

分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
目录 分布式系统面试全集通第一篇什么是分布式?和微服务的区别什么是分布式分布式与微服务的区别 什么是CAP?为什么不能三者同时拥有分区容错性一致性可用性 Base理论了解吗基本可用软状态最终一致性 什么是分布式事务分布式事务有哪些常见的实现方案?2PC(Two Ph…...

Prompt-RAG:在特定领域中应用的革新性无需向量嵌入的RAG技术
论文地址:https://arxiv.org/ftp/arxiv/papers/2401/2401.11246.pdf 原文地址:https://cobusgreyling.medium.com/prompt-rag-98288fb38190 2024 年 3 月 21 日 虽然 Prompt-RAG 确实有其局限性,但在特定情况下它可以有效地替代传统向量嵌入 …...

线性代数 - 应该学啥 以及哪些可以交给计算机
AI很热,所以小伙伴们不免要温故知新旧时噩梦 - 线代。 (十几年前,还有一个逼着大家梦回课堂的风口,图形学。) 这个真的不是什么美好的回忆,且不说老师的口音,也不说教材的云山雾绕,单…...

力扣面试150 Pow(x, n) 快速幂 负指数
Problem: 50. Pow(x, n) 解题方法 👨🏫 参考题解 复杂度 时间复杂度: O ( l o g 2 n ) O(log_{2}n) O(log2n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public double myPow(double x, int n){if (x 0.0f)return 0.0d;long b…...
连接navicat报错2059 解决办法
这里写自定义目录标题 连接navicat报错2059 解决办法 连接navicat报错2059 解决办法 打开终端工具输入 mysql -hlocalhost -uroot -p回车(enter),输入密码后进入 mysql 。(PS: -h 后面是数据库地址, -u 后…...

Unity-UGUI系统
UGUI是什么 UGUI是Unity引擎内自带的UI系统官方称之为:Unity Ul 是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案 它是基于Unity游戏对象的UI系统,只能用来做游戏UI功能 不能用于开发Unity编辑器中内置的用户界面 六大基础组件 概述 Canvas EventS…...