-->

人工智能必备知识储备之“程序设计语言篇”

2019-05-24 23:13发布

曾经有人这样说过,人工智能就是一段极具玄幻色彩的“程序”。

显而易见的是,这句话不仅说的很对,而且把重点也极其精确的定位到了“编程”上。(拒绝反驳,拒绝杠精!)

那么,“编程”又是什么?所谓的“程序”又是如何“编”出来的呢?

“程序”的始于末

计算机程序(Computer Program)是一组计算机能识别和执行的指令,运行于电子计算机上,满足于人们某种需求的信息化工具。

计算机程序以某些程序设计语言编写,运行于某种目标结构体系上。

就如同我们中国人(程序员)使用英语(程序设计语言)创作文章(程序),同时要让一个懂得英语的韩国人(编译器)给也会阅读这篇文章的人(结构体系,个人感觉这里用“机器”来形容比较好些)来阅读、理解、标记、解读这篇文章。

一般的,以英语文本为基础的计算机程序要经过编译、链接而成为人难以解读,但可轻易被计算机所解读的数字格式,然后放入运行。

那么程序设计语言又包括哪些呢?

机器语言

机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

当然,显然我们并不能指望机器和我们说什么汉语,因为它除了是一串二进制代码外,别的他自己也不具有理解的能力。例如:

  1. 0000 代表 加载(LOAD)
  2. 0001 代表 存储(STORE)
  3. 000000000000 代表地址为 0 的存储器
  4. 000000000001 代表地址为 1 的存储器

0000, 0000, 000000000000 代表 LOAD A 在地址为0的存储器

0000, 0001, 000000000001 代表 LOAD B 在地址为1的存储器

0001, 0001, 000000000000 代表 STORE B 在地址为0的存储器

0001, 0001, 000000000001 代表 STORE B 在地址为1的存储器

机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部分。

机器码:将硬件序列号经过一系列加密,散列形成的一串序列号。

软件为了防止盗版,采取了一定的保护措施。在用户注册的时候会根据用户软件所安装的计算机软硬件信息生成唯一的“识别码”,也被叫做序列号、认证码、注册申请码等。(硬盘,CPU都有一个无法修改的识别码。)

汇编语言

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

汇编程序:使用汇编语言而编写的计算机程序。

它要求程序员十分熟悉计算机系统的硬件结构,以至于可以正确且准确的实现对计算机进行操作。但是从程序设计本身上来看,它是低效率的、繁琐的,枯燥乏味的。可却正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,汇编语言仍然是十分有效的程序设计工具。

普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。例如:

1000100111011000 机器指令

寄存器BX的内容送到AX中

MOV AX, BX 汇编指令

寄存器BX的内容送到AX中

高级语言

高级语言(High-level programming language)是指高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。

高级语言是一类接近人类的自然语言和数学语言的程序设计语言的统称。按照其程序设计的出发点和方式不同,高级语言分为了面向过程的语言和面向对象的语言,如Fortran语言、C语言、汉语程序设计语言等都是面向过程的语言;而以C++、Smalltalk等为代表的面向对象的语言与面向过程语言有着许多不同,这些语言支持“程序是相互联系的离散对象集合”,这样一种新的程序设计思维方式,具有封装性、继承性和多态性等特征。

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。

结语:

就目前而言,我们常说的“程序猿”基本上就是以各种各样的高级语言来编写程序的,而各种各样的鄙视链也因为高级语言的应用不同应运而生。

不过,没有“鄙视”的话,敲代码应该也是索然无味的吧。


文章来源: https://www.toutiao.com/group/6694578463497519623/