机器语言和汇编语言都是低级语言(啥都玫说之程序篇-计算机)
机器语言和汇编语言都是低级语言(啥都玫说之程序篇-计算机)等五点的,都可以成为计算机。如果我们换个角度来看待这个问题呢?根据计算机之父冯·诺依曼提出的冯·诺依曼体系结构来定义,包括: - [x] 有输入功能的输入设备 - [x] 有记忆功能的存储器 - [x] 能够完成计算的运算器 - [x] 控制执行流程的控制器 - [x] 输出处理结果的输出设备他日有幸得您翻阅拙作,敬请斧正。您阅读本文如果觉得符合大人您的口味,请关注一下本君,点个关注和评论,说一下您的观点。创作不易,还请多多支持!我不想先和大家交流程序是什么,我想先和大家探讨一下计算机这个概念。我们在1。中给出了程序的定义,不过这个定义看起来似乎有点过时,因为我在更多人的印象当中,计算机指的就是电脑。
2018年11月8日,闲来无事,决定把自己近20年所学的知识做一个梳理,也把自己从事培训行业近10年的心得整理一下。可能会分为几个部分来写,初步计划会写《程序》、《网络》、《安全》三部分,之后还会写什么要看缘分了。
为什么命名为《啥都玫说》?就是因为什么都想说,也希望说了以后不影响其他人的见解。因为所记所录有的来自学校,有的来自网络,有的来自出版物,有的来自交流。有摘抄,有概括,有教案,有心得。像是随笔,又尽量追求条理和结构。想到哪写到哪,写道哪算哪。
我想再多说一次,内容有的来自网络,有的来自出版物,有的来自交流。有摘抄的部分,也有概括的部分。请不要用抄袭,雷同等问题来质问我,我写的是心得,不是出版物,只是过往的记录。
师者,传道授业解惑也。吾当尽力而为。
他日有幸得您翻阅拙作,敬请斧正。
您阅读本文如果觉得符合大人您的口味,请关注一下本君,点个关注和评论,说一下您的观点。创作不易,还请多多支持!
1.2 计算机我不想先和大家交流程序是什么,我想先和大家探讨一下计算机这个概念。我们在1。中给出了程序的定义,不过这个定义看起来似乎有点过时,因为我在更多人的印象当中,计算机指的就是电脑。
如果我们换个角度来看待这个问题呢?根据计算机之父冯·诺依曼提出的冯·诺依曼体系结构来定义,包括: - [x] 有输入功能的输入设备 - [x] 有记忆功能的存储器 - [x] 能够完成计算的运算器 - [x] 控制执行流程的控制器 - [x] 输出处理结果的输出设备
等五点的,都可以成为计算机。
我们屏蔽学术上的争论,单独来看“老冯”对计算机的定义,我们发现,如果按照这个标准来衡量,如今的计算机并不仅限于电脑,还可以包括: - [x] 手机 - [x] 平板 - [x] 高端智能穿戴设备 - [x] 部分智能家居管家 - [x] 智能机器人 - [x] ……
很多人会觉得我对计算机的范围概括的过大了,不过仔细想想,他们是否满足“老冯”的定义呢?
我会在以后的描述中,把以上这些乱七八糟的设备统称为计算机或者设备。
1.3 语言如果你同意我对计算机的重新定义,那么我们来对语言进行重新定义。
语言是人与人之间沟通的工具。说起语言,似乎能举出很多例子,秦始皇一统六国后书同文,使得中华大地上不同地区不同语言习惯的人交往变得容易;孙中山先生当年在日本筹措革 命经费时和友人宫崎滔天谈话,因为两个人语言不通,所以用汉字“笔谈”;新中国成立后经过几十年的推广普通话,让九百六十万平方公里土地上的中国各族人民交流起来更加容易。英语、日语、韩语等等语言的学习,让我们可以和国际友人更好的交流。
那么,人和计算机之间交流用什么语言呢?举一个例子来说明:如果你和一个美国人交流会使用什么语言呢?可以是汉语、可以是英语、当然也可以是你们都熟悉的第三国语言。即使能够流畅的沟通,是否代表着语言之间没有转换过程呢?当然不是,用英语交流,我们需要把英语翻译为汉语进行理解;用汉语交流,美国人需要把汉语翻译成英语来理解。如果你们使用第三国语言交流呢?彼此都需要翻译为自己的母语进行理解。只是因为你和这个美国人能够流畅的沟通,所以这个翻译的过程被你们淡化,甚至对你们来说变得透明了。
回到人和计算机之间用什么语言交流呢?当然是计算机语言,也就是机器语言。虽然早就可以用语言对手机或者智能家居下达指令了,但是它们仍然需要将你说的话翻译为机器语言进行理解和执行。
到这里,出现了一个小问题,究竟是让计算机学习人类的自然语言更快?还是我们学习机器语言更好呢?答案自然是后者,否则我们所做所学就失去意义了。换个角度来看这个问题,计算机学习自然语言要学习多少种?好难吧?说句题外话,赵本山和小沈阳出名之前,除了东北人和在东北生活过的朋友,谁还能理解:“bo leng gai er ka tu lu pi ”是什么意思?
有鉴于此,我们勉为其难的学习机器语言把。
1.4 机器语言所谓的机器语言是一种指令集的体系。这种指令集,也称机器码,是计算机可以直接识别并使用的语言。
机器语言是用二进制代码表示的,二进制是个什么东西?它只有0和1组成。有些人说机器语言具有灵活、直接执行和速度快等特点。 但是它的另外一些特点却很少有人提及,不过我们也容易发现,比如: - [x] 不同型号的计算机其机器语言是不相通的 - [x] 学习和书写非常麻烦 - [x] 阅读直观性差 - [x] 容易出错 - [x] ……
这些都是机器语言很少有人学习的原因。据我了解,目前除了一些芯片生产厂商和极个别芯片研究机构还有人在使用机器语言,其他地方几乎见不到这种语言了。
这下糟了,自然语言计算机听不懂,机器语言我们看不懂,我们和计算机之间应该如何交流呢?似乎我们距离“程序”越来越远了,怎么办呢?
没关系,我们马上就要谈到重要问题了,就是编程语言。
1.5 编程语言终于聊到必要重要的问题上了。什么是编程语言呢?其实编程语言就是介于自然语言和机器语言之间的一种语言形式,是一种被标准化的与计算机交流的技巧。虽然是标准化了但是不是唯 一或者统一的标准,编程语言种类有很多,每一家、每一门语言都有自己的标准,这里的标准化,我们可以理解为,符合标准的,将会被翻译为机器语言,不符合标准的将不予以翻译。
在这里,我想穿插一个话题:为什么要标准化?其实很简单,我们举一个简单的例子,比如我们想知道明天的天气怎么样?我们平时会这么说?
明儿啥天儿? 明天天气如何? 明天什么天?
中国人似乎都能理解这几种说法,不过如果这个问题问外国人,他们很可能就被问晕了。这就是标准化的意义,为了让计算机只以一个标准翻译。
前边也说了编程语言介于自然语言和机器语言之间的一种语言形式。也就是说,编程语言和我们平时的语言习惯相近或者相似,其次它有标准,我们不能随意书写。似乎是在自然语言与机器语言当中选择了一个折中的办法。
说了这么多,想必大家也知道编程语言是什么了,那么我们要开始给编程语言分类了。其实也就是我们该了解下不同的对话方式了。
我们在网上能找到好多分类方式,比如可以分为:低级语言和高级语言。这种分类,过时了,严重过时了,现在的编程语言已经不是简单的低级和高级那么简单了。虽然我不是这个方面的权威,不过我更希望把我的分类方式分享出来,大家可以探讨交流
- [x] 指令型语言
- [x] 编译型语言
- [x] 解释型语言
- [x] 环境型语言
每次这样分类,都有无数的人等着骂我,跟我对撕。我不管别人撕我的理由,我给出一个这样分类的理由,方便区分不同语言的特点,仅此而已。
先说指令型语言,这个倒霉东西通常是助记符,或者替代符,比较常见的就是汇编语言或者PLC梯形图,用符号代替机器语言,所以以往这种语言都被称为低级语言。
编译型语言,这种语言有一个统一的特点,语言编辑完成后,需要通过一个叫做“编译”的过程,将所谓的高 级语言“翻译”为机器语言,编译型语言中最典型的代表就是C语言和C 语言。编译型语言最 大的特点就是编译成功后,以后运行的话就不用重新编译了,直接使用编译的结果就行了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的执行效率高。但是编译型语言的缺点也在于编译,编译后你想换一个计算机运行,恐怕不行……
解释型语言就没有编译过程,不需要编译,省了道工序,只有到运行的时候才翻译,每个语句都是执行的时候才翻译,这样解释型语言每执行一次就要翻译一次,效率比较低。但是解释型语言跨平台性很好,因为它依赖一个叫解释器的东西,只要安装解释器,就能够成功运行。Python、JAVAScript、Perl、PHP等语言都是时下最 流 行的解释型语言。哦对了,解释型语言也被称为脚本语言。当然,我也得承认,脚本语言和解释型语言也并不完全等价,还是有一点小小的区别,不过这点区别并不能让它独立成类,充其量也就是作为解释型语言的子类存在。
环境型语言,只是我和很多程序员对撕的根本。我个人认为,环境型语言具备编译型语言一次编译到处运行的特点;同时也具备解释型语言依赖解释器的特点;说道这里,很多有一定基础的人就该知道我在说什么了吧?对就像你们想的一样JAVA。JAVA既要编译,又要解释;编译只有一次,运行时解释;通过编译器,把JAVA语言翻译成一种中间代码也叫字节码(不是机器码),然后通过JVM解释成相应平台的语言。其实依赖.NET框架的C#也差不多,只不过.NET框架下的语言太多,C#又不能脱离.NET框架,所以最典型的代表,就是JAVA。
好了,对于编程语言也只能说这么多,如果想对编程语言有更多了解,或者想知道还有多少种编程语言,可以看看TIOBE编程语言排行榜,这个榜单是编程语言流行趋势的一个指标,每月更新。