「Hack (プログラミング言語)」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
|||
| (3人の利用者による、間の6版が非表示) | |||
| 1行目: | 1行目: | ||
'''Hack''' | '''Hack'''(読み:はっく)とは、[[PHP]]から派生した[[プログラミング言語]]である。 | ||
== 概要 == | == 概要 == | ||
Hackは[[Facebook]]が2014年に発表した[[PHP]]を[[魔改造]]した[[プログラミング言語]]である<ref>https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/</ref>。PHP自体を魔改造により独自拡張したものなので長い歳月をかけてアホみたいに増えまくった[[PHP]]の関数群もそのまま使える。 | Hackは[[Facebook]]が2014年に発表した[[PHP]]を[[魔改造]]した[[プログラミング言語]]である<ref>https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/</ref>。PHP自体を魔改造により独自拡張したものなので長い歳月をかけてアホみたいに増えまくった[[PHP]]の関数群もそのまま使える。 | ||
Hackは[[JavaVM]]の[[パクリ]]のような[[HHVM]] | Hackは[[JavaVM]]の[[パクリ]]のような[[HHVM]]([[ヒップホップ仮想マシン]])という[[仮想マシン]]の上で動作する。ヒップホップ仮想マシン自体は古くから有名であり、もともとは[[PHP]]を[[中間コード]]にして多段階で[[最適化]]する手法を実現したかったようだ。ただ、これだけ聞くと[[Phalanger]]の[[車輪の再発明]]のように思えるが真相は不明である。 | ||
HHVM実行環境の[[ソースコード]]は[[PHPライセンス]]および[[Zendライセンス]]の下で公開されている。 | HHVM実行環境の[[ソースコード]]は[[PHPライセンス]]および[[Zendライセンス]]の下で公開されている。 | ||
| 92行目: | 92行目: | ||
</source> | </source> | ||
== 感想 == | ===newtype=== | ||
Hackには[[C++]]の[[typedef]]のようなものが搭載されている。 | |||
<source lang="php"> | |||
newtype RoofRaised = float; | |||
</source> | |||
「[[Bjarne Stroustrup インタビュー]]」の一説で、「RoofRaised って何だと思って、長い時間をかけてヘッダーファイルを調べてみたら、ただの double だった、なんてことがよくあったでしょ。大規模なプロジェクトのすべてのクラスで暗黙の typedef を見つけ出すのにどれくらい時間がかかると思う? 」などと馬鹿にされたアレである。 | |||
一方、Hackのnewtypeは若干良くなっており、既存の型に制約を与えるための物として機能する。 | |||
<source lang="php"> | |||
<?hh | |||
// email型を宣言 | |||
newtype email = string; | |||
// 引数mailに渡す値は、email型に明示的にキャストしていないとエラーになる。 | |||
function setName(email $mail) : void | |||
{ | |||
} | |||
</source> | |||
===浮動小数点型はfloatに統一=== | |||
[[PHP]]では[[浮動小数点型]]を巡るfloat派とdouble派の抗争が頻発していたが、Hackでは「float」に統一された。float派の[[大勝利]]である。 | |||
<source lang="php"> | |||
float $win = 1.0; | |||
double $lose = 0.0; //エラーになるよ | |||
</source> | |||
=== 感想 === | |||
ざっくり見た感じ[[Phalanger]]に近い。 | ざっくり見た感じ[[Phalanger]]に近い。 | ||
==インストール== | |||
Hackは[[HHVM]]([[ヒップホップ仮想マシン]])の[[ソースコード]]の中に埋蔵されている。最新のHHVMの[[ソースコード]]を[[ダウンロード]]してきて[[ビルド]]すれば実行環境は整う。 | |||
==関連項目== | ==関連項目== | ||
*[[PHP]] | *[[PHP]] | ||
*[[Facebook]] | *[[Facebook]] | ||
*[[Hack]] - 曖昧 | |||
*[[HUCK]] - 名古屋大学のアドベンチャーサークル「Huckleberry Finn(ハックルベリーフィン)」の略称。かつて鳥取砂丘に描かれて話題になった。 | |||
==外部リンク== | ==外部リンク== | ||
| 105行目: | 137行目: | ||
{{reflist}} | {{reflist}} | ||
[[category: プログラミング言語]] | |||
[[category: PHP]] | |||