楽のマスコット、カメリア[1] | |
| パラダイム | マルチパラダイム |
|---|---|
| 家族 | パール |
| デザイン: | ラリー・ウォール |
| 開発者 | 楽コミュニティ |
| 初登場 | 2015年12月25日 |
| 安定版リリース | 6.d「ディワリ」[2]
/ 2020年10月24日 |
| タイピングの規律 | ダイナミック、段階的 |
| OS | クロスプラットフォーム |
| ライセンス | GNU 一般公衆または芸術 2 |
| ファイル名拡張子 | .raku、.rakumod、.rakudoc、.t、.rakutest [3] |
| Webサイト | raku.org |
| 主な実装 | |
| 楽土 | |
| 影響を受けた | |
| Perl、Ruby、Smalltalk、Haskell、[4] JavaScript | |
| 影響を受けた | |
| Perl、[5] Haskell、[5] AntLang | |
RakuはPerlファミリーのプログラミング言語の一つです。[6]以前はPerl 6と呼ばれていましたが、2019年10月に改名されました。 [7] [8] Rakuは多くの現代言語と歴史的言語の要素を導入しています。Perlとの互換性は目標ではありませんでしたが、互換モードは仕様の一部です。Rakuの設計プロセスは2000年に始まりました。
歴史
Perl 6 では、ユーザーを修正するよりも言語を修正する方がよいと判断しました。
— ラリー・ウォール[9]
Raku の設計プロセスは、2000 年 7 月 19 日、その年のPerl カンファレンスの 4 日目、[10]に、ラリー ウォールがState of the Onion 2000 の講演で初めて発表されました。[11]当時の主な目標は、言語から「歴史的な欠点」を取り除くこと、「簡単なことは簡単なまま、難しいことはもっと簡単に、不可能なことはもっと難しく」、そして内部設計とアプリケーション プログラミング インターフェイス(API) を全体的に整理することでした。このプロセスは、一連のRequest for Comments (RFC) から始まりました。このプロセスはすべての貢献者に公開されており、言語のどの側面も変更の余地がありませんでした。[12]
RFC プロセスが完了すると、ウォールは受け取った 361 件のリクエストをそれぞれ確認し、分類しました。その後、彼は「黙示録」という用語の本来の意味である「暴露」を使用して、いくつかの「黙示録」の作成プロセスを開始しました。[13]当初の目標は、 Programming Perlの各章に 1 つの黙示録を作成することでしたが、黙示録が作成されるにつれて、以前の黙示録がその後の変更によって無効になっていることが明らかになりました。このため、黙示録の内容に関連する一連の概要が公開されましたが、その後の変更は更新に反映されました。今日、Raku 仕様は「roast」テスト スイート[14]を通じて管理され、概要は歴史的参照として保持されています。[15]
また、ダミアン・コンウェイが書いた一連の解説書では、各黙示録の内容を実用的な観点から説明しています。各解説書は、コード例と、その例の使用方法と意味についての議論で構成されています。[16]
現在、Rakuの開発には主に3つのコミュニケーション方法が使用されています。1つ目はLibera ChatのRakuインターネットリレーチャット(IRC)チャンネルです。2つ目はメーリングリストのセットです。[17] 3つ目はGitHubでホストされているGitソースコードリポジトリです。[18]
当初の目標と影響
ウォールが最初のスピーチで示唆した主な目標は、歴史的な欠点を取り除くことでした。これには、コンテナのシギルの使用に関する混乱、関数間の曖昧さ、ベアワードファイルハンドルselectの構文上の影響などが含まれます。Perl プログラマーが何年も前から解決を議論してきた他の多くの問題があり、ウォールはスピーチでこれらについて明確に言及しました。[要出典]
これらの目標は、Perl 6 が既存の Perl コードベースとの下位互換性を持たないことを意味していました。つまり、Perl 5 コンパイラによって正しく解釈された一部のコードは、Perl 6 コンパイラでは受け入れられないということです。下位互換性はソフトウェアを拡張する際の共通の目標であるため、Perl 6 での互換性を破る変更は明示的に記述する必要がありました。Perl 5 と Perl 6 の違いは非常に大きくなったため、最終的に Perl 6 は Raku に名前が変更されました。
マスコット

この言語のマスコットは「楽虫カメリア」である。[1]彼女の名前はPerl に関連するラクダのマスコットにちなんでおり、彼女の形は、Perl コミュニティの駄洒落好きの伝統にのっとり、「ソフトウェア バグ」をもじったものである。蝶のような羽に埋め込まれた螺旋状のデザインは、Perl 6 の愛称である「P6」の文字に似ており、中心からずれた目の配置は「Wall-eyed」を意図的に駄洒落にしたものである。[19]
ロゴの生き生きとしたカラフルなデザインの背後にある目標の1つは、コミュニティ内の女性蔑視を抑制し、「男性的な傾向」を持つ人々が繊細な側面を示す機会となることであった。[20]
実装
2017年現在[アップデート]、Rakudo実装のみが活発に開発されています。公式のRaku実装として指定される実装はありません。むしろ、「Rakuとは公式のテストスイートに合格したものすべてです。」[21]
Rakudo Perl 6 [22] [23] は、MoarVM、Java仮想マシン、JavaScriptなどのいくつかの仮想マシンを対象としています。MoarVMは、 Rakudo [24]とNQPコンパイラツールチェーン[25]のために特別に構築された仮想マシンです。Rakuと仮想マシンの間には、Not Quite Perl 6 (NQP)と呼ばれるレイヤーがあり、 Rakuを解析するためのRakuルール、抽象構文木、バックエンド固有のコード生成を実装しています。Rakudoの大部分は、RakuまたはそのサブセットであるNQPで書かれています。Rakudoは完全にセルフホスティングな実装ではなく、現時点ではRakudoをブートストラップコンパイラにする具体的な計画もありません。
過去の実装
Pugsは、オードリー・タンが主導したHaskellで書かれたPerl 6の最初の実装でした。PugsはかつてPerl 6の最も先進的な実装でしたが、2007年半ば以降、ほとんど休止状態になっています(グラスゴー・ハスケル・コンパイラ(GHC)の現在のバージョンを追跡するためだけに更新が行われました)。2014年11月現在、Pugsはメンテナンスされていません。[26]
2007年、v6-MiniPerl6 ("mp6") とその再実装である v6-KindaPerl6 ("kp6") は、Perl 5 を使用して Perl-6.0.0 STD をブートストラップする手段として書かれました。STD は Perl 6 の完全な文法であり、Perl 6 で書かれています。理論上は、STD を解析して実行可能コードを生成できるものはすべて、Perl 6 の適切なブートストラップ システムです。kp6 は現在 mp6 によってコンパイルされており、複数のバックエンドで動作できます。[27] [28] mp6 と kp6 は完全な Perl 6 実装ではなく、完全な Perl 6 コンパイラをブートストラップするために必要な最小限の機能セットを実装するように設計されています。
YapsiはPerl 6で書かれたPerl 6コンパイラとランタイムでした。そのため、実行するにはRakudo Starリリースなどの既存のPerl 6インタープリタが必要でした。[29]
Perl 6のもう一つの主要な実装プロジェクトであるNieczaは、最適化と効率的な実装の研究に焦点を当てており、共通言語基盤を対象としています。[30]
モジュールシステム
Raku仕様では、モジュールは名前、バージョン、権限で識別されることが要求されています。[31]モジュールの特定のバージョンのみをロードすることも、バージョンや権限が異なる同じ名前の2つのモジュールをロードすることもできます。便宜上、短い名前への エイリアスが提供されています。
Perlモジュール配布システムであるCPANはまだRakuモジュールを扱っていない。代わりにプロトタイプモジュールシステムが使用されている。[32]
書籍
Perl 6 バージョン 1.0 (バージョン 6.c として知られる) 以前に出版された書籍
- Randal, Allison; Sugalski, Dan; Tötsch, Leopold (2003)。Perl 6 Essentials (第 1 版)。O'Reilly Media。ISBN 978-0-596-00499-6。
- Randal, Allison; Sugalski, Dan; Tötsch, Leopold (2004)。Perl 6 および Parrot Essentials (第 2 版)。O'Reilly Media。ISBN 978-0-596-00737-9。
- ウォルターズ、スコット(2004 年 12 月 15 日)。Perl 6 Now: Perl 5 で解説するコアアイデア。オープンソースの専門家の声。ISBN 978-1-59059-395-0。
また、最初の Perl 6 仮想マシンの 1 つである Parrot に特化した書籍が 2009 年に出版されました。
- ランダル、アリソン、ウィットワース、アンドリュー (2009 年 6 月 15 日)。Parrot 開発者ガイド: Pir。Onyx Neon Press。ISBN 978-0-9779201-2-9。
Perl 6 バージョン 1.0 (バージョン 6.c として知られる) 以降に出版された書籍
- シトフ、アンドリュー (2017)。Perl 6 の概要。Amazon Digital Services LLC - Kdp。ISBN 978-90-821568-3-6。
- ローゼンフェルド、ローラン; ダウニー、アレン B. (2017)。Think Perl 6。オライリーメディア。ISBN 978-1-4919-8055-2。
- Merelo, JJ (2017 年 7 月 9 日)。Perl 6 でプログラミングを学ぶ: 最初のステップ: コマンドラインを離れずにプログラミングを始める。Perl でプログラミングを学ぶ。ISBN 978-1-5217-9578-1。
- レンツ、モーリッツ (2017 年 7 月 27 日) Perl 6 の基礎。アプレス。ISBN 978-1-4842-2898-2。
- シトフ、アンドリュー(2017年9月7日)。Perl 6 Deep Dive。Packt Publishing, Limited。ISBN 978-1-78728-204-9。
- シトフ、アンドリュー (2017)。Perl 6 の使用。ISBN 978-90-821568-1-2。
- Szabo, Gabor (2017 年 12 月 3 日)。Perl 6 での Web アプリケーション開発。著者。
- Lenz, Moritz (2017 年 12 月 4 日)。Perl 6 正規表現と文法による解析: 再帰的解析への道。Apress。ISBN 978-1-4842-3228-6。
- Foy, Brian D. (2018). Learning Perl 6. O'Reilly Media. ISBN 978-1-4919-7768-2。
新しい楽名義で出版された書籍
- Shitov, Andrew (2019 年 10 月 13 日)。Raku の使用: Raku プログラミング言語で解決する 100 のプログラミング課題 (第 2 版)。Suzi K Edwards。ISBN 978-90-821568-8-1。
- シトフ、アンドリュー(2019年10月18日)。Raku One-Liners:日々のルーチンにRakuの表現力豊かな構文を最大限に活用する。Amazon Digital Services LLC - Kdp。ISBN 978-90-821568-9-8。
- Lenz, Moritz (2020 年 9 月 6 日)。Raku の基礎: 例、プロジェクト、ケーススタディを交えた入門書。Apress。doi : 10.1007 /978-1-4842-6109-5。ISBN 978-1-4842-6108-8。
参考文献
- ^ ab Jackson, Joab (2010 年 7 月 23 日)。「Perl の作者が待望の Perl 6 のリリース間近を示唆」IDG ニュース サービス。2015年2 月 8 日閲覧。
- ^ 「発表: Raku Perl 6 'Diwali' 6.d 言語仕様リリース」。blogs.perl.org。Zoffix Znet。2018年11月5日。 2022年8月19日閲覧。
- ^ 「モジュール」. docs.raku.org . 2022年8月19日閲覧。
- ^ 「用語集」。Perl Foundation Perl 6 Wiki。Perl Foundation。2011年2月28日。2012年1月21日時点のオリジナルよりアーカイブ。2015年2月8日閲覧。
- ^ ab 唐鳳、別名Audrey Tang (2010 年 4 月 21 日)。「2010 年に Perl 6 を実装する方法」。
- ^ 「Perlについて」 perl.org . 2020年6月11日閲覧。
「Perl」は言語ファミリーであり、「Raku」(旧称「Perl 6」)はそのファミリーの一部ですが、独自の開発チームを持つ別の言語です。その存在は、「Perl」の継続的な開発に大きな影響を与えません。
- ^ 「Perl 6 が Raku に改名」LWN.net 2019 年 10 月 15 日. 2019 年10 月 16 日閲覧。
- ^ 「Raku の名称変更に対する TPF の対応」 2019 年 10 月 29 日。
- ^ Biancuzzi, Federico; Warden, Shane (2009)。プログラミングの達人: 主要プログラミング言語のクリエーターとの対話。「O'Reilly Media, Inc.」。ISBN 978-0596515171。
- ^ Kline, Joe (2000 年 8 月 21 日)。「Perl カンファレンスからの報告」。
- ^ Wall, Larry (2000)。「State of the Onion 2000」、O'Reilly Network。
- ^ Perl Foundation (2000)。「Perl 6 RFC について」。
- ^ ウォール、ラリー(2001年4月2日)。「黙示録1:醜いもの、悪いもの、そして良いもの」。
- ^ 「Raku テストスイート」。GitHub。2019年。
- ^ Wall, Larry ; Perl 6 設計者 (2015)。「Perl 6 設計ドキュメント」。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ Perl Foundation (2001)。「解説」。
- ^ Rakuプログラミング言語(2022年)。「Rakuコミュニティ」。
- ^ “Raku”. GitHub . 2022年8月19日閲覧。
- ^ 「IRCチャットログのLarry Wall」2016年1月15日。 2017年11月10日閲覧。
- ^ 「Larry Wall からの「ロゴに関する考慮事項」メールのアーカイブ」。GitHub。2009年3 月 24 日。2017年11 月 10 日閲覧。
- ^ Wall, Larry (2004年8月10日). 「概要1: 概要」.
- ^ "rakudo/rakudo - GitHub". Github.com . 2013年9月21日閲覧。
- ^ Michaud, Patrick (2008年1月16日). 「以前は「perl6」と呼ばれていたコンパイラ」。2012年2月18日時点のオリジナルよりアーカイブ。
- ^ ワージントン、ジョナサン (2013 年 5 月 31 日)。「MoarVM: NQP および Rakudo 用の仮想マシン」。6guts。2013年7月 24 日閲覧。
- ^ 「NQP - Not Quite Perl at github」. GitHub . 2022年5月29日. 2022年5月29日閲覧。
- ^ 「Perl 6 コンパイラの機能比較」。2019年2月7日時点のオリジナルよりアーカイブ。
- ^ Wall, Larry他 (2007). 「Perl 6 STD」. GitHub .
- ^ 「mp6/kp6 FAQ」。Perl 6 開発チーム。2006 年。
- ^ 「Yapsi README」。GitHub。2011年。
- ^ O'Rear, Stefan (2011 年 11 月 29 日). 「Niecza README.pod」. GitHub . 2012 年1 月 12 日閲覧。
- ^ Wall, Larry (2004). 「概要 11: モジュール」.
- ^ 「Perl 6 モジュール ディレクトリ」。Modules.raku.org 。2020年5 月 17 日閲覧。
外部リンク
- 公式サイト
