intro



1. イントロダクション

1.1. はじめに

1.1.1. このガイドブックの目指すもの

Gauche のプログラミングが楽しめると、Kahua がずっと面白くなるはずです。 そこで、Gauche プログラミングを楽しむためのガイドブックのようなものを つくっていこうと思います。すこしずつ書き進めていきます。明確なゴールや 説明の順序を決めず、思いつきでいろいろ書き進めることにします。 でも、一度書いたことでも、どんどん変更することもあります。

1.1.2. Gauche プログラミングを楽しむために

必要なものは、多くはないです。だいたい次の3つほどです。

  • 経験:エディタを使って、HTMLあるいは簡単なスクリプトプログラム(言語 はなんでもOK)を書いたことがある程度の経験。必須ではないですが、ここ ではこれを前提として書いていきます。
  • PC 環境:以下の 2つをインストールした自由に使える PC
    • テキストエディタ: 括弧の対応表示、インデントなどの機能が Scheme 向 きにカスタマイズできるもの、またはすでにそのようなカスタマイズがされて いるものが便利です。おすすめは Emacs です。
    • Gauche:できるだけ最新のもの([2004-11-12]時点では Gauche-0.8.1) (インストールのしかたについてはA.Gaucheのインストール参照)
  • 心構え:構えるほどのものではないですが、以下のふたつは重要です
    • 好奇心:未知のプログラミング手法やスタイルへの関心
    • 寛容:自分のいままでの習慣や経験にはないものを受容するキャパシティ

1.1.3. 構成

このガイドブックのページは、

  • 解説
  • プログラムコード
  • Tips
  • 練習問題
  • 理屈っぽいはなし

で構成する予定です。

1.2. Gauche を対話モードで起動してみよう

1.2.1 起動と終了

Gauche がインストールされていれば、コマンドラインから

$ gosh

と入力(↑の例では、$ はコマンドプロンプトで、実際には、gosh とタイプしたあとにリターンキー(あるいは Enter キーをタイプ)すると、以下のようになり、入力待ちになります。

gosh> 

この状態を、インタープリタの対話モードで入力待ちの状態といいます。

そして終了方法は,インタープリタの対話モードでの入力待ちの状態から, (exit) を入力します.これで,Gauche のインタープリタを抜けて,コマンド ライン入力待ちの状態にもどります.

gosh> (exit)
$

1.2.2. 式

さて、このインタープリタモードでは何ができるのでしょう。まずは、なにか入力してみましょう。

プロンプト "gosh> " が出ている状態で、1729 とタイプしてから、Enter キー をタイプします(以後、これを単に、1729 を入力すると表現します)。すると 次の行に 1729 が表示され再びプロンプトが表示されましたね。これで入力待 ちの状態に戻ったことになります。

gosh> 1729
1729
gosh>

プロンプト"gosh> "は、インタープリタが「入力待ち」の状態を表しています。 このとき、ここに「式」を入力すると、インタープリタはこれを 「読み込み(read)」、その式を「評価し(evaluate)」して、結果を 「印字(print)」し、また、入力待ち状態にもどるというループ(loop)を 繰り返します。これを 読み込み-評価-印字 ループ (read-eval-print loop または repl)と言います。

(対話モードの)インタープリタでは、入力された「式(expression)」を評価し、 結果を印字するといいました。上の例では、1729 を評価して、それを印字して います。1729 を評価すると数値の 1729 になり、それを印字すると 1729 と なったということです。

次に、1 + 2 をやってみましょう。

gosh> 1 + 2
1
gosh> #<subr +>
gosh> 2
gosh>

あれっ。なんか変ですね。3 という答えがありませんね。Scheme では、 ふつうの算数では、1 + 2 と書く(演算子 + がふたつの数の間に置かれます ので中置記法といいます)のと同じ式は、 (+ 1 2) と書きます。括弧のなかの 左端の要素が、演算子(operator)または手続き(procedure)、その他の要素が 被演算子(operand)または引数(argument)となります。これを前置記法と呼びます。

gosh> (+ 1 2)
3
gosh> 

今度はちゃんと 3 という答がでましたね。できることは足し算だけではありません。かけ算、引き算、割り算もできます。

gosh> (* 2 3)
6
gosh> (- 5 3)
2
gosh> (/ 6 3)
2
gosh> (/ 6 4)
1.5
gosh>

Gauche では演算子や関数(これは、後で説明します)は、すべて前置記法で書 きます。

さらに組合せても大丈夫です。たとえば、

gosh> (+ (* 3 5) (- 10 6))
19
gosh> 

Gauche には四則を行う演算子のほかにも多くの演算子あるいは手続きが 組込まれています。リファレンスマニュアルを見ながらいろいろと試して みましょう。

1.2.3. データ

プログラムで扱う対象をデータと言います。プログラムで扱いたいのは 数だけではありません。文字列を扱いたいこともたくさんあります。 というより、たぶん文字列を扱うプログラムを書くことの方が多いでしょう。

もちろん、Gauche では他の言語と同様、文字列も扱えます。文字列を直接 表すには、半角の二重引用符で括ります。

gosh> "今日は"
"今日は"
gosh> "皆さん"
"皆さん" 

複雑な文字列処理はいずれ説明することにして、文字列の連結はどのようにするのでしょう。これには、string-append という名前の関数を使います。"Hello, " と "world!" を連結してみましょう。

gosh> (string-append "今日は" "皆さん")
"今日は皆さん"
gosh> 

1.3. 要約

  • 対話モードの Gauche インタープリタ
  • 式とデータ

1.4. Tips

1.4.1. 2つ以上の任意個の引数をとる演算子および手続き

上の例では、四則演算や文字列連結演算では、ふたつの数や文字列に対して演算を行なっていましたが、これらの演算子はふたつ以上の数に対しても適用できます。

gosh> (+ 1 2 3 4 5)
15
gosh> (* 1 2 3 4 5)
120
gosh> (- 10 3 2 1)
4
gosh> (/ 60 2 3 5)
2
gosh> (string-append "Hello" "," " " "world" "!")
"Hello, world!"
gosh>

1.4.2. 演算子あるいは手続きの名前

手続き string-append は string と - と append との3つに分解して解釈されることはありません。

1.5. 練習問題

問題 1.1.

Gauche を対話モードで起動して、実際に数の計算をやってみよう。

Gauche のリファレンスマニュアルを参考に、四則以外の演算をやってみよう。

Powered by Kahua