你从未听说过的一种编程方式
下面是一系列的动作:
从小屋里拿出耙子,用它把院子里的树叶堆起来,然后把耙子放回小屋。
飞到西雅图,看风景,然后飞回。
把钥匙插进钥匙孔,打开,然后取出钥匙。
点亮你的手机,查看时间,然后把它置回睡眠状态。
看到这些模式没?你做一种事情,然后做另外一种事情,然后又撤销你做的第一件事情。或者用更精确的说法,这最后的一步是第一步的反向操作。一旦你认识到这种模式,你会发现它无处不在。拿起茶杯,喝一口茶,放回茶杯。同样,在程序代码里有到处都是:
打开一个文件,读取内容,关闭文件。
分配一段内存,用它做一些事情,释放它。
把内存地址内容加载到寄存器,修改它,然后存回内存。
虽然这很容易解释,也很容易举出例子,但想实现它却不那么容易。我们需要的这种操作看起来应该像这个样子:idiom(Function1, Function2),于是我们上面说的打开文件的例子应该是idiom(Open, Read)这个样子。问题是,需要有一种程序的方法能知道这“open”的反向操作是“close”。是否有一种语言,里面的方法可以反向执行?
也许会让你惊讶:有。这就是J语言。我在这里反复唠叨的这种编程模式,实际上是J语言里的一个内置函数,叫做under。在英语里,这打开文件的例子可以说成“read under open”。
“under”在J语言里一个非常常见的用处就是计算vector的数量级。算法非常简单:平方每个元素,把值加起来,然后取平方根。哈哈,这第三步正好是第一步的反向。求和 “under” 平方。在J语言里的写法是:
mag =: +/&.:*:
+/ is “相加”。 这&号,点号,分号序列就是“under”。*:就是“平方”。
建议继续学习:
- 面向“接口”编程和面向“实现”编程 (阅读:12723)
- 我学编程时犯的最大两个错误 (阅读:7142)
- 提高编程技能最有效的方法 (阅读:5659)
- 我是如何学习计算机编程的 (阅读:180176)
- 函数式编程很难,这正是你要学习它的原因 (阅读:4563)
- 如果你看不见你还能编程吗? (阅读:4039)
- 那些曾伴我走过编程之路的软件 (阅读:3927)
- 函数式编程 (阅读:3765)
- 也谈编程改革 (阅读:3569)
- 编程的首要原则(s)是什么? (阅读:2758)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Aqee 来源: 外刊IT评论
- 标签: 编程
- 发布时间:2012-02-01 17:29:44
-
[63] find命令的一点注意事项
-
[50] memory prefetch浅析
-
[41] 读书笔记-壹百度:百度十年千倍的29条法则
-
[30] 小屏幕移动设备网页设计注意事项
-
[30] 卡诺模型―设计品质与设计价值的思考
-
[29] Oracle bbed工具的编译
-
[27] 基本排序算法的PHP实现
-
[23] 8大实用又重要Mac使用技巧
-
[22] 杨建:网站加速--Cache为王篇
-
[21] 程序员技术练级攻略