论坛首页 综合技术论坛

理想的编程语言

浏览 14174 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-08-10   最后修改:2009-08-10
forrestju 写道

这门语言是要杜绝赋值语句,如Haskell语言那样. 用通信进程也是为了杜绝副作用.
看来你对相关理论比较熟悉, 有些地方需要向你学习.呵呵.

为何进程通信和副作用会拉上关系?
首先对纯函数而言,没有副作用。
对非纯函数,因为没有变量这个东西,就不存在隐式修改的可能了。

而且haskell没有真正意义的赋值……
0 请登录后投票
   发表时间:2009-08-10  
Magicloud 写道
forrestju 写道

这门语言是要杜绝赋值语句,如Haskell语言那样. 用通信进程也是为了杜绝副作用.
看来你对相关理论比较熟悉, 有些地方需要向你学习.呵呵.

为何进程通信和副作用会拉上关系?
而且haskell没有真正意义的赋值……


你没有明白我的意思.
再重复一下
"这门语言是要杜绝赋值语句,如Haskell语言那样."
0 请登录后投票
   发表时间:2009-08-10  
forrestju 写道
Magicloud 写道
forrestju 写道

这门语言是要杜绝赋值语句,如Haskell语言那样. 用通信进程也是为了杜绝副作用.
看来你对相关理论比较熟悉, 有些地方需要向你学习.呵呵.

为何进程通信和副作用会拉上关系?
而且haskell没有真正意义的赋值……


你没有明白我的意思.
再重复一下
"这门语言是要杜绝赋值语句,如Haskell语言那样."

那么haskell不是已经杜绝了么?
如果你想做个新的语言,为何不干脆给haskell写个相应的支持库?
0 请登录后投票
   发表时间:2009-08-10  
Magicloud 写道
forrestju 写道

这门语言是要杜绝赋值语句,如Haskell语言那样. 用通信进程也是为了杜绝副作用.
看来你对相关理论比较熟悉, 有些地方需要向你学习.呵呵.

为何进程通信和副作用会拉上关系?
而且haskell没有真正意义的赋值……

你看看jcsp的相关理论就明白用通道通信可避免副作用. 而在面向对象中的方法参数如果是对象的话,不特意避免的话,一般都会有副作用,相信在一个实际的项目组中不会特意制定规则说"要避免对象参数的副作用".
我的文章中推荐:
http://www.cs.kent.ac.uk/projects/ofa/jcsp/,
其中有两个ppt说得很明白:
"Process Oriented Design for Java: Concurrency for All",
"Communicating Processes, Components and Scaleable Systems".

0 请登录后投票
   发表时间:2009-08-10   最后修改:2009-08-11
forrestju 写道

你看看jcsp的相关理论就明白用通道通信可避免副作用. 而在面向对象中的方法参数如果是对象的话,不特意避免的话,一般都会有副作用,相信在一个实际的项目组中不会特意制定规则说"要避免对象参数的副作用".
我的文章中推荐:
http://www.cs.kent.ac.uk/projects/ofa/jcsp/,
其中有两个ppt说得很明白:
"Process Oriented Design for Java: Concurrency for All",
"Communicating Processes, Components and Scaleable Systems".


这个问题分开看。
首先你设计的不是面向对象语言。而对如haskell而言,副作用已经避免,不因进程通信而变化。
其次,通信避免副作用基于值传递,而对面向对象一直难以解决的问题,就是由引用构成的一个对象如何进行不需要人工参与的值传递。对此你甚至可以单独出一篇论文。另外,“对象”暗含了保存内部状态的功能,这与纯函数的理念相悖。没有仔细研究过“对象”是否可以和“无边际效应”简单的融合,初步考虑只有彻头彻尾的标记对象是否变化,而这将带来巨大的性能损失。

另外,我认为“对象”是一个模型概念,在技术理论中不应该使用这个名词。
0 请登录后投票
   发表时间:2009-08-10  
避免传引用(指针)就差不多了。

别人可以吐槽说 进程是一种对象 ……
0 请登录后投票
   发表时间:2009-08-11  
Magicloud 写道
forrestju 写道
Magicloud 写道
forrestju 写道

这门语言是要杜绝赋值语句,如Haskell语言那样. 用通信进程也是为了杜绝副作用.
看来你对相关理论比较熟悉, 有些地方需要向你学习.呵呵.

为何进程通信和副作用会拉上关系?
而且haskell没有真正意义的赋值……


你没有明白我的意思.
再重复一下
"这门语言是要杜绝赋值语句,如Haskell语言那样."

那么haskell不是已经杜绝了么?
如果你想做个新的语言,为何不干脆给haskell写个相应的支持库?

语言本身应有的要素应该是语法本身的一部分, 而不是支持库这种外在的附加物.
0 请登录后投票
   发表时间:2009-08-11  
forrestju 写道
语言本身应有的要素应该是语法本身的一部分, 而不是支持库这种外在的附加物.


你有没有想过 …… 理论上,只要可以 eval ,就能通过支持库添加大部分语法 ……
0 请登录后投票
   发表时间:2009-08-11   最后修改:2009-08-11
我觉得反对或支持一个理论首先需要理解这个理论.我觉得大多数讨论者并不理解这个理论,原因主要在我没有完全清楚地说明这个理论的所有好处和它各部分的提出原因,很抱歉,时间有限做不到这点.
我在文中说了需要明白csp和jcsp.
"看看jcsp或Hoare的CSP(http://www.usingcsp.com/)就明白了.推荐网址:
http://www.cs.kent.ac.uk/projects/ofa/jcsp/,
其中有两个ppt说得很明白:
Process Oriented Design for Java: Concurrency for All,
Communicating Processes, Components and Scaleable Systems.
"

希望愿意讨论的人先看明白csp和jcsp, 最起码要明白jcsp的思想.我估计参与讨论的人都没去看这两个ppt.
那我就把那两个ppt贴上去吧,看完之后再讨论吧.
0 请登录后投票
   发表时间:2009-08-11  
有回帖已经是很捧场了 …… 不信拿去 LtU 发发看。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics