Pikeは、
インタプリタ型の汎用高級
クロスプラットフォーム動的プログラミング言語であり、
C言語に非常によく似た文法を持っています。他の動的言語とは異なり、Pikeは静的型付けと
動的型付けの両方に対応しており、明示的な型定義が必須です。この柔軟な
型システムにより、動的型付き言語のような素早い開発とコードの柔軟性を持ちながら、静的型付き言語の利点も兼ね備えています。Pikeには、ガベージコレクション機能、豊富な
データ型、第一級無名関数、さらにオブジェクト指向、関数型、
命令型プログラミングといった多岐にわたる
プログラミングパラダイムのサポートが含まれています。
Pikeは自由ソフトウェアとして提供されており、GPL、LGPL、MPLの各ライセンスの下で利用できます。
歴史
Pikeのルーツは、MUD(Multi-User Dungeon)というオンラインゲームのために開発されたLPCという言語にあります。スウェーデンの
リンショーピング大学のコンピュータ同好会Lysatorに所属していたFredrik HübinetteとPer Hedborらが、MUDドライバから言語部分と仮想機械部分を分離し、様々なアプリケーションの高速プロトタイピング言語として利用しました。LPCのライセンスが商用利用を許可していなかったため、1994年に新たにGPLで実装されたのがμLPC(マイクロLPC)です。1996年、商用利用の拡大を目指し、μLPCはPikeと改名されました。Pikeはカワカマス類の魚を意味し、ロゴにもカワカマスが描かれています。
彼らが設立した会社は現在Roxen Internet Softwareとして知られ、多くのPikeプログラマを抱え、Pikeの開発に関するリソースを提供しています。2002年には、
リンショーピング大学のプログラミング環境研究所がRoxenに代わり、Pikeの保守を引き継ぎました。その後、Pikeプログラマの一部は
オペラ・ソフトウェアのリンショーピング事業所に就職し、
Opera Miniアプリケーションのサーバ/ゲートウェイ部分でPikeが使用されています。
文法の概要
Pikeでの
Hello World|Hello_worldプログラムは次のようになります。
pike
int main()
{
write("
Hello World|Hello_world
");
return 0;
}
このプログラムの各要素を解説すると以下のようになります。
最初の行は`main`関数の開始を宣言し、インタープリタにプログラムの実行開始位置を伝えます。
`write`関数は、標準出力バッファに文字列リテラルを送信します。この出力は、通常コマンドラインインターフェースに表示されます。
3行目は、`main`関数が終了する際の状態を定義しています。
最後の行は、インタープリタに`main`関数の終端を知らせます。
Pikeが提供する標準
データ型は以下の通りです。より高度な
データ型(シーケンス、キュー、ヒープ、スタックなど)は、ADT(Advanced Data Types)モジュールにまとめられており、Pikeに標準で含まれています。
`int`: 整数
`float`: 浮動小数点数
`string`: 文字列
コンテナ型
`array`: 配列
`mapping`: マッピング (連想配列)
`multiset`: マルチセット
その他の型
`program`: コンパイルされたクラス
`object`: クラスのインスタンス
`function`: 関数
Pikeでは、すべての変数に明示的な型宣言が必須です。これは静的型付き言語の特性であり、コンパイル時に型の不一致を検出します。たとえば、次のコードでは、変数`number`が整数型として宣言されているため、浮動小数点数や文字列を代入しようとするとコンパイルエラーが発生します。
pike
int number = 10;
number = 3.14; // コンパイルエラー
number = "text"; // コンパイルエラー
この厳格な型付けは、動的プログラミング言語としては制約が強すぎると感じられることがあります。しかし、C、C++、Javaとは異なり、Pikeはより柔軟な型システム(タグ付き共用体)を採用しています。このシステムでは、複数の型を格納できる変数を宣言できます。C言語系の言語では、共用体の境界を意識しなければ同様のことは実現できません。
次の例では、整数または浮動小数点数を格納できる単一の変数を定義しています。
pike
mixed number = 10; // 整数を代入
number = 3.14; // 浮動小数点数を代入
変数が複数のデータ型の値を保持できるため、変数がどのデータ型を保持しているかを確認できる関数群があります。これらはデータ型の名前に`p`を後置した名前で、`intp`、`floatp`、`stringp`などがあります。
さらに、特別なデータ型`mixed`があります。`mixed`型の変数には、任意のデータ型の値を代入できます。
pike
mixed data;
data = 10; // 整数
data = 3.14; // 浮動小数点数
data = "string"; // 文字列
Pikeでは、値の型を変換する手段として、明示的なキャストも使用できます。
pike
int i = (int) 3.14; // 浮動小数点数を整数にキャスト
string s = (string) 123; // 整数を文字列にキャスト
脚注
外部リンク
Home - Pike Programming Language 公式ウェブサイト
コミュニティ
* Pikeのコミュニティでは、メーリングリストやIRCチャンネルなどを通じて、情報交換やサポートが行われています。詳細については、公式ウェブサイトを参照してください。