当前位置首页 > 百科> 正文

脚本编程

2019-12-06 02:59:58 百科

脚本编程

脚本语言实际上着重脚本二字,而不是语言二字,因为脚本语言它的最主要的关注点就是为现有代码準备一个伪码系统(opcodesystemusedtousesometh),至于你是用图灵完备的语言或是用其它设施完成,那不是伪码系统必然的性质。

基本介绍

  • 中文名:脚本编程
  • 外文名:Script programming
  • 关注点:为现有代码準备一个伪码系统
  • 套用:C语言
  • 目的:解决问题实现编程
  • 意义:着重脚本

传统编程

像C++,C这样的语言都是被设计为通用(Generalpurpose)的,要通用,它必须一切从头做起,而不能一开始就很抽象,否则它不能做它抽象之前发生的那些事儿,因为那不是他的任务,它在历史上能很好解决的问题是系统编程领域的。
通用型语言往往是系统程式语言因此往往基于某种靠近计算机底层的离散形式,其它的语言往往称为自然语言,或DSL实现特定领域事情的语言(相对C++,C来说)不强大,不深入底层,不能控制计算机乾任何通用事情,因此往往基于高层模型。
通用语言一般是严格语法的(就像我们见到的那样,C,C++,JAVA都是那样),而除了系统领域之外的套用领域,一般是特定的、灵活的,并不是通用的,所以传统的“通用语言语法加通用库”的方式并不适合于解决此类问题(因为它并不是传统语言能够并已经很好抽象了的那些领域)。
特定套用领域往往要求更特定的抽象,并且,要求特定的语言元素特定的语法结构才能很好表达它,比如文本处理领域(C++处理文本时,没有专门的标準文本库,也没有语言级直接支持RegEx表达式这样的东西),而python显然对于这个领域的设施支持比C++方便。
撇开c++和python的这种对比不说,我们一定要知道,对于特定领域,用传统的系统编程方法和语言来完成是不合适的,因为如果硬要这样做,那幺要幺要求通用语言提供新的语法,(而这是很困难的,语言的扩展并不现实,它会造成语言过于複杂多变)。要幺不改变语法,而提供新的库,比如文本模式匹配问题,C++在语法级没有直接支持,它就用boost.regex来做。换言之,这些方式只是要求在通用下求特化,让它们乾它们不擅长和始料未及的事,C,C++并不绝对“通用”(它们只是DSL,C是系统实现的DSL,C++是系统开发的DSL——注意,我们不考虑C++的第二层)。

脚本编程

脚本语言是相对C这一类系统程式语言来说的,C最重要的特点就是它用数据结构加算法来解释系统底层开发的手段,用C开发绝对离不开对系统原理和数据结构的理解,而这些原理,包括C本身的实现,都是基于数据结构跟算法来解决问题的[明白这点很重要,因为有人希望学习C语言作Web编程,这就有点南辕北辙了,而且这个认识可以端正你学C语言解决问题的方向,所以说大思想是重要的。
而脚本语言和虚拟机语言,可以基于更高层的开发逻辑和设计方式来解决问题实现编程,比如Python,Ruby,可以运用包括OO,DP在内的高层语言逻辑[关于Python语言特点的介绍请参照有关章节],程式设计师不必涉入数据结构这些与底层和解决大家都解决过的问题直接相关的东西,仅提倡在复用层面利用这些解决过的东西能编程就可以了抽象的语言,意味着它可以少干些轮子重造方面的事情。比如脚本式开发,OO层面的复用,当然,任何事情都是不完美的,太抽象了,往往也就同时失去了C能控制底层的那些能力。
因此,C++,C这样的语言必须要涉及到彙编原理里面的东西,而DSL可以以任何高层的形式被体现,比如不需要编译的UML图都是,POWERPOINT代码都是DSL,根本不需要编译器这样的图灵完备装备。

传统VS脚本

系统语言因为拖着一个系统,其本质上并非专用的套用开发语言。而只是通用的系统开发语言,有它因为移殖和平台问题导致的一系列大问题[C++唯独用template,Boost等方法实现了另外一种”python”]。而脚本语言并不需要对某个平台进行开发,从而需要考虑移殖和速率的问题。因为系统问题不是它的初衷和设施基础,它直接面向套用编程(系统编程,系统逻辑不由这类语言直接实现的,它只是封装并bind),由于整个地扔掉了系统这个大包袱,一切编程问题都是脚本语言内部的事情。而且,脚本语言本身很高级,往往提供大量库(甚至DSL相关的库),这就对熟悉了编程的人来说,显得尤为简单(复用做到了极致)。
抽象语言往往比不上系统语言对于计算机编程方面的功能强大[这也就是脚本语言比不上编译语言这样的语言对计算机编程方面的功能强大。道理很简单,因为它太抽象了,所以在它抽象了的地方,它反而不能发挥这个层面的能力,我们将在稍后谈谈脚本语言。脚本语言是一种抽象语言]。因为抽象语言的虚拟机往往是高级机器,根本不像我们的硬体机器那幺底级,图灵模型对应我们的硬体机器和架构,而虚拟机往往跟硬体架构差别过大,因此脚本语言和系统语言是为二个不同的机器设计他们干的事。
换言之,系统语言面向系统上的套用,而脚本语言面向广泛意义上的套用(可以当然bind系统语言开发的系统逻辑,这也往往是脚本语言的与现有代码进行工作时通常使用的方法),这就是脚本语言之于系统程式语言的特点所在。它们之间的区别正是由它们各自的任务决定的,要分清高级系统语言C++和脚本套用语言之间的区别。

意义

脚本语言实际上着重脚本二字,而不是语言二字,因为脚本语言它的最主要的关注点就是为现有代码準备一个伪码系统(opcodesystemusedtousesometh),至于你是用图灵完备的语言或是用其它设施完成,那不是为码系统必然的性质。
脚本语言独立平台,提供高阶的设计手段,和大量的随语言一起分布的,作为语言标準的直面套用的库。(而系统程式语言强调事事从最基本的类型做起,因为系统语言要求通用和提供可定製性,所以不能提供太高的设计手段,和可供复用的库设施,所以系统语言本身就被设计成那种能很好重造轮子的语言)。
在这个意义上,脚本语言其实是一种整合系统(提供一致的类型且开发时动态的类型,黑盒化平台)与整合设计(提供OO或template这样的高高阶设计),整合问题(大量标準库的出台直面各种问题)的语言。它将一切开发上的事,做到语言中,做到库中,不提倡一步一步实现解决过了的问题。
所以,编程应是一种很有意思的事情,在脚本编程这个层面开始体现出来。因为这里的复用程式最高(编程几乎等于计算机套用能力)。库和语言功能足够丰富的语言,几行代码就可以勾勒出一个程式来,而且标準库,它提倡事事规定以统一的方式来进行(标準化编程),比如pystdlib,jdk,不需要为诸多的tricks犯迷糊。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net