这才是计算机科学_计算机大量应用

news2025/1/16 2:54:48

文章目录

  • 一、编译原理
    • 1.1 早期编译方式
    • 1.2 编程语言
  • 二、算法&数据结构
  • 2.1 Sort
  • 2.2 图搜索
  • 2.3 Array
  • 2.4 Node
  • 三、软件工程起源
    • 2.1分解打包
  • 三 、摩尔定律
    • 3.1 发展历
      • 3.1.1 电子管
      • 3.1.2 晶体管
      • 3.1.3 集成电路 IC
    • 3.2 刻蚀工艺
      • 3.2.2 光刻负责电路

一、编译原理

在这里插入图片描述

之前讲的例子中 ,程序已经存在于内存中,但是程序要需要load进内存

1.1 早期编译方式

远古时代
编程最早出现于纺织行业,为了编制出图案,玛丽发明了 可编程纺织机 1801年亮相,
在这里插入图片描述

每一行颜色可由卡片小孔决定,便可以改变防止的团高低

1890年 穿孔纸用于美国人口普查

但是 穿孔纸是数据 而不是编程,之后的60年 计算机可以做加减乘除…加强了
为了执行不同的计算,程序员需要某种控制面板(control panel)
在这里插入图片描述
来控制计算机计算不同的数据

但是运行不同的程序就需要不同的重新连线

冯诺依曼结构
1950,内存价格下降,把程序存在内存中变得可行,甚至数据都可以存在内存中
把 数据 + 程序 都存在同一个地方,这种方式称为:芬诺依曼结构

在这里插入图片描述
冯诺依曼结构的特点就是:处理器(算数逻辑单元) + 数据寄存器 + 指令寄存器 + 指令地址寄存器 + 内存

程序写入内存
用卡片一张张读,有的程序由60k张卡片(5MB)
在这里插入图片描述
output数据也需要卡片

1.2 编程语言

之前讲的很多二进制的 00010100 load A ,可以直接用load 代替,然后写一个翻译器:他可以读懂文字指令 自动转换成二进制指令,这就是汇编器(Assembler)

随着时间推移,汇编器越来越多的功能让编程更加容易,最大的优化就是自动识别JUMP

插入新的语句后,
在这里插入图片描述
解决方法就是标签化:
在这里插入图片描述

汇编语言 : 机器语言 = 1 :1
汇编语言仍然需要考虑用什么内存地址 寄存器 ,突然中途添加一个额外的数字,就要改很多code

Hopoer 二战后设计了高级语言:“Arithmetic Language Version 0”
一条语言由 编译器 翻译成多条

从此以后,产生了很多很多高级语言,
最初的IBM 的 FORTRAN 高级语言应用广泛,但只能应用在IBM的计算机上,电脑升级都需要重写代码

为了解决这个适配的问题,在1959年组成了一个联盟 “数据系统语言委员会 ” 开发一种通用的高级语言,在不同机器上使用,诞生了 “通用面向商业语言 Common Business-Oriented Language” COBOL

Cobol 的编译器 接受相同的代码,根据计算机的不同 编译 成 不同的机器码

70年代 出现了 C
80:C++ \ Object-C Perl
90: Python Java

二、算法&数据结构

算法:解决问题的具体步骤

if
while

2.1 Sort

应用讨论最多的算法,科学家们用了几十年时间发明了上百种排序算法。
一个个查找的排序算法

算法的复杂度: 输入大小 & 运行步骤 之间的关系 (O(n2))

2.2 图搜索

图是用线连接起来的一堆节点,用来处理 导航问题 特别多
在这里插入图片描述
寻找最短路径:
方法一:尝试每一种可能,选择最短的路径,复杂度O(n!)
Dijkstra 方法:

2.3 Array

2.4 Node

连续两个内存地址,第一个地址是 value 、第二个是下一个Node的地址
在这里插入图片描述

三、软件工程起源

前言
我们学过了算法、数据结构…
但是 这些东西都是庞大项目中的一小部分
微软 Office 有 4000万行code
为了写庞大的项目,用了各种工具和方法,这些统称为 Soft Engineering
软件工程这个词由工程师 Margeret Hamilton在为NASA解决问题时创造

2.1分解打包

对象讲解
把一个大的项目分解成小的函数,大家只关心自己的函数就好了
但如果只是这样,Office也会有几十万的函数,依然不可维护
解决方案:把函数打包成层级,相关代码放在一起,打包成对象(object)
例如:自动驾驶中有:

设定速度
逐渐加速
逐渐减速

封装第一次 :这些函数都和定速巡航相关,可以包成一个 定速巡航的对象 ,

还可能有很多对象 :

定速巡航
火花塞点火 
散热器启动 

封装第二次 :封装成引擎对象,包含所有子对象
当然 引擎对象也有独有的开关引擎函数 、行驶里程变量
对象可以包含其它对象、函数、变量

引擎对象:
	定速巡航对象
	火花塞点火对象
	散热器启动对象

	开关引擎函数
	行驶里程变量

当然还有 其它的对象:

车轮
门
车窗
...

最后封装成完整的车

如果想要找到 定速巡航 对象,就需要 从 车 一层层的往里面找,最后找到可执行的函数()

Car.Engine.CruiseControl.SetCruiseSpeed(60)

编程语言经常用这种类似的语法,把函数打包成对象的方法叫:“Object Oriented Programming” 面向对象编程

API

如果 定速巡航对象 需要用到 引擎的其它函数,来保持车速
开发者需要了解其它人写的函数的作用 文档 API(Application Programming Interface)
API 帮助开发者不需要了解太多,直接会用就可以了

点火控制 对象 中,有设定发动机转速 、获得速度、点火 的函数
但是 定速巡航 团队不知道点火系统的细节,不能乱调用

在这里插入图片描述
把一些 “重要危险 的 函数标记 为 private 只有自己包内的函数才能调用”
setPRM() 是 public的 可以被定速巡航 团队调用

三 、摩尔定律

3.1 发展历

3.1.1 电子管

在这里插入图片描述

3.1.2 晶体管

在这里插入图片描述

3.1.3 集成电路 IC

1959年 仙童半导体 用 硅 来做集成电路 晶体管
在这里插入图片描述
集成电路还是需要多个组合起来,创造更大更复杂的电路

PCB 印刷电路板

PCB可以大规模生产,无需焊接或者用一大堆线,通过刻蚀金属线的方式 连接在一起

把PCB & IC组合起来使用,可以大幅减少独立组建和电缆

3.2 刻蚀工艺

一开始集成电路IC只能添加少量的晶体管,要想减少晶体管的体积,塞下更多,就要改变工艺

在这里插入图片描述
硅:半导体:有时候导电,有时候绝缘,控制导电的时机。

在这里插入图片描述
在这里插入图片描述
光刻胶被光照射后 会变得可溶,可以被一种特殊的化学试剂洗掉
在这里插入图片描述

光掩膜可以用挡住阳光来描述图案,
光照到的地方,光刻胶会发生化学变化,洗掉之后 暴露氧化层
在这里插入图片描述
氧化层被光刻胶保护住了
在这里插入图片描述
现在景圆(硅)露出来了
为了让硅导电性更好,用一种化学过程来改变它 叫 “掺杂”

在这里插入图片描述
还需要几轮光刻法 来做晶体管 ,方法都差不多
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
再次刻蚀出小通道
在这里插入图片描述
在这里插入图片描述
不想用金属盖住所有的东西 想刻蚀出具体的电路
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.2 光刻负责电路

在这里插入图片描述

1960年前,IC上的晶体管很少,光刻工艺发明后,晶体管数量急剧增加
1965年,摩尔 看到了趋势:每两年左右 ,晶体管数量翻一番

2023年5纳米 3纳米的晶体管都量产了

摩尔极限
进一波做小晶体管带来的问题:

  1. 用光眼膜把图案弄到晶圆上,因为光的波长,精度已经到极限
  2. 晶体管非常小时,电极之间可能只距离几个原子,电子会跳过间隙:量子隧道贯穿

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

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

相关文章

46 理论计算机科学基础-北京大学

P10 课程介绍05:46P21-1 预备知识07:43P31-2 确定型有穷自动机例子11:23P41-3 确定型有穷自动机的形式化定义17:51P51-4 设计确定型有穷自动机05:57P61-5 正则运算与封闭性28:16P71-6 非确定型有穷自动机37:43P81-7 DFA与NFA的等价性17:41P91-8 正则语言的封闭性10:30P102-1 正…

第九章(13):STL之常用排序算法

文章目录前情回顾常用排序算法sortrandom_shufflemergereverse下一座石碑🎉welcome🎉 ✒️博主介绍:一名大一的智能制造专业学生,在学习C/C的路上会越走越远,后面不定期更新有关C/C语法,数据结构&#xff0…

Java 面向对象三大特性之三——接口(面试、学习、工作必备技能)

目录 一、接口概述(interface) 二、接口的成员 三、继承和实现 四、单继承和多实现 五、接口的优点 六、接口与抽象类 七、接口的思想 八、接口案例——运动员 ​​​​​​​ 接口概述(interface) 定义:是抽象方法和常量值的集合。 本质:从…

【C++修行之路】类和对象

面向对象编程详解目录前言面向对象和面向过程类和结构体构造函数和析构函数拷贝构造和赋值重载结语前言 好久不见,首先祝大家元宵节快乐,万家元夕宴,一路太平歌,今天执此佳节,一起来学习一下类和对象吧~ 面向对象和面…

系列分享 |《最强的 VLC 多媒体开发教程》

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 专栏介绍 《VLC 多媒体开发》,是一个专注于 libVLC 开发的专栏,里面共包含几十个章节,从 0 到 1,图文并茂,详细地…

【Linux】冯诺依曼体系与操作系统(OS)概念

文章目录冯诺依曼体系结构为什么是这样的结构局部性原理操作系统(Operator System)设计OS的目的定位如何理解管理 (精髓:先描述再组织)总结系统调用和库函数概念冯诺依曼体系结构 我们常见的计算机,如笔记本.我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 为什么是这…

C++深入浅出(八)—— 继承

文章目录1. 继承的概念及定义🍑 继承的概念🍑 继承的定义🍅 定义格式🍅 继承关系和访问限定符🍅 继承基类成员访问方式的变化2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元6. 继…

jsp 校园网系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 校园网系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统采用web模式开发,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数…

C#,入门教程(39)——C#语言的概念与知识点摘要

本文归纳整理C#的一些知识点,便于快速浏览与掌握C#语言的一些基本概念。本文并没有很好地层次与组织,抄了不少,写了不少,想到什么,就写什么。01 类 class类是C#等面向对象编程语言(Object-oriented program…

常用API、Lambda、常见算法

目录 日期与时间 Date SimpleDateFormat Calendar JDK8新增日期类 概述、LocalTime/LocalDate/LocalDateTime Instant DateTimeFormatter Duration/Period ChronoUnit 包装类 包装类练习 正则表达式 正则表达式概述、初体验 正则表达式的匹配规则 正则表达式的…

Zookeeper注册中心

zookeeper的使用场景 分布式协调、分布式锁、元数据/配置信息管理、HA高可用性 分布式协调 A系统发送个请求到mq,然后B系统消息消费之后处理了,那A系统如何知道B系统的处理结果?A系统发送请求之后在zookeeper上对某个节点的值注册个监听器,一旦B系统处理完了就修改zooke…

C语言高级教程-C语言数组(七):数组综合实例之井字棋游戏问题

C语言高级教程-C语言数组(七):数组综合实例之井字棋游戏问题一、本文的编译环境二、井字棋游戏的问题三、井字棋游戏的分析四、井字棋游戏的程序编写步骤4.1、添加主要的游戏循环和显示这个方格4.2、让玩家选择-一个方格, 并确定那…

Android 设置可抓包

在ren目录下新建xml文件夹&#xff0c;在xml下新建network_security_config.xml<?xml version"1.0" encoding"utf-8"?><!--<network-security-config>--><!-- <base-config cleartextTrafficPermitted"true" />--&…

MySQL面试:MySQL事务,内附详细视频教程,以及sql事务演示

文章目录一、事务&#xff08;提出事务&#xff09;二、四个特性&#xff08;事务要实现的特性&#xff09;三、一致性问题&#xff08;事务可以解决这些问题&#xff09;四、解决&#xff08;事务解决部分或全部一致性问题&#xff09;五、实现&#xff08;事务实现ACID的机制…

Python setattr()、getattr()、hasattr()函数用法详解

Python hasattr()函数hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下&#xff1a;hasattr(obj, name)其中 obj 指的是某个类的实例对象&#xff0c;name 表示指定的属性名或方法名。同时&#xff0c;该函数会将判断的结果&#xff0…

差值结构不对称部分的约化质心

( A, B )---5*30*2---( 1, 0 )( 0, 1 ) 做一个网络&#xff0c;输入为5个点&#xff0c;训练集A,B各有两张图片。让B的两张图片全是0.排列组合A&#xff0c;记录迭代次数平均值的变化。 迭代了1024组&#xff0c;共收集到33组不同的数据&#xff0c;其中对称的部分有17组&…

Java volatile学习

面试题&#xff1a; 1、请谈谈你对volatile的理解&#xff1f; volatile是Java虚拟机提供的轻量级的同步机制1.保证可见性2.不保证原子性3.禁止指令重排 2、JMM你谈谈?3、你在哪些地方用到过volatile?一、概述 JMM(Java内存模型 Java Memory Model&#xff0c;简称JMM) 本身是…

JSP 概述(三)

JSP 的处理过程&JSP 与其他服务器端脚本语言的比较1. JSP 的处理过程2. JSP 与其他服务器端脚本语言的比较2.1 CGI2.2 ASP2.3 PHP2.4 ASP.NET结束语1. JSP 的处理过程 当客户端浏览器向服务器发出请求要访问一个 JSP 页面时&#xff0c;服务器根据该请求加载相应的 JSP 页…

微信小程序里面的js文件分为哪几类?

1.小程序中的.js的分类 小程序中的JS文件分为三大类&#xff0c;分别是&#xff1a; 1.app.js 是整个小程序项目的入口文件&#xff0c;通过调用App()函数来启动整个小程序 2.页面的.js文件 是页面的入口文件&#xff0c;通过调用 Page&#xff08;&#xff09;函数来创建并运行…

Java基础语法(基础篇 适合小白)

Hello World public 访问修饰符 static 关键字 void 返回类型 String 类 args字符串数组 public class HelloWorld {/* 第一个Java程序* 它将输出字符串 Hello World*/public static void main(String[] args) {System.out.println("Hello World"); // 输出 Hello Wo…