トップページ⇒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
0331nobodyさん04/10/30 16:00:10ID:???
それとPHP5だろうがPHP4だろうがRubyだろうがPythonだろうが違いはないのです。
0332nobodyさん04/11/02 16:13:55ID:???
>>330
コンパイラも書かないといけないけど。
で、肝心の誰がそれら書くのかって問題は解決したのかな..

>>329
http://www.poniecode.org/ これかな。

>>245
>>244==211でした。(レス遅過ぎ)
parrot0.1.0のときちょっとだけ触ったけど、といってもサンプル試した程度です。
installはまだ出来なくて、自分の環境ではscript内のライブラリや外部プログラムのpathを変更しないと動かなかった.
CPANのPerl6 Bundleはインストールに躓いて断念。(原因追求してない)
0333nobodyさん04/11/02 20:29:47ID:???
>>332
このスレで一番地に足の着いた情報だね。
実際にParrot触ってる人がいるとは驚いた。
0334nobodyさん04/11/02 21:38:07ID:???
                       /
                 ,. 、       /   /
               ,.〃´ヾ.、  /  /
             / |l     ',  / /
        ,、     ,r'´  ||--‐r、 ',      パ ロ ー レ パ ロ レ パ ロ ー レ ー ! !
       l.l. ,..ィ'´    l',  '.j '.
       'r '´          ',.r '´ !|  \
       l!     ....:.:.:.:.:.:ヽ、   ,l    \
        ゝ、.,_ ---‐‐‐----ゝ、ノ
        | |
         .| |
          | |
        | |
           | |
         | |
            | |
          | |
           .| |
0335nobodyさん04/11/03 03:03:39ID:???
PerlはParrotで衰退しそうだな。 残念。 自殺。
0336nobodyさん04/11/04 01:14:06ID:???
PHP厨がもう必死。
0337nobodyさん04/11/04 09:36:33ID:???
PHP厨がもう必死。
0338nobodyさん04/11/04 13:38:12ID:???
反論できないPerl厨
0339nobodyさん04/11/04 19:09:04ID:???
PHP厨が必死なことに反論などできません。。。
0340nobodyさん04/11/04 19:14:34ID:???
信者はどっちも消えろ
0341nobodyさん04/11/05 09:59:13ID:???
>>336
ParrotよりPerl6に力を結集して欲しいのは俺だけかもな。 残念。 PHP厨なのか?俺斬!
0342nobodyさん04/11/05 16:17:30ID:???
Perl信者脂肪
0343nobodyさん04/11/05 21:26:43ID:???
PHP厨は消えて消えろよ。
お前らに未来は無い。
0344nobodyさん04/11/05 21:58:32ID:???
信者はどっちも消えろ
0345nobodyさん04/11/27 21:03:19ID:???
かなり期待してる。
0346nobodyさん04/11/28 01:22:18ID:???
ところで、Parrotってなに?
0347nobodyさん04/11/28 10:47:26ID:???
エンジン
0348nobodyさん04/11/28 13:03:02ID:???
「絶対動きます」と書いてあるのに全然動かない Dead Parrot 版 Python
0349nobodyさん04/11/28 13:55:37ID:???
>> 346
動的言語向けに設計された、レジスターベースのVirtual Machine


ところで、>>1 の修正提案

> ParrotはCLR(Common Language Runtime)であり、
.NetのCLRは、GUIやWEB環境も含まれる事があるので断言するのは適切じゃないんじゃないかな。
Virtual Machineの方が一般的な表現だと思う。

あと、parrotアセンブリ以外に, parrotバイトコード, parrot中間表現, parrot構文木
なども実行可能です。(pastはまだ不完全みたいだけど)。拡張子みて判断してくれるらしい。
0350nobodyさん04/11/28 14:48:03ID:???
parrotはGCしてくれるの?
0351nobodyさん04/11/30 19:40:40ID:???
>> 350
してくれるよ
0352nobodyさん04/11/30 23:38:32ID:???
早くParrotリリースされないかね。
0353+++04/12/04 02:52:18ID:???
洗練されたPerl: Perl 6文法と正規表現
http://www-6.ibm.com/jp/developerworks/linux/041203/j_l-cpregex.html

>錆びた鉄の枠組みという外観の奥深くで、作業員が働き続けています
ですって。期待してるから頑張ってくれ。
0354nobodyさん04/12/04 18:09:24ID:???
Perl6があれば自分で好きな言語が簡単に作れるな。
0355nobodyさん04/12/04 19:43:16ID:???
( ´,_ゝ`)ピッ
0356nobodyさん04/12/05 04:54:23ID:???
パーサあるんなら
Parrot使わんでもいいから動くもの提供してくれたっていいじゃん
0357nobodyさん04/12/06 20:32:18ID:zBBK8da1
「指が月をさすとき、愚者は指を見る」
「馬鹿は100人集まると100倍馬鹿になる」
0358nobodyさん04/12/07 15:39:01ID:???
mod_parrotができたらこんなことできるの?

<?php4
$G = array(1,2,3);
?>

<?perl5
print "@$G";
?>
0359nobodyさん04/12/07 17:31:00ID:???
まぁできないだろうね。言語が違うんだから。
0360nobodyさん04/12/07 17:36:28ID:???
Parrotと関係なく出来るだろ
つーか何でキモPI
0361nobodyさん04/12/07 17:40:23ID:???
>>360
PHPがPI風味だから。
0362nobodyさん04/12/07 23:48:19ID:???
>>358
Parrotの解釈間違ってるぞ
0363nobodyさん04/12/08 03:08:23ID:???
>>358
http://www.smashing.org/mod_parrot/

Readmeによると、mod_parrotは parrot もしくは parrot VM を対象とした言語で
apacheのハンドラを書くことができるらしいです。
つまり、perlもphpも mod_parrot上で動かす事が出来るって事かな。

>>358の様な言語の混在については、現状のPHPでは難しいと思います。
php/parrot(PHP6)の実装はまだ見た事ないので、どのような仕様になるのかは知らないけど。

埋め込みスクリプト部分を言語毎に独立させる事が出来れば、
( <? } else { ?> みたいな構文を禁止すれば ...)
parrotを対象とした言語の、汎用テンプレートって可能性はあるかも。

0364nobodyさん04/12/10 19:37:29ID:???
つーか、HTMLへのスクリプト埋め込みなんて
頭の悪いことは止めなさい。
0365nobodyさん04/12/10 19:48:25ID:???
根拠が無いね。
0366nobodyさん04/12/10 23:19:41ID:???
今時HTMLとコードの分離をしない奴はど素人。
0367nobodyさん04/12/10 23:40:04ID:???
手段の一つと割り切れないようじゃまだまだだね
0368nobodyさん04/12/11 00:40:14ID:EQ2GnRJX
>>353
すごいな。正規表現をここまで昇華させたら
他のスクリプト言語は付いて来れないだろうな。
Parrotの思想も含めてPerlコミュニティーの天下取ったるという
貪欲さは半端じゃないね。
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と連係は出来ないようです。
コンパイラも含まれるようになるみたい。
■ このスレッドは過去ログ倉庫に格納されています