読者です 読者をやめる 読者になる 読者になる

Ponylangで型付きアクター生活[1] Hello World編

注意 ここにある内容はpony2.x時代にドキュメントに書かれていた物なので、もう古い可能性が高いです。最新の情報は公式ドキュメントを参照してください。

全国の静的型付けじゃないと手が震えてしまうみなさんこんにちは。 アクターでも型を付けたいですね。

ということでそんな感じのことが出来るPonylangの紹介をしたいと思います。といいつつチュートリアル読みながら勉強したことをまとめた勉強メモ的な記事です(´・_・`)

今回はとりあえずHello worldまでです。

Ponyとは

www.ponylang.org

Pony is an object-oriented, actor-model, capabilities-secure, high performance programming language.

なんだかすごそうです。

トップに挙げられているこの言語の特長は

Ponyでは上記の利点の最初の5つを併せてcapabilities-secureと呼んでいるようです。

Ponyチュートリアル

最速のアクターモデル言語としても使えそうですし、型安全なアクターモデル((akkaもAkka Typedを使えば型安全にはなります。Ponyは、型だけでなくreference capabilityのような概念も含めた安全性を提供しているのが特長です)としても使えて最強な感じがしました。

もちろん今流行のreactive-streams実装もあります。 GitHub - ponylang/reactive-streams: Pony implementation of http://www.reactive-streams.org/

どうですか。使ってみたくなりませんか。私はなりました。₍₍ (ง´・_・`)ว ⁾⁾ ということで公式チュートリアルです。

インストール

http://tutorial.ponylang.org/getting-started/installation/

brew install ponyc だけで完了です。 llvmが依存になっているので、そういうことなのでしょう。

エディタはvimパッケージがpendingらしいのでatomを使いました(´・_・`)

はろぽに₍₍ (ง´・_・`)ว ⁾⁾

http://tutorial.ponylang.org/getting-started/helloworld/

下記のコードをおもむろにmain.ponyとして書きます。ファイル名は.ponyで終わっていればなんでも良いようです。

actor Main
  new create(env: Env) =>
    env.out.print("Hello, world!")

なんと同じディレクトリに居るならファイル名を指定せずにponycだけでコンパイルしてくれるようです。モダンですね(?)

$ ponyc
Building . -> /Users/matsu_chara/Documents/sand/helopony
Building builtin -> /usr/local/Cellar/ponyc/0.1.7/packages/builtin
Generating
Optimising
Writing ./helopony.o
Linking ./helopony

なんと.oファイルが生成されて自動でリンクしています。makeのようなビルドシステムは不要と書いてありました。すごい。 ちなみにheloponyはディレクトリ名です。

そして

./helopony
Hello, world!

のように実行できます。

はろぽにの中身₍₍ (ง´・_・`)ว ⁾⁾

actor Main ではアクターを宣言しています。ponyにはクラスもあるようです。違いはbehavioursと呼ばれる非同期メソッドを持てることにあるようです。

new create(env: Env) => はコンストラクタの宣言です。コンストラクタが名前を持つので色々なコンストラクタを宣言することが出来ます。(newはそのためのキーワード)

env.out.print("Hello, world!")はお察しのとおりです。

まとめ

ということで型やアクターなどのおもしろそうな部分は次週に続きます。