.. _basic-code-life-cycle-lesson-label: ============================= コードのライフサイクルの基本 ============================= このレッスンは約15分程度で完了します。 最初に :ref:`basic-coding-style-lesson-label` のレッスンを終了していなければなりません。 解説 ########### このレッスンでは、 M言語でコードを書く `ライフサイクル`_ のための演習を支援します。 これは、特にGT.Mコンパイラに最適化されていて、他のMシステムでは適用できない場合があります。 .. _ライフサイクル: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch03.html ファイルの編集 ############## GT.Mインタプリタから :ref:`zedit-command-label` を呼び出すことによって、ファイル編集を開始することができます。 引数は、拡張子を付けずに、 Linuxのファイルシステムの有効なファイル名でなければなりません。 例 :: ZEDIT "myprogram" これは、デフォルトのテキストエディタを開き、プログラムのコードの入力を開始できるようになります。プログラムはMで書かれるので、ZEDITコマンドでそれを参照するには、".m" の拡張子を使用する必要があることに注意してください。 これは、ZEDIT "test.m"コマンドを使用するようにDO ^testを呼び出すルーチンを編集することを意味します。 デフォルトのエディタは `Vim`_ です。お好みのテキストエディタを指し示すために、Linux シェル環境変数 `EDITOR`_ にセットすることによって、このデフォルトを変更することができます。 .. _Vim: http://www.vim.org/ .. _EDITOR: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch03s02.html#Editor 一度エディタを開いて、入力することができます、例えば: :: test ; my first program write "hello",! quit 次に、ファイルを保存してエディタを終了します。 GT.Mプロンプトに戻るでしょう。 :: GTM> ファイルは、 `gtmroutines`_ 環境変数に定義されたディレクトリに保存されます。コマンドを使用して、Linux シェルで、この変数の内容を確認してください。 .. _gtmroutines: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch03s02.html#gtmroutines :: echo $gtmroutines ファイルは、拡張子 ".m" で保存されます。 上記の例では、ファイルが存在するでしょう。 :: myprogram.m 先ほど書いた内容は、Mの中の `ルーチン`_ として通常に参照しています。 プログラムの最初の行は、テキストの最初のカラムに "test" の文字を持っていることに注意してください。これは、Mの中で複数の場所からこのコード行を参照することが可能な "test"が `ラベル`_ であることを示しています。 ラベルは、1つのスペースとその後に続く `コメント`_ の始まりを示すマークである ";" で表されています。 コメントの範囲はセミコロンから行末までです。 .. _ルーチン: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch05s11.html .. _ラベル: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch05s11.html .. _コメント: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch05s11.html ルーチンの2行目は、2列目に、最初のスペースの後に開始されます。これは、ワードがラベルではなくコマンドであることを示します。これは、WRITEコマンドの例を示します。:ref:`write-command-label` が何かは、既にカバーしています。 ルーチンの3番目と最後の行には、 最初のスペースの後に続く :ref:`quit-command-label` が含まれています。QUITコマンドは、実行したルーチンとこのルーチンを呼び出したコードのセクションに戻りの終わりを示します。 ファイルのコンパイル ##################### :ref:`zlink-command-label` は、GT.M環境内でファイルをコンパイルするために使用されます。 例 :: ZLINK "myprogram" プログラムは、HALTしない限り、エディタで変更されるたびにコンパイルする必要があります。このZLINKコマンドは、メモリ内のプログラムのコピーを消去し、再コンパイルする前に、ディスク上の ".m" ファイルをチェックすることをGT.Mに強制します。コピーがメモリにない場合は、GT.Mはサイレントに、そのソースコードより最新である任意のコンパイルされたコードを再コンパイルします。 コードの実行 ################ :ref:`do-command-label` は、そのエントリポイントとしてサービスされるラベルから始まる指定ルーチンの実行をトリガするために使用されます。 上記の例では、コマンドを使用してGT.Mプロンプトからこのルーチンを実行できます。 :: GTM> DO test^myprogram これは "myprogram" という名前のルーチン内のラベルが "test" で識別されるサブルーチンを呼び出し、実行されます。 :: hello GTM> 外部編集 ################## GT.Mのインタープリタ環境を入力せずに、Linuxシェルのコマンドラインからライフサイクルを実行することも可能です。 はじめに、 `gtmroutines`_ 環境変数に定義されているディレクトリに移動します。 次に :: vim myprogram2.m write the code :: test ; comment write "hello2",! quit プログラムを保存してエディタを終了します。(2番目と3番目の行の先頭のスペースに注意してください) 外部のコンパイル #################### 一度Linuxシェルのコマンドラインに戻って、次のように入力します: :: $ mumps myprogram2.m これが、ルーチンの `コンパイル`_ のトリガーとなり、追加ファイルになります。 .. _コンパイル: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch03s05.html :: myprogram2.o 同じディレクトリにオブジェクトファイルが作成されています。 Linux シェルで "ls" コマンドでこれを確認でき、以下のように表示が返されるでしょう。 :: myprogram2.m myprogram2.o 外部実行 ################## 最後に、LinuxシェルコマンドラインからMコードを `実行`_ するには、次のコマンドを使用することができます: .. _実行: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch03s07.html :: mumps -r test^myprogram2 テキストをプリントアウトします。 :: hello そして、Linuxシェルプロンプトに戻ります。 要約 ####### 開発のライフサイクルは、次のようになります。 :: vim myprogram.m mumps myprogram.m mumps -r test^myprogram [OK]、 `Vim`_ とは異なるエディタ使用することも選択可能です。しかし... とても嬉しい? 次のレッスン: :ref:`operator-precedence-lesson-label`