Friday, 1 December 2017

Perl6 Rakudo

コンパイラの授業の〆は、Perl6 を読もうということで。12/2,3 10時から18時の予定です。工学部1号館321。最近は、ネット中継とかやってないんだよな。気が向けば設定するかもしれません。

今日は、LLVMをちょっとだけ読んだ後、Rakudoの準備。えーと?

 Perl6は、JVMまたはMoarVMの上で動く、
nqp で実装されている

 nqp は、JVMまたはMoarVMの上で動く
nqp で実装されている

 nqp compiler は、MoarVM/JVMのバイナリで提供されている

C compiler も Haskell compiler も、既存のC/Haskell compilerを前提としていて、

 真の意味での boot strap を失ってしまっている感じ

このあたりって、

 個体発生は系統発生を繰り返す

みたいにできないのかな。なんていうのかな、

 簡単なインタプリタ/コンパイラから細かい boot strap を繰り返して複雑なシステムが出来上がる

みたいにならないのかと。単純なシステムに fall back できないのは残念な感じ。

Perl6 を Perl6 (あるいは、その制限版である nqp )で記述すると言うのは、言語屋さんの自己満足に過ぎなくて、それが役に立つという状況になってない感じ。

で、わからないのが、

 nqp level で trace ってどうやるの?

ってことですね。nqp に debugger があれば、それで。あるいは、rakudo を Perl6 で動かせるなら、Perl6 debugger で。

でも、lldb/gdb level は用意されているようなんだが...

pypy でも、動かしてデバッグするまでにいろいろあったような。

nqp script 自体は、perl6 -mnqp hoge.nqp で動くようなんですが...

No comments: