draft/faq.md)動的言語しか使用したことがありません。静的言語も勉強したほうがよいですか?これもよく聞かれる質問です。問題解決にあたって最適な道具を選択するのも、ソフトウェアエンジニアにとって大事なスキルのひとつです。以下は私の(まとまっていない)意見です。1%もないのですが、実際はそれ以上の割合で動的言語が使用されています。年くらいは、将来黒歴史として語り継がれるかもしれません。「原理的に遅い」けれど「コンピュータの速度は毎年速くなるから大丈夫!」といった「言い訳」のセリフも今となっては、通用しなくなってしまいました。書ける見込みはほぼゼロです。コンピュータの知識を身につけて「無駄なく」利用するという「いわれてみれば当たり前」のことが今後より重要視されるようになるでしょう。なんてことはない、もとの正常な状態に戻っただけです。「コンパイラ」技術や「ゼロコスト抽象化」といった技術は今後その価値が増す一方、それ以外の「コストが高い抽象化」の価値はどんどん失われていくことでしょう。「(速度はともかく)小規模なスクリプトだと静的言語より動的言語のほうが生産性が高いんです!」という主張も個人の限られた経験に基づくものがほとんどでたいていの場合疑ったほうがよいです。この主張をする人で、そもそもモダンな型システムをもっている安全で生産性の高いプログラミング言語の習得に、動的言語と同じくらいの時間を投資したことのある人はほとんどいないです。生産性についてちゃんとした議論をするためには、「静的言語」と「動的言語」というあいまいな言葉を使わないで、より具体的な個々のプログラミング言語にきちんと向き合うべきです。書くほうが生産性が上になっています。ひとつの価値観にとらわれることなく、実際に自分で触れて経験して発見することはとても大事です。使うって面倒じゃないですか?そう思っていた時期がありました。ビルドして別の実行ファイルをつくってくれます。[args...]ですぐにテスト実行できます。my-hello-worldで普通に呼び出せるので完全にスクリプト感覚で使用できます。置き換えようとはきっと思わなかったでしょう。初心者にプログラミングを教えるとき「変数は箱」は変ですか?やめましょう。その例えは表現力に乏しく、ほとんどのケースにおいて不適切ですぐに破綻します。オススメは最初からメモリをきちんと意識してもらうこと、これが一番の近道です。慣れないうちは、以下のようにメモリー上の「表」を自分で書いてみるのがよいです。「両方」を最初から意識することです。u8)慣れてくると、コードを見るだけでこのような「表」が自然と頭の中で構築されるようになるでしょう。関数呼び出しの際も「値渡し」「参照渡し」という曖昧な言葉を使うのはできるだけ避けて、最初からメモリ(スタック)を意識して理解するようにすれば、覚えなければいけない「ルール」はぐっと減ります。3);以下のようになります。変数の型はほとんどの場合省略できますがここではあえて書いています。値はここでは適当です。各変数の型や型のサイズも意識するとよいです。「間隔」も本来であれば型のサイズで調整します。実際はスタックに加えてヒープも意識する必要があります。以外はヒープにアロケートされます。常にヒープの表とスタックの表の両方を(最初のうちは)書くようにしましょう。エントリは、何度も同じ説明をホワイトボードに書くのがつらくなったため参照してもらうために書きました。