2. 计算机的由来——软件篇

1. 计算机软件

    官方一点讲,我们所谓的“计算机”指的是计算机硬件与软件,纯计算机硬件只能根据自然现象做无意义的响应。这就需要我们制定相应的逻辑去干预。而如何制定合理逻辑,如何让冰冷的机器理解,以及如何让其高效准确地执行,这就是软件需要考虑的问题。

1.1 二进制

    由于计算机是由 电能驱动 ,那么如何让计算机能理解我们的信息(数据)并处理就是要面对的首要问题。

    很容易联想到的一个方案就是用电流或电压的大小来表示数据:1V表示1,2V表示2……那么要表示从地球到月球有多少米呢?这种方式有点耗能量,也有点危险……

    换一个思路,我们使用一个开关来控制“有电”或者“没有电”,有电表示1,没有电表示0。那么在存储数据时,可以抽象地理解为通过该存储单元是否有电(1或0)来表示信息。

    由此,可以使用两个状态来表示各种数据(只要空间够大)。比如现在有8个存储单位,分别都可以表示0或1,那么这些单位组合起来一共可以表示 28 种不同的状态。每一个存储单位叫做位(bit),这8位空间就叫做一个字节(Byte)。

    按照计数基本方法,我们将使用2个数字来表示各种数据,这就是 二进制(Binary),类比十进制,二进制逢二进一,那么十进制的2,用二进制将表示为10。

    以下为十进制数字与二进制数字的简要对照,供初学者理解

1.2 程序

机器语言(Machine Language)

    由于计算机底层只能理解二进制数,所以欲传达指令,则使用由0与1组合的数字为媒介,这就需要机器能理解指令。

    计算机芯片在诞生之时,该能力已经由生产厂商赋予。

    开发人员按照厂商所给的“语法”进行开发,这就是机器语言(Machine Language)。

随着社会的发展,计算机要解决的问题越来越复杂,是用该方式开发的弊端暴露无遗:机器语言人类太难直观理解,开发、调试、修改困难。

汇编语言(Assembly Language)

为了解决以上问题,厂商将该“语法”进行了升级,用简单的单词缩写来代替二进制代码,即汇编语言(Assembly Language),如此一来大大减小了开发难度(相对而言)。

    汇编语言虽然提高了人类对于开发语言的理解,但是依然非常底层(即逻辑接近机器),开发程序需要学习大量计算机理论,门槛较高,同时依然面对与机器语言相同的问题,不易于维护。

高级语言

    高级语言是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示,有较高的可读性,以方便对计算机认知较浅的人亦可以大概明白其内容。

    高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。

    但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。

    这里所谓的“高级”的意义是距离人类逻辑较近,即更易理解。

1.3 操作系统(Operating System)

    由于不同的硬件厂商生产的产品不同,所给的语法(即指令集(ISA))不同,使用汇编开发的程序移植性很差,而高级语言最终也需要转为机器语言才可让硬件理解,并且即使是同一个机器上的不同程序,也会有大量的相同逻辑,来负责硬件资源调度等基本工作,以提供一个可能执行业务计算的前提。由此就迫切需要一个通用的代码,负责与底层硬件交互,为应用程序提供运行环境。

    这就是现代操作系统(Operating System)的主要任务之一。它弥合了底层硬件的差异,对上层提供一致的接口与规范。比如:如何让读取数据,如何驱动声卡发声等。程序可以直接调用该库进行工作,即系统调用。

由于系统调用虽然提供了相关能力,但是依然太过于底层,仅仅使用系统调用的方式开发应用程序太过于困难,对于程序员的学习要求也过高。所以一个完整的系统一般会在用户空间将系统调用再次封装,使之成为有实际作用的接口,封装后的接口通常以C库的方式对外提供。即API(Application Programming Interface),程序员可使用这些库调用进行开发,也可以直接使用系统调用,实现更能灵活的代码操作。

操作系统的另一个任务就是要协调各个应用。计算机底层实质上是一堆逻辑电路的组合,故在某一刻只能执行一项运算,随着硬件运算能力的提升,这种机制对于计算能力的浪费是巨大的。这就需要程序有一个约定好的“规则”,以确定如何使用硬件资源。

操作系统可以作为“监控者”,合理分配运算与存储资源给各个应用程序。同时,其还提供其他能力,如,将通用的功能封装为接口,以供程序调用。

目前主流的操作系统有:

Windows,个人电脑主流操作系统,VMS内核

MacOS,苹果公司生产的Mac电脑操作系统,FreeBSD内核

Linux,服务器或商业主流操作系统,拥有众多发行版

Android,移动终端主流操作系统,实质上是运行在Linux之上的Java虚拟机

IOS,苹果公司生产的移动终端操作系统,流畅高效


end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容