HN 日本語サマリー

← 一覧へ戻る
プログラミング

Logoプログラミング言語

Logo Programming Language (el.media.mit.edu)

65 pointsby azhenley26 コメント

要約

Logoは、学習ツールとして設計されたLisp方言のプログラミング言語です。その特徴であるインタラクティブ性、モジュール性、拡張性、柔軟なデータ型は、この目標から派生しています。Logoはインタプリタ言語として実装されることが多く、ユーザーに即時フィードバックを提供し、デバッグと学習プロセスを支援します。プログラムは小さな手続きの集まりとして構成され、新しい語彙を既存の語彙で定義していくことで、複雑なプロジェクトを段階的に構築できます。また、数値と文字列の区別を曖昧にするなど、データ型に対する柔軟性も備えています。

全文翻訳

Logoプログラミング言語 Logoプログラミング言語は、Lispの方言であり、学習ツールとして設計されました。その特徴であるインタラクティブ性、モジュール性、拡張性、データ型の柔軟性は、この目標から派生しています。 インタラクティブ性 Logoのいくつかのバージョンはコンパイル可能ですが、一般的にはインタプリタ言語として実装されています。このアプローチのインタラクティブ性は、ユーザーに個々の命令に対する即時フィードバックを提供し、デバッグと学習プロセスを支援します。エラーメッセージは記述的です。例えば、fowad I don't know how to fowad (fowadという単語は、Logoの組み込み語(プリミティブ)でも、あなたが定義した手続きでもありません。) forward Not enough inputs to forward (正しくスペルを入力すると、Logoはforwardという単語を認識しますが、forwardは追加情報が必要なため、あなたの命令を実行できません。) forward 100 (Logoは満足です。エラーメッセージはありません。タートルは100ステップ前進します。) モジュール性と拡張性 Logoプログラムは通常、小さな手続きの集まりです。一般的に、手続きはテキストエディタで記述して定義されます。「to」という特別な単語の後に手続きの名前が続きます。その後の行が手続きの定義を形成します。「end」という単語は、完了したことを示します。 私たちのタートルグラフィックスの例では、正方形を描く手続きを次のように定義しました。 to square repeat 4 [forward 50 right 90] end そして、それを別の手続きの花(flower)のサブ手続きとして使用しました。 to flower repeat 36 [right 10 square] end 同様に、flowerはさらに大きなもの(garden)のビルディングブロックになる可能性があります。 to garden repeat 25 [set-random-position flower] end いいえ、set-random-positionはプリミティブではありませんが、randomはプリミティブであり、setposition(またはsetpos、setxy)もプリミティブです。または、randomを使用してset-random-positionを記述することもできます。 Logo手続きが定義されると、それはLogoプリミティブのように機能します。実際、Logoプログラムを見ると、どの単語がプリミティブで、どれがユーザー定義なのかを知る方法はありません。その特定のLogo実装を知らない限りは。言語サンプルでは、リストからランダムに項目を選択するためにpickという手続きを使用しました。例えば、whoという手続きで。 to who output pick [Sandy Dale Dana Chris] end Logoの一部のバージョンではpickはプリミティブですが、他のバージョンでは自分で記述する必要があります。どちらの場合でも、Whoは同じように見え、機能します。 Logoは、複雑なプロジェクトを小さなステップで構築することを可能にします。Logoでのプログラミングは、既存の単語を使って新しい単語を教えることによって、その語彙を追加することによって行われます。この点で、それは人々が話し言葉を学ぶ方法に似ています。 柔軟性 Logoは単語とリストで動作します。Logoの単語は文字の文字列です。Logoのリストは、単語やリストの順序付けられたコレクションです。数値は単語ですが、それらは算術演算ができるため特別です。 多くのプログラミング言語は、使用しているデータの種類を正確に知ることを非常に厳密に要求します。これはコンピューターにとっては簡単ですが、プログラマーにとっては難しくなります。数値を加算する前に、それらが整数なのか実数なのかを指定する必要があるかもしれません。コンピューターはそのようなことを知る必要があります。しかし、ほとんどの人はこれについて考えないので、Logoがそれを行います。 算術演算を求められると、Logoはそれを実行します。 print 3 + 4 7 print 3 / 4 .75 Logoに慣れていないが、他のプログラミング言語で作業している場合、次のシーケンスは驚くかもしれません。 print word "apple "sauce applesauce print word "3 "4 34 print 12 + word "3 "4 46 これは階乗を計算する再帰的な手続きです。 to factorial :number if :number = 1 [output 1] output :number * factorial :number - 1 end print factorial 3 6 print factorial 5 120 これは単語のリストを逆にする手続きです。 to reverse :stuff ifelse equal? count :stuff 1 [output first :stuff] [output sentence reverse butfirst :stuff first :stuff] end print reverse [apples and pears] pears and apples Brian Harveyの興味深いLogoサンプルも参照すると良いでしょう。 拡張機能 ここで示した機能は、すべてのLogoバージョンに共通しています。一部のLogo実装には、拡張された言語機能が含まれています。Macintosh用のObject Logoというオブジェクト指向Logoがありました。MicroWorlds Logoにはマルチタスク機能が含まれており、複数の独立したプロセスを同時に実行できます。Control Lab(LEGO Logo製品)のソフトウェアにも同様の機能があります。さらに大規模な並列LogoはStarLogoです。 従来のLogoでは、コマンド「repeat 9999 [forward 1 right 1]」は実行に時間がかかります。「repeat 9999 [forward 1 right 1] print "HELLO」という命令は、タートルが移動を終えた後にHELLOという単語が表示される原因となります。MicroWorlds Logoでは、「launch [repeat 9999 [forward 1 right 1]] print "HELLO」と入力すると、タートルが動き始めます。最初のプロセスが起動するとすぐにHELLOという単語が表示されます。あるいは、「forever [forward 1 right 1] print "HELLO」は、停止するまで続くプロセスを開始します。ここでも、タートルプロセスが開始されるとすぐにHELLOという単語が表示されます。 さらに詳しく知る Logoプログラミング言語についてさらに詳しく知るには、Brian Harveyの3巻構成の叙事詩「Computer Science Logo Style」とMichael Friendlyの「Advanced Logo」をご覧ください。Logoをお持ちでなく、始めたい場合は、Logoソフトウェアのページをご覧ください。または、UCBLogo、MSWLogo、FMSLogo、StarLogo TNG、StarLogo Novaを今すぐダウンロードできます。 この記事のヒンディー語訳はこちらで入手可能です。ウクライナ語訳はこちらで入手可能です。セルビア・クロアチア語訳はこちらで入手可能です。 Logoとは何か? 歴史 Logoプログラミング Logoと学習 Logo入門 Logoと自然言語 Copyright ©2023 Logo Foundation. All rights reserved.