0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机的基本原理是什么?语言与算法的资料和历史详细讲解

Wildesbeast 来源:人工智能 作者:光电科学史 2020-01-25 13:01 次阅读

使用计算机就要给计算机输入指令,早期给计算机的指令是写在穿孔纸带上的,如图1所示。

图1 早期的计算机语言

纸带匀速通过一个光源,光线透过纸带的穿孔后被接收器接收,产生一个电压,遇到纸带无孔时,光线就被纸带遮蔽,纸带后面的接收器就不产生电压,这样就将“100100”形式的二进制信号输给了计算机。这个发明源于图灵1936年的设想——图灵机(Turing Machine)。在计算机发明者名单中,图灵是名气最大的。由美国计算机协会(ACM)于1966年设立的图灵奖(Turing Award),至今仍然是计算机科学领域的最高荣誉。

尽管计算机的输入设备从穿孔纸带一路发展到硬盘、键盘和鼠标,但其基本原理还是给计算机输入“100100”形式的机器码。人们为了方便与计算机交流,发明了计算机操作系统。其实它就是预装在计算机存储器里面的一套机器码,计算机一旦通电启动,这套机器码首先被读入计算机内存并被执行,它使得计算机CPU、输入输出设备、存储器等等初始化,提供各类硬件功能接口供应用程序调用。人们借助计算机操作系统和预装的一些“工具软件”,用计算机完成诸如写文件、绘图表、做计算等简单工作。如果要使计算机完成千差万别的复杂工作,就必须给计算机输入专门的指令——计算机程序。由于计算机只能认识机器码,而机器码又实在太难学了,因此科学家就发明了“计算机语言”,人们可以借助这种语言编写计算机读得懂的程序。

最接近机器码的计算机语言是汇编语言(Assembly language)。在汇编语言中,用简单英文单词构成的助记符(Mnemonics)代替机器码,再加上地址符号(Symbol),组成如图2所示的计算机程序。

图2 一个汇编语言计算机程序片段

图中左边绿色字是程序的注释,它们不参加运行。

我们再举一个计算机程序的例子:完成任意三个数从小到大重新排列。比如,任意给计算机输入三个数:65.73、21.01、1.022,要求计算机将它们从小到大排列成:1.022、21.01、65.73。首先,我们必须设计一个算法如下:

第一步

比较第一个数与第二个数的大小。假如第一个数大于第二个数,则将它们调换顺序,否则就不调换顺序。现在第一个数是65.73,它大于第二个数21.01,因此将它们调换顺序。现在三个数排列为:21.01、65.73、1.022;

第二步

再比较第第二个数与第三个数的大小。假如第二个数大于第三个数,则将它们调换顺序,否则就不调换顺序。现在第二个数是65.73,它大于第三个数1.022,因此将它们调换顺序。现在三个数排列为:21.01、1.022、65.73;

第三步

再比较第一个数与第二个数的大小。假如第一个数大于第二个数,则将它们调换顺序,否则就不调换顺序。现在第一个数是21.01,它大于第二个数1.022,因此将它们调换顺序。现在三个数排列为:1.022、21.01、65.73,完成任务。

图3是一个用Fortran语言编写的计算机程序,它将输入计算机的任意三个数从小到大排序。

图3 一个完整的Fortran语言计算机程序

同样,图中左边绿色字是程序的注释,它们不参加运行。将这个计算机程序输入计算机后运行,只要在计算机屏幕上用键盘任意敲入3个数,计算机立即就会将此三个数从小到大重新排列,并且显示在计算机屏幕上。当然,三个数字的重新排序非常容易,人们一目了然就可以完成。如果经常要将成千上万的数字重新排序,就是一件困难的工作。这时编一个计算机程序,就可以比人工既快又省事。这个例子也说明,计算机必须依赖人类提供的算法完成任务,或者说人类完成创造性工作,计算机帮助人类完成耗时费力的工作,这基本上是长久以来的传统观点。但是,未来计算机会发展出与人类并驾齐驱甚至超越人类的智能吗?那时的计算机能够独立完成创造性工作吗?

咱们再回到计算机语言问题。比较图2与图3,读者马上会觉得:前者犹如天书一般根本无法读懂,而后者的每一行都与英语近似。人们通常将前者称为计算机底层语言,将与人类语言近似的计算机语言称为计算机高级语言。高级语言不仅仅是与人类语言近似,而且在不同CPU之间可以通用。反之,底层语言所编写的计算机程序随着CPU硬件的改变必须改变。无论是计算机底层语言还是高级语言,它们都要靠被称为“编译器”的计算机程序,将其“翻译”成计算机读得懂得机器码。

计算机高级语言除了上面举例的Fortran语言以外,更加常见的是C、C++Java、Javascript 、Python等等。Fortran语言源自于“公式翻译”(英语:Formula Translation)的缩写, 最早是1954年约翰。贝克斯在纽约发布的。Fortran语言经过不断的改进,它至今仍然应用于科学和工程计算领域。C、C++、Java、Javascript是软件程序员(外号“码农”)的看家本领。 Python语言是一种比C、C++、Java、Javascript更加高级的、更加接近人类语言的计算机语言,代码极其简洁,编程效率极高,用C语言编写的上千行的程序,用Python语言编写往往只有短短几十行。Python有大量免费、开源程序,在科学计算领域被大量使用,从统计、排序到机器学习人工智能等等,几乎是应有尽有,还可以直接调用C、C++、Java程序。

现在懂得计算机底层语言的人实在是太少了,除了计算机科学专业的学生,一般都不学习它们了。其实,不懂得计算机底层语言者,其应用计算机高级语言的水平就不会太高。另外,用底层语言编写的计算机程序运行效率远比高级语言高得多,并且需要计算机内存资源也要小很多,因此,在实时性要求高的应用中,都是用底层语言编写程序的。可以说,在实时控制领域,采用Python语言编写程序的工程师,一般都是水平较低者,真正的高手是用底层语言的,这就好比做高水平科学实验,要自己制作实验设备一样的道理。

尽管目前有的计算机高级语言(比如python)已经很接近人类语言了。但是,要让计算机进一步读懂掺杂了许多随机因素的人类自然语言,容忍自然语言的模糊性,目前还做不到。随着计算机语言的发展,未来会出现一种与人类的自然语言完全相同的计算机高级语言吗?

本文上面提出的两个问题,正是人工智能面临的大问题,现在给出这些问题答案为时尚早。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接收器
    +关注

    关注

    14

    文章

    2458

    浏览量

    71795
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211133
  • 计算机
    +关注

    关注

    19

    文章

    7418

    浏览量

    87712
收藏 人收藏

    评论

    相关推荐

    计算机组成原理与单片机原理

    组成原理,计算机组成原理是介绍计算机基本原理,不涉及具体机型,比如说intel 8086,不以具体机型进行介绍与讲解。而微机原理与接口技术这门课程,是以8086为
    发表于 12-30 10:25

    C语言教程(算法、数组、函数、指针)全方位讲解PPT合集

    。做任何事情都要有一定的步骤。  计算机算法--计算机能够执行的算法。  计算机算法的分类:  
    发表于 10-16 14:12

    视频增强算法基本原理是什么?

    视频增强算法基本原理是什么?单尺度算法的原理是什么?视频增强能解决的实际问题及应用领域
    发表于 06-03 07:14

    微型计算机的用途

    接口技术实验大纲.《汇编语言与接口技术》实验指导河南大学计算机与信息工程学院概 述学习微机接口技术,实践是非常重要的环节。我们学习微型计算机不仅要掌握其基本原理、基本概念、基本方法,更
    发表于 09-10 07:32

    什么是计算机

    我们人类无时无刻不想着,自己能够创造一个世界。什么是计算机计算社会我们人类已经步入了计算社会。纵览人类社会的计算历史,从“结绳记事”中的绳
    发表于 09-10 08:41

    熟悉计算机软件定义和分类

    基本原理,了解集成电路,掌握信息在计算机中表示。2.熟悉计算机软件定义和分类,掌握操作系统基本概念,熟悉程序设计语言语法基础,掌握几种常见数据结构及基本操作,掌握软件工程基础。3.掌
    发表于 09-13 07:45

    计算机视觉及其在焊接中的应用

    简要阐述了计算机视觉的基本原理、系统结构和计算机视觉的基本处理方法,并着重讲解了在焊接自动化领域的应用情况。关键词:计算机视觉.焊缝跟踪.视
    发表于 07-18 10:19 9次下载

    什么是计算机算法

    什么是计算机算法?要使计算机工作,您就必须编写计算机程序。要编写计算机程序,您就必须一步步地告诉计算机
    发表于 08-03 08:50 3094次阅读

    基于逻辑语言计算机软件设计(JAVA语言

    研究基于逻辑语言计算机软件开放设计问题。应用对比法分析在计算机软件开放设计之中,当前应用不同计算机逻辑语言的优势,并可应用最优的
    发表于 11-01 15:19 0次下载
    基于逻辑<b class='flag-5'>语言</b><b class='flag-5'>计算机</b>软件设计(JAVA<b class='flag-5'>语言</b>)

    计算机语言的分类

    本视频主要详细介绍了计算机语言的分类,分别有机器语言、汇编语言、高级语言等。
    的头像 发表于 12-27 16:04 2.6w次阅读
    <b class='flag-5'>计算机语言</b>的分类

    计算机图论算法详细资料说明

    本文档的主要内容详细介绍的是计算机图论算法详细资料说明 图论算法计算机科学中扮演着很重要的
    发表于 02-14 08:00 7次下载
    <b class='flag-5'>计算机</b>图论<b class='flag-5'>算法</b>的<b class='flag-5'>详细资料</b>说明

    计算机的机器语言和汇编语言与高级语言详细资料介绍

    计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。计算机语言通常分为三类:即机器语言、汇编语言
    的头像 发表于 02-06 16:11 5739次阅读

    一图详细讲解计算机预备知识

    一图详细讲解计算机预备知识
    发表于 04-19 09:14 2次下载

    计算机通信的基本原理

     计算机通信的基本原理是将电信号转换为逻辑信号,其转换方式是将高低电平表示为二进制数中的1和0, 再通过不同的二进制序列来表示所有的信息。
    发表于 05-09 16:41 4142次阅读

    计算机视觉的十大算法

    随着科技的不断发展,计算机视觉领域也取得了长足的进步。本文将介绍计算机视觉领域的十大算法,包括它们的基本原理、应用场景和优缺点。这些算法在图
    的头像 发表于 02-19 13:26 1200次阅读
    <b class='flag-5'>计算机</b>视觉的十大<b class='flag-5'>算法</b>