共计 46 篇文章

再谈JavaScript的数据类型问题

引子 JavaScript的数据类型问题已经讨论过很多次了,但许多人还有许多书仍然沿用着错误的、混乱的一些观点,所以就再细讲一回。 提及这个讨论的原因在于argb同学在我的MSN博客上的一段回复,又更早的起源则是两年前关于《JavaScript征途》一书的大讨论: 从“装B被雷劈讲起 ——这个事就让它过去了过去了吧。在讨论中我提及到该书对JavaScript类型系统介绍的混乱,而argb翻出了这篇历史文章,指我的混乱更混乱。于是我列了以下几个问题给他: 我想很难很快速地解释你的问题。那么,接着你的思路,我就问几个问题好了: 1、函数是不是类型?是什么类型? 2、为什么说JavaScript中的函数是“第一型” ...

我们需要什么样的“技术”

【0】我们需要什么样的“技术” 这个问题以及整件 事情来源于hax的一篇文章《关于国内前端和JS技术发展的乱想》: http://hax.iteye.com/blog/1128269 hax已经讲得很好了。关于js、前端、框架等等,hax还有一些设想、想法与新思,而我其实已经没有什么话题好讲。上半年w3ctech的“拥抱HTML5”大会,裕波让我去讲讲,我憋了一个多月,愣是想不出什么东西来。没有可讲的, ...

前端要给力之:原子,与原子联结的友类、友函数

JavaScript中的原子(Atom)是QoBean中提出的一个重要概念,借鉴自erlang,但具有与后者不同的含义。在QoBean里,Meta(元)与Atom(原子)是一对概念,前者表明执行系统中的最小单位,后者表明数据系统中的最小单位。QoBean约定这两个东西为一切元编程的初始,即最小化的执行系统与数据系统模型。 有什么意义呢?没什么意义。这只具备理论上的完整性。为了描述这种完整性,QoBean写了两个相当无厘头的函数: // Atom system // - atom object for ...

前端要给力之:代码可以有多烂?

1、烂代码是怎么定义的? !KissyUI是淘宝Kissy这个前端项目的一个群,龙藏同学在看完我在公司内网的“读烂代码系列”之后就在群里问呵:烂代码是怎么定义的? 是呵,到底什么才算烂代码呢?这让我想到一件事,是另一个网友在gtalk上问我的一个问题:他需要a,b,c三个条件全真时为假,全假时也为假,请问如何判断。 接下来KissyUI群里的同学给出了很多答案: // 1. 圆心 if (a&&b&& ...

“主要的编程范型”及其语言特性关系(多图)

“主要的编程范型”(The principal programming paradigms)这幅图,其实出现得不算早,作者在2007年完成了该图的1.0版,到2008年更新至v1.08版本。本次提供的是翻译成中文的版本(老实说,笔者翻译水平相当有限,若有不当之处,请各位尽量指出,必尽快补正)。 这幅图的原作者Peter Van Roy,是《Concepts, Techniques, and Models of ...

关于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不也一直承受着种种不公平的待遇么?从写框架库到写书,我一直对这门语言充满着热情与隐忍,而现在, ...

在js中做数字字符串补0

通常遇到的一个问题是日期的“1976-02-03 HH:mm:ss”这种格式 ,我的比较简单的处理方法是这样: function formatDate(d) { var D=['00','01','02','03','04','05','06','07','08','09'] with (d || new Date) ...

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

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

<< 第五节:后RAD时代:领域的成熟 六、更远的将来(有限无责任预测) 再接下来,更为迎合这种面向领域组织团队并开发的工具便会出现。但这种工具不再期望整合各个领域的实现技术(注意我不是说“开发技术”),而是提供领域间的交付标准。或者更为直接地提供交付物。更多领域专精的公司受到关注(例如现在的macromedia),大厂商开始购并更多的专属领域的公司,以整合他们的业务。 更大的平台化产品会出现,远程的、分布的、可迁移的运算理论和解决方案被普及,而与此同时的,更细分的领域带来了更多的专属工具和专精人才,项目的整体规模扩张, ...