| ロゴ | |
|---|---|
Lシステム(コッホ曲線)のタートルグラフ | |
| パラダイム | マルチパラダイム:機能的、教育的、手続き的、内省的 |
| 家族 | Lisp |
| デザイン : | ウォーリー・ファーゼイグ、シーモア・パパート、シンシア・ソロモン |
| 開発者 | ボルト、ベラネク、ニューマン |
| 初 登場 | 1967年 (1967年) |
| タイピングの規律 | 動的 |
| 主な実装例 | |
| UCBロゴ、その他多数 | |
| 方言 | |
| StarLogo、NetLogo、AppleLogo | |
| 影響を受けた | |
| Lisp | |
| 影響を受けた | |
| AgentSheets、NetLogo、Smalltalk、Etoys、Scratch、Microsoft Small Basic、KTurtle、REBOL、Boxer | |

Logoは、1967年にWally Feurzeig、Seymour Papert、Cynthia Solomonによって設計された教育用プログラミング言語です。[ 1 ]この名前は、FeurzeigがBolt, Beranek and Newmanに在籍していたときに考案したもので、[ 2 ]ギリシャ語のlogos(「言葉」または「思考」を意味する)に由来しています。
汎用言語であるLogoは、タートルグラフィックスの使用で広く知られています。タートルグラフィックスでは、移動や描画のコマンドによって、画面上またはタートルと呼ばれる小型ロボット上で線画やベクターグラフィックスが生成されます。この言語は、 Lispに関連するプログラミングの概念を教えるために考案され、後にPapertが「身体感覚的推論」と呼んだものを可能にするようになりました。これは、学生が自分がタートルだったらどうするかを想像することで、タートルの動きを理解し、予測し、推論できるというものです。Logoの多くの方言間にはかなりの違いがあり、Logoという名前のタートルグラフィックスプログラムが頻繁に登場するため、状況は複雑になっています。
Logoは、関数型プログラミング言語であるLispのマルチパラダイム適応版であり方言です。[ 3 ]標準のLogoはありませんが、UCBLogoにはリスト、ファイル、I/O、スクリプト内の再帰を処理する機能があり、UCバークレーの講師であるブライアン・ハーベイが「Computer Science Logo Style」三部作で行ったように、すべてのコンピュータサイエンスの概念を教えるために使用できます。[ 4 ]
Logoは通常、インタプリタ型言語ですが、コンパイル型のLogo方言(LhoghoやLiogoなど)も開発されています。Logoは大文字と小文字を区別しませんが、書式設定のために使用される大文字と小文字は保持します。
Logo は 1967 年にマサチューセッツ州ケンブリッジの研究会社Bolt, Beranek and Newman (BBN)でWally Feurzeig、Cynthia Solomon、Seymour Papertによって作成されました。[ 5 ]その知的ルーツは人工知能、数理論理学、発達心理学にあります。Logo の研究、開発、教育の最初の 4 年間は BBN で行われました。Ghost と呼ばれる Logo の最初の実装は、PDP-1上でLISPで記述されました。目標は、子供たちが言葉や文章で遊べる数学の世界を作ることでした。[ 6 ] LISP をモデルにした Logo の設計目標には、アクセスしやすいパワーと分かりやすいエラー メッセージが含まれていました。仮想タートルを使用することで、グラフィック プログラミングの即時の視覚的フィードバックとデバッグが可能になりました。
最初の動作するLogoタートルロボットは1969年に作られました。ディスプレイ用のタートルが、実際に床を歩くタートルに先立って作られました。現代のLogoは、最初のタートル以前の基本的なコンセプトからそれほど大きく変わっていません。最初のタートルは、無線制御やワイヤレスではなく、床を歩く有線式のロボットでした。BBNで、ポール・ウェクセルブラットは、タッチセンサーを備え、前進、後退、回転、ベルを鳴らすことができるアービングという名前のタートルを開発しました。Logoを1年間学校で使用した最初の例は、1968年から1969年にかけて、マサチューセッツ州レキシントンのマジー中学校でした。仮想タートルと物理タートルは、1970年から1971年にかけて、同じ都市のブリッジスクールの5年生によって初めて使用されました。

Logo の最もよく知られた機能はタートル (元々は同名のロボットに由来) です。[ 5 ]画面上の「カーソル」で、移動コマンドの出力を表示し、小型の格納式ペンと組み合わせて線画を生成します。従来は三角形またはタートルのアイコンとして表示されていましたが (任意のアイコンで表現できます)、タートル グラフィックスは 1960 年代後半に Seymour Papert によって Logo 言語に追加されました。これは、Papert 版のタートル ロボットをサポートするためで、ユーザーのワークステーションから制御されるシンプルなロボットで、ロボット本体に組み込まれたり取り付けられたりした小型の格納式ペンを使用して、割り当てられた描画機能を実行するように設計されています。
実際問題として、より伝統的なモデルではなくタートルジオメトリを使用することで、タートルロボットの実際の動きのロジックを模倣することができます。タートルは自身の位置を基準としたコマンドで移動し、LEFT 90 は左に 90 度回転することを意味します。一部の Logo 実装、特に並列処理と複数のタートルの使用を許可する実装では、衝突検出をサポートし、ユーザーがタートルカーソルの外観を再定義できるようにすることで、Logo タートルをスプライトとして機能させることができます。
タートルジオメトリは、厳密に座標アドレス指定を行うグラフィックスシステムの代替として、Logo以外の環境でも使用されることがあります。例えば、タートルグラフィックスの概念は、フラクタルを生成するリンデンマイヤーシステムでも役立ちます。


Logoの現代的な派生版の中には、数千匹の独立して動くタートルを制御できるものがある。代表的な実装としては、マサチューセッツ工科大学のStarLogoと、ノースウェスタン大学コネクテッドラーニングセンター(CCL)のNetLogoが挙げられる。これらは創発現象の探索を可能にし、社会学、生物学、物理学など、さまざまな分野で多くの実験が行われている。NetLogoは、生物学や社会科学におけるエージェントベースシミュレーションで広く利用されている。
合意された標準はないものの、言語の中核的な側面については幅広い合意がある。2020年3月時点で、Logoの実装と方言は308種類あり、それぞれに独自の強みがある。[ 8 ]これらの308種類のほとんどはもはや広く使われていないが、多くはまだ開発中である。学校で広く使われている商用実装には、MicroWorlds LogoやImagine Logoなどがある。
従来型および現行の実装には以下が含まれます。
Logo はSmalltalkプログラミング言語に大きな影響を与えました。また、基本的にSqueak (それ自体が Smalltalk の派生言語)で書かれた Logo の派生言語であるEtoys教育用プログラミング環境および言語にも大きな影響を与えています。Logo はAgentSheetsおよびAgentCubesのプロシージャ / メソッド モデルに影響を与え、 Logo のタートルの概念に似たエージェントをプログラミングできるようにしました。Logo は Boxer の基盤となる言語を提供しました。Boxer はカリフォルニア大学バークレー校と MITで開発され、非技術者でも使いやすくするためにリテラシー モデルに基づいています。[ 30 ]
KTurtleはLogoをベースに、 KDE環境向けにQtで実装されたLogoの派生版である。[ 31 ]
Logoの影響を受けたもう2つの例として、Scalaの派生言語であるKojoと、Webブラウザ上で動作するビジュアルなドラッグ&ドロップ言語であるScratchが挙げられる。
[…]
Dr. Logoは1983年秋に
IBM PC
向けに初めて市販され、
Softsel Hot List
のトップに躍り出た
。市販版には、
システムの電源を入れると自動的に起動する
CP/M
の短縮版である
SpeedStart CP/Mが含まれていた。[…]