第四课:早期的编程方式、编程语言发展史、编程基础-语句和函数、算法入门、数据结构、阿兰图灵及软件工程

news2024/10/7 18:30:00

第四课:早期的编程方式、编程语言发展史、编程基础-语句和函数、算法入门、数据结构、阿兰图灵及软件工程

  • 第十章:早期的编程方式
    • 1、早期,程序如何进入计算机
    • 2、早期计算机的编程
    • 3、现代计算机基础结构——冯诺依曼计算机
  • 第十一章:编程语言发展史
    • 概念梳理
    • 1、早期二进制
    • 2、汇编器&助记符
    • 3、最早高级编程语言“A-0”
    • 4、开始广泛应用的高级编程语言
    • 5、通用编程语言——COBOL
    • 6、现代编程语言1960s-2000
    • 7、安全漏洞&补丁由来
  • 第十二章:编程基础-语句和函数
    • 1、变量、赋值语句
    • 2、if判断
    • 3、while循环
    • 4、for循环
    • 5、函数
  • 第十三章:算法入门
    • 基本慨念
    • 1、选择排序
    • 2、大O表示法
    • 3、归并排序
    • 4、Dijkstra算法
  • 第十四章:数据结构
    • 1、数组 下标
    • 2、字符串
    • 3、矩阵
    • 4、结构体
    • 5、指针
    • 6、节点
    • 7、链表
    • 8、队列
    • 9、栈
    • 10、树
    • 11、图
  • 第十五章:阿兰图灵
    • 可判定性问题
  • 第十六章:软件工程
    • 1、对象
    • 2、API
    • 3、集成开发环境(IDE)
    • 4、调试(debug)
    • 5、文档与注释
    • 6、版本控制
    • 7、质量控制测试
    • 8、beta alpha

各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料!

第十章:早期的编程方式

1、早期,程序如何进入计算机

程序必须人为地输入计算机。
早期,电脑无内存的概念,人们通过打孔纸卡等物理手段,输入数据(数字),进入计算机。

2、早期计算机的编程

  • 打孔纸卡/纸带:在纸卡上打孔,用读卡器读取连通电路,进行编程。原因,穿孔纸卡便宜、可靠也易懂。
    62500张纸卡=5MB
  • 数据插线板:通过插拔线路的方式,改变器件之间的连接方式,进行编程。
  • 面板开关(1980s 前):通过拨动面板上的开关,进行编程。输入二进制操作码,按存储按钮,推进至下一个内存位,直至操作完内存,按运行键执行程序。(内存式电脑)

3、现代计算机基础结构——冯诺依曼计算机

冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+数据寄存器+指令寄存器+指令地址寄存器+内存

第十一章:编程语言发展史

概念梳理

伪代码:用自然语言(中文、英语等)对程序的高层次描述,称为“伪代码”。
汇编器:用于将汇编语言装换成机器语言。一条汇编语句对应一条机器指令。
助记符(汇编器):软件

1、早期二进制

写代码先前都是硬件层面的编程,硬件编程非常麻烦,所以程序员想要一种更通用的编程方法,就是软件。
早期,人们先在纸上写伪代码,用“操作码表”把伪代码转成二进制机器码,翻译完成后,程序可以喂入计算机并运行。

2、汇编器&助记符

背景:1940~1950s,程序员开发出一种新语言,更可读更高层次(汇编码)。每个操作码分配一个简单名字,叫“助记符”。但计算机不能读懂“助记符”,因此人们写了二进制程序“汇编器”来帮忙。
作用:汇编器读取用“汇编语言”写的程序,然后转成“机器码”。

3、最早高级编程语言“A-0”

汇编只是修饰了一下机器码,一般来说,一条汇编指令对应一条机器指令,所以汇编码和底层硬件的连接很紧密,汇编器仍然强迫程序员思考底层逻辑。
1950s,为释放超算潜力,葛丽丝·霍普博士,设计了一个高级编程语言,叫“Arithmetic Language Version 0”,一行高级编程语言可以转成几十条二进制指令。但由于当时人们认为,计算机只能做计算,而不能做程序,A-0未被广泛使用。
过程:高级编程语言→编译器→汇编码/机器码

4、开始广泛应用的高级编程语言

FORTRAN1957 年由 IBM1957 年发布,平均来说,FORTRAN 写的程序,比等同的手写汇编代码短20倍,FORTRAN 编译器会把代码转成机器码。但它只能运行于一种电脑中。

5、通用编程语言——COBOL

1959年,研发可以在不同机器上通用编程语言。
最后研发出一门高级语言:“普通面向商业语言”,简称 COBOL。
每个计算架构需要一个 COBOL 编译器,不管是什么电脑都可以运行相同的代码,得到相同结果。

6、现代编程语言1960s-2000

1960s 起,编程语言设计进入黄金时代。
1960:LGOL, LISP 和 BASIC 等语言。
70年代有:Pascal,C 和 Smalltalk。
80年代有:C++,Objective-C 和 Perl。
90年代有:Python,Ruby 和 Java*。

7、安全漏洞&补丁由来

在1940年代,是用打孔纸带进行的,但程序出现了问题(也就是漏洞),为了节约时间,只能贴上胶带也就是打补丁来填补空隙,漏洞和补丁因此得名。

第十二章:编程基础-语句和函数

1、变量、赋值语句

如a=5,其中a为可赋值的量,叫做变量。把数字5放 a 里面,这叫“赋值语句”,即把一个值赋给一个变量。

2、if判断

可以想成是“如果 X 为真,那么执行 Y,反之,则不执行Y”,if语句就像岔路口,走哪条路取决于条件的真假。

3、while循环

当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。

4、for循环

for循环不判断条件,判断次数,会循环特定次数,不判断条件。for 的特点是,每次结束,i会+1。

5、函数

当一个代码很常用的时候,我们把它包装成一个函数(也叫方法或者子程序),其他地方想用这个代码,只需要写函数名即可。

第十三章:算法入门

基本慨念

算法:解决问题的基本步骤。

1、选择排序

数组:一组数据。
选择排序的复杂度为O(n²)。

2、大O表示法

大O表示法(算法)的复杂度:算法的输入大小和运行步骤之间的关系,来表示运行速度的量级。

3、归并排序

归并排序的算法复杂度为O(n*log n),n是需要比较+合并的次数,和数组大小成正比,log n是合并步骤所需要的次数,归并排序比选择排序更有效率。

4、Dijkstra算法

一开始复杂度为O(n²),后来复杂度为O(nlog n +I),n表示节点数,I表示有多少条线。

第十四章:数据结构

1、数组 下标

数组(Array),也叫列表(list)或向量(Vector),是一种数据结构。为了拿出数组中某个值,我们要指定一个下标(index),大多数编程语言里,数组下标都从 0 开始,用方括号 [ ] 代表访问数组。
注意:很容易混淆“数组中第 5 个数”和“数组下标为 5 的数”,数组下标为5的数是数组里面的第6个数。

2、字符串

即字母、数字、标点等组成的数组,字符串在内存里以0结尾。

3、矩阵

可以把矩阵看成数组的数组

4、结构体

把几个有关系的变量存在一起叫做结构体。

5、指针

指针是一种特殊变量,指向一个内存地址,因此得名。

6、节点

以指针为变量的结构体叫节点。

7、链表

用节点可以做链表,链表是一种灵活数据结构,能存很多个节点 (node),灵活性是通过每个节点指向下一个节点实现的。链表可以是循环的也可以是非循环的,非循环的最后一个指针是0。

8、队列

“队列”就像邮局排队,谁先来就排前面,这叫先进先出(FIFO——first in first out),可以把“栈”想成一堆松饼,做好一个新松饼,就堆在之前上面,吃的时候,是从最上面开始。

9、栈

栈是后进先出(LIFO)。

10、树

在这里插入图片描述

11、图

如果数据随意连接,有循环,我们称之为图。

第十五章:阿兰图灵

可判定性问题

是否存在一种算法,输入正式逻辑语句输出准确的“是”或“否”答案?

  1. 阿隆佐邱奇,Lambda算子
    美国数学家阿隆佐·丘奇,开发了一个叫“Lambda 算子”的数学表达系统,证明其不存在。
  2. 图灵机
    只要有足够的规则,状态和纸带,图灵机可以解决一切计算问题。和图灵机一样完备,叫做图灵完备。
  3. 停机问题
    证明图灵机不能解决所有问题。
  4. 图灵测试
    向人和机器同时发信息,收到的回答无法判断哪个是人,哪个是计算机,则计算机达到了智能程度。

第十六章:软件工程

1、对象

当任务庞大,函数太多,我们需要把函数打包成层级,把相关代码都放一起,打包成对象。对象可以包括其他对象,函数和变量。把函数打包成对象的思想叫做“面向对象编程”,面向对象的核心是隐藏复杂度,选择性的公布功能。

2、API

当团队接收到子团队编写的对象时,需要文档和程序编程接口(API)来帮助合作。API控制哪些函数和数据让外部访问,哪些仅供内部。

3、集成开发环境(IDE)

程序员用来专门写代码的工具。

4、调试(debug)

IDE帮你检查错误,并提供信息,帮你解决问题,这个过程叫调试。

5、文档与注释

文档一般放在一个叫做README的文件里,文档也可以直接写成“注释”,放在源代码里,注释是标记过的一段文字,编译代码时,注释会被忽略。注释的唯一作用是帮助开发者理解代码。

6、版本控制

版本控制,又称源代码管理。大型软件公司会把会把代码放到一个中心服务器上,叫“代码仓库”,程序员可以把想修改的代码借出,修改后再提交回代码仓库。版本控制可以跟踪所有变化,如果发现bug,全部或部分代码,可以“回滚”到之前的稳定版。

7、质量控制测试

可以统称“质量保证测试”(QA),作用是找bug

8、beta alpha

beta版软件,即是软件接近完成,但没有完全被测试过,公司有时会向公众发布beta版,以帮助发现问题。alpha是beta前的版本,一般很粗糙,只在内部测试。

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

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

相关文章

公司创建百度百科需要哪些内容?

一个公司或是一个品牌想要让自己更有身份,更有知名度,更有含金量,百度百科词条是必不可少的。通过百度百科展示公司的详细信息,有助于增强用户对公司的信任感,提高企业形象。通过百度百科展示公司的发展历程、领导团队…

[BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务

1.问题描述 使用yarn调度任务时,在CapacityScheduler页面上单击叶队列(或子队列)时,不会显示应用程序任务信息,root队列可以显示任务。此外,FairScheduler页面是正常的。 No matching records found2.原…

web自动化(4)——POM设计重构

1. 什么是POM Page Object Model 是ui自动化测试中常见的封装方式。 原理:将页面封装为PO对象,然后通过面向对象的方式实现UI自动化 2. 封装原则 PO无需包含全部UI元素PO应当验证元素PO不应该包含断言PO不应该暴露元素 3. 怎么进行POM封装 面向对象…

<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流

目录 TCP的通信机制的核心特性 七、延时应答 1)什么是延时应答? 2)延时应答的作用 八、捎带应答 1)什么是捎带应答? 2)捎带应答的作用 九、面向字节流 1)沾包问题 2)“沾包…

用ChatGPT挑选钻石!著名珠宝商推出-珠宝GPT

根据Salesforce最新发布的第五版《互联网购物报告》显示,ChatGPT等生成式AI的出现、快速发展,对零售行业和购物者产生了较大影响。可有效简化业务流程实现降本增效,并改善购物体验。 著名珠宝商James Allen为了积极拥抱生成式AI全面提升销售…

Redis 是如何执行的?

文章目录 命令执行流程步骤一:用户输入一条命令步骤二:客户端先将命令转换成 Redis 协议,然后再通过 socket 连接发送给服务器端步骤三:服务器端接收到命令步骤四:执行前准备步骤五:执行最终命令&#xff0…

HTML5+CSS3+JS小实例:网站实现一键切换暗色主题

实例:网站实现一键切换暗色主题 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge&…

V-rep(CoppeliaSim)添加相机,与python联合仿真,并使用python读取V-rep中的RGB图与深度图

目录 前言在V-rep中构建场景建立python与V-rep通信 前言 本文主要介绍了如何使用python与V-rep联合仿真&#xff0c;并用OpenCV可视化V-rep中视觉传感器所能看到的 RGB图和深度图&#xff0c;效果图如下。 在V-rep中构建场景 本文使用的V-rep版本是3.5&#xff1a; 打开V-…

深度学习在语义分割中的进展与应用

埃弗顿戈梅德&#xff08;Everton Gomede&#xff09; 一、说明 语义分割是计算机视觉领域的一项关键任务&#xff0c;涉及将图像中的每个像素分类为预定义的类。这项任务在从自动驾驶汽车到医学成像的各种应用中都具有深远的影响。深度学习的出现显著提高了语义分割模型的功能…

小型企业成为网络犯罪分子获取数据的目标

在过去十年的大部分时间里&#xff0c;网络犯罪的巨额资金来自针对大型组织的勒索软件攻击。这种威胁仍然存在。但犯罪分子可能会将注意力转向中小企业 (SMB)。这对消费者的影响将是巨大的。 将软件即服务 (SaaS) 技术用于核心业务功能继续将中小企业整合到全球供应链中。由于…

kubeSphere集群部署nacos

kubeSphere部署nacos 个人环境说明执行nacos数据脚本kubeSphere添加配置创建有状态副本集修改集群配置文件 创建外部访问服务访问 个人环境说明 由于我之前这个项目就是dockerjenkins部署的,只是现在升级到k8skubeSphere所有下面有些操作我可能不同,例如我的nacos配置文件就是d…

论文阅读:Blind Super-Resolution Kernel Estimation using an Internal-GAN

这是发表在 2019 年 NIPS 上的一篇文章&#xff0c;那个时候还叫 NIPS&#xff0c;现在已经改名为 NeurIPS 了。文章中的其中一个作者 Michal Irani 是以色 Weizmann Institute of Science (魏茨曼科学研究学院) 的一名教授&#xff0c;对图像纹理的内在统计规律有着很深入的研…

UG NX二次开发(C#)-Ufun和NXOpen混合编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、Ufun函数3、 NXOpen4、混合编程实现1、前言 在UG NX二次开发过程中,采用Ufun功能比较简单,能用比较少的代码实现我们需要的功能,但是ufun函数的功能不是很强大,尤其随着UG NX的版本…

中央集成式架构量产时代,openVOC方案将引发软件开发模式变革

2024年&#xff0c;中央计算区域控制架构正式进入规模化量产周期&#xff0c;汽车智能化正式迈入2.0时代&#xff0c;产业生态、应用创新、开发模式都将迎来巨大变革。 同时&#xff0c;随着ChatGPT引发的AIGC领域的爆发式增长&#xff0c;人工智能技术掀起全球万亿级信息化应…

开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置

Ant Design Pro 介绍 Ant Design Pro 是一个开箱即用的企业级前端解决方案&#xff0c;基于 Ant Design 设计体系&#xff0c;提供了丰富的组件和功能&#xff0c;帮助开发者更快速地开发和部署企业级应用。 Ant Design Pro 使用 React、umi 和 dva 这三个主要的前端开发技术…

天翼云云间高速实现租户跨地域内网互通

一、业务需求 用户业务在襄阳、武汉两个云池部署&#xff0c;希望通过云间高速产品将两个资源池云内资源通过云内专网实现内网互通。要求内网双向互通。 二、测试环境配置 云池vpc名称vpc网段子网内网ip/gweip主机名互联网带宽襄阳ceshi192.168.0.0/16192.168.1.0/24192.168.…

基于element ui封装table组件

效果图&#xff1a; 1.封装表格代码如下 <template> <div><div class"TableList"><el-tablev-loading"loading"selection-change"selectionChange"class"table":data"tableData":border"hasBorde…

阿里云数据库PolarDB费用价格_MySQL版_PolarDB_分布式版

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…

OpenCV-Python(21):OpenCV中的轮廓性质

3.轮廓的性质 本文我们将主要学习基于轮廓来提取一些经常使用的对象特征。 3.1 长宽比 边界矩形的宽高比&#xff1a; x,y,w,h cv2.boundingRect(cnt) aspect_ratio float(w)/h 3.2 Extent 轮廓面积与边界矩形面积的比。 area cv2.contourArea(cnt) x,y,w,h cv2.bounding…

EXPLORING DIFFUSION MODELS FOR UNSUPERVISED VIDEO ANOMALY DETECTION 论文阅读

EXPLORING DIFFUSION MODELS FOR UNSUPERVISED VIDEO ANOMALY DETECTION 论文阅读 ABSTRACT1. INTRODUCTION2. RELATEDWORK3. METHOD4. EXPERIMENTAL ANALYSIS AND RESULTS4.1. Comparisons with State-Of-The-Art (SOTA)4.2. Diffusion Model Analysis4.3. Qualitative Result…