プログラミング言語「ドリトル」

大阪電気通信大学 兼宗研究室

ユーザ用ツール

サイト用ツール


ch_syntax

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
ch_syntax [2018/02/09 11:14]
klab
ch_syntax [2020/07/11 04:49]
klab [メッセージ送信]
ライン 13: ライン 13:
   * コンピュータは単なる命令を実行する装置だから、その命令を取り替えることによって、どのような作業でもこなすようにさせられる。   * コンピュータは単なる命令を実行する装置だから、その命令を取り替えることによって、どのような作業でもこなすようにさせられる。
  
-{{:​pasted:​20180103-210054.png}}+{{:​pasted:​20180103-210054.png?350}}
  
 そして、プログラミングとは「プログラムを作ること」であり、上の説明の延長でいえば、コンピュータに「自分がさせたいこと」を実行させるように、命令を並べて行く作業だ、ということになる。 そして、プログラミングとは「プログラムを作ること」であり、上の説明の延長でいえば、コンピュータに「自分がさせたいこと」を実行させるように、命令を並べて行く作業だ、ということになる。
ライン 23: ライン 23:
 プログラミング言語で書き表したものを実際に実行するためには、また別のソフトウェア(プログラミング言語処理系)を使う。プログラミング言語処理系には、プログラミング言語で書き表したものを機械語に変換する方式(コンパイラ)と、プログラミング言語で書き表したものを読み取りながら直接その動作を実行する方式(インタプリタ)とがある。 プログラミング言語で書き表したものを実際に実行するためには、また別のソフトウェア(プログラミング言語処理系)を使う。プログラミング言語処理系には、プログラミング言語で書き表したものを機械語に変換する方式(コンパイラ)と、プログラミング言語で書き表したものを読み取りながら直接その動作を実行する方式(インタプリタ)とがある。
  
-{{:​pasted:​20180103-210112.png}}+{{:​pasted:​20180103-210112.png?400}}
  
 ここまでは一般的な話だったが、次節以降では命令の内容や書き表し方としてドリトル言語の場合を学んで行くことにする。現在のドリトルのプログラミング言語処理系はインタプリタ方式を採用している。 ここまでは一般的な話だったが、次節以降では命令の内容や書き表し方としてドリトル言語の場合を学んで行くことにする。現在のドリトルのプログラミング言語処理系はインタプリタ方式を採用している。
ライン 31: ライン 31:
 一般にプログラムでは、さまざまな情報(データ)を取り扱う。ドリトルでは、これらを総称して**オブジェクト**(もの)と呼んでいる。我々が日常生活で接する「もの」はさまざまな大きさ、形、色、機能を持っているが、ドリトルのオブジェクトも同様である。ドリトルはコンピュータ上で動くプログラミング言語なので、これらの大きさ、色、機能なども、それらをプログラムで扱うとしたら、すべてコンピュータの上の情報として表すことになる…つまり、大きさ、色、機能などの情報もまたもとのオブジェクトに付随するオブジェクトだということになる。このような、オブジェクトに付随する情報をそのオブジェクトの**プロパティ**と呼ぶ。 一般にプログラムでは、さまざまな情報(データ)を取り扱う。ドリトルでは、これらを総称して**オブジェクト**(もの)と呼んでいる。我々が日常生活で接する「もの」はさまざまな大きさ、形、色、機能を持っているが、ドリトルのオブジェクトも同様である。ドリトルはコンピュータ上で動くプログラミング言語なので、これらの大きさ、色、機能なども、それらをプログラムで扱うとしたら、すべてコンピュータの上の情報として表すことになる…つまり、大きさ、色、機能などの情報もまたもとのオブジェクトに付随するオブジェクトだということになる。このような、オブジェクトに付随する情報をそのオブジェクトの**プロパティ**と呼ぶ。
  
-{{:​pasted:​20180103-210129.png}}+{{:​pasted:​20180103-210129.png?300}}
  
 このように、すべての情報をオブジェクトとして統一的に扱い、さまざまな機能もオブジェクトに付随しているという形で扱うプログラミング言語を**オブジェクト指向言語**という。今日のソフトウェア開発ではオブジェクト指向言語が多く使われる。C++、Javaなどはオブジェクト指向言語の例である。ドリトルもオブジェクト指向言語である。 このように、すべての情報をオブジェクトとして統一的に扱い、さまざまな機能もオブジェクトに付随しているという形で扱うプログラミング言語を**オブジェクト指向言語**という。今日のソフトウェア開発ではオブジェクト指向言語が多く使われる。C++、Javaなどはオブジェクト指向言語の例である。ドリトルもオブジェクト指向言語である。
ライン 43: ライン 43:
 </​code>​ </​code>​
  
-{{:​pasted:​20180103-210149.png}}+{{:​pasted:​20180103-210149.png?250}}
  
 変数は「いれもの」なので、プログラムの中でさまざまに内容(オブジェクト)を入れ換えることもできる。ある変数の内容を入れ換えないで、ずっと1つのオブジェクトを入れておく場合には、その変数の名前のことを、その「オブジェクトの名前」だと思っていても差し支えない。 変数は「いれもの」なので、プログラムの中でさまざまに内容(オブジェクト)を入れ換えることもできる。ある変数の内容を入れ換えないで、ずっと1つのオブジェクトを入れておく場合には、その変数の名前のことを、その「オブジェクトの名前」だと思っていても差し支えない。
ライン 72: ライン 72:
 メッセージ送信によりオブジェクトのメソッドを呼び出すとき、必要に応じて追加の情報を渡すことができる。これをメソッド呼び出しの**パラメータ**と呼ぶ。ドリトルでは、パラメータはメソッド名の**前に**書くことになっている。 メッセージ送信によりオブジェクトのメソッドを呼び出すとき、必要に応じて追加の情報を渡すことができる。これをメソッド呼び出しの**パラメータ**と呼ぶ。ドリトルでは、パラメータはメソッド名の**前に**書くことになっている。
  
-{{:​pasted:​20180103-210210.png}}+{{:​pasted:​20180103-210210.png?400}}
  
 たとえば、ボタンのメソッド「作る」には、パラメータとしてボタンに表示するラベルの**文字列**を渡すことができる。先のプログラムをそのように直してみる。 たとえば、ボタンのメソッド「作る」には、パラメータとしてボタンに表示するラベルの**文字列**を渡すことができる。先のプログラムをそのように直してみる。
ライン 90: ライン 90:
 上の例のように、メソッドのパラメータは複数個指定してもよい。では、並んでいるものがメソッドの名前なのかパラメータなのかはどうやって分かるのだろうか?​ 実は、「!」の右側ではすべての名前はメソッド名として扱われる。「"​ "​」で囲まれた文字列や、「100」などの数値はメソッド名ではないのでパラメータになる。変数名を指定したいときは、変数名を「()」で囲んで「(x)」などのように指定する(後の節で詳しく説明する)。 上の例のように、メソッドのパラメータは複数個指定してもよい。では、並んでいるものがメソッドの名前なのかパラメータなのかはどうやって分かるのだろうか?​ 実は、「!」の右側ではすべての名前はメソッド名として扱われる。「"​ "​」で囲まれた文字列や、「100」などの数値はメソッド名ではないのでパラメータになる。変数名を指定したいときは、変数名を「()」で囲んで「(x)」などのように指定する(後の節で詳しく説明する)。
  
-{{:​pasted:​20180103-210229.png}}+{{:​pasted:​20180103-210229.png?400}}
  
 メッセージのカスケードがある場合、変数に格納される値(メッセージ送信式全体の値)は、一番最後のメソッドが返した値になる。上のプログラムの場合、メソッド「位置」はボタンの位置を変更した後、そのボタンオブジェクト自体を返すので、変数「ボタン1」に格納される値は先のプログラムと同じである。 メッセージのカスケードがある場合、変数に格納される値(メッセージ送信式全体の値)は、一番最後のメソッドが返した値になる。上のプログラムの場合、メソッド「位置」はボタンの位置を変更した後、そのボタンオブジェクト自体を返すので、変数「ボタン1」に格納される値は先のプログラムと同じである。
ch_syntax.txt · 最終更新: 2020/07/11 05:22 by klab