对编程语言的一些新的认识

作者 梦想.家 日期 2015-08-07 字数 1.4k
对编程语言的一些新的认识

编程语言

编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

PS:来自百度百科的解释

编程语言的分类

我们可能经常会听见面向对象的编程语言面向过程的编程语言声明式编程语言命令式编程语言函数式编程语言低级语言高级语言等等,其实编程语言大体上可以分为静态编程语言,动态编程语言它们的区别如下:

  1. 静态语言需要编译后才能运行,动态语言通常情况下不用编译就可以直接解释运行
    拿python来说吧,以.py结尾的python源文件可以直接解释运行,而以.pyc结尾python文件则是编译过的二进制文件,它是编译执行的,执行和加载效率要高于解释执行,但是像java这种静态语言就必须要编译成二进制文件在能在虚拟机上运行。
  2. 静态语言在编译的时候已经知道变量的类型(强类型),动态语言在运行的时候才知道变量的具体类型(弱类型)
    PS:正是因为这样,我们在使用javascript,ruby,python等语言编程的时候是不用为变量声明具体的类型的,方便我们写代码。而像c,c++,c#等这些语言就不行。

面向过程的编程语言

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
PS:来自百度百科的解释

面向对象的编程语言

面向对象有三大基本特点继承,封装,多态
继承:子类从父类那里派生得到,子类就具有了和父类相同的属性和方法,扩展已有的代码模块。
封装:把某一个过程抽象出来然后封装成一个方法,提供入口参数和出口参数,使用的时候只考虑功能不考虑内部是怎么实现的。这样使得程序修改带来的影响更加局部化。隐藏细节实现代码模块化。
多态:其实就是单接口多实现,子类覆盖父类中的方法,使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。
tips:Don't Repeat Yourself原则------彻底避免重复

原型方式和模版方式

程序中我们会把一些具有相同功能的算法和代码抽象封装成为一个方法,提供入口参数和出口参数,这样在需要使用这个方法的功能的时候就不需要去写重复的代码,直接调用就可以了!在面向对象的语言中,如果同一个对象大量存在,为了避免重复我们是不是应该去怎么寻找一种和封装方法类似的办法来管理这些对象呢,可以采用下面两种方式。

  1. 一种方式是使用原型的方式(现在流行网页脚本语言javascript使用的就是这种方式),使用原始对象的副本作为一个新的相同的对象。

  2. 另一种方式是使用模版的方式,这种方式就像我们做不同形状的曲奇饼干一样,使用相同模具最后做出来的东西的样子就是一样的,和原型不同的是面向对象中的类和对象有着完全的区别。就相当于模具和模具做出的饼干是有区别的,整数类和具体的数字1,狗类和具体的某一条狗,为了表示类和对象的不同,对象又被称作实例。

后记

计算机是一种只能识别二进制如01011000100这样的指令,但是这种指令太抽象和我们使用的自然语言相差太大,所以不管编写,阅读的难度都是相当大的,有时候指令中可能多一个0或者少一个0那么执行出来的效果都相差好多好多,慢慢的汇编语言出现了,它是对二进制指令的一次抽象和封装,在慢慢的更高级一点的语言像c语言,c++,java这类语言开始被发明出来,这类语言不管是在源码的编写和阅读方面都是二进制指令有着天壤之别,这些语言已经是现在的主流开发语言,从这个线上面我们可以看出,编程语言的可操作性和可阅读性越来越简单,越来越符合我们使用的自然语言习惯这也是未来新型编程语言的一个发展趋势,未来的编程语言可能简单的和我们每天说话一样,人人都能编程!



本文完

本文如有误,请不吝赐教!

原文标题:对编程语言的一些新的认识

原文链接:https://www.wuhuan.me/2015/08/07/about-programming-language/

版权声明:保留署名-非商业性使用-禁止演绎 4.0 国际 | Creative Commons BY-NC-ND 4.0