UEFN を使って Verse にアクセスする方法を学んだので、次は基本的なプログラミング用語についての理解を深めましょう。
このレッスンでは非常に基本的なことから開始します。 これらの用語についてすでにご存じの方も、今一度ここで再確認してください。 後のレッスンが前のレッスンを参照することがあるため、1 つのレッスンから次のレッスンへのコンテキストと連続性を持たせるのは良いことです。
プログラムとは
プログラムは、コンピュータに動作を指示する一連の命令です。 プログラムでは、入力 (受信する情報) を受け取る方法と 出力 (送信する情報) を返す方法をコンピュータに指示します。
Verse
Verse は、ビデオ ゲームやシミュレーションを念頭に設計されたプログラミング言語です。 ゲーム固有のニーズに非常に適しています。
Verse 言語の機能
Verse プログラムでは問題を解決します。
しかし、コンピュータは非常にリテラルであり、 「悪霊との契約」のように、求めたとおりのものが得られます。 そのとおりです。
エラーが発生するのは、プログラマーが正確な命令を与えずに、処理の動作を想定した場合です。
コンパイル
プログラムは人間が理解できるように書かれますが、 コンピュータに対しては、プログラムをコンピュータが理解できるような形に変換する必要があります。
この処理はコンパイラによって行われます。コンパイラでは、プログラムを人間が理解する言語から機械が理解する言語に変換またはコンパイルします。
アルゴリズム
アルゴリズム は、問題を解決したりタスクを達成したりするために記述される一連の命令です。 プログラムがどのように機能すべきかを定義するモデルだとして考えてください。
猫にエサをあげる手順を例に取ると、 そのアルゴリズムは次のようになります。
棚からキャット フードの缶を取る。
エサ入れを取り出してカウンターに置く。
エサ入れの横にスプーンを置く。
キャット フードの缶を開ける。
スプーンでエサを取り出して、エサ入れに入れる。
猫が届く位置にボウルを置く。
12 時間後に同じことを繰り返す。
上記のステップのいずれかが行われないと、猫にエサをあげることができません。 すべてが順序どおりに行われると、満腹で幸せな猫という結果になります。
エサやりが完了しました!
「フォートナイト クリエイティブ」では、仕掛けを使ってゲーム メカニクスを構築する際にアルゴリズムを設定します。 プレイヤーはどのようにしてゲームの目的を達成できるか、 どのデバイスでゲームプレイを進めるか、 どのデバイスでブロックするか、 不適切な仕掛けが使用された場合や、不適切なシーケンスで使用された場合にどうするか、といった要素を設定します。
Verse でのプログラミングは、アルゴリズムをコンピュータが理解できる命令に変換することによって、ゲーム メカニクスを作成する優れた方法です。 「お気に入りの曲の歌詞を覚える」と一層楽しめるのと同様に、その内容と手順を一度覚えれば、楽しみながらすばやく作業を行うことができます。また、フォートナイト クリエイティブにはないメカニクスを構築することも可能です。
アルゴリズムをテストする
のどの渇きに次のように対処しましょう。 実生活でアルゴリズムがどのように機能するかを調べます。
一杯のお茶またはコーヒーを入れるアルゴリズムを書き出します。
そのアルゴリズムに正確に沿ってお茶を入れます。
入れたお茶を飲んでみて、美味しいかどうかを判断します。
美味しければアルゴリズムは終了です。
美味しくない場合は一連のステップをデバッグし、欠落しているステップや適切に行われなかったステップを特定して修正します。
美味しいお茶が入るまで、一連のステップを イテレート (設計の変更とともに繰り返すこと) します。
ソース コードとマシン コード
ソース コード、もしくは単にコードは、プログラマーによって書かれるプログラムです。 これが ソース コード と呼ばれるのは、これが最初に書かれたとおりのプログラムのバージョン、つまりプログラムの ソース であるためです。 マシン コードは、コンピュータが理解可能な形にコンパイルされた結果として得られるプログラムです。
コードとプログラムは同じ意味で使用され、プログラムもコードと呼ばれることがあります。
実行
コンピュータがプログラムでステップを実行する時、そのプログラムが 実行 されると表現します。 コードが予期どおりに実行されない場合やコンパイルが失敗する場合は、コードにエラーがあります。
コードのエラー
発生する可能性があるコードのエラーには、次の 2 種類があります。
コンパイラ エラー — コンピュータが理解できる言語にコードをコンパイルできない場合です。
バグ — コードのコンパイルが正常に完了しても、プログラムが予期どおりに実行されない場合です。
コンパイラ エラー
コンパイラ エラー の最もよくある原因は、誤った 構文 です。 (バグ については後で説明します。) あらゆるプログラミング言語では、構文と呼ばれる厳格な一連のルールに従います (こうしたルールはプログラム間で異なる場合がありますが、このレッスンでは Verse 構文に焦点を合わせます)。
構文とは、プログラマーによる命令をコンパイラが理解してコンパイルできるように、単語とシンボルを組み合わせる方法を指します。
構文では、コンパイラが正しくコンパイルできるように、コード内で使用できる単語とシンボル、さらにそれらを構成する方法を扱います。
英語では、「主語 (名詞) | 動詞」というように、主語の後に動詞が続く形式が標準的な構文です。 たとえば「Kitty sleeps」(子猫が寝る) という文はこの構文ルールに沿っていますが、 「Sleeps kitty」とした場合は、だれもその意味を理解できないでしょう。 プログラミングにおいてはこれがより顕著になります。 このレッスンの冒頭での悪霊との契約を覚えていますか?
悪霊との契約を覚えていますか?
Verse コードは大文字と小文字を区別する。つまり、大文字にすべきものが大文字になっていなかったり、大文字にすべきでないものが大文字になっていたりすると、Verse はこれを構文のエラーとして扱うのでコードはコンパイルされません。 また、空白文字は、構文で示されているとおりに使うことが大切です。
| 正しい構文を含む式 | 正しくない構文を含む同じ式 |
|---|---|
|
|
2 つ目の例には、閉じ括弧「)」が欠落しているコンパイラ エラーが含まれています。
プログラムでコンパイルできなくなるため、このようなものは コンパイラ エラー と呼ばれます。
バグ
バグとは、プログラムが実行されたにもかかわらず、奇妙なことや予期せぬことをしたときに起こるものです。
構文では単語とシンボル、それらの構成を扱うのに対し、セマンティクス ではこれらのコード行が持つ 意味 を扱います。
たとえば、英語の基本的な文は主語と動詞で構成されます。 主語は 何らかを行う、または何らかの状態にある 人もしくはモノ であり、動詞はその主語 (名詞) が行う動作または主語の状態を表します。
主語 (名詞) | 動詞 (構文) では、Kitty sleeps (セマンティクス) の意味は伝わりません。
コードの 意味 のエラーも バグ を引き起こします。
| 正しい表現 | 同じ意味でバグを引き起こす表現 |
|---|---|
Verse | Verse |
2 つ目の例では MiceCaught が 1 よりも大きい場合に Print(“Win!”) 式を実行するように設定されていますが、これがバグとなります。
別の言い方をすると、プログラムの実行に何が起こっているかに基づきます。 期待通りの結果でしょうか? それとも間違ってしまいましたか?
右側の例では、プレイヤーはネズミを捕まえることで勝ちません。なぜなら、勝つためには 1 匹を上回るネズミを捕まえなければならないというコードになっているからです。 捕獲するネズミが 1 匹の場合、勝利条件は成立しません。 つまり、プログラムは正しくコンパイルしていながら、結果は自分 (プレイヤー) の期待通りになりません。
まとめ
プログラム は、コンピュータがどのように情報を 入力 または 出力 するか決定し、コンピュータに何かをする指示を出します。
コンピュータは非常に リテラル であるため、間違ったことを指示しても、指示したとおりに実行します。
プログラムは、人間の言語からコンピュータ言語へ コンパイル されなければなりません。
アルゴリズム は、プログラムがどのように動作すべきかを示す一種のモデルです。
ソース コード は人間が読み書き可能です。 機械語コード は、コンピュータが理解し 実行 できるものです。
セマンティクス はコードの意味を指します。
構文 は、コード記述に関する一連のルールです。
コンパイラ エラー は、プログラムのコンパイルを妨げるエラーです。
コンパイルは成功したものの、プログラムが期待通りに実行されないことを バグ と言います。
練習の時間です!
レッスン 1:練習の時間です!
アルゴリズムの書き方に慣れるまで練習しましょう。