`
javasee
  • 浏览: 965595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

为脚本语言平反-JavaScript篇(1)

阅读更多

导言

============

在支付宝有一个奇怪的组织叫pCLUB,是一群programmer讨论问题的公共博客(没有对外开放哈)。最近呢,孔宣同学发起一个话题,提出要为种种脚本语言“平反”。他提到说:

========

我发现,现在脚本语言也深受第一印象所苦。一谈到脚本语言,人们作何反应?

「运行速度很慢」

「只能写一些玩具小程序」

「没什么好用的IDE」

「调试很困难」

========

所以,这个平反一方面是诉苦大会,一方面则是一场脚本语言的Show。这件事情挑动了我的神经,这十多年来,javaScript不也一直承受着种种不公平的待遇么?从写框架库到写书,我一直对这门语言充满着热情与隐忍,而现在,孔宣同学挥了挥手,pCLUB的兄弟们就冲上来了,摆出了种种不同的脚本语言的特性,而其间,居然没有这个世界上最用得最多的——我想这样说并不过分吧——脚本语言!天理昭昭日月可鉴太上老君扔了金刚圈圈——啥米意思我也不知道——哈哈,下面就来诉诉苦,以及做下Show。

另,注:孔宣,蔡学镛是也;愚公,笨人是也;百支,支付宝内部员工的一个培训是也。其它略语或别称,不详述了。

为脚本语言平反-JavaScript篇(1)

=========

百支期间,有虚竹同学介绍技术部,说到整个公司作技术开发工作的,有三块,XXX、YYY和ZZZ。我记性不好,记不得虚同学讲的有啥,反倒记住了他讲的没有什么。比如说,我后来才知道产品部也只有三两个人是M(Manager)系列的,其它的都是P(Programmer/Product/Project)系列上的员工,所以也算是搞技术的。当然,按虚同学严格的讲法,这些还不涉及代码,不算“程序开发者”,所以不提。但当时我就问虚同学了啊,那为什么X/Y/Z里面,没有前端(UED)部门的呢?前端做开发呀。虚同学不好意思地笑笑,若有所思地自言自语到:对呀,他们也做开发的呢。

所以呢,在很多人的印象里面,非但如孔宣同学所说的:脚本语言效率不高、没有好的工具、只能写玩具代码之类,更有如虚同学者,不认为用脚本是在写程序的,大有人在呢。这其中误解最甚的,就是前端开发,以及他们使用的JavaScript了。为什么呢?因为前端开发来源复杂,有从界面设计出身的,有半路出家的,有做客户端开发的……这不算什么,最重要的是,他们所使用的那个语言,叫JavaScript的那个,根不正苗不红,面向过程也不是,面向对象又不象,最常见的情况下,就是在网页中按下来按钮然后弹出来一个“Hello”(连World都没有)……所以,“前端不是做开发的,是‘画’界面的”成为了一种基本观念了。

绕回来。我来做做JavaScript的平反工作。其实在N多年前,我就开始了在JavaScript上做一种尝试,就是将它的“基于原型继承的面向对象”,改成“基于类继承的面向对象”。因为我从Delphi出身,所以自然觉得“有类,是对象之始”。很自然地想做这样一种工作。同样的,觉得“万物皆对象”,当然要把它改造得跟Delphi一样,跟Java一样,这样最好。所以就去做了,这个项目做成开源的,叫Qomo。在Qomo中的代码可以这样写:

大家一看就知道,这个是Delphi的路子:对象obj,是从TMyObject这个类上创建出来的。类继承的关系,也是通过一个名字Class()的函数来维护的。当然,还实现了调用父类方法的inherited,getter/setter,以及最著名的“类构造与实例构造”分为两个阶段的体系。接下来,在上面这一基础上,Qomo还进一步地把类似COM的Interface做出来了——这包括“接口既是声明,也是实现”这个复杂的活儿。例如可以这样做:

也就是说,Class()声明中,表明TMyObject 实现了三种接口,所以可以最终从obj的这个实例中通过QueryInterface来取到这些接口(的一个引用)。除了表明“对象/类是否包含某个接口”之外,上面得到的接口还可以直接调用showMessage()方法,这个方法即是obj自身的方法——这就是“既是声明,也是实现”的含义。

最后,Qomo还在上面的基础上,实现了面向切面编程(AOP)、面向模板编程(TOP/GP)等等模式。在开始计划用JavaScript来描述基本的GoF模式时,我终于停下来了。我发现,在这一条路上,我走到了尽头。再做下去,不过是更多语言的特性的实现而已——仅是重述别人的东西,有什么意义呢?

从一年半以前,Qomo开启了一个小小的子项目,叫QoBean。这个项目研究的方向,是“元编程(meta programming)”,就是“实现语言的语言”。JavaScript自身的确有这样的能力,因为JS之父,就写了几十K的代码,在JS上实现了一个新的JS——这被称为语言的完备性。QoBean这个项目开始于2007.12.31,从这个贴子可以看到它最初的状态:

http://blog.csdn.net/aimingoo/archive/2007/12/31/2006369.aspx

然后呢,QoBean所要做的事情,即是解决“语言如何产生”的问题。这个问题,QoBean很快的就交了答案。包括:

1、QoBean基本的类框架模式

http://blog.csdn.net/aimingoo/archive/2007/12/31/2006534.aspx

2、QoBean的元语言系统(一)(二)

http://blog.csdn.net/aimingoo/archive/2008/07/25/2707504.aspx

http://blog.csdn.net/aimingoo/archive/2008/07/25/2709638.aspx

这样,QoBean就停步在了2008.07.25。停下来的原因是:QoBean做完了这些,却不知道如何表现它——它有什么用呢?

前些天孔同学一直在讲DSL。那么,如果QoBean实现了meta programming,能不能实现DSL呢?一个基本的DSL框架,在JS里面有多复杂呢?于是,这里开贴来讲这个话题。上面是水货,下面才是干的。之所以讲那么多水货,是因为下面的DSL实现基于“QoBean的元语言系统”,上头有两篇文章链接,大家可以先点进去看看。在后面我讲的时候,只会提个大概,不讲这方面的细节了。

下一篇:

http://blog.csdn.net/aimingoo/archive/2009/09/08/4532496.aspx

分享到:
评论

相关推荐

    photoshop-cc-javascript-ref-2019.pdf

    1. **JavaScript在Photoshop中的应用**:JavaScript是一种广泛使用的脚本语言,它在Photoshop中允许用户通过编写脚本来自动化重复任务,创建自定义工作流程,以及扩展Photoshop的功能。这包括调整图像参数、处理图层...

    photoshop-cc-javascript参考2019

    JavaScript在Photoshop中的应用是通过ECMAScript实现的,这是一种基于标准的、广泛使用的脚本语言,它为Photoshop提供了强大的编程接口(API),使得开发者可以深入操控图像处理、图层管理、颜色调整等多个方面。...

    photoshop-cc-javascript-ref-2015.pdf

    首先,JavaScript在Photoshop CC中的核心功能是提供一个脚本接口,允许开发者直接操控Photoshop的对象模型。对象模型包含了所有可用的面板、菜单项、图层、选区等元素,可以通过JavaScript进行访问和操作。例如,你...

    Photoshop-CS6-JavaScript.zip

    1. **JavaScript基础**:首先,你需要理解JavaScript的基本语法,包括变量声明、数据类型、控制流(如条件语句和循环)以及函数定义。这些都是编写任何JavaScript脚本的基础。 2. **Photoshop对象模型**:...

    04-JavaScript脚本语言基础(二)DOM(L)

    04-JavaScript脚本语言基础(二)DOM(L)

    网页javascript脚本语言提取器

    JavaScript是一种广泛应用于网页开发的脚本语言,它允许在用户浏览器上动态地更新内容,实现交互性和动画效果。"网页JavaScript脚本语言提取器"是一个工具,专门设计用于从网页中抓取并分析JavaScript代码,这在进行...

    基于神经网络的恶意脚本分类-JavaScript&VBScript.pdf

    基于神经网络的恶意脚本分类-JavaScript&VBScript Neural Classification of Malicious Scripts: A study with JavaScript and VBScript

    Photoshop-CS6-JavaScript-Ref

    《Photoshop CS6 JavaScript 脚本参考指南》是一份由Adobe Systems Incorporated出版的专业文档,旨在为使用Adobe Creative Suite 6中的Photoshop软件进行JavaScript脚本编程的用户提供全面的指导和参考。...

    javascript脚本语言课件

    JavaScript脚本语言是一种广泛应用于网页和网络应用中的编程语言,主要负责实现客户端的交互性和动态效果。本课程针对JavaScript的基础知识进行深入讲解,包括语法、流程控制语句、函数以及数据验证方法,旨在帮助...

    WEB中javascript脚本语言

    JavaScript是一种广泛使用的脚本语言,主要用于Web前端开发,可以实现动态效果、交互功能等。JavaScript与HTML和CSS一起构成了现代Web开发的基础。 #### 二、基本示例 1. **生成文本** ```html ...

    奔梦向前-表白代码脚本-2020-04-28-1.zip

    奔梦向前:学编程其实很简单,html、css、JavaScript、html5、css3、vue、Canvas实现网页特效页面、新手入门学习、了解网页动画的制作、代码实现网页动态画面-表白代码脚本-2020-04-28-1。

    JavaScript应用实例-脚本商店界面-增加点击事件.js

    JavaScript应用实例-脚本商店界面-增加点击事件.js

    纯Java 实现的一个脚本语言 语法类似javascript.zip

    标题中的“纯Java实现的一个脚本语言 语法类似javascript.zip”揭示了这是一个使用Java编程语言构建的脚本引擎,其语法设计受到了JavaScript的影响。这意味着它可能提供了一个在Java环境中执行类似JavaScript语法的...

    廖雪峰-JavaScript教程-PDF版

    JavaScript作为世界上最流行的脚本语言之一,在Web开发领域占据着举足轻重的地位。无论是个人开发者还是大型企业,都离不开JavaScript的支持。本教程旨在帮助初学者快速掌握JavaScript的基础知识,同时也适合有一定...

    如何在C 程序中嵌入JavaScript脚本语言.pdf

    "如何在C++程序中嵌入JavaScript脚本语言" 本文主要介绍了如何在C++程序中嵌入JavaScript脚本语言,旨在帮助开发人员更好地理解和实现脚本语言在C++程序中的嵌入。 首先,文章简要介绍了脚本语言的兴起和重要性,...

    浅谈关于JavaScript脚本语言的学习.pdf

    "浅谈关于JavaScript脚本语言的学习" JavaScript脚本语言的基本特点: 1. 简单性:JavaScript是一种解释性语言,不需要提前进行编译,在程序运行过程中由浏览器边解释边执行,因此不需要额外的运行环境。 2. 跨...

    CGI脚本入门学习--HTML格式

    你应该用什么编程语言? 你的服务器设置正确吗? 如果你的服务器不是UNIX系统呢? 解剖CGI脚本 输出头部 输出数据部 带阐述的脚本 传递其他信息给脚本 创建特殊的脚本输出 以装载另一个文本响应 无响应 ...

    如何在C++程序中嵌入JavaScript脚本语言.pdf

    如何在C++程序中嵌入JavaScript脚本语言.pdf

    javascript课件-javascript初步

    JavaScript是一种轻量级的、基于对象和事件驱动的脚本语言,主要应用于Web页面中,为用户提供交互式体验。它由Netscape公司开发,起初名为Live Script,后来改名为JavaScript,以利用当时流行的Java语言的知名度。...

    javascript脚本语言

    实例5-1展示了如何直接在HTML中使用`<script>`标签插入JavaScript脚本,输出“Hello World!”。而实例5-2则演示了如何通过链接外部文件`test.js`引用JavaScript代码,这样可以将脚本与HTML内容分离,提高代码的可...

Global site tag (gtag.js) - Google Analytics