Hack (プログラミング言語)

提供: miniwiki
2018/8/19/ (日) 20:03時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索
Hack
200px
登場時期 2014年
設計者 Julien Verlaguet, Alok Menghrajani, and others[1]
開発者 Facebook
型付け 静的、動的、弱い型付け
影響を受けた言語 PHP, Java, C#
プラットフォーム クロスプラットフォーム
ウェブサイト hacklang.org
テンプレートを表示


Hackは、Facebookにより開発されたプログラミング言語である。オープンソースとして公開されており、同社が開発したPHP実行環境のHipHop仮想マシン (HHVM) で動作する[2]

HackはHHVM環境で動作するPHPの新しいバージョンと見なすこともできるが、PHPとは異なり動的/静的双方の型システムが使用可能となっている。FacebookではHackを「漸進的型付き言語」であるとしており、これがHackの強みとされている。

歴史

Hackは2014年3月20日に一般に公開された[3]。Hackは公開以前からFacebook社内において広く使用されており、同社の実環境における厳しいテストをくぐり抜け開発された。

Hackの登場はPHPにも影響を与えており、2015年12月にリリースされたPHP7は、Hackと同一構文の型システムを搭載している。

特徴

Hackの特徴としては、Web開発において広く用いられているPHPとシームレスに連携できることがまず挙げられる。PHPで書かれたほとんどのスクリプトは、そのままHackのスクリプトとして実行可能である。[4] Hackの型システムでは、関数引数戻り値クラスプロパティに型の指定が可能となる(ローカル変数は不可)[5][6]

構文

Hackスクリプトの基本的なファイル構造は、PHPスクリプトのものとわずかに異なるもののほぼ同じである。PHPがスクリプトの開始を <?php で宣言するのに対して、Hackでは <?hh で宣言する。

<?hh
echo 'Hello World';

上のスクリプトはPHPと酷似している。実行すると、以下の出力がブラウザに対して与えられる。

Hello World

注意が必要な点だが、HackのコードはPHPのようにHTML中に埋め込むことができない。例えば、PHPでは以下のようにPHPとHTMLを一つのファイルに記述することができる。

<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <!-- hhではこうした記述はできない -->
        <?php echo '<p>Hello World</p>'; ?> 
    </body>
</html>

しかし、Hackではこの構文はサポートされていない。そうした用途には、同じくFacebookが開発したXHPEnglish版や、別途テンプレートエンジンを用いる必要がある。[4]

関数

Hackでは関数引数戻り値に型を指定することができる。型の指定は以下のように行う。

<?hh
// Hackの関数では以下のように型を指定する。
function negate(bool $x): bool {
    return !$x;
}

参考文献

  1. Contributors to facebook/hhvm”. Github.com. . 2014閲覧.
  2. Cade Metz (2014年3月20日). “Facebook Introduces 'Hack,' the Programming Language of the Future”. wired.com. . 2014閲覧.
  3. Hack: a new programming language for HHVM”. Code.facebook.com. . 2014閲覧.
  4. 4.0 4.1 Hack and HHVM: Unsupported PHP Features in Hack - Manual”. Docs.hhvm.com. . 2014閲覧.
  5. Hack and HHVM: Type Annotations - Manual”. Docs.hhvm.com. . 2014閲覧.
  6. Hack and HHVM: Type Inference - Manual”. Docs.hhvm.com. . 2014閲覧.

関連項目

外部リンク

テンプレート:PHP