精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-10
1)FP+特殊的并发模式 2)多种数据结构+数据结构随意组合支持 3)类是规则匹配的实现 1)FP+特殊并发模式 其最终结果是系统的鲁棒性,这在许多领域尤其是嵌入系统非常重要。 如果单实现这部分是否可以编译为目标机器码? 2)List等数据结构和c及其它静态语言的List不同,在于数据结构中元素的可以是多种类型,以及各种数据结构的组合,所谓程序=数据结构+算法的等式中,同样的目标程序,有了这么灵活的数据结构支持,算法当然要灵活得多,也自然得多。隐约中这个等式中数据结构和算法的界限似乎模糊起来。目前没有想到有什么办法用静态语言实现。 3)如果不是稍微有了解一些prolog,是不会体会到匹配的妙处。如果仅仅是使用一点正则表达式,不足为奇。但同样的技术使数据(消息)直接发言。但我认为这个用静态语言同样可以实现,用t1的话说不就是消息分派吗。 以上3条,我最考虑(非欣赏之类)第一条。我记得我看的第一本印象深刻的IT书就是《编写无错的c语言程序》,第一条目的很明确,这个目的不是用一些巧劲可以解决的,而是需要反复研究,千百次实验总结出来的。 2)和3)也很好,有些欣赏。但不是必须的。举个例子说(这可能会得罪人),最简单的做法是,你可以用这种方式去思考,去验证。到最后实现的时候可以用c代码去翻译,就好比用E语翻译古文,第一次难点,费点劲,只要项目组不缺人(一般程序员即可)。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-14
经过再次思考,第二点是有可能实现的
对于数据结构中的每个元素在赋值后其类型是确定的,因此可以在编译时期确定。如果用静态语言实现可以通过宏替换等方法实现其中的一些功能。 |
|
返回顶楼 | |
发表时间:2007-01-24
helloworld 写道 所谓程序=数据结构+算法的等式中,同样的目标程序,有了这么灵活的数据结构支持,算法当然要灵活得多,也自然得多。隐约中这个等式中数据结构和算法的界限似乎模糊起来。目前没有想到有什么办法用静态语言实现。 如果你更深入的使用过Erlang,你会发现这句话反过来说也是非常有意思的:Erlang的一贯理念是数据和算法需要彻底分离,而面向对象语言的传统设计理念却是数据算法紧耦合. |
|
返回顶楼 | |
发表时间:2007-03-28
回帖专用 写道 helloworld 写道 所谓程序=数据结构+算法的等式中,同样的目标程序,有了这么灵活的数据结构支持,算法当然要灵活得多,也自然得多。隐约中这个等式中数据结构和算法的界限似乎模糊起来。目前没有想到有什么办法用静态语言实现。 如果你更深入的使用过Erlang,你会发现这句话反过来说也是非常有意思的:Erlang的一贯理念是数据和算法需要彻底分离,而面向对象语言的传统设计理念却是数据算法紧耦合. Erlang的一贯理念是数据和算法需要彻底分离. 应该说 函数式语言的理念就是数据和算法需要彻底分离吧? |
|
返回顶楼 | |
发表时间:2007-03-28
以上是我猜的.没学过什么函数式语言没看过什么函数式的东西.
先记着SICP |
|
返回顶楼 | |
发表时间:2007-03-28
c语言算不算 数据和算法需要彻底分离 的语言?如果是为什么和Erlang的好象又不一样呢?如果不是,那怎么不是?
|
|
返回顶楼 | |
发表时间:2007-03-28
Erlang 写道 c语言算不算 数据和算法需要彻底分离 的语言?如果是为什么和Erlang的好象又不一样呢?如果不是,那怎么不是?
觉得c和FP确实有一些相似的地方,比如define,比如指向函数的指针. |
|
返回顶楼 | |
发表时间:2007-03-31
有一篇文章:关于C的函数型编程
大概的意思就是: c里面不支持模式匹配、不一定支持尾递归的优化,还有不支持fun(是不是就是lambada),还有就是要自己加GC,还有不知道了 |
|
返回顶楼 | |
发表时间:2007-04-01
Erlang 写道 有一篇文章:关于C的函数型编程
大概的意思就是: c里面不支持模式匹配、不一定支持尾递归的优化,还有不支持fun(是不是就是lambada),还有就是要自己加GC,还有不知道了 呵呵,c 代码太bt了,指针就象孙悟空,变换无穷. |
|
返回顶楼 | |
发表时间:2007-04-02
Erlang 是一个比较有意思的语言,兼具"程序既数据","数据算法分离"两种特性.所谓的程序既数据,是对Erlang的函数来说的,因为Erlang是FP,所以他的函数可以当作数据来使用.
比如说 Fun=fun(x,y)->x+y end. list:fold(Fun,0,[1,2,3,4,5]) 而"数据算法分离"则是对于Erlang的数据存储来说.考虑如下java代码 class exmaple { public int age; public String name; public boolean gender; public example(int _age,boolean _gender,String _name) { age=_age; name=_name; gender=_gender; } public void print_info() { System.out.println("Name:"+get_name()+",Age:"+get_age()+",Gender:"+get_gender()); } public int get_age() { return age; } public String get_name() { return name; } public boolean get_gender() { return gender; } } exmaple ex=new exmaple() 从某种意义上来说,对象ex就是一个把数据,DML(getter function),算法(print_info)的捆在一块的内存数据库,而类example就是这个数据库的shceme. 相同一个需求,如果用Erlang 来写的话.你就会发现,Erlang的数据不会与算法捆绑在一起,而是有专门存储数据的数据库ets/menisa来存放数据.然后通过类似SQL的数据库存取API来访问数据,将内存中的算法Apply到数据上得出结果再将数据写回数据库. 这样一大好处就在于分布式应用的情况下,内存数据不会因为算法的bug而导致丢失,一个节点的crash以后其内存映像能够非常快的迁移到另外一个节点上.这个特性在OO语言上是非常难以实现的. |
|
返回顶楼 | |