Verona
システムプログラミング向けのリサーチ用の言語
これはオブジェクトのラッパー
cownsは「concurrent owners」の略
システムプログラミングには予測可能性とraw accessが必要だが、
今の所raw accessを安全に行うための型システムは達成されていない
高レベルならいけてる
言語の設計は、スケーラビリティと安全性を両立するのが難しい
?
不要になったオブジェクトを探してGCするためには遅延が生まれる
同時に別の箇所の並列なメモリ書換えをできないようにする
そうしてしまうと、並列プログラミングができなくなってしまう
対処法
一部、安全でないライブラリを提供する
言語の一部として並行性モデルを提供する
よくしらないmrsekut.icon
Veronaではこれらの2つの対処法に代わってcownsというモデルを導入する これは
リソースのセットすることをカプセル化する
一度に一つの実行スレッドによってアクセスされる
オブジェクトをcown()で包むことで並列にできる
以下のように書くことでxに直接アクセスできなくなる
code:verona
var c = cown(x) // cはcownT型 一度包むとスケジューリングしないと使えない
code:verona
when (var x = c)
{
// xはT & mut型
// Access internals of cown(c) using name x in here
}
ここに出てくるxはcown(x)の中身のx
ショートハンドが用意されている
code:verona
var c = cown(x)
when (c)
{
// c : T & mut
}
銀行口座に残高を加えるプログラムの例
参考