タグ

2021年8月17日のブックマーク (4件)

  • 所有権とは? - The Rust Programming Language 日本語版

    所有権とは? Rustの中心的な機能は、所有権です。この機能は、説明するのは簡単なのですが、言語の残りの機能全てにかかるほど 深い裏の意味を含んでいるのです。 全てのプログラムは、実行中にコンピュータのメモリの使用方法を管理する必要があります。プログラムが動作するにつれて、 定期的に使用されていないメモリを検索するガベージコレクションを持つ言語もありますが、他の言語では、 プログラマが明示的にメモリを確保したり、解放したりしなければなりません。Rustでは第3の選択肢を取っています: メモリは、コンパイラがコンパイル時にチェックする一定の規則とともに所有権システムを通じて管理されています。 どの所有権機能も、実行中にプログラムの動作を遅くすることはありません。 所有権は多くのプログラマにとって新しい概念なので、慣れるまでに時間がかかります。 嬉しいことに、Rustと、所有権システムの規則の

  • 制御フロー - The Rust Programming Language 日本語版

    制御フロー 条件が真かどうかによってコードを走らせるかどうかを決定したり、 条件が真の間繰り返しコードを走らせるか決定したりすることは、多くのプログラミング言語において、基的な構成ブロックです。 Rustコードの実行フローを制御する最も一般的な文法要素は、if式とループです。 if式 if式によって、条件に依存して枝分かれをさせることができます。条件を与え、以下のように宣言します。 「もし条件が合ったら、この一連のコードを実行しろ。条件に合わなければ、この一連のコードは実行するな」と。 projectsディレクトリにbranchesという名のプロジェクトを作ってif式について掘り下げていきましょう。 src/main.rsファイルに、以下のように入力してください: ファイル名: src/main.rs fn main() { let number = 3; if number < 5 {

    toru-kanimiso
    toru-kanimiso 2021/08/17
    if「式」
  • GitHub - vain0x/procon at f016133b83c42196837e1b2490ecb5e57ce1ff40

  • 式指向構文が言語処理系にもたらす複雑性

    以降、サンプルコードは Rust 風の構文で書く。ただし型システムや処理系は Rust とは限らない。 ジャンプとスタックマシンの相性の悪さ 式指向の構文を持つ場合、式の評価の途中でジャンプすることができる。 この関数をスタックマシンのコードにナイーブにコンパイルすると、次のような不正な振る舞いをする。 1 をスタックに積む 2 をスタックに積む return する。スタックから返り値 2 を pop して、関数から抜ける スタックから2つの値を pop して足し、和をスタックに積む (← ジャンプしたのでこれは実行されない) ここで 1 はスタックに置かれたままであり、関数の実行の前後でスタックの深さが維持されない。 解決策 この問題を解決するには、レジスタマシンを使うか、ジャンプする際に不要になった値をスタックから pop するようなコードを生成すればいい。 (追記: 正準化(cano