Basic concepts and terms

Motoko はアクタを用いた分散プログラミングを前提として設計されました.

Motoko is designed for distributed programming with actors.

インタネット・コンピュータ上 Motoko でプログラムを書く場合, アクタ は Candid インタフェイスの Internet Computer キャニスタ・スマート・コントラクト を表します (Mototo, Rust, Wasm その他の Wasm にコンパイルされる言語はどれもそうです). Motoko では Internet Computer に配備される, 任意の言語で記述されたキャニスタ・スマート・コントラクトを アクタ と呼ぶことにします. Motoko の役割はこれらアクタを書き易くすること, いったん配備された後も容易にプログラムから操れるようにすることです.

When programming on the Internet Computer in Motoko, each actor represents an Internet Computer canister smart contract with a Candid interface, whether written in Motoko, Rust, Wasm or some other language that compiles to Wasm. Within Motoko, we use the term actor to refer to any canister smart contract, authored in any language that deploys to the Internet Computer. The role of Motoko is to make these actors easy to author, and easy to use programmatically, once deployed.

分散アプリケーションを書く前から, Motoko や他のいろんなプログラミング言語の基本的な構成要素のいくつかには親しんでいると思います. この節では, 以後のドキュメントで使われる, また Motoko で書かれたプログラムの学習に欠かせない, 以下の主要概念/用語を紹介します:

Before you begin writing distributed applications using actors, you should be familiar with a few of the basic building blocks of any programming language and with Motoko in particular. To get you started, this section introduces the following key concepts and terms that are used throughout the remainder of the documentation and that are essential to learning to program in Motoko:

もし他の言語を使ったことがあるとか, モダンなプログラミング言語理論が分かっているならば, これらの用語を耳にしたことがあり, 使い方も分かっているでしょう. これらの用語の使われ方は Motoko でも他の言語と特に変わりはありません. でも, もしプログラミング自体が初めてだとしたら, このガイドでこれらの用語をアクタや分散プログラミングを意識せずに簡単な例題プログラムから徐々に学んでいけると思います. いったん基本的な用語の使われ方を基礎から学んでしまえば, この言語のもっと先の観点を探索していけるでしょう. この先のフィーチャは, それに応じた難しさの例題を使って解説します.

If you have experience programming in other languages or are familiar with modern programming language theory, you are probably already comfortable with these terms and how they are used. There’s nothing unique in how these terms are used in Motoko. If you are new to programming, however, this guide introduces each of these terms gradually and by using simplified example programs that eschew any use of actors or distributed programming. After you have the basic terminology as a foundation to build on, you can explore more advanced aspects of the language. More advanced features are illustrated with correspondingly more complex examples.

この節では以下の題目について述べます:

The following topics are covered in the section:

Motoko program syntax

Motoko のプログラムは, 宣言と式 (この二つのシンタクスのクラスは異なるが, 関連はしている (プログラムの詳細な構文については language quick reference guide を参照のこと)) を自由に並べたものです.

Each Motoko program is a free mix of declarations and expressions, whose syntactic classes are distinct, but related (see the language quick reference guide for precise program syntax).

インタネット・コンピュータに配備するプログラムは, ひとつの アクタ式 から成ります (アクタ式の基本的な構文 (actor キーワード) については アクタと非同期データ で述べます).

For programs that we deploy on the Internet Computer, a valid program consists of an actor expression, introduced with specific syntax (keyword actor) that we discuss in Actors and async data.

この先に進む前にまず, この章と 可変状態 でインタネット・コンピュータ上でのサービスに限らないプログラムについて述べます.

In preparing for that discussion, we discuss programs in this chapter and in Mutable state that are not meant to be Internet Computer services. Rather, these tiny programs illustrate snippets of Motoko for writing those services, and each can (usually) be run on its own as a (non-service) Motoko program, possibly with some printed terminal output.

この節での例題では, (算術のような) 単純な式を用いた基本的な原理をお見せします. Motoko の式の構文全体の概要については Language quick reference をご覧下さい.

The examples in this section illustrate basic principles using simple expressions, such as arithmetic. For an overview of the full expression syntax of Motoko, see the Language quick reference.

次のコード片, 二つの宣言 (変数 xy) と一つの式から成る一つのプログラムから始めましょう:

As a starting point, the following code snippet consists of two declarations — for the variables x and y — followed by an expression to form a single program:

let x = 1;
let y = x + 1;
x * y + x;

以下では, この小さなプログラムをちょっとずつ変えながら説明していきます.

We will use variations of this small program in our discussion below.

まず, このプログラムの型は Nat (自然数) であり, 実行すると (自然数の) 値 3 に評価されます.

First, this program’s type is Nat (natural number), and when run, it evaluates to the (natural number) value of 3.

次に中括弧 (do {}) で囲まれたブロックと, 新たな変数 (z) を導入して. 元のプログラムを次のように変更します:

Introducing a block with enclosing braces (do { and }) and another variable (z), we can amend our original program as follows:

let z = do {
  let x = 1;
  let y = x + 1;
  x * y + x
};

Declarations and expressions