コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
LOGOのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
LOGO
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
{{otheruses2|[[プログラミング言語]]||ロゴ}} {{Infobox プログラミング言語 | name = LOGO | logo = [[ファイル:Remi turtlegrafik.png|300px]] | caption = LOGOの出力例 | paradigm = [[プログラミングパラダイム|マルチパラダイム]]:[[関数型言語|関数型]]、[[手続き型プログラミング|手続き型]]、[[リフレクション (情報工学)|リフレクティブ]] | year = 1967年 | designer = [[:en:Wally Feurzeig|Wally Feurzeig]]、[[シーモア・パパート]] | developer = Wally Feurzeig、シーモア・パパート | typing = [[型システム|dynamic]] | implementations = UCBLogoなど多数 | influenced_by = [[LISP]] | dialects = [[StarLogo]]、[[NetLogo]] | influenced = [[Smalltalk]]、 [[Etoys]]、 [[Scratch (プログラミング言語)|Scratch]]、 [[NetLogo]]、 {{仮リンク|KTurtle|en|KTurtle}}、 [[REBOL]] }} {{プログラミング言語}} '''LOGO'''(ロゴ)は、教育で使われている[[プログラミングパラダイム|マルチパラダイム]]の[[コンピュータ]][[プログラミング言語]]である。[[関数型言語|関数型プログラミング言語]]の[[LISP]]を原型とし、元々は関数型言語のように書かれ<ref>{{Harvnb|Harvey|1997a|p=xvi}}</ref>、出力機器としてタートルと呼ばれる機械を操作していた。また、リスト、ファイル、I/O、[[再帰]]などを扱う重要な能力を備えていた。今日、主にその{{仮リンク|タートルグラフィックス|en|turtle graphics}}で記憶されているが、[[第3期の教育]]で教える言語は[[Scheme]]や[[スクリプト言語]]に置換されてきた。 [[1967年]]、[[教育]](特に[[構成主義 (教育)|構成主義]][[教育]])のために、{{仮リンク|ダニエル・G・ボブロウ|en|Daniel G. Bobrow}}、[[:en:Wally Feurzeig|Wally Feurzeig]]、[[シーモア・パパート]]、シンシア・ソロモンによって開発された。名称はギリシャ語の ''logos'' (言葉)に由来し、他の既存の言語が数を処理するようにLOGOでは単語を処理することを強調している。多くの計算機科学の概念を教えるのに使うことができ、例えば[[カリフォルニア大学バークレー校]]の講師{{仮リンク|ブライアン・ハーヴェイ (講師)|en|Brian Harvey (lecturer)|label=ブライアン・ハーヴェイ}}は3巻の著書 ''Computer Science Logo Style'' にまとめている<ref>{{Harvnb|Harvey|1997a}}、{{Harvnb|Harvey|1997b}}、{{Harvnb|Harvey|1997c}}</ref>。 [[コンピュータ]]の使用を通じた[[児童]]の思考能力の訓練を目的としており、主に8歳から12歳の児童にも扱い易いよう配慮された豊富なグラフィック関連のコマンドが特徴である。主な使用者は学生、教師が想定された。 == 歴史 == 1967年、[[マサチューセッツ州]][[ケンブリッジ (マサチューセッツ州)|ケンブリッジ]]にある研究機関 [[BBNテクノロジーズ|Bolt, Beranek and Newman]] (BBN) にて、Wally Feurzeig と[[シーモア・パパート]]が開発した<ref>[http://el.media.mit.edu/logo-foundation/logo/index.html Logo Foundation]</ref>。[[人工知能]]、[[数理論理学]]、[[発達心理学]]の成果を基盤としている。最初の4年間は、BBNにてLOGO開発とLOGOによる教育の研究が行われた。最初の実装は'''Ghost'''と呼ばれ、[[SDS 940]]上の[[LISP]]で書かれていた。その目標は子どもが単語や文で遊べる数学の遊び場を作ることだった<ref>[https://logothings.wikispaces.com/ Cynthia Solomon]</ref>。LOGOの設計では、しきいが低く使いやすいことと、エラーの原因がわかりやすいことが重視されている。[[ウォルターの亀|タートル]](亀)を採用したのは、視覚的フィードバックが即座に得られ、デバッグを即座に行えるからだった。 LOGOで操縦可能な[[ウォルターの亀|亀のロボット]]が[[マサチューセッツ工科大学|MIT]]で作られたのは1969年のことであり、それ以前から画面上で動作する仮想的なタートルが存在していた。現代のLOGOも、その最初のタートルの基本コンセプトからそれほど変わっていない。最初の亀ロボットは有線式であり、[[ラジコン]]あるいは[[無線通信|無線]]操縦ではなかった。後にBBNはIrvingという亀ロボットを開発しており、それは触角センサを持ち、前進、後退、回転といった動きができ、ベルを鳴らす機能も備えていた。1968年から69年にかけて、マサチューセッツ州[[レキシントン (マサチューセッツ州)|レキシントン]]の中学校で1年間かけたLOGO教育が実施されている。仮想的なタートルや亀ロボットを最初に教育に取り入れたのは同じレキシントンの小学校(5年生)で、1970年から71年にかけてのことである。 == デザイン == LOGOは通常[[インタプリタ]]として実装されるが、最近では[[コンパイラ]]として実装したものもある(LhoghoやLiogo)。大文字と小文字は区別しないが、出力では大文字/小文字を保持する。ブロック構造を持つ逐次的プログラミング言語と関数型プログラミング言語を折衷したものといえる。標準規格は存在しないが、'''UCBLogo'''が高く評価されている。教育用言語ではあるが、リスト処理能力の高さから実用的なスクリプトが非常に書きやすくなっている<ref>[http://el.media.mit.edu/logo-foundation/logo/programming.html Logo Programming Language at the Logo Foundation website]</ref>。 === タートルとグラフィックス === LOGO最大の特徴はタートルであり<ref>[http://el.media.mit.edu/logo-foundation/index.html Logo Foundation]</ref>、画面上の[[カーソル]]で表され(タートルと呼ばれるようになったのは、先述の亀のロボットから)、それに動きと線描を命令することができ、プログラムに基づいて線で描かれたグラフィックスを生成できる。三角形または亀の形で表されることが多い(実際にはどんなアイコンでもよい)。シーモア・パパートがLOGOにタートルグラフィックスを追加したのは1960年代末ごろで、パパート自身が開発した亀ロボットに上げ下げ可能なペンを装着させて描画できるようにしたことからである。 実際問題として、それ以前からあるグラフィックス描画のモデルではなくタートルを採用したことで、LOGOでは亀ロボットの操縦を真似た形でグラフィックスを描画するようになった。そのため[[解析幾何学|デカルト幾何学]]のように (x,y) で座標を指定するのとは異なり、[[ユークリッド空間]]的に相対的な距離と角度を指定することで描画する。タートルは命令を受けるとその時点の位置と向きを起点として動作し、例えば ''LEFT 90'' と命令すれば右に90度回転する。子供は、自己と一体化しやすいタートルを操作してその軌跡を図形として描いたり色を塗ったりして楽しむ事が簡単に出来る。パパートはこれを body-syntonic reasoning(身体同調性推論)と呼んだ。特に複数のタートルを同時に操作可能なLOGO実装では、タートル(カーソル)の見た目を再定義でき、しかもタートル同士の[[当たり判定]]ができるようになっているものがあり、タートルを[[スプライト (映像技術)|スプライト]]のように機能させることができる。 タートル方式は絶対座標指定方式の代替としてLOGO以外の環境でも使われることがある。例えば、[[フラクタル]]を生成する[[L-system]]の描画にはタートル方式が適している。 === データ === UCBLogoには次の3種類の[[データ型]]がある。 * ワード([[LISP]]のアトムに相当) * [[リスト (抽象データ型)|リスト]] * [[配列]] 数はワードの特殊ケースと解釈される。 [[静的型付け]]ではなく、インタプリタが文脈からデータ型を検知する。 次の2つの記号は重要な意味を持つ。 * コロン (<code>:</code>) は「-の中身(値)」を意味する。これは変数が実際にはメモリの特定の位置を示していると児童に意識させるのに役立つ。 * ダブルクオート (<code>"</code>) は「そのワードをそれ自身として評価する」あるいは「それを評価した後の値はそれ以前と同じである」を意味する。他のプログラミング言語ではダブルクオートは引用符として2つを組みにして使うが、LOGOではそのような対応付けがない。 数はその点で特別であり、本当はダブルクオート付きで書く必要があるが、'''2''' も '''"2''' も同じに扱われる。 変数への代入(例えば、<code>x := y + 3</code>)は、LOGOでは<code>make</code>コマンドで行う。例えば、以下の2つの文は等価である。 make "x sum :y 3 make "x sum :y "3 <code>make</code>は2つのパラメータをとり、この例での2つ目のパラメータは <code>sum :y "3</code> である。<code>sum</code> は2つのパラメータをとる演算 (operation) であり、2つのパラメータの和を計算する。<code>"3</code> を評価すると <code>3</code> となり、<code>:y</code> は <code>y</code> と呼ばれるものの中身をとる。その結果、両者を加算した和が数として得られる。 <code>make</code> は第二パラメータを評価した結果を第一パラメータに格納する。プログラミングの観点から言えば、<code>make</code>の第一パラメータは参照渡しで、第二パラメータは値渡しである。 ==== スコープ ==== 通常は変数を使用前に宣言せず、変数[[スコープ]]は大域的である。 <code>local</code> と宣言した変数は宣言した[[プロシージャ]]およびそのプロシージャを呼び出す任意のプロシージャに限定される([[動的スコープ]]の一種)。入力(LOGOでは引数を入力 input と呼ぶ)のあるプロシージャでは、引数値を保持するローカル変数が生成される。 ==== リスト ==== LOGOは[[LISP]]からリストを継承しており、ベクトルを格納する主要な手段となっている。配列も用意している。 * ワード列をリストに変換する演算、リスト群を配列に変換する演算、および逆の演算が存在する。 * リストは配列とは異なり無限に拡張可能という利点がある。first, butfirst, last, butlast, butmember, member, item といった演算でリストからデータを取り出すことができる。データ要素をリストに追加する場合は、fput または lput という文を使う。 * リストは[[キュー (コンピュータ)|キュー]]として扱うこともでき、そのための queue と dequeue という演算がある。また、[[スタック]]として扱うための push と pop という演算もある。 * リストを処理する際はループではなく再帰を使うのが自然である。 ==== 制御構造コマンド ==== LOGOには、[[if文]]、[[while文]]、[[do-while文]]、回数指定の[[ループ (プログラミング)|ループ]]といった、いくつかの一般的[[制御構造]]を備えている。一般にLOGOではループよりも再帰を好んで使用する。 また、リストベースの制御構造もある。基本的な考え方は次のように2つのリストを使う。 OPERATION [ コマンドのリスト ] [ データのリスト ] そうすると、コマンド群がリストの個々のアイテムに適用される。MAP, APPLY, FILTER, FOREACH, REDUCE, CASCADE といったテンプレートコマンドがある。テンプレート反復は、explicit-slot、named-procedure、named-slot(またはLambda)、procedure-text の4種類に分類される。 ==== 属性リスト ==== 属性リストは特殊なリストで、奇数番目のアイテムは属性名、偶数番目のアイテムは属性値となっている。属性リストを操作するコマンドとして以下の3つがある。 * <code>pprop :listname :name :value</code> - 新たなペアをリストに追加する。 * <code>remprop :listname :name :value</code> - リストから指定したペアを削除する。 * <code>show gprop :listname :name</code> - 指定した属性名に対応する属性値を取得する。 === I/O === コマンドウィンドウ(出力ストリーム)にテキストを書き込むには <code>print</code> コマンドを使い、グラフィックスウィンドウにテキストを出力するには <code>label</code> コマンドを使用する。 キーボードからの通常の入力ストリームから入力を受け付けるコマンドとして、<code>readlist</code>、<code>readword</code>、<code>readchar</code> がある。入力ストリームはディスク上のファイルなどから入力するよう切り換えることができる。同様に出力もリダイレクト可能である。 == 文法 == コマンドは1行または複数行で書かれる。多くのコマンドには短縮形があり、例えば <code>FORWARD</code> は <code>FD</code>、<code>RIGHT</code> は <code>RT</code> と短縮できる。これは児童のタイピングの手間を省くという意味がある。セミコロンから行末まではコメントとして無視される。 ; 辺の長さが100の正方形を描画 FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 FD 100 RT 120 FD 100 RT 120 ; 三角形の描画 FD 100 RT 120 LOGOでの [[Hello world]] プログラムは次のようになる。 print [Hello World] === ループ === ループ用コマンドは3種類ある。その1つが <tt>REPEAT</tt> で、次の例は正方形を描画する。 REPEAT 4 [FD 100 LEFT 90] この場合、<code>FD 100 LEFT 90</code> というコマンドを4回実行する。近似的に円を描くには、<tt>REPEAT 360 [FD 1 RIGHT 1]</tt> のように1度ずつ回転して1単位だけ描画するコマンドを360回反復すればよい。ループは入れ子可能であり、次のようなちょっとしたコードで面白い図形を描画できる。 REPEAT 36 [RT 10 REPEAT 360 [FD 1 RT 1]] FD 25 RT 90 次もループの入れ子の例である。 REPEAT 36 [REPEAT 4 [FD 100 RT 90] RT 10] === ペン === [[ファイル:Ubclogo drawing dash.png|right|タートルで破線を描いた例]] タートルは、その尻尾にペンをつけた形のアナロジーで使われることが多い。タートルのペンは上げ下げでき、次のように破線を描くことができる。 FD 20 ; 直線を描きつつタートルが移動する PENUP ; ペンを持ち上げる。そのため描画されなくなる FD 20 ; 移動するが、線は描かれない PENDOWN ; ペンを下ろすので、再び描画されるようになる FD 20 ; 直線を描きつつタートルが移動する PENUP ; ペンを持ち上げる。そのため描画されなくなる FD 40 ; 移動するが、線は描かれない PENDOWN ; ペンを下ろすので、再び描画されるようになる RT 20 ; 右(時計回り)に20度回転 LOGOの設計は「しきいは低く、天井はない」(low threshold and no ceiling) という精神で貫かれており、初心者にとってはとっつきやすいが熟練したユーザーが使えば高度なこともできる。アニメーションを行うには図形を描画し、それを消去する機能を必要とする。タートルのアナロジーでは、タートルが描画だけでなく消去もできなければならない。UCBLogoでは PENERASE (PE) というコマンドで既に描かれているものをタートルが消去することができる。その状態でFDコマンドを使えば、タートルが通った跡に沿って既に描画されていたものが消去される。再び描画状態にするには PENPAINT (PPT) コマンドを使用する。 === 関数とプロシージャ === 各行は関数または[[サブルーチン]]の呼び出しであり、それには次の2種類がある。 * コマンド (command) - 何らかの副作用があるが、値は返さない。例えば <code>print</code> * 演算 (operation) - 値を返す。例えば、<code>sum</code>、<code>first</code>、<code>readlist</code> など。 コマンドは[[Pascal]]のプロシージャに似ており、演算はPascalの関数に似ている。{{仮リンク|コマンドとクエリの分離|en|command-query separation}} (CQS) で言えば、LOGOの演算はクエリに相当する。返す値が<code>true</code>または<code>false</code>というワードに限定されている演算を述語 (predicate) と呼び、慣習として名前の最後に<code>p</code>をつける。例えば、<code>emptyp</code>、<code>wordp</code>、<code>listp</code> などがある。 [[ファイル:Ucblogo.png|thumb|Basic Chair]] プロシージャは、<tt>TO</tt>と<tt>END</tt>で囲まれたコードで次のように定義できる。 TO CHAIR REPEAT 4 [FD 100 RT 90] FD 200 END なお、初期の実装では物理的に1行で入力できる範囲でしかプロシージャを定義できなかった。 LOGOでは<cite>EDALL</cite>などのコマンドでエディタを呼び出すことができる。エディタではプロシージャを複数行で記述でき、完了するまでその内容をインタプリタが解釈することはない。 EDALL TO CHAIR REPEAT 4 [FD 100 RT 90] FD 200 END 新たに定義したプロシージャは名前に対応するワード(上記の例ではCHAIR)としてセーブされるが、LOGOのセッションが終了すると忘れられてしまう。上の例の場合、プロシージャを定義した後は <code>CHAIR</code> と入力すれば <code>REPEAT 4 [FD 100 LEFT 90] FD 200</code> というコードが実行される。つまり <code>CHAIR</code> というワードはコマンドのように使うことができ、例えば <code>REPEAT 4 [CHAIR]</code> とすれば <code>CHAIR</code> の操作が4回反復される。 EDALL ; エディタモードに入り、その後実際のプロシージャを記述する TO ERASECHAIR PE BK 200 REPEAT 5 [FD 50 RT 144] PPT END CS CHAIR WAIT 200 ERASECHAIR <code>CS</code>はグラフィックスウィンドウをクリアするコマンド、<code>WAIT</code>は指定した時間だけ待つコマンドである。次のようにすればアニメーションが可能となる。 CS REPEAT 20 [CHAIR WAIT 200 ERASECHAIR FD 20] === 引数/パラメータ === [[ファイル:Ubclogo function call.png|thumb|例によって描かれるパターン]] LOGOではプロシージャに追加情報を渡し、プロシージャが情報を返すことができる。追加情報を使用するプロシージャは、定義の際にそれらに名前をつける。その場合、名前の前のコロンをつける。情報は値渡しであり、コロンは「-の値」を意味する。次の例のように CHAIR 200 という形でプロシージャを呼び出せば、:thesize に200という値がセットされ、FD :thesize とすることで、FDに対して200という値を指定して実行することになる。 EDALL ; TO CHAIR :thesize REPEAT 4 [FD :thesize RT 90] FD :thesize END CS REPEAT 9 [CHAIR 50 RT 20 CHAIR 100 WAIT 50 RT 20] === その他 === 数式は[[前置記法]]が基本であり、<code>sum :x :y, product :x :y, difference :x :y, quotient :x :y</code> のように記述する。[[中置記法]]も可能である。 キーワードについての説明は<code>help</code>コマンドで表示できる。その際キーワードの前にダブルクオートが必要である。 [[ファイル:Ubclogo spiral.png|thumb|再帰で描いた螺旋]] LOGOは[[再帰呼び出し]]が可能であり、プロシージャの定義内でそのプロシージャ自身を呼び出せる。 to spiral :size if :size > 30 [stop] ; 脱出条件 fd :size rt 15 ; 本体処理 spiral :size *1.02 ; 再帰呼び出し(引数は中置記法の数式) end spiral 10 [[再帰呼び出し]]を活用して[[コッホ曲線]]や[[ヒルベルト曲線]]、[[二進木]]を簡単に描くことができるのもLOGOの大きな特徴である。教育現場では一般的に、子供に思い思いの図形を定義させ、図形に潜んでいる規則性に気づかせるというような指導が行われている。 本来のコマンドは英単語を基本としているが、各国語に[[移植 (ソフトウェア)|移植]]された結果、様々な言語を元にしたコマンドが開発されている。例えば日本語化されたコマンドを持つLOGOでは、<code>FORWARD</code>を「まえへ」、<code>RIGHT</code>を「みぎへ」などとしているものがある。 == 実装例 == 2012年11月時点で、261の実装や方言があり、それぞれに特徴がある<ref>[http://elica.net/download/papers/LogoTreeProject.pdf The Logo Tree Project]</ref>。その多くは歴史的なもので既に使われていないが、今も活発に開発されているものもある。 標準規格がないが、言語の中核的部分については大まかな合意が形成されている。それでも様々な方言があり、相互に完全な互換性がない。単に{{仮リンク|タートルグラフィックス|en|turtle graphics}}の描画プログラムをLOGOと呼んでいる場合があり、状況を混乱させている。 1980年代初頭から中ごろにかけて、[[Apple II]]用の '''Apple Logo''' や[[TI-99/4A]]用の '''TI Logo''' が発売され、初心者のプログラミング入門に最適と宣伝された。このころ欧米の小学校での教育によく使われ、LOGOの最盛期だったといえる。Apple Logo を開発したのはLCSI<ref>http://www.microworlds.com/</ref>で、これ (LCSI Logo) が初期のLOGO実装として広く普及した。 今日ほぼデファクトスタンダードとされているのがブライアン・ハーヴェイの開発した'''UCBLogo''' (Berkeley Logo) である<ref>[http://www.cs.berkeley.edu/~bh/logo.html Berkeley Logo (UCBLogo)]</ref>。フリーかつクロスプラットフォームの実装だが、[[グラフィカルユーザインタフェース|GUI]]は初歩的なものしかなく、そのインタフェースを改良するプロジェクトがいくつかある。[[Microsoft Windows]] 向けに拡張した'''[[:en:MSWLogo|MSWLogo]]'''<ref>[http://www.softronix.com/logo.html MSWLogo]</ref>とその後継である'''[[:en:FMSLogo|FMSLogo]]'''<ref>[http://fmslogo.sourceforge.net/ FMSLogo]</ref>は、[[イギリス]]、[[オーストラリア]]、[[ギリシャ]]の学校でよく使われている。製品として販売されているLOGOも学校でよく使われており、'''[[:en:MicroWorlds|MicroWorlds]]'''や'''Imagine Logo'''などがある。 MSWLogoは複数のタートルを扱え、3Dグラフィックスを描画できる。また、COMポートやLPTポートからの入力を扱える。またウィンドウインタフェースもサポートしており、GUIを通したI/Oも可能で、キーボードやマウスからのイベントを扱える。MSWLogo 6.5 では gifsave コマンドで簡単な[[GIFアニメーション]]も生成できる。 最近の実装では、数千ものタートルを同時に扱える。代表的な実装として、[[マサチューセッツ工科大学|MIT]]の'''[[StarLogo]]'''<ref>[http://education.mit.edu/starlogo/ StarLogo]</ref><ref>[http://mas.kke.co.jp/modules/tinyd4/index.php?id=5 StarLogo]</ref>とCCL (Center for Connected Learning) の'''[[NetLogo]]'''<ref>[http://ccl.northwestern.edu/netlogo/ NetLogo]</ref>がある。これを使って[[創発]]現象など、社会学、生物学、物理学などの分野の研究も行われている。 多くのLOGO実装は2Dグラフィックスしか扱えないが、'''Elica'''などは3Dグラフィックスをサポートしている<ref>[http://www.elica.net/site/index.html Elica]</ref>。多くの実装はインタプリタだが、Elicaの作者は'''Lhogho'''というコンパイラも開発している<ref>[http://lhogho.sourceforge.net/ Lhogho]</ref>。元々タートルは単純な[[ロボット]]に対する操作をコンピュータ上で再現した物であるため、ロボット操作との親和性が非常に高い。そのためロボット制御ができる実装もある。例えば、[[レゴ]]で作ったものをLOGOで操作するということも行われていたが、後に[[MINDSTORMS]]として発展させた際に別の言語を採用した。その元になった Crikets はレゴとMITが共同開発したもので<ref>[http://llk.media.mit.edu/projects.php?id=1942 Crikets]</ref>、そのための '''Criket Logo''' が開発された<ref>[http://llk.media.mit.edu/projects/cricket/doc/help/cricketlogo/cricketlogo.html Criket Logo]</ref>。 オブジェクト指向的拡張を施した実装として'''[[:en:ObjectLOGO|ObjectLOGO]]'''<ref>[http://www.digitool.com/ol-specs.html Object Logo]</ref>などがある。 LOGOを3次元グラフィックスに拡張した実装として'''Logo3D'''もある<ref>{{SourceForge|logo3d|Logo3D}}</ref>。 [[Java]]で実装されたオープンソースのLOGOとして Daniel Azuma の開発した'''TurtleTracks'''がある。これは BSD Logo に拡張を施したもので、後に George Birbilis が [[.NET Framework|.NET]] / [[J Sharp|J#]] に移植している。 '''E-Slate Logo''' はTurtleTracksに[[オブジェクト指向]]的プリミティブ (TELL, ASK, EACH, TELLALL) を追加して拡張したもので、こちらも開発は George Birbilis である<ref>[http://e-slate.cti.gr/ E-Slate]</ref>。 日本で開発された、あるいは日本語版が発売されたLOGOとして以下の例がある。 * [[ドリトル (プログラミング言語)|ドリトル]] (Dolittle) - ロゴ言語実行環境「ロゴ坊」を拡張したもの。厳密にはLogo言語から派生したオリジナル言語を用いる。 * FindOut - 旧[[ベネッセコーポレーション|福武書店]]が、[[ACCESS (企業)|ACCESS]]と共同で開発した教育用環境。 * [http://www.osakac.ac.jp/ecip/cybercampus/glogo.html GLOGO] - 大阪電気通信大学が開発した3次元対応LOGO * LogoWriter - LCSI Logoの日本語版。[[PC-9801]]シリーズをはじめ多くの機種に対応した、日本におけるLogoブームの火付け役となった実行環境。現行バージョンは「ロゴライターWin 4」。のちに[[MINDSTORMS|レゴ・マインドストーム]]のロボット制御用Logoとして「Lego Logo」も開発された(日本では「レゴロゴコントロール Lego TC Logo」として、Logo Writer 2とテクニカルレゴがセットでパッケージ販売された。 * Microworlds - LCSI Logoの日本語版。現行バージョンは「マイクロワールドEx」、派生バージョンとしてEx Roboticsがある。他にMicroworlds Jr、Microworlds Pro。 == 影響 == LOGOはプログラミング言語[[Smalltalk]]に大きな影響を与えた。オブジェクト指向がタートル・グラフィックスに起源を持つことはよく知られている<ref>http://jibun.atmarkit.co.jp/ljibun01/rensai/gyoukai/042/01.html</ref><ref>http://www.h6.dion.ne.jp/~origami/LOGO.html</ref>。[[Smalltalk]]から派生した[[Squeak]]で書かれたプログラミング教育環境[[Etoys]]もLOGOの影響を強く受けている。 学習者の学習環境として思考の表現方法としては、そのEtoys、同じくSqueakで書かれたMITの[[Scratch_(プログラミング言語)|Scratch]]<ref>[http://scratch.mit.edu/ Scratch]</ref>、カーネギーメロン大学の{{仮リンク|Alice_(ソフトウェア)|en|Alice_(software)|label=Alice}}<ref>[http://www.alice.org/ Alice]</ref>、Elicaがその可能性を競い合っている。 LOGOはまた、Boxerの基盤言語でもある。Boxerは[[カリフォルニア大学バークレー校]]と[[マサチューセッツ工科大学]]の共同開発プロジェクトで、「[[リテラシー]]モデル」に基づくマイクロワールドの一種である<ref>[http://www.soe.berkeley.edu/boxer/ Boxer]</ref>。 {{仮リンク|KTurtle|en|KTurtle|label=KTurtle}}は、緩やかにLOGOに基づいた子供向けプログラミング環境であり、[[KDE]]上で動作する[[KDE Education Project]]に含まれる<ref>[http://edu.kde.org/kturtle/ ''The programming language used in KTurtle is loosely based on Logo.'']</ref><ref>[http://www.kde.gr.jp/applications/education/kturtle/ KTurtle]</ref>。 == 脚注 == {{Reflist|2}} == 参考文献 == {{Refbegin}} * {{Citation |last= Harvey |first= Brian |title= Computer Science Logo Style Volume 1: Symbolic Computing |url= http://www.cs.berkeley.edu/~bh/v1-toc2.html |publisher= MIT Press |isbn= 0-262-58148-5 |year=1997 |edition=2 |ref={{SfnRef|Harvey|1997a}}}} * {{Citation |last= Harvey |first= Brian |title= Computer Science Logo Style Volume 2: Advanced Techniques |url= http://www.cs.berkeley.edu/~bh/v2-toc2.html |publisher= MIT Press |isbn= 0-262-58149-3 |year=1997 |edition=2 |ref={{SfnRef|Harvey|1997b}}}} * {{Citation |last= Harvey |first= Brian |title= Computer Science Logo Style Volume 3: Beyond Programming |url= http://www.cs.berkeley.edu/~bh/v3-toc2.html |publisher= MIT Press |isbn= 0-262-58150-7 |year=1997 |edition=2 |ref={{SfnRef|Harvey|1997c}}}} *''How to Think Like a Computer Scientist: Logo Version (Paperback)'', Allen Downey & Guido Gay, Lulu . *''The Great Logo Adventure'', Jim Muller, Doone Publications ISBN 0-9651934-6-2 - 絶版だが、[http://www.softronix.com/logo.html MSWLogo]のサイトからPDFファイルを圧縮したものをダウンロード可能 * [http://history.dcs.ed.ac.uk/archive/docs/ArtificialIntelligence/art0084.html ''To Artificial Intelligence'' (1976)] - LOGOを多く使っている初期のAIの教科書([[エディンバラ大学]]の方言 AI2LOGO を使用) * [http://www.amazon.com/gp/product/0262510375 Turtle Geometry] Abelson and diSessa *''Children Designers'', Idit Harel Caperton, Ablex Publishing Corporation ISBN 0893917885. *''Learning With Logo'', Daniel Watt, McGraw Hill, ISBN 0-07-068570-3. *Teaching With Logo: Building Blocks For Learning, Molly Watt and Daniel Watt, Addison Wesley (now Pearson) 1986, ISBN 0-201-08112-1 {{Refend}} == 関連項目 == *[[SMC-777]] - 同言語環境(DR LOGO)が標準でサポートされていた。 *[[N88-BASIC]] - NECの初期のパソコンにはタートルグラフィック機能を実装したBASICがついていた。 *[[UCSD Pascal]] - LOGOと同様に教育用として開発された言語で、タートルグラフィック機能が実装されていた。 *[[知育玩具]] - 遊びを通して教育ないし知能をトレーニングする[[玩具]]。LOGOも広義の知育玩具である。 *[[Processing]] == 外部リンク == {{Commonscat|Logo (programming language)}} * [http://el.media.mit.edu/logo-foundation/ Logo Foundation] - ロゴ情報の基本である。英語 * [http://www.logocom.jp/ 株式会社ロゴコミュニティ] - 旧株式会社ロゴジャパンが2003年に改組。ロゴライターWinの発売元。 * [http://dolittle.eplang.jp/index.php?Logo%BE%F0%CA%F3%BC%BC ロゴ情報室] - [[Microsoft Windows|Windows]][[オペレーティングシステム|環境]]で動作するLOGOプラットフォーム「ロゴ坊」が[[フリーウェア]]で提供されている。 * [http://www.softronix.com/logo.html MSWLogo, An Educational programming language] - MSWLogo配布ページ * [http://dolittle.eplang.jp/index.php ドリトル] - 学習環境ドリトルの情報サイト * [http://microworlds.jp/ マイクロワールド] - LCSI Logoの日本語版、現行製品、FCマネージメントのサイト * [http://ccl.sesp.northwestern.edu/netlogo/ NetLogo] - ノースウェスタン大学NetLogoのサイト。教育用、シミュレーションモデリング用 * [http://olivier.sc.free.fr/logosc/plogosc/telechar.htm PLOGO] - フランス製のLogo配布ページ * [http://www.embry.com/rLogo/ rLogo] - rLogo配布ページ * [http://education.mit.edu/starlogo/ StarLogo] - MITのStarLogo配布ページ、教育用、シミュレーションモデリング用 * [http://www.terrapinlogo.com/ TerrapinLogo] - TerrapinLogoのサイト * [http://www.palmspot.com/software/detail/ps3104a_98232.html TinyLogo] - Palm用Logo * [http://www.win-logo.de/eng/e_index.htm Win-Logo] - Win-Logo配布ページ。英語・独語 * [http://xlogo.sourceforge.net/ xLogo] - xLogo配布ページ * [http://www.calormen.com/logo/ Logo Interpreter] - オンラインで利用可能 * [http://turtleacademy.com/ Learn Logo for free] [[Category:LISP]] [[Category:教材|ろこ]] [[Category:関数型言語|LOGO]]
このページで使用されているテンプレート:
テンプレート:Citation
(
ソースを閲覧
)
テンプレート:Commonscat
(
ソースを閲覧
)
テンプレート:Harvnb
(
ソースを閲覧
)
テンプレート:Infobox プログラミング言語
(
ソースを閲覧
)
テンプレート:Otheruses2
(
ソースを閲覧
)
テンプレート:Refbegin
(
ソースを閲覧
)
テンプレート:Refend
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:SourceForge
(
ソースを閲覧
)
テンプレート:プログラミング言語
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
LOGO
に戻る。
検索
検索
LOGOのソースを表示
話題を追加