| パラダイム | マルチパラダイム:命令型、関数型、オブジェクト指向、手続き型、リフレクション型 |
|---|---|
| 家族 | PHP の |
| デザイン: | ジュリアン・ヴェルラゲ、アロック・メングラジャニ、ドリュー・パロスキ、他[1] |
| 開発者 | メタプラットフォーム |
| 初登場 | 2014年 |
| 安定版リリース | 4.172
/ 2022年11月2日 |
| タイピングの規律 | 静的、動的、弱い、漸進的 |
| OS | クロスプラットフォーム |
| ライセンス | マサチューセッツ工科大学[2] |
| Webサイト | 翻訳: |
| 影響を受けた | |
| PHP、OCaml、Java、C#、Scala、Haskell | |
Hackは、 Meta (旧Facebook)がPHPの方言として作成した、 HipHop Virtual Machine(HHVM)用のプログラミング言語です。言語の実装は、 MITライセンスの下でライセンスされる無料のオープンソースソフトウェアです。[2] [3] [4]
Hackでは、動的型付けと静的型付けの両方を使用できます。この種の型システムは段階的型付けと呼ばれ、 ActionScriptなどの他のプログラミング言語でも実装されています。[5] Hackの型システムでは、関数の 引数、関数の戻り値、およびクラスプロパティの型を指定できますが、ローカル変数の型は常に推論され、指定することはできません。[3] [6]
歴史
Hackは2014年3月20日に導入されました。[7]新しい言語が発表される前に、Facebookはすでにコードを実装し、ウェブサイトの大部分でテストしていました。
特徴
Hackは、 Web開発に重点を置き、 HTMLに埋め込むことができる、広く使用されているオープンソースのスクリプト言語であるPHPとシームレスに相互運用できるように設計されています。有効なPHPスクリプトの大部分はHackでも有効ですが、あまり使用されないPHPの機能や言語構造の多くはHackではサポートされていません。[8]
Hack は、静的型付けの導入、新しい型ヒントの追加 (たとえば、整数や文字列などのスカラー型)、型ヒントの使用の拡張 (たとえば、クラス プロパティや関数の戻り値) によって、PHP 5 で利用可能な型ヒントを拡張します。ただし、ローカル変数の型を指定することはできません。[6] Hack は段階的な型付けシステムを使用しているため、デフォルト モードでは、推論できない場所でも型注釈は必須ではありません。型システムは、作成者が正しいと想定し、コードを受け入れます。[9]ただし、そのような注釈を必須とする「厳密」モードがあり、完全に健全なコードが強制されます。[10]
構文と意味
Hack スクリプトの基本的なファイル構造は、いくつかの変更点を除いて PHP スクリプトに似ています。Hack ファイルには<?php開始マークアップ タグが含まれず、トップレベルの宣言の使用が禁止されています。[11]コードはエントリポイント関数に配置する必要があります。これらはトップレベルのファイルにある場合は自動的に実行されますが、ファイルがinclude、require、またはオートローダー経由でインクルードされている場合は実行されません。Hack の他の関数と同様に、関数名はプロジェクト内で一意である必要があります。つまり、複数のエントリポイントを持つプロジェクトで、両方を と呼ぶことはできませんmain。
<< __EntryPoint >>
関数 main () : void {
echo 'Hello, World!' ;
}
上記のスクリプトは PHP と同様に実行され、次の出力がブラウザに送信されます。
こんにちは世界!
PHPとは異なり、HackとHTMLコードは混在できません。XHPまたは別のテンプレートエンジンを使用する必要があります。[8]
機能
PHP 7 と同様に、Hack では関数の引数と戻り値の型を指定できます。したがって、Hack の関数には次のような型が注釈として付けられます。
// ハック関数には型が注釈として付けられます。
function negate ( bool $x ) : bool {
return ! $x ;
}
参照
参考文献
- ^ O'Sullivan, Bryan (2014-03-28). 「Where Credit Belongs for Hack」。2021-03-01時点のオリジナルよりアーカイブ。2019-02-06閲覧。
- ^ ab "facebook/hhvm: hhvm, hphp, hack, License". GitHub.com . Meta Platforms . 2018-04-11. 2019-01-07 にオリジナルからアーカイブ。 2019-02-06に取得。
- ^ ab Lockhart, Josh (2014-04-03). 「Facebook の Hack、HHVM、そして PHP の将来」O'Reilly Media。 2019 年 1 月 7 日時点のオリジナルよりアーカイブ。 2019 年 2 月 6 日閲覧。
- ^ Cade Metz (2014-03-20). 「Facebookが未来のプログラミング言語『Hack』を発表」Wired。 2014-03-28時点のオリジナルよりアーカイブ。 2019-02-06閲覧。
- ^ Aseem Rastogi、Avik Chaudhuri、Basil Hosmer (2012 年 1 月)。「段階的型推論の詳細」(PDF)。Association for Computing Machinery (ACM) 。2017 年 8 月 12 日時点のオリジナルよりアーカイブ(PDF) 。2019 年 2 月 6 日閲覧。
- ^ ab 「Hack Manual: Hack and HHVM – Type Annotations」。docs.hhvm.com。 2018年8月2日時点のオリジナルよりアーカイブ。2019年2月6日閲覧。
- ^ Verlaguet, Julien; Menghrajani, GANDHI (2014-03-20). 「Hack: HHVM 向けの新しいプログラミング言語」Facebook . 2019-02-09 にオリジナルからアーカイブ。2019-02-06に取得。
{{cite web}}:無効|url-status=deprecated(ヘルプ) - ^ ab 「Inconsistencies: Introduction」。docs.hhvm.com。 2019年4月4日時点のオリジナルよりアーカイブ。2019年4月4日閲覧。
- ^ 「ハックマニュアル: 部分モード」。docs.hhvm.com 。 2018年11月19日時点のオリジナルよりアーカイブ。2019年2月6日閲覧。
- ^ 「ハックマニュアル: 厳密モード」。docs.hhvm.com。2018年11月19日時点のオリジナルよりアーカイブ。2019年2月6日閲覧。
- ^ Emmott, Fred (2019-02-11). 「HHVM 4.0.0」hhvm.com . 2021-05-14時点のオリジナルよりアーカイブ。2019-05-02閲覧。
外部リンク
- 公式サイト 言語リファレンス
- Facebook Q&A: Hack が PHP の世界に静的型付けをもたらす
- 既存のPHPプロジェクトをHackに変換するチュートリアル
- KPHP: PHP の実行可能な形式セマンティクス
