不知道大家有没有这样的时刻,遇到计算机的专业名词,看着好像会,但其实还是不懂。例如什么是面向过程?什么是面向对象?自然语言和编程语言区别又是什么?今天我们就通过这一篇文章,彻底弄懂吧!
编程语言
自然语言
人与人之间进行沟通交流的表达方式(中文,英语,法语等)
如上图所示,自然语言是人与人进行沟通交流的表达方式。不同国家的人也能通过翻译官理解对方所传达的意思,从而实现人与人的交流。
编程语言(计算机语言)
人与计算机之间进行沟通交流的表达方式(Python,C++等)
计算机只能识别二进制的0和1,假设需要计算机实现一个计算器功能,那第一步需要先按照对应编程语言(Python,C++,Java等)的语法实现该功能,然后交给编译器(解释器)将其翻译成二进制的0和1交给计算机解读,从而可以使计算机实现该功能。
简单概述:编译器可以类比翻译官,编程语言(C++,Python等)可以类似自然语言(英语,中文,法语等),需要遵循一定的语法规则,对方才可以读懂和理解。从而实现人与计算机的交流。
这样同学们能理解了嘛?
语言类型
动态类型语言
动态性语言是指在运行期间才去做数据类型检查的语言,也就是说动态类型语言编程时,永远不用给任何变量指定数据类型,该语言会在第一次赋值给变量时,在内部将数据类型记录下来。
Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
静态类型语言
静态类型语言与动态类则刚好相反,它的数据类型在编译期间检查,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他静态语言还有C#、Java等。
两者对比
静态类型语言 | 动态类型语言 |
对类型及其严格 | 对类型比较宽松 |
立即发现错误 | bug存在时间久 |
运行时性能好 | 运行时性能差 |
自文档化 | 可读性差 |
面向方式
面向过程
直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了。
打个比方,我们想求长方形的面积:
面向过程会以,求解数学题的思路去思考:
设定长方形的长和宽分别为x和y,
确定长方形面积的算法,
编写出计算面积的函数,
将x、y传入相对应的函数,求解长方形的面积。
面向对象
将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。
还是上面那个想求长方形的面积:
面向对象会以,描述对象的思路去思考:
对规则图形的一般属性和性质进行定义,如周长和面积,
在规则图形的基础上,创建长方形,描述长方形的属性和性质,
创建长方形的对象,调用它的面积函数,以求解长方形的面积。
从这个简单的例子中我们可以看出面向对象和面向过程解决问题的不同,但似乎他们的规模并没有太大区别。
这是因为例子中问题规模非常小,当我们实际解决一个规模不小的问题时,可能会涉及多个对象间的交互、代码的复用及扩展问题,此时面向对象的优点就显现出来了。
毕竟,面向对象就是为了降低系统的耦合度而提出的。(耦合度:各模块间相互联系程度的度量)但面向过程也并非一无是处,其优良的效率是面向对象难以达到的。