首页 > 其他分享 >为什么软件可以操作硬件

为什么软件可以操作硬件

时间:2022-11-06 15:01:33浏览次数:57  
标签:逻辑 计算机 信息 打孔 硬件 半导体 操作 软件

要回答这个问题,首先我们需要定义什么是软件,什么是硬件。咱们不去翻那些各类专业知识,站在一个有过基本编程经验的程序员角度来说,很感性的认知就是软件是由编程语言写出来的虚拟逻辑,硬件则是看得见摸得着的芯片机器。

然而虚拟是如何控制现实的?程序逻辑是一个看不见摸不着的东西。它是施展了什么魔法才能控制现实中的具体物质?举个例子,咱们对着一块铁板,无论你内心念多少咒语,它也不会动起来。因为咱们缺少能跟它交互的媒介。说回这里,我们还记得高中信息技术教材上写得计算机历史吗?最早的程序是用打孔纸带输送进计算机的!

可能当年我们看到打孔纸带这个词,也就是一眼过去了。但是今天回头来看这个东西,我们可以从中推理出很多东西出来。首先,打孔纸带它是一个实物,它是一个看的见摸得着的东西。那么我们能说打孔纸带是一个程序是一个软件吗?显然不是,软件永远都是摸不着的。因为软件代表的是一种运算逻辑,它是一个信息。信息是摸不着的,但是信息它得有载体!纸张可以用来承载文字,而文字的组合则是一种信息。换句话说,最早的计算机,通过打孔纸带来表述计算逻辑。现代计算机又用什么来作为信息的载体呢?没错,各种存储设备就是信息的载体。

讲到这里,我们对于软件的本质可能有点明白了,但是对于软件如何控制硬件,仍然没有什么头绪。要回答这个问题,我们需要换一个角度。我们都使用过电,比如电灯。用手按一下电灯开关,它就会通电或者断电,从而灯泡的物理形态发生了变化。仔细想一想,我们用手去控制电灯开关,是不是相当于向灯泡输入了一个信息?开关的闭合就是bool变量的true\false。而这个信息的承载媒介就是灯的开关!那么现在我们至少已经知道了一个东西,就是虚拟的信息通过具体的媒介,确实是可以控制现实中的物质的。

问题到这里还没结束,就是灯泡它只能亮或者不亮,它离计算机能执行各种逻辑运算并输出运算结果还差的远呢。计算机的特点是只要是人想的出来的逻辑,你就能通过编程语言表达出来并且让计算机按这个逻辑来执行。而人能想出来的逻辑过程是无穷的,所以计算机从宏观层面来看也能支持无穷多种的逻辑运算。但是显然计算机必须是由一些最简单的基本的东西组合出来从而可以执行千变万化的逻辑运算,否则它的制造过程也无法想象。不要觉得这不可能,因为这个无穷的宇宙就是由最基本的粒子组成的,计算机同样也可以用这种方式来设计。只不过它需要用到一种特殊的材料,是什么呢?

再次回到咱们的高中信息教材翻看计算机发展史,其中有一个很常见的词,叫半导体。为什么计算机需要用半导体材料呢?一块铁不能用来制造CPU吗?还真不能。在高中物理课程上,我们同样学习过半导体的概念。半导体材料的核心特点就是在满足某些条件的时候,它的导电性质会发生变化。注意变化这个词,一个宏观上最终能千遍万化的东西,如果你往下去剖析它的构成,一定会发现这个变化的根源来自一个自身就可以变化形态的物件。因此半导体的这个可以自身变化形态的材料特性,就是构成计算机能执行千变万化运算逻辑的核心。

回到正题,对半导体而言,施加不同的电流或电压,它会变得通电或不通电。所谓通不通即是电流经过它之后还能不能继续传下去。电流通过半导体传出来,这个结果就是一个输出,能否传出来,可以用01表示。而是否对半导体施加能改变其导电性质的电压,同样可以用01表示。于是这天然就是一个输入输出的计算过程。我们常说计算机只懂01,是因为构成计算机最基本的物质材料半导体只有01两种状态。我们只需要基于半导体这个性质去排布电路,就能形成各种逻辑运算单元。而这,最终形成了CPU,也就是计算机能运算逻辑的核心零件。

标签:逻辑,计算机,信息,打孔,硬件,半导体,操作,软件
From: https://www.cnblogs.com/yish/p/16862610.html

相关文章

  • 软件工程实验一
    (1) 回顾你过去将近3年的学习经历问:当初你报考的时候,是真正喜欢计算机这个专业吗?答:是。问:你现在后悔选择了这个专业吗?答:不后悔。问:你认为你现在最喜欢的领域是什么(可......
  • APIfox软件
    APIfox软件类似于postman--用于测试  出现问题:1、测试下载功能出现乱码问题  使用Apifox解决测试文件下载出错问题--解决: ......
  • pycharm操作redis
    安装在终端环境下输入:pipinstallredispycharm操作redis之普通连接#1.导入模块fromredisimportRedis#2.实例化产生链接对象conn=Redis()#连接本地的redi......
  • C语言数据结构 -BST 树的常规操作
       #include<iostream>#include<queue>//bst树structnode{node*lchild;node*rchild;intdata;};voidinsert(node**root,intval)......
  • PlayCover for Mac(Mac电脑全屏运行ios应用软件)
    PlayCover是一款彻底解放苹果电脑的iOS软件安装工具,无需付费,操作简单,可以安装ipa文件,可以通过鼠标、键盘和控制器在Mac上全屏运行iOS应用和游戏,并且支持M1。PlayCover......
  • 一些简单的指针操作(day3)
    1.认识指针的一些基本性质通过下面几段代码理解指针操作指定变量的一些基础性质。实例#include<stdio.h>intmain(){inta=2;int*p=&a; printf("%d\n",a); print......
  • 指定某个指定字段的指定值的操作的实现
    以《房产管理系统之顾客查询篇》为例进入顾客功能页面之后,会选择到其中的查询子功能--查询房产信息然后我们会遇到这样一个问题,我们要在输入查询功能的输入框里面输入相......
  • IO流中常用的创建文件操作
    1.newFile(Stringpathname)//根据路径构建一个file对象 2.newFile(Fileparent,Stringchild)//根据父目录文件+子路径构建 3. newFile(Stringparent,Str......
  • 信创服务器操作系统总结
    第一部分摘要自从提出没有网络安全就没有国家安全之后信创操作系统的发展进入了快车道.流行的操作系统主要分为如下几个大方面:1.宣称二进制兼容CentOS的部分系列:......
  • Java对文件的基本操作
    一:什么是文件,什么是文件流:1.文件就是保存数据的地方。2.数据流:(1)流:数据在数据源和程序之间的路径(2)输入流:数据从数据源到内存的路径(3)输出流:数据从内存到数据源的路径......