锁定老帖子 主题:面向变量编程
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-17
"接口"是一种把一组"代码"作为其值的"变量",类似于"语言包"的作用(其值可以为en.lang,zh.lang等等) "变量"的值可以为数字,字符串。。。一直到如今的"代码"本身作为其值。 变量变量,就是可能会变化的量:所以如果代码可能会发生变化,那么代码就可以用变量表示,所以接口即变量 把"代码"本身作为变量的值,是任何有接口(interface)这个关键字的oop语言的一个进步。另外,ruby语言里没有interface这个关键字,但是把"代码本身作为变量的值"的现象却无处不在。所以,接口只不过是把"代码本身作为变量的值"的办法中的一个;而ruby语言不但可以"把代码作为变量"来传递,而且可以"用代码来生成新的代码",这就是其威力无比的"元编程"的能力了。 所谓的面向接口编程,就是面向代码可能会被更换(变化),所以用代码的变量,也就是接口来处理的办法,因此,从这样的意义上看它,面向接口编程依然是在面向变量编程。 "变量"从表示数字,字符串...到表示对象,接口,以及更一般的“代码本身”,所有的一切,都是面向变量编程。 一言以蔽之,无论你面向什么编程,都是在面向变量编程。无论过去,现在,还是未来。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-17
有见地
|
|
返回顶楼 | |
发表时间:2007-01-17
有道理,如果楼主能把ruby中涉及的相应的内容详细说一下就更好了
ruby语言是怎样不但可以"把代码作为变量"来传递,而且可以"用代码来生成新的代码",这就是其威力无比的"元编程"的能力了 |
|
返回顶楼 | |
发表时间:2007-01-17
sizhefang 写道 有道理,如果楼主能把ruby中涉及的相应的内容详细说一下就更好了
ruby语言是怎样不但可以"把代码作为变量"来传递,而且可以"用代码来生成新的代码",这就是其威力无比的"元编程"的能力了 关于“用代码来生成新的代码”,说说我的体会 5.times do |i| File.open("temp.rb","w") do |f| f.puts "module Temp" f.puts " def Temp.var" f.puts " #{i}" f.puts " end" f.puts "end" end load "temp.rb" puts Temp.var end 输出: 0 1 2 3 4 我觉得这段代码可以很好得诠释ruby的动态能力。 代码中动态得创建了一个temp.rb文件,内容就只有一个module,其中有一个module级别的方法 var,将接收到的参数显示出来。 主程序导入temp.rb并将参数传入其中执行之。我认为这就是典型的“用代码来生成新的代码” 这样做可以有很多好处,比如更改服务器的配置文件而无需重启服务器等等 |
|
返回顶楼 | |
发表时间:2007-01-17
还要file.open干什么,直接eval不就得了
实际上用元编程是一件危险,复杂,不可控的事情,我觉得这种手法最奇妙的地方就是赋予了程序结构生物性,代码不再是静态的需要你来管理的结构,而是有自主意识,自我构建能力的生物,你只需要给他模糊简单的抽象特性,他就会给你完成细节和实现,构建出大规模的系统,这是我最近玩元数据和面向特性编程的体会 |
|
返回顶楼 | |
发表时间:2007-01-17
那可不是
变量只是图灵机模型中的一部分 而在FP中根本就没这概念 |
|
返回顶楼 | |
发表时间:2007-01-17
whisper 写道 那可不是
变量只是图灵机模型中的一部分 而在FP中根本就没这概念 即使是FP依然存在变量,或者说,那已经是另外一种变量了 考虑一下命令式编程语言里的“常量”---不要奇怪,如果我说“常量依然是一种变量”,那也不是奇怪的事情。例如: const A=1 虽然A=1后不能继续让A=2。但是你依然可以把第一次的1修改为2. 说个笑话,动词是什么词?其实“动词”是个名称,“动词”是名词。 |
|
返回顶楼 | |
发表时间:2007-01-17
FP另类指南:
http://chn.blogbeta.com/232.html |
|
返回顶楼 | |
发表时间:2007-01-17
c 里面 define 的害处就忘了?莫非时代在倒退,代码生成的技术又走上台面了。
|
|
返回顶楼 | |
发表时间:2007-01-18
再讨论深点就是哲学了。一生二,二生三,三生万物,推来推去,只是01而已。
|
|
返回顶楼 | |