LOGO
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、プログラミング言語について説明しています。その他の用法については「ロゴ」をご覧ください。

LOGOLOGOのロゴ
パラダイムマルチパラダイムリフレクティブ
登場時期1967年
設計者Wally Feurzeig、シーモア・パパート
開発者Wally Feurzeig、シーモア・パパート
最新リリース3.6.4 / 2023年2月7日[1]
型付けdynamic
主な処理系en:UCBLogoなど多数
方言StarLogoNetLogo
影響を受けた言語LISP
影響を与えた言語SmalltalkEtoysScratchNetLogo、 KTurtle(英語版)、 REBOL
テンプレートを表示

プログラミング言語>>他のプログラミング言語

カテゴリ / テンプレート

LOGO(ロゴ)は、教育向けとして設計されたマルチパラダイムコンピュータプログラミング言語である。しばしば簡易言語だと誤解されていることもあるが、再帰なども扱える言語としての機能、リストなどのデータ構造や、I/O・ファイルなどの一般的な機能を持ったライブラリなど、簡易言語ではなく、十分な能力を持ったプログラミング言語である。特徴的な機能としては「タートルグラフィック」がある。

1967年教育(特に構成主義および構築主義(英語版)学習)のために開発された。名称はギリシャ語の logos (言葉)に由来する。(現代ではいささか想像しにくくなったことであるが)当時代表的な既存言語であったFORTRANや、その影響を受けた言語がもっぱら数値計算を指向したものであったのに対し、「言葉」で操作する言語であるといったようなことを強調したものである。多くの計算機科学の概念を教えるのに使うことができ、例えばカリフォルニア大学バークレー校の講師ブライアン・ハーヴェイ(英語版)は3巻の著書 Computer Science Logo Style にまとめている[2]

コンピュータの使用を通じた児童の思考能力の訓練を目的としており、主に8歳から12歳の児童にも扱い易いよう配慮された豊富なグラフィック関連のコマンドが特徴である。主な使用者は学生、教師が想定された。
歴史

1967年、マサチューセッツ州ケンブリッジにある研究機関 Bolt, Beranek and Newman (BBN) にて、Wally Feurzeig(英語版)とシーモア・パパートが開発した[3][4]人工知能数理論理学発達心理学の成果を基盤としている。最初の4年間は、BBNにてLOGO開発とLOGOによる教育の研究が行われた。

最初のコンセプトは1966年にシーモア・パパート、Wally Feurzeig、ダニエル・G・ボブロウ(英語版)の間で交わされた議論によって生まれ、パパートが本質的な機能の詳細を設計し、ボブロウがプロトタイプの実装を行った。シンシア・ソロモン、リチャード・グラント、フランク・フレイジャー、ポール・ウェクセルブラットも開発に貢献した[5]。LOGOの初期の公開バージョンは「Ghost」という名前で、PDP-1LISPで書かれた。

目標は子どもが単語や文で遊べる数学の遊び場を作ることだった[6]。LOGOの設計では、ハードルが低く使いやすいことと、エラーの原因がわかりやすいことが重視されている。タートル(亀)を採用したのは、視覚的フィードバックが即座に得られ、デバッグを即座に行えるからだった。

LOGOで操縦可能な亀のロボットMITで作られたのは1969年のことであり、それ以前から画面上で動作する仮想的なタートルが存在していた。現代のLOGOも、その最初のタートルの基本コンセプトからそれほど変わっていない。最初の亀ロボットは有線式であり、ラジコンあるいは無線操縦ではなかった。後にBBNはIrvingという亀ロボットを開発しており、それは触角センサを持ち、前進、後退、回転といった動きができ、ベルを鳴らす機能も備えていた。1968年から69年にかけて、マサチューセッツ州レキシントンの中学校で1年間かけたLOGO教育が実施されている。仮想的なタートルや亀ロボットを最初に教育に取り入れたのは同じレキシントンの小学校(5年生)で、1970年から71年にかけてのことである。
タートルグラフィックス「en:Turtle graphics」も参照

LOGO最大の特徴はタートルであり[7]、画面上のカーソルで表され(タートルと呼ばれるようになったのは、先述の亀のロボットから)、それに動きと線描を命令することができ、プログラムに基づいて線で描かれたグラフィックスを生成できる。三角形または亀の形で表されることが多い(実際にはどんなアイコンでもよい)。シーモア・パパートがLOGOにタートルグラフィックスを追加したのは1960年代末ごろで、パパート自身が開発した亀ロボットに上げ下げ可能なペンを装着させて描画できるようにしたことからである。

やはり現代からは想像が難しいことであるが、1960年代にはCRTによるラスタースキャンディスプレイ自体は存在していたものの、コンピュータグラフィックスの出力先としてはあまり一般的で実用的なものではなかった(たとえば、フレームバッファに必要なメモリの容量と帯域幅は当時のコンピュータの性能では非現実的であった)。当時、グラフィックの一般的な出力方式としては、プロッターベクタースキャンディスプレイであり、いずれも「デカルト座標」的に (x, y) の絶対値ないし相対値で指定するものであった。

そのような描画方式のほうが便利なこともあるが、正多角形や渦巻きなど、自然に再帰的あるいは繰返しになっているものを、そのまま自然に再帰あるいは繰返しによって描く、という操作にはあまり向いていない。

それに対しタートルでは、命令は常にその時点での状態から、相対的に作用する。すなわち、タートルは命令を受けるとその時点の位置と向きを起点として動作し、例えば LEFT 90 と命令すれば左に90度回転する。子供は、自己と一体化しやすいタートルを操作してその軌跡を図形として描いたり色を塗ったりして楽しむ事が簡単に出来る。パパートはこれを body-syntonic reasoning(身体同調性推論)と呼んだ。特に複数のタートルを同時に操作可能なLOGO実装では、タートル(カーソル)の見た目の再定義や、タートル同士の当たり判定ができるようになっていて、ビデオゲーム用語でいういわゆる「スプライト」のように使うことができるものもある。

「最終参照座標」といったようなものがある、タートル的な描画システムはごくありふれたものだが(例えばSVGのpath要素による描画など)、一例としては、L-systemの図形を描画するFractintというプログラムは、内部でタートルへのコマンドという形で描画を表現している。
言語

大文字と小文字は区別しないが、出力では大文字/小文字を保持する。標準規格は存在しないが、UCBLogoが高く評価されている。教育用言語ではあるが、リスト処理能力の高さから実用的なスクリプトが非常に書きやすくなっている[8]
データ

UCBLogoには次の3種類のデータ型がある。

ワード(LISPのatomに相当)

リスト(LISPのconsに相当)

配列

数はワードの特殊ケースと解釈される。

静的型付けではなく、データ型は実行によってチェックされる。

次の2つの記号は重要な意味を持つ。

コロン (:) は「-の中身(値)」を意味する。これは変数が実際にはメモリの特定の位置を示していると児童に意識させるのに役立つ。

ダブルクオート (") は「そのワードをそれ自身として評価する」あるいは「それを評価した後の値はそれ以前と同じである」を意味する。他のプログラミング言語ではダブルクオートは引用符として2つを組みにして使うが、LOGOではそのような対応付けがない。

数はその点で特別であり、本当はダブルクオート付きで書く必要があるが、2 も "2 も同じに扱われる。

変数への代入(例えば、x := y + 3)は、LOGOではmakeコマンドで行う。例えば、以下の2つの文は等価である。make "x sum :y 3make "x sum :y "3

makeは2つのパラメータをとり、この例での2つ目のパラメータは sum :y "3 である。sum は2つのパラメータをとる演算 (operation) であり、2つのパラメータの和を計算する。"3 を評価すると 3 となり、:y は y と呼ばれるものの中身をとる。その結果、両者を加算した和が数として得られる。

make は第二パラメータを評価した結果を第一パラメータに格納する。プログラミングの観点から言えば、makeの第一パラメータは参照渡しで、第二パラメータは値渡しである。
スコープ

通常は変数を使用前に宣言せず、変数スコープは大域的である。

local と宣言した変数のスコープは、宣言したプロシージャおよびそのプロシージャを呼び出す任意のプロシージャに限定される(動的スコープの一種)。入力(引数)のあるプロシージャでは、実引数(アーギュメント)の値を保持するローカル変数が生成される(仮引数(パラメータ))。
リスト


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:51 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef