Jim's blog -- Focus On ERP/.NET/BI

Dynamics AX ERP, .NET, Business Intelligence

导航

统计

公告

2008年8月5日 #

函数编程之闭包漫谈(Closure)

摘要: 在函数编程中经常用到闭包。闭包是什么,它是怎么产生的及用来解决什么问题呢。给出字面的定义先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)。这个从字面上很难理解,特别对于一直使用命令式语言进行编程的程序员们。本文将结合实例代码进行解释。阅读全文

posted @ 2008-08-05 09:38 季方亮 阅读(10058) 评论(5) 编辑

2008年7月31日 #

软件设计之道:平衡之术

摘要: .NET程序员是幸福的,基本上是被MS给宠坏了,老板们是乐坏了,可是身为程序员却高兴不起来(个中原因自己体会吧)。借着MS的开源春风,让我们看看 MS到底是怎么宠坏我们这些可爱的.NET程序员的。在MS设计产品时遵循哪些规则,又是怎么解决一些棘手的问题的。让我们看看微软的完全开源的 IronPython,看看MS是怎么耍宝的。阅读全文

posted @ 2008-07-31 09:53 季方亮 阅读(3276) 评论(10) 编辑

2008年7月30日 #

Inside IronPython: IronPython AST语法树(2/2)

摘要: 接上篇: Inside IronPython: IronPython AST语法树(1/2)。 ASTs简介: 当 ipy.exe 执行demo.py的时候,IronPython语言自身的实现和DLR共同参与源代码的编译处理。从基本层面上来讲,编译器是流水化作业的:从语法解析器生成描述源代码的特定数据结构开始。这个数据结构是个抽象语法树(abstract syntax tree),简称为AST。编译器在完成代码分析阶段后将转换AST或者建立新的数据结构,然后再基于此结果,编译器产生机器码或者虚拟机的中间语言(IL)。阅读全文

posted @ 2008-07-30 07:41 季方亮 阅读(1990) 评论(5) 编辑

2008年7月29日 #

Inside IronPython: IronPython AST语法树(1/2)

摘要: .NET平台上早期的各个动态语言的实现相对独立:例如IronPython的1.x实现,基本上都是在.NET CLR的基础上直接构建各自的实现。到了IronPython2.x时,动态语言的架构发生了很大变化,这个变化具有革命意义,就像现在的CLR一样重要和伟大(CLR统一了静态语言,GC,JIT…省去废话x万字)。这个变化就是微软引入了DLR(动态语言运行时:Dynamic Language Runtime),同时又在.NET CLR中添加了一组核心特性以更好地支持动态语言。DLR是建立在CLR之上的,面向所有在.NET平台上运行的动态语言提供服务。当然,DLR也是跨平台的(Mono)!阅读全文

posted @ 2008-07-29 08:59 季方亮 阅读(2147) 评论(6) 编辑

2008年7月26日 #

函数编程之高阶函数漫谈(Higher order functions)

摘要: IronPython和Python一样都支持多种编程范式(OOP,FP...)。本文讲述当用IronPython进行函数编程时,用到的几个基本元素:内置高阶函数(操作函数的函数:一个函数可以接受另一个函数作为参数,也可以把一个函数作为结果来返回)。这几个函数的共同点是第一个参数都是函数,并且都是对列表数据进行操作,代码简洁明了。阅读全文

posted @ 2008-07-26 18:20 季方亮 阅读(2725) 评论(7) 编辑

2008年7月24日 #

API设计指南(话剧篇)

摘要: 程序员的成就感可以来源于:1,解决了够复杂的问题;2,让别人能更容易的解决问题(复用自己的成果)。如果你解决了一组有共性的问题,并且想让别人遇到类似问题时不必重新发明轮子而直接复用你的成果以期获得更多成就感,便有可能会产生一个问题。或者更一般的情况:在模块化开发的时候,我们需要创造一些 API给别人使用,如果我们的设计不合理,以至于暴露的接口不够“pretty”,别人在使用的时候便会在心里犯嘀咕,更恶劣的情况是“客户”弃之而再次重新发明轮子(自己既是API的消费者又是API的创造者,这样再“terrible”的设计也会被完成了功能需求所隐藏)。阅读全文

posted @ 2008-07-24 14:56 季方亮 阅读(1878) 评论(4) 编辑

2008年7月23日 #

生成器方法漫谈(generator function)

摘要: 生成器方法(generator function)作为一个可选特性在Python2.2中首次出现,2.3版本中内置支持了此特性,yield成为了关键字,生成器在后续版本中得到增强(比如增加了异常处理等特性)。C#2.0中也引入类似特性(迭代器),这两者之间有不少相似之处。本文针对IronPython 2.0 beta3进行讨论。阅读全文

posted @ 2008-07-23 15:08 季方亮 阅读(2095) 评论(0) 编辑