トップページ⇒php
983コメント216KB

次世代Webプログラミング言語の大本命Perl6/Parrot

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/10/08 16:57ID:rnVYrmpl
現在開発中のPerl6インタプリタエンジンParrot。
ParrotはCLR(Common Language Runtime)であり、
ParrotアセンブラにコンパイルできればPerl6のみならず、
Python、Ruby、PHPをはじめ、JavaもC#も、Basic、Scheme、
その他の言語なんでもいける・・・ようになるかも!?
mod_parrotができれば速度面でも問題無し!
そんな夢のような言語/VMであるPerl6/Parrotについて語りましょう。

関連サイトは >>2
0369nobodyさん04/12/11 08:46:49ID:???
>>368
これ、最新のparrotだと Perl6 Grammar Engineから名前が変更されて、
Perrot Grammar Engine (PGE)になってますね。./compilers/pge
他の各言語の構文でサポートされるかどうかは別としても、エンジン部分の再利用が期待できそう。

ちなみに(parrot関係ないけど)
スクリプト言語では、REBOLって言語がすでに組み込みGrammar Engineをサポートしています。
0370nobodyさん04/12/11 10:52:17ID:???
>>369
Grammar Engineという概念はPerl6発ではなかったのね。
ま、でも素晴らしい機能が使えるのはうれしい。
0371nobodyさん04/12/20 23:00:51ID:N08Ajr6t
Perl6でググると結構情報増えてきてるのが分かる。
0372nobodyさん04/12/21 13:42:51ID:t6MkBwt3
いdちぇく
0373nobodyさん04/12/25 13:06:13ID:F4TsbzKm
2006年かー。あと丸一年以上は待たなければいけないな。
βくらいは来年中に出してほしいものだが。
0374nobodyさん05/01/01 02:09:29ID:kjBKkwNI
Perl6登場まで1年なのでageます。
0375nobodyさん05/01/02 19:29:16ID:???
perlとかparrotって実装者、テスタ等、人がたくさんいれば、力押しでリリースが早くなるようなものなの?
QuakeやDoomとかだと、ボンクラ100人では絶対にできず、天才数人によってリリースされたような感じだったので、
その辺の実装のリリーススピードが気になった。
0376nobodyさん05/01/03 03:10:45ID:???
いちじく
0377nobodyさん05/01/03 23:33:52ID:H8i1Un47
>>375
仕様の策定に時間がかかってるような印象を受けるね。
仕様さえ決まればさくっとできそうな気がする
0378nobodyさん05/01/05 04:16:27ID:Sz4skZih
お邪魔します なんでIDが消えるのですか(冬中ですが ) =>ID:???
0379nobodyさん05/01/05 09:56:22ID:???
補助金どうなったんだろ。
0380nobodyさん05/01/05 13:25:10ID:???
日本人の募金が少ないというのが悲しいね。
つーか俺も募金してないんだけどな。
0381nobodyさん05/01/07 12:38:32ID:xUjytDhe
よっしゃ!あげて行こう!
0382nobodyさん05/01/10 18:13:43ID:???
Perl6が出たら構文が変わったり追加機能がついたりするけど
PHP6はやはりパクっていくのだろうか?
それとも独自路線でいくのだろうか。
>>353でも出てたけど正規表現一つ取ってもこれだけ変わるからね。
0383nobodyさん05/01/10 18:23:30ID:???
PHP6が独自路線行ったらJavaと同じ運命を辿ると思う
初心者向けの言語は開発しまくるのもいいが
バグのない完成度が高い状況までいけば
無理に開発する必要ないと思うけどね

必要な関数とかも自分で作れるわけだし
0384nobodyさん05/01/22 21:19:41ID:i6Mi6Y7z
誰か>>353の記事に載ってるParse::RecDescentモジュールを
試したことがある人いる?
0385nobodyさん05/01/22 23:16:04ID:???
誰かPerl6関連のモジュールを使って
PerlのコードをPerl6で書いて見ないか?

http://cpan.uwinnipeg.ca/module/Perl6/
0386nobodyさん05/01/22 23:37:18ID:???
>>385
言いだし(ry
0387nobodyさん05/02/05 07:56:29ID:???
0388nobodyさん05/02/05 08:01:52ID:???
最近、保守荒らし多いよな。
…age荒らしか?
0389nobodyさん05/02/05 17:50:44ID:???
公式サイトによると今年ついにリリースだそうだ。
0390nobodyさん05/02/05 18:49:56ID:???
>>389
どこよ
0391nobodyさん05/02/05 22:29:31ID:???
Perl6FAQ(http://dev.perl.org/perl6/faq.html)より

Perl6はいつリリースされるでしょうか?

現在のプランは2005年の第3四半期に働く6.0.0コンパイラを準備が
できるようにすることです、2004年後半に取られた言語デザインの
スナップに基づいて。

しかしながら、十分な貢献を受けるPerl財団では、この目標が
実現を終了するのに必要である5開発者年以上の努力に資金を供給すると
叙述されます。 しかし、その基金がなければ、開発は
ボランティアベースにしたがって、よりゆっくり続くでしょう。
0392nobodyさん05/02/07 02:14:33ID:???
>>384
HTML::Template::Exprが内部で使ってたよ。
0393nobodyさん05/02/07 22:36:35ID:???
Perl6の正規表現を早く使いたいんだが。
0394nobodyさん05/02/11 05:36:10ID:???
そんなん知らんがな
0395nobodyさん05/02/15 06:13:36ID:Kt+6ObGY
今年のクリスマスプレゼントはこれかな
0396nobodyさん05/02/19 00:26:06ID:???
だな
0397nobodyさん05/02/20 08:36:45ID:bTPFMRzw
PHPが入っていない件
http://www.cafepress.com/parrotstuff1.3881171
0398nobodyさん05/02/20 15:10:56ID:???
PHPはプログラム言語としてみなされてないんだろ。
もしくはHSPか何かと勘違いされてるんじゃねーの?
0399nobodyさん05/02/20 15:21:30ID:???
もしかしてマジレスかw
0400nobodyさん05/02/20 15:28:06ID:???
>>397
parrot-0.1.1/languagesにもPHPのディレクトリは無いよ。
LANGUAGES.STATUSにもPHPに関する記載は無し。
0401nobodyさん05/02/20 16:37:14ID:???
>>397
TCLとか重要なのが入っとらんやん。Groovyとかもパローレで動かしちゃったほうが
手っ取り早そうな気がするが・・・。あとJVMはインタープリタとは言いがたいな。
0402nobodyさん05/02/21 02:25:46ID:???
だってPHPはプログラム言語とは言えないし。
0403nobodyさん05/02/21 03:15:45ID:???
>>402
なぜ?
0404nobodyさん05/02/21 21:55:12ID:???
>>402 に一票
0405nobodyさん05/02/21 23:28:07ID:???
>>403
ム板でPHPのスレ見たことあるか?
0406nobodyさん05/02/24 23:30:27ID:???
ム板でPHPスレ立てると怒られます。
0407+++05/02/26 00:56:13ID:???
parrot-0.1.1の言語紹介を簡単に書いて見た。
http://e-den.servequake.com/~kuryomo/parrot/parrot_lang.html
0408nobodyさん05/02/26 02:13:19ID:???
>>407
かなり笑った
GJ
0409nobodyさん05/02/26 14:53:12ID:???
いまからperlを勉強しようとおもってる新米ですが、リャマ、ラクダに先行投資した
お金とこれから勉強に割く私の時間は無駄になっちまうのでしょうか。
0410nobodyさん05/02/26 18:41:30ID:???
>>407
Great!! 私もそろそろ情報まとめて公開しようかな。
いくつか捕捉で、

Ook!はオランウータンでも使えるように設計されたプログラミング言語で、
Ook! Ook? Ook. の組合せ(3**2)で、BrainF*ckの8命令を表現しています。

動かした事はありませんが、Ruby/Parrotは、Cardinalというプロジェクトがあります。
http://rubyforge.org/projects/cardinal/

Pythonの実装はいくつか在りますが、自分が試した頃はどれもベータでした。
pie-thon parrotの./languagesディレクトリ以下に収録
pirate http://pirate.tangentcode.com/
pyrate http://www.intertwingly.net/blog/2004/10/02/Pyrate
0411nobodyさん05/02/26 18:44:32ID:???
他には、parrotではPythonの構文木(拡張子.pasm)相当の文も実行できる様なのですが、
これも0.1.1では、returnステートメントがまだだったりと、不完全。

Parrot_AST(
 version(Const('0.1'))
 _options()
 Src_File("languages/python/hello.py")
 Py_Module(
  _()
  Stmts(
  Py_Print(Const('Hello PAST'))
  Py_Print_nl())))

Schemeのサンプル, displayとかnewlineが実装されていないのでwriteで出力。
改行を出力できないので、端末の設定に注意してください。

(define (double x) (* x 2))
(define (fact n) (if (> n 2) (* n (fact (- n 1))) n))
(write (double 10))
(write (fact 10))

schemecはpasmを出力するので、一旦 .pasm ファイルへリダイレクトするか、
パイプでparrotへ渡して実行します。ライブラリのPATHを設定する必要もあるかも知れない。

#!/bin/sh
./schemec $@ | parrot -a -

あと、Haskellで書かれたPerl6インタプリタ http://pugscode.org/
らしいです。今から試すのでレビューは後ほど。
0412nobodyさん05/02/26 23:10:30ID:???
>1・ソースを非常に簡単なツリーに(Parser.pm)
>2・それをもっと扱いやすいツリーに(Tree.pm)
>3・コンテキスト情報をパースツリーノードに格納(Addcontext.pm)
>4・IMCCコード(アセンブラより高度なPIR)を生成。
>そしてIMCCを通してレジスタ設定とかして、parrotアセンブラにより アセンブルされる。

これらのモジュールを使うえばParrotで簡単に言語が作れるのかね?
0413+++05/02/26 23:41:34ID:???
>>408,410
いや、ちょっと前のやりとりを見て、『実際何が入ってるんだ??』と
興味を惹かれたもので。たいしたものじゃないです。はい。
>>410
オランウータン?うーん、勉強になります。まだ実際に
動かしてないので、それからまたちょこちょこ記事追加しようかなあ、と。

>>412
いや、それはPerl6がコンパイルの時に実際にそうやってるというだけで、
言語の実装は、簡単な言語ならPasmやPIRでごりごり書いたりも出来るし・・。
0414nobodyさん05/02/27 11:41:13ID:???
Perl6 Object Oriented Cookbook
http://cog.cognitivity.com/perl6/
0415nobodyさん05/02/27 21:59:01ID:???
なんか水面下でParrotの周りの人たちが動いてるね。
0416410,41105/02/28 14:22:24ID:???
pugs(http://pugscode.org/)試してみたよ。という事でreport

インストールに必要なもの:
- perl
- Haskellのコンパイラ、http://www.haskell.org/ghc/ から入手してインストール.
- PerlのTerm::ReadLine::Gnuモジュール、CPAN等から探してきてインストール。

darkやSubversionなどからソースをcheck outして、perl Makefile.PL && make
pugsというファイルが出来上がるので適当なPATHの通ってる場所にコピー。

pugsは実行ファイル形式なので、ghcは使わないならアンインストールしてもok
make時にparrotは特に要求されませんでした。

pugsと引数なしで実行すると、hugsのようなシェルモードで起動できます。

pugs> とプロンプトが出るので、適当にperlの式を
デバッグ用のメッセージも一緒に出るけど、エラーではないので気にせずに。
インタラクティブシェル内のコマンドは、pugs> :q で終了。:hでヘルプ。

驚いたのが Y-combinatorが簡単に書ける事。
無名関数で名前を束縛せずに再帰が出来る。# 例: factorial(10)

sub { ($_ > 0) ?? $_ * &?SUB($_ -1) :: 1 }.(10).say

0417410,41105/02/28 14:23:03ID:???
注意点:

active perl / windows or cygwin環境だとmake失敗するとの報告例あり。
==> 自分でbuildスクリプトを組むか、nmake,pmake等を試してみる。(MakeMaker側の問題だと思う)

インタラクティブ・シェル モードでの関数定義が出来なかった。
なぜだか知らないけど、Haskellインタプリタのhugsも同じ制約がある。
ファイルに書いて実行すると関数定義も正常に実行できます。

pugsは、perl6の構文を独自のインタプリタで実行するのみで、parrotと連係は出来ないようです。
0418nobodyさん05/02/28 20:33:23ID:???
>>416-417
なるほど。これならPerl6の練習ができそうだな。
0419nobodyさん05/03/01 23:41:06ID:???
今年こそリリースしてほしいんだが。
0420nobodyさん05/03/02 20:39:58ID:???
は?
0421nobodyさん05/03/04 01:13:19ID:???
ひ?
0422nobodyさん05/03/06 20:57:26ID:???
ふ?
0423nobodyさん05/03/07 01:21:45ID:???
へ?
0424nobodyさん05/03/07 02:03:08ID:???
ほ?
0425nobodyさん05/03/07 02:05:07ID:???
まぁ
0426nobodyさん05/03/07 05:14:46ID:???
み?
0427nobodyさん05/03/07 16:41:32ID:???
む?
0428nobodyさん05/03/07 16:49:46ID:???
りぽ
0429nobodyさん05/03/07 23:46:18ID:???
>>420-428 セルの動作デモ
0430nobodyさん05/03/13 11:57:48ID:???
一点だけ訂正、前に書き込みした時点ではなかったんだけど、

> pugsは、perl6の構文を独自のインタプリタで実行するのみで、parrotと連係は出来ないようです。
コンパイラも含まれるようになるみたい。
0431nobodyさん2005/03/26(土) 17:16:47ID:???
Perl6::Pugsどうよ?
0432nobodyさん2005/03/28(月) 10:59:35ID:???
PugsでParrotのコードを出力できるようになったらしい。
0433nobodyさん2005/04/13(水) 10:36:14ID:???
PHP5といいPerl6といい何故オプソどもはどいつもこいつも
ユーザーを待たせまくりますか?
0434nobodyさん2005/04/13(水) 11:22:52ID:???
PHP5 は何を待っているの?
0435nobodyさん2005/04/13(水) 21:31:49ID:FBlVtA6A
>>434
おまいを待ってるんだ!
0436nobodyさん2005/04/13(水) 22:02:51ID:???
それは無い
0437http:// YahooBB219035032078.bbtec.net/~ss.jpg2005/04/13(水) 22:16:57ID:???
ええけつしとるのぉ(*´Д`)ハァハァ



うはっwwwおkwww??
0438nobodyさん2005/04/13(水) 22:49:35ID:???
これが山田ウイルスか……
0439nobodyさん2005/04/14(木) 23:02:59ID:tgjJ4BEn
もうperl6実働させてる人いますか?
以前(6.0.2の時)ちょっと触ってみて、
しばらく動かしていたら挙動があやしくなったので5に戻したのですが。
「一日一回くらい再起動させたら大丈夫」くらいの感じでしたが。
そろそろですかね。
0440nobodyさん2005/04/15(金) 00:05:50ID:???
>>180
下位互換性なんていらんだろ?上位互換性があれば充分。
perl5のスクリプトが6で動けば何の問題も無い。
0441nobodyさん2005/04/15(金) 04:05:34ID:???
>>439
Perl6はまだリリースされてないだろ?
0442nobodyさん2005/04/15(金) 18:02:44ID:???
>perl5のスクリプトが6で動けば

これは下位互換って言うんじゃないか?
0443nobodyさん2005/04/15(金) 18:47:54ID:???
うん?この場合はperl6のスクリプトが5で動くのを下位互換と言うだろ?
0444nobodyさん2005/04/15(金) 18:52:37ID:???
http://e-words.jp/w/E4B88AE4BD8DE4BA92E68F9B.html
http://e-words.jp/w/E4B88BE4BD8DE4BA92E68F9B.html
04454422005/04/15(金) 19:43:32ID:???
ごめん、勘違いしてたみたいだ
0446nobodyさん2005/04/16(土) 18:11:20ID:???
素直でいい子ねヽ(^o^)
0447nobodyさん2005/04/16(土) 22:25:42ID:???
Perl6だと、使い難かったmod_perlが、多少は、
使いやすくなるのでしょうか?
0448nobodyさん2005/04/16(土) 23:49:45ID:???
それはmod_perlの問題だろう
0449nobodyさん2005/04/16(土) 23:52:58ID:???
つーかmod_parrot
0450nobodyさん2005/04/17(日) 00:13:01ID:???
そういや perl6 だと mod_perl は無くなって mod_parrot に統合されるのかね?
いちいちコンパイルするのも面倒と言う人は多そうだが mod_perl も別途残るのかね?
0451nobodyさん2005/04/17(日) 02:07:08ID:???
よくわからんがJSPみたいにコンパイルしてキャッシュするような
仕組みにするんじゃないの?
0452nobodyさん2005/04/18(月) 06:41:14ID:qDcdAqsy
これからはParrotの時代age!
0453nobodyさん2005/04/18(月) 06:45:42ID:???
あっそ 下げ
0454nobodyさん2005/04/18(月) 07:02:36ID:???
parrotが来る = perl6が来るわけじゃないんだからそう怒るなよ
parrotによってPHPのバージョン問題も解決するかもなんだし
0455nobodyさん2005/04/18(月) 10:43:34ID:???
PHP のバージョン問題って何?
0456nobodyさん2005/04/18(月) 10:54:42ID:???
>>450-451
mod_parrot は parrot VM のみのモジュール

一方 mod_perl や mod_python は parrot コンパイラとしてのモジュールとして残り
これらを一緒にまとめて apache に組み込むのが大勢になるだろう
0457nobodyさん2005/04/18(月) 19:18:33ID:AqCrvPyB
http://www.perl.com/pub/a/2004/12/22/mod_parrot.html

Provide a Common Apache Layer for Parrot-based Languages

とあるので、将来的にはParrotのコードを出力できるすべての言語が対象になるみたい。
勿論、parrot自身がサポートしてるフォーマット以外については
コンパイラが別途必要になるはずだけど。

言語毎に拡張ライブラリとして存在していた mod_* モジュールが
mod_parrotに統一されるといってもいいんじゃない?
開発者が別なので、実際どうなるか判らないが
mod_parrotがあればmod_perl6 はいらないはず。

mod_* モジュールは、アパッチのモジュールをC以外の言語で書くためのものなので
早い話、ApacheAPIのラッパー。キャッシュとかとは別問題です。

mod_parrotのサイト
http://www.smashing.org/mod_parrot/
0458nobodyさん2005/04/18(月) 22:54:15ID:???
>>457
ちょっと違うっぽい。

Provide a Common Apache Layer for Parrot-based Languages てのは、
「Parrot 系言語全てに共通する apache 上の runtime engine を提供する」
と言っているんであって、mod_parrot 自身がコンパイラ機能を持つと言っているわけじゃないみたい。

じゃあコンパイラである mod_perl は全く別のモジュールとして apache に組み込まれるのかと言うと、
またそれもちょっと違って、
mod_parrot の上に各言語個別レイヤとして mod_perl, mod_python なんかがのっかる形になるらしく、
「mod_perl 自身を perl で書いて parrot にコンパイルして mod_parrot 上で動かす」
などと楽しげなことが書かれてる。
0459nobodyさん2005/04/19(火) 16:24:59ID:???
やっぱり、parrotできるとinline系ってやっぱり必要無くなるわけよね?
そうなると、jythonみたいな処理系も必要ないんじゃねーかなー
と思うおれは、間違ってますか?
0460nobodyさん2005/04/19(火) 17:36:49ID:???
Parrot の実物が出るまでは何とも言えん
0461nobodyさん2005/04/20(水) 12:52:17ID:???
まあな。
0462nobodyさん2005/04/20(水) 18:50:10ID:CKmNNRPf
>>458
コンパイラが別途必要になるのは、自分もそう書いたつもりだったのだけど。

従来のapacheモジュールを書く為のインターフェースという意味では、
少なくともこの部分は mod_perl, mod_python等と言語毎に作る必要ない。
代わりに、mod_perl等の各言語毎のモジュールは、プラグインのような位置付けになるということですね?
(いらないというのはいい過ぎた)

parrotをバックエンドとして、gccみたいなフロントエンドがあれば
コンパイラとしてのそれぞれの言語に対応したモジュールは不要になりそうですね。
parrotのLanguage Options に --python とかあるのでちょっと期待してます。

>>459
まず、Java言語->parrot コンパイラとか、javaのbytecodeローダとか
parrotでのJAVA言語/環境へのブリッジを(誰かが)書かないといけない。

Parrot上ではJython,JRuby等はひとつにまとめられるかも知れないが、
JVMでの動作を対象とした場合jythonはまだまだ有用なんじゃないだろうか。

インフラ側の視点では、
例えばParrotを選択した人にとって、jythonは不要になるかも知れないが。

言語コミュニティの視点で見ると
CLI向けにIronPython, JVM向けに Jython, LLVM向けにPyPy, Parrot向けに pie-thon,pyrate, etc...
と、複数のインフラを対象とすることは有意義だと思う。
0463nobodyさん2005/04/20(水) 21:14:09ID:???
JavaのParrotコンパイラができたらParrot最強じゃね?
0464nobodyさん2005/04/20(水) 21:33:52ID:???
強そうだとは思うが、ただ、昔の Parrot FAQ で、

Q. なんで新しい VM なんか作るの?
Perl → Java bytecode のコンパイラを作って、あとは JavaVM で動かせばいいぢゃん

A. JavaVM は型の縛りが強過ぎて Perl と相性悪いのよ

というのがあって、Java → Parrot のコンパイルでも何らかの相性の悪さ、
例えば JavaVM に比べて実行速度が著しく遅くなるとか、
なんかしら出るんじゃないかという気も。

あとまあ、Sun から訴えられるかもしれんし(笑)
0465nobodyさん2005/04/20(水) 21:37:51ID:???
.NET CLIにだってIKVM.NETがあるから訴えられはしないだろうが。
0466nobodyさん2005/04/20(水) 21:45:25ID:???
今ふと思い出したので。
ttp://oka326.blogspot.com/2004/08/perl-is-dead.html
ttp://oka326.blogspot.com/2005/03/yet-another-ruby-vm-lightweight-vm.html
0467nobodyさん2005/04/20(水) 21:56:39ID:???
>>466
なんだか小難しいこと書いてるけどさ、プログラムってのは最終的には
動けば何だっていいんだよ。PHPなんてそれすらできてないけどな。
0468nobodyさん2005/04/21(木) 00:31:43ID:???
>>466
.NET な人だねえ

そういや ActiveState の Visual Perl って、使ってる人いるんだろうか?
■ このスレッドは過去ログ倉庫に格納されています