共计 46 篇文章

VCL已死,RAD已死(5)

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

像大师们一样思考——从“UML何时死掉”谈起

题记: 在与Ivar的访谈之后,我一直想把这一段过程写出来。我尝试拟过许多个题目,最后都写不成文章。几乎在我要放弃的时候,BLOG读者在评论中,对我所解释的“函数式语言”的置疑提醒了我:很多时候不是问题的答案令人置疑,而是问题的思想方法令人置疑。如同我问Ivar的问题,他的答案“令人怀疑的正确”,其实是思想方法的问题。不站在Ivar的历史,以及Ivar的成就的角度上去思考,你会认为Ivar是在应付我的责难。 事实上,那个访谈中,Ivar非常慎重地面对这个问题,并仔细地解释了他所提供的答案。可惜后来CSDN录制时,正好漏掉了这一段。非常遗憾, ...

无废话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 ...

QoBean的元语言系统(二)

上一篇:<< 第一部分:元语言系统基础,以及程序的基础元素 第二部分:元语言下的编程基本方法 三、代码组织形式 1. 物理代码块(代码文本、代码行) 代码到底应该如何组织?如果我们认为代码是由序列调用的例程构成的,那么我们可以把代码的形式回溯到很“远古”的时代,例如: function func1() { } function func2() { } function main( ...

QoBean的元语言系统(一)

QoBean是从元语言系统开始构建整个语言系统的,从本文开始,我开始讲述QoBean所理解的元语言。不过,不同的人、从不同的侧面所理解的“元语言”是不一样的,不必求同。 “QoBean的元语言系统”包括三篇,分别是: 元语言系统基础,以及程序的基础元素 元语言下的编程基本方法 元语言的应用:虚拟执行环境 QoBean的项目地址: https://qomo.svn.sourceforge.net/svnroot/qomo/qobean ...

旧文重发:程序员的七种武器

这篇文章发表在《程序员》杂志2007.03期的专辑“程序员的武器大家谈”中。 《程序员》:请谈谈您所定位的优秀程序员应该有哪些技能?您是怎样理解程序员七种武器的? **周爱民:**一般来说,剑客用剑、刀客用刀,所以所谓七种武器,用在手上的,或许也就一件两件。但如果以技巧、技法论,却不是一件两件兵器就可以胜出江湖的。例如不懂刀的剑客,遇到用刀的人时便不知道如何刺击了。因为要先知其长短,才能避强而击弱。 不懂刀的剑客与不懂剑的刀客对打起来,大概会如同演舞一般,各练各的招式。 ...

QoBean技术文档(1):QoBean的基础技术

一、QoBean的发起 我对Qomo的不满由来以久,最根深蒂固的便是它的命名空间的实现方式:隐式地维护路径与命名空间系统。所以有一段时间,我几乎不敢看Qomo的Framework/Names/下的代码。 我对Qomo不满之处很多,但归结起来只有一条:太大太复杂。但它比那些“看起来不怎么复杂”的项目有太多特性要实现,因此复杂是必然的。我只是一直以来无法跳开一个圈子:为什么复杂的,一定不能简洁? QoBean的触动来自于一篇文档(忘掉了出处),说在JavaScript中实现类继承只需要几行代码而已。我当时想:是啊,只需要几行代码就行了,为什么Qomo的Object. ...

启动一个最小化Qomo项目-QoBean!

什么是QoBean ? QoBean是Qomo V2项目中的一个子项目,所以毋庸置疑的,它也是一个开源项目,它的最新版本可以从如下地址获取: https://github.com/aimingoo/qobean https://qomo.svn.sourceforge.net/svnroot/qomo/qobean QoBean是Qomo V2的一个分支,它的目标是最小化Qomo。首先,它没有打算象Qomo一样通过一个$import和与$import相关的一个兼容层去支持兼容平台。 ...

还原JavaScript的真实历史~

问题 JavaScript真的继承自Cmm吗? JavaScript与Java有多少关系? JavaScirpt最初的设计是怎样的? 在许多资料,JavaScript的语源被追溯到一种名为Cmm的语言。同样是在这一溯源的过程中,人们发现“其实”JavaScript不是第一种网页中的脚本语言。现在一些所谓“公认”的情况是这样的: 大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚本语言。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,当Netscape Navigator崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为EspressoPage(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。 ...

我的程序语言实践

动静之间,不变的本质 —— 我的程序语言实践 引子 源于SD2.0大会的召开,以及拙作《JavaScript语言精髓与编程实践》一书的出版在即,CSDN、博文视点以及《程序员》的编辑都希望我写一点关于语言的东西。我已经为这个问题苦恼了很久,因为我不知道可以说什么,既可以与先行者有别,又可以使后来者为鉴。 这下便借用《程序设计语言实践》一书的书名,讲讲我的经历吧。 从动态语言到静态语言 我所学的第一门语言其实是数据库编程语言DBASE,参加的是学校的一个暑期的关于微机操作的培训——程序设计语言只是其中很小的一部分,我们得从键盘键位之类的开始学起。 ...

从表达式到函数:表面的简洁

scheme/lisp中,(基于运算元、运算符的)表达式运算是一个语法基础,但它们被称为函数式语言而非表达式语言。那么,它们是如何解释函数式语言的呢? 一个lisp的函数在语法上应当书写为如下格式: ((lambda (p1...pn) _e_) a1...an) 这是什么意思呢?其实,这其中的p1..pn为形式参数,而a1..an为实际参数,而lambda则是一个从天上掉下来的概念,它被用来作为一个函数标识符的命名——就好象四则运算中的x,y,z只是命名一样。 ...

让leeon不再眷念马桶——书评《精通正则表达式》

计算的世界大概都是由规则构成的。从最简单的二进制运算,到复杂的格式化文本,以及构建互联网络的各种协议,整个行业都在几十年如一日的定制、复制和客制化各种规则。 在一切变得越来越复杂的时候,我们终于为“分析这些原本很有规则的数据”发了愁。因为规则多到一定程度的时候,也就湮没了规则本身。 从一系列的数据中找到规则并描述这些规则的工具,是“正则表达式”——在早期,它确实就被译作“规则表达式”。更加重要的是,现今的各种语言内置了强大的正则表达式支持,使得这些“规则”可以被复用、编程,以及用于推理。当然, ...