论坛首页 综合技术论坛

理想的编程语言

浏览 14172 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-08-23  
我把erlang.org上的一段Erlang示例代码用ProcessLog重写了一下, 大家可以对比一下.
Erlang示例代码 Echo process
go() ->
Pid2 = spawn(echo, loop, []),
Pid2 ! {self(), hello},
receive
{Pid2, Msg} ->
io:format("P1 ~w~n",[Msg])
end,
Pid2 ! stop.

loop() ->
receive
{From, Msg} ->
From ! {self(), Msg},
loop();
stop ->
true
end.

用ProcessLog重写:
Process Start = Go

Process Go
(
  OutPort toLoop, stdOut;
  InPort fromLoop
)
(
  Loop loop;
 
  toLoop >> loop.in,
  fromLoop << loop.out
)

    {
    toLoop!["hello"]
    -> fromLoop?[msg]
    -> stdOut![msg]
    -> toLoop!["stop"]   
    }
   
Process Loop
(
           DataInPort in(String);
  ResultPort out(String)
)
      
       {   
in?[msg]
-> ( | not(msg="stop"): out![msg]
->self
   )
       }
0 请登录后投票
   发表时间:2009-08-25  
非常佩服楼主的创新精神,加油!
forrestju 写道
摘要: 由于现有语言不能很好的为现实世界建模, 我提出一种编程方法论和编程语言ProcessLog. 它的编程思想是" 面向进程 + 函数编程+ 逻辑编程等", 用它写的程序的软件体系结构很清晰, 程序简洁优美, 程序的正确性容易用数学推理证明, 适用于各种领域.
如果能解决程序的正确性证明问题,那是相当大的突破。
如果能同时解决程序的安全性证明和程序的性能最优化问题,那就更完美了。

forrestju 写道
ProcessLog的语法概要如下:
1 运算符
(1)  ?  输入;  c ? x 从输入端口c或通道c上接收输入值放到变量x中
(2)  !  输出;  c ! v 把v的值从输出端口或通道c上输出
(3)  ->  顺序进行的事件的先后关系
(4)  | b : s  分支
(5)  a >> p.b 输出端口a连接到进程p的输入端口b
(6)  a << p.b 输入端口a连接到进程p的输出端口b
(7)  and, or, not 逻辑运算符
(8)  算术运算符和关系运算符  与Java中相同
觉得第(1)(2)个符号的选用不是很好,不直观,建议再斟酌一下,个人认为不必要局限在ASCII码范围。

forrestju 写道
另外, 大家不要把语言分为中国人提出的还是外国人提出的, 科学无国界.
极端民族主义情绪和极端爱国主义情绪其实是一种自卑心理的畸形反应,而且往往是被统治者蓄意诱导和激化出来的,是想转移民众对统治者的不满。
正常的民族感情和爱国情操是自发的自下而上的。
0 请登录后投票
   发表时间:2009-08-25  
liuwangxia 写道
非常佩服楼主的创新精神,加油!

多谢你的鼓励!
liuwangxia 写道
如果能同时解决程序的安全性证明和程序的性能最优化问题,那就更完美了。

这些是在正确性证明基础上的更高要求, 我想等语言基本实现了再考虑, 目前我还是在完善语言本身的基本机制, 这是一个长期的过程.
forrestju 写道
ProcessLog的语法概要如下:
1 运算符
(1)  ?  输入;  c ? x 从输入端口c或通道c上接收输入值放到变量x中
(2)  !  输出;  c ! v 把v的值从输出端口或通道c上输出

liuwangxia 写道
觉得第(1)(2)个符号的选用不是很好,不直观,建议再斟酌一下,个人认为不必要局限在ASCII码范围。

这是沿用了进程代数中的符号,Erlang也用!作输出, 习惯了就好了.
0 请登录后投票
   发表时间:2009-08-25  
http://jocaml.inria.fr/
The best way to predict future is to invent it.
0 请登录后投票
   发表时间:2009-08-25  
Trustno1 写道
http://jocaml.inria.fr/
The best way to predict future is to invent it.

请教:你觉得我这里提的并发模型和join演算一样不一样?
0 请登录后投票
   发表时间:2009-08-25  
实际上, 我这里提出的并发机制和join calculus差别很大.
0 请登录后投票
   发表时间:2009-08-26  
http://en.wikipedia.org/wiki/Join-calculus


The join-calculus is a process calculus developed at INRIA. ....... Despite this limitation, the join-calculus is equally as expressive as the full π-calculus. Encodings of the π-calculus in the join-calculus, and vice-versa, have been demonstrated
0 请登录后投票
   发表时间:2009-08-26  
乱入一下。join calculus的话Concurrent Basic也有实现
0 请登录后投票
论坛首页 综合技术版

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