我不是在寻找神经网络库,因为我正在创建新的网络.为此我需要一个好的"数据流"语言.
当然,你可以用C,C++,Java和co做到这一点.但是从头开始处理多线程等将是一场噩梦.
在另一个极端,像Oz或Erlang这样的语言看起来更适应,但它们没有很多库,而且它们更难掌握(它们很容易使用它们,但创建完整的软件是否可以?).
你会建议什么?
来自Scala(和Akka),我最近开始研究其他用分布式计算设计的语言,即Erlang(以及一点点的Oz和Bloom).Erlang和Oz都是动态类型的,如果我没记错(将尝试查找链接),人们已经尝试向Erlang添加类型并设法键入其中的一部分,但无法成功强制系统使其适合最后一点?
Oz,虽然是一种研究语言,对我来说当然很有趣,但它也是动态类型的.
Bloom目前的实现是在Ruby中,因此是动态类型的.
据我所知,Scala(我认为Haskell虽然我认为最初是作为对纯懒惰函数语言而不是分布式系统的探索而构建的)是唯一静态类型并提供语言级抽象的语言(因为缺乏在分布式计算中更好的术语.
我只是想知道动态类型与静态类型相比是否有固有的优势,特别是在为分布式系统编程提供语言级抽象的上下文中.
在关于Oz教程中的函数的章节中,它说:
类似于惰性函数语言Oz允许某些形式的尾递归优化,这些优化在某些严格的函数语言中找不到,包括标准ML,Scheme和并发函数语言Erlang.但是,Oz中的标准函数定义并不是懒惰的.
然后继续显示以下在Oz中尾递归的函数:
fun {Map Xs F}
case Xs
of nil then nil
[] X|Xr then {F X}|{Map Xr F}
end
end
Run Code Online (Sandbox Code Playgroud)
这样做,它将空列表映射到空列表和非空列表,将结果应用于F其头部,然后将其前置于调用Map尾部的结果.在其他语言中,这不是尾递归,因为最后一个操作是prepend,而不是递归调用Map.
所以我的问题是:如果"Oz中的标准函数定义不是懒惰的",那么Oz做什么,像Scheme或Erlang这样的语言不能(或不会?)能够对此函数执行尾递归优化?究竟什么时候函数尾部递归在Oz?
我尝试使用2种方法在Oz中打印出Fibonacci序列:使用Emac作为编辑器的函数和过程.程序在这里:
declare
fun {Fibo N}
case N of
1 then 1
[] 2 then 1
[] M then {Fibo (M-1)} + {Fibo (M-2)}
end
end
declare
proc {Loop K}
if K ==1 then {Browse K}
else
{Loop K-1}
{Browse {Fibo K}}
end
end
{Loop 10}
Run Code Online (Sandbox Code Playgroud)
和功能:
declare
fun {Fibo N}
case N of
1 then 1
[] 2 then 1
[] M then {Fibo (M-1)} + {Fibo (M-2)}
end
end
declare
fun {Loo L}
if L ==1 then {Browse L} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码在Oz中创建一个列表:
local Loop10 Xs in
proc {Loop10 I}
Xs={List.append Xs I}
if I == 10 then skip
else
{Browse I}
{Loop10 I+1}
end
{Browse Xs}
end
{Loop10 0}
end
Run Code Online (Sandbox Code Playgroud)
在莫扎特编译器显示的代码被接受,但没有浏览窗口打开.我要做的就是在Oz中创建一个列表.
代码有什么问题?
我正在尝试使用莫扎特奥兹.我从source forge下载执行二进制文件:http://sourceforge.net/projects/mozart-oz/.
在启动Mozart.app时,emacs(适用于Mac OS X的aquamacs)开始在其中进行编码.
例如,我可以输入{Browse 'Hello World'}并执行Oz -> Feed Buffer以在Tcl/Tk浏览器中获取结果.
然后,我如何在命令行中构建或执行Oz代码,就像我使用Python或Ruby一样?
我在bin目录中找到了二进制文件.
/Applications/Mozart2.app/Contents/Resources/bin
??? oz
??? ozc
??? ozemulator
??? ozengine
??? ozwish
Run Code Online (Sandbox Code Playgroud)
但是,当我执行代码时ozc -c hello.oz,我收到了%** variable Browse not introduced错误.可能有什么问题?