共计 94 篇文章

关于JavaScript,答shendl

今天有闲,正好看到shendl同学在博客上的回复,是关于所谓“为脚本语言平反”的。我拟“为XX平反”这个标题,原本也只是吸引一下眼球来着,并不是真的想平反,或真有能力平了反。连JavaScript之父Brendan Eich同学都背了这么多年黑锅,这个反,哪是说平就平了的。 但shendl回贴了,言辞凿凿。细细读呢,却又满纸荒唐。遂回复一贴,但被CSDN Blog的、伟大而又莫名其妙的回贴排版搞得抓狂。想了想,还是发篇博客吧。一方面, ...

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

上一篇:为脚本语言平反-JavaScript篇(2) (书接上回,继续!) 五、这个DSL框架有什么问题? 有什么问题吗?有一点,并不严重。比如说,我们在Env中声明了一些属性和方法。对于Env这个对象 Env = { max: 100, min: -3, calc: function(adj) { … } } 我们要在calc()方法中访问max/min属性,应该写成“this. ...

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

上一篇:为脚本语言平反-JavaScript篇(1) (书接上回,开讲!) 一、QoBean的元编程框架 现在开讲“DSL in JavaScript,with QoBean’s meta programming framework”。先说说QoBean的元编程框架。这是一个仅仅100来行的小小框架,里面有几个关键函数是我们在讲DSL时要用到的: Weave(where, code):表示对于一个函数f,在指定where的位置,替换成代码code。 ...

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

导言 在支付宝有一个奇怪的组织叫pCLUB,是一群programmer讨论问题的公共博客(没有对外开放哈)。最近呢,孔宣同学发起一个话题,提出要为种种脚本语言“平反”。他提到说: 我发现,现在脚本语言也深受第一印象所苦。一谈到脚本语言,人们作何反应? 「运行速度很慢」 「只能写一些玩具小程序」 「没什么好用的IDE」 「调试很困难」 所以,这个平反一方面是诉苦大会,一方面则是一场脚本语言的Show。这件事情挑动了我的神经,这十多年来,JavaScript不也一直承受着种种不公平的待遇么?从写框架库到写书,我一直对这门语言充满着热情与隐忍,而现在, ...

关于我到支付宝,答朋友们问

在博客里写了《一个程序员的迷离人生》,便总有人说我太娇情:要是那周爱民都迷茫无知了,不知道别个又该如何活下去。这样的话题,原本我是不放在心上的,也没想着要去回复。后面再写《感受支付宝》,大概这种“迷离”是看不到了,却又没几个朋友看明白我在写什么。 算了,不管这些吧。我原本没打算再谈这些话题的,于是缩了身形儿,准备“掩了柴门”消停一段时间。但是又有朋友在MSN上找我说:爱民爱民,快去看看呀,大富翁(delphibbs) ...

表面的简洁

本文刊发在《程序员》杂志09年第二期上。是讨论函数式语言基本性质和发展方向的一篇文章。 一、把大象装进冰箱 在命令式语言(当然我们可以确指为C、Delphi、Java或C#等等)中,初学者的第一个疑难便是这样的代码(注1): X=X+1 为什么?因为在数学概念中,上述等式是不能成立的。这种表达式是计算机的思维逻辑:当它运算上述表达式(或语句)时,X被作为暂存单元——例如冰箱。 ...

世界需要一种什么样的语言?

这一篇是我的一本迷你电子版书《动态函数式语言精髓》的序。这本书节选并增改自《Javascript语言精髓与编程实践》,后者看起来是一本主要讨论Javascript语言的书,但事实上有大量的内容是在讨论语言、多范型等等,而《动态函数式语言精髓》也正是该书的初衷。 本电子书通过InfoQ独家发布,请如下地址下载: http://www.infoq.com/cn/minibooks/javascript-practise 或这里: https://github.com/aimingoo/my-ebooks ...

形式重要吗?

今天看到一篇关于20行代码的文章,说到JS圈子里有一项赛事,就是在20行代码中写出尽可能丰富的效果来。当然,类似的事情在种种语言中都有,不惟JS。 于是一时兴起,打算把Qomo写出个20行的版本来。是啊,如果Qomo可以写成20行,将是何等快意啊?于是就动手写了写。写之前,看了别个的一些20行,大意是声明语句可记为一行,连续表达式可以记为一行,又则,函数声明按内部的行数来记行…… 于是动手写吧。写了三数行,便觉得不对了。仅为了增减行数,再复杂的功能在JS里也写得成一行(当然这有点夸张)。例如说Qomo的Class()函数原本是有27行的, ...

VCL已死,RAD已死(5)

<< 第四节:后RAD时代:界面可视,到界面可描述 五、后RAD时代:领域的成熟 从界面可视,到界面可描述的变化,使UI设计渐已成为一个相对独立领域。UI团队与UED团队之间并没有严格的、学术性区别,在不同的公司中它们的定义并不一样。一般而言,我们称前者为参与UI的全体,而UED则更关注于用户体验的这一部分。有些时候,我们也习惯性地称之为前端开发,或UI开发团队。 在这个领域中有一些明显的特点,例如界面开发过程中采用一种领域设计、开发语言(当然,XML力图成为“ ...

SD2C大会,JavaScript + Delphi + ErLang 讲演相关资料完全公开!

这个就是此次SD2C上的《JavaScript + Delphi + Erlang = ?》讲演中的全部资料,以及PPT。大多数内容的说明,请直接阅读相应目录下的Readme。   我清理掉了所有的编译后文件,除了某些相关软件/项目的原始打包文件之外,所有的东东需要自己编译。   有关Delphi的项目中,只用到了一个EmbeddedWB组件,用Delphi的人都知道怎么找到它,反正是开源的。   回头我另外开贴来讲相关的技术问题,以及实现方案。总觉得这次大会上讲得不太好。技术的东西,要么不讲,要不讲细,挠不到痛处就不够过瘾。     公开的资料包括四个部分: =============== 第一部分:JavaScript ...

Qomo之快速上手

我发现,无论是哪种成功的语言,总是有一个快速入门的读物,而无论它们本身是如何的复杂、艰涩或难于理解。反过来,不成功的语言,总是带有一堆技术性十足、充满了想象和预期的文档。后者的这些文档,有些甚至比代码还多,但是这同样未能挽救它们的失败。 于是,我同样地看到了Qomo。我发现Qomo发布过的文档中,总是有大量无法让人理解的东西。如果你准备写一门语言,那么可能Qomo的文档和代码会给你许多启发。 而如果你只是打算用它,那么大概会变得很痛苦。然而,如果一个人因为想写一门语言而去了解Qomo,那么他大概不会再使用Qomo,这是因为各自存有不同的目标。 于是,我想Qomo小组应该为“ ...

无废话JavaScript(下)

上一篇在这里,在这里,在这里…… 五、函数式 这个可不是JavaScript的发明,它的发明人已经死了,而他的这个发明还在困扰着我们……如同爱迪生的灯泡还在照耀着我们。 其实函数式语言很简单,它就是一种与命令式语言同样“完备”的语言实现方案。由于它的基础思想与命令式——如果你不想用这个难于理解的名词,那就把它换成C,或者Delphi好了——语言完全不同,所以大多数情况下,它也与这些传统的、通用的、商业化的语言格格不入。 而事实上,你天天都在用它。 下面这行代码,就充满了函数式语言的思想: ...

无废话JavaScript(上)

《程序员》2008.09期有一篇名为《无废话ErLang》的文章,这让我想到了许多的诸如“无废话C”、“无废话书评”这类的文章,也想到了JavaScript可没有一篇“无废话”,所以决定开个篇来写这个。 与这个决定相关的,还因为另一个缘故:许多读者认为我那本**《JavaScript语言精髓与编程实践》**读来辛苦,所以我一直想写个简单的读本。索性,这次就写个最简单的吧。 声明一下:如果只想看复杂的东西,不要读这篇文章了。 一、JavaScript最初其实是过程式的 追溯到1. ...

元语言基础技术之:在JS中如何自由地创建函数

在前面讲元语言(QoBean的元语言系统之一、之二)的过程中,有些技术细节就忽略了。其中之一,就是这个创建函数的方法。这里开个小主题来讲讲。 在JS里面,我们可以用任意方法来构建对象,包括直接量和构造器。在使用构造器时,也可以有基于原型和基于属性抄写两种方法(以及这两种方法混用)。下面的例子简要地说明这些对象的构造方法: // 直接量对象声明 obj = {... } // 使用基于原型继承的方法来构造对象 function MyObject() { } MyObject.prototype = { constructor: MyObject, value: ... } obj ...