比較プログラム言語論 平成17年6月22日 森田 彦 レポート(6/15)総括 < テーマ > テーマ1 あなたの友人で、「これからプログラミングを学習してみたい」と いう人がいたとします。あなたは、その友人にDelphiとBASIC のいずれを勧めますか?これまでの議論を踏まえて、いずれを 勧めるかを回答し、その理由(あなたの考え)を記述して下さい。 テーマ2 (プログラミングに関する)理解度と楽しさの相関について、あな たは「楽しいから理解度が上がる」と思いますか?それとも「理 解できたから楽しくなる」と考えますか?回答と共にそう思う理 由を、あなたのプログラミング演習での体験に基づいて答えて 下さい。 テーマ1 回答結果 テーマ1 4% その他 Delphi 48% BASIC 48% Delphi派と BASIC派がちょ うど半々! テーマ1 勧める理由の整理 Delphi派 BASIC派 1. 最初に基礎を身につけるこ 1.最初のハードルを低くし抵抗 とが重要だから 感なく学習してもらいたいか ら 2. ミスの原因が分かりやすい 方が良いから 2.まずはプログラミングの楽し さを知ることが大切だから 3. その後の発展性を考えると Delphiの方が良いから 3.とにかく実行できることが(初 学者には)大切だから 4. BASICでは欠点が多す ぎるのでは・・・ 4.プログラミングの大まかな 概念をつかみやすいから 5. Delphiを勧めるが、学習者 の意欲や性格によっては BASICも・・・ 5.自主的に自分の考えで学習 するようになるから 論争を振り返って・・・ プログラミング言語を特徴づける視点として、文法の厳密さ を採り上げた。 厳密文法と自由文法それぞれの長所と短所を考察した。 それぞれの代表例として、最終的にDelphiおよびBASICを 採り上げ、初学者にどちらを勧めるかを考察してもらった結 果・・・、回答結果は、ちょうど半々だった。 これは、どちらの長所を重視するか(あるいはどちらの短所 を憂慮するか)、という点で意見が分かれる、ということを意 味している。 しかし、単なる意見対立ではなく、お互いの長所と短所を理 解した上での意見交換が大半を占めている点が重要。 今後、(皆が)プログラミング経験者として意見を求め られた時に、ここでの意見交換を参考にしてください。 補足 BASICのメリットをもっと進めると・・・? 最初はプログラミングを「学ぶ」というより「遊ぶ」という感 覚でやってみたらよいと思いました。(Delphi派) BASICは・・・十分プログラミングの楽しさを伝えられると 思います。(Delphi派) 文法上の制約が少なく初心者にも抵抗が少ないという 点が大事・・・(BASIC派 以下同じ) 意外とプログラミングというものは簡単なものであるとい うことを教えてあげたい・・・ 始めは基本概念うんぬんよりもまず自分の思いどおり にやってみて、実行できるのが一番だと思います。 ポイントはやらされるのではなく、自分で考えて失敗して 理解していくというところにあります。 これらのメリットを追求した言語としてLOGOがある。 参考 児童教育用言語LOGO -制約の少ない言語で創造性を高める教育を行う例ー 1967年 MIT(マサチューセッツ工科大学)の シーモア・パパート教授グループによって開発 児童教育用ツールとして開発 特徴:コンピュータとの対話形式でプログラミング できる。 例:タートルグラフィックス <正方形を描くプログラムの例> REPEAT 4 [FORWARD 100 RIGHT 90] (100歩進んで90度右に曲がることを4回繰り返す) LOGOの効用 子どもたちは、LOGOを用いて様々な概念を獲 得。→遊びの要素(楽しみながらやる要素)が重 要 発想や想像力を発展させるツール(道具)として 有効。 コンピュータを(自分の考えで)動作させるので、 コンピュータに対する抵抗がなくなる。→やらさ れるものではなく、自分が動作させるものだとい う(能動的)意識が自然に身に付く。 日本でも小中学校で導入の実績あり→パソコン に関する導入教育の可能性を広げる!? テーマ2 回答結果 テーマ2 5% 30% 「理解が先」が2/3 を占める。 楽しさが先 理解が先 65% テーマ2 論点の整理 詳細はHP参照 「理解が先」派 「楽しさが先」派 1. 経験上、理解度が高まる につれて楽しくなってきた 2. 自分の考えで動作させた 時の達成感が楽しさにつ ながる 3. 理解できると意欲がわき楽 しくなる 4. 「理解する→楽しくなる→さ らに理解度が上がる」と循 環しているのでは? 5. 始めから楽しいと言うこと は(そもそも)ないのでは? 1. 経験上、プログラミングを楽 しめることが理解度向上に つながった 2. プログラムが動作する楽し さが理解度向上につながる 3. 楽しいと興味・意欲が湧い て理解度向上につながる 4. 「楽しい→理解度が上がる →さらに楽しくなる」と循環し ているのでは? 5. まずは楽しまないと理解す る気にもならないのでは? <本日の講義テーマ> FORTRANにみる言語構成要素の発展 <内容> FORTRANの起源および発展の概観 分岐処理の記述の発展 繰り返し処理の記述の発展 FORTRAN発展の方向性と現状 FORTRANの起源 1954年、IBM社バッカス(Backus)らにより開発 開始 1957年 IBM704に実装 → 使用開始 当初はIBM Mathematical FORmula TRANslating System と命名 →FORTRAN その性能や設計内容が高く評価される。 ALGOL60プロジェクト以前! FORTRANは進化し続けている。 FORTRANの発展① 原型 ー 型宣言のない世界 <プログラム例> 1234567890 プログラムは7~72列の間に記述する。 ----------------------------------------<実行結果> A=3.5 12345678901 B=1.5 -------------------------J=(A+B)/2 3. 5 1. 5 2 WRITE(6,100) A,B,J 100 FORMAT(2F4.1,I3) I,J,K,・・・,Nで始まる変数:整数型 STOP それ以外 :実数型 END きわめて簡単な文法規則! 数式を書く様にプログラムを 書ける! FORTRANの発展② 副プログラムの導入 1958年FORTRANⅡ発表→副プログラム(サブ ルーチン)の導入 1234567890 ---------------------------------------------- A=3.5 B=1.5 CALL HEIKIN(A,B,C) WRITE(6,100) A,B,C 100 FORMAT(2F4.1,F5.2) STOP END SUBROUTINE HEIKIN(A,B,C) C=(A+B)/2 RETURN END <実行結果> 1234567890123 -------------------------3. 5 1. 5 2. 5 プログラムの見通しが良くなる。 FORTRANの発展③ 型宣言の導入 1962年、FORTRANⅣ発表→型宣言を導入 1234567890 -------------------------------------------- REAL A,B INTEGER J A=3.5 B=1.5 J=(A+B)/2 WRITE(6,100) A,B,J 100 FORMAT(2F4.1,I3) STOP END ALGOL60プロジェクトの影響 1234567890 ------------------------------------------ A=3.5 これもOK B=1.5 J=(A+B)/2 WRITE(6,100) A,B,J 100 FORMAT(2F4.1,I3) STOP END <暗黙の型宣言> I,J,K,・・・,Nで始まる変数:整数型 それ以外 :実数型 FORTRANの発展④ 文字列型の導入 1978年、FORTRAN77発表→文字列型の導入 1234567890 -------------------------------------------- REAL A,B INTEGER J CHARACTER MOJI*7 MOJI=‘Result:’ A=3.5 B=1.5 J=(A+B)/2 WRITE(6,100) MOJI,A,B,J 100 FORMAT(A,2F4.1,I3) STOP END <実行結果> 1234567890123456789 -------------------------------Result : 3. 5 1. 5 2 分岐処理の記述の発展① 分岐処理の表現(初期) テストの得点を入力し、50点以上な ら「合格」、50点未満なら「不合格」と 表示するプログラム 始め Tenの入力 Ten≧50 No Yes ‘合格’と表示 終り ‘不合格’と表示 IF と GO TO の世界 INTEGER TEN READ(5,*) TEN IF(TEN.GE.50) GO TO 10 WRITE(6,*) ‘不合格’ GO TO 20 10 WRITE(6,*) ‘合格’ 20 STOP END プログラムの見通しが良くない! 分岐処理の記述の発展② 分岐処理の表現(改良) テストの得点を入力し、50点以上な ら「合格」、50点未満なら「不合格」と 表示するプログラム 始め Tenの入力 Ten≧50 No Yes ‘合格’と表示 終り ‘不合格’と表示 IF THEN~ ELSE~ END IF 文 の導入 INTEGER TEN READ(5,*) TEN IF(TEN.GE.50) THEN WRITE(6,*) ‘合格’ ELSE WRITE(6,*) ‘不合格’ END IF STOP END 無駄な文番号を排除→ GO TO文を排除 繰り返し処理の記述の発展① 繰り返し処理の表現(初期) 1~Nまでの和を求める。 始め Nの入力 SUM←0 I←1 I≦N Yes SUM←SUM+i i ← i+1 No 終り IF と GO TO の世界 INTEGER N,SUM,I READ(5,*) N SUM=0 I=1 10 CONTINUE IF(I.GT.N) GO TO 20 SUM=SUM+I I=I+1 GO TO 10 20 CONTINUE STOP END プログラムの見通しが良くない 繰り返し処理の記述の発展② 繰り返し処理の表現(改良) 1~Nまでの和を求める。 DO文 の導入 INTEGER N,SUM,I READ(5,*) N SUM=0 DO 10 I=1,N SUM=SUM+I 10 CONTINUE STOP END 始め Nの入力 SUM←0 I←1 I≦N Yes SUM←SUM+i i ← i+1 No 終り さらに・・・ INTEGER N,SUM,I READ(5,*) N SUM=0 DO I=1,N SUM=SUM+I END DO STOP END DO文の導入→GO TO文の排除 プログラムの見通しが良くなる FORTRAN発展の方向性とは? 型宣言の導入→ALGOL60プロジェクトの影響!? IF THEN~ELSE~END IF文 および DO文 の導入 → 構造化プログラミング(運動)の影 響 FORTRANの(現在の)普及度は・・・ ユーザは、科学技術計算を行う、研究者および 技術者に限定されている。→ソフトウェア資産が 多いため、今後もしばらく存続・発展する。 第10回目レポート 本日の講義で、あなたが最も興味を持った点はどのよう な点ですか?講義の全体的な感想と共に、できる限り 具体的に、200字~400字程度で記述して下さい。 なお、上の記述を行った上で、HP上の前回のレポートを 読んでそれに対するコメント(意見や感想)を付加しても 結構です。 提出先:[email protected] 件名:「学籍番号(半角)+半角空白+氏名」を記入し て下さい。 例) s03xxxx 学院太郎 Delphi派 Ⅰ.最初に基礎を身につけること が重要だから Delphiを勧めた方が全体的なプログラミングの知識を 得られるのではないかと思いました。・・・(中略)流れを 覚える・形式を覚える場合において、始めから幅を広げ すぎると基準が設定されず、初心者には「もっと正確に できないものか、自分で記述を複雑にしているのではな いか?」というような疑問が浮かんでしまうのではない か(と)不安になった。 最初にある程度厳しく教えて、その後に自由なプログラ ミングの世界に解き放ってあげた方が様々なプログラム 言語にとっつきやすくなるのではないか。 Delphi派 Ⅱ.ミスの原因が分かりやすい方 が良いから どちらかを薦めるならDelphiです。BASICは文 法の制約が少なかったり、思いつくまま記述がで きるのですが、間違ったときに原因がわかりずら ければ学んでいくうえで身につきにくいのではな いかと思う。間違いをある程度、自分で見つけら れそれを修復していく作業がなければ成長しな いと思うからです。面白さを感じにくいかもしれな いけど自分で進めていけるようになれば楽しさ は後からついてくるものだと思う。やはり基本を しっかりと学べる方がよいのではないかと思う。 Delphi派 Ⅲ.その後の発展性を考えると Delphiの方が良いから その1 僕は厳密文法を支持してきました。どんなことで も基礎が重要だと思うからです。初心者に勧め るのであればDelphiです。Delphiは厳密で事前 に設計しなくてはいけないという弱点があります。 BASICであれば思いつくままに記述できます。し かしこの事前の設計こそがあとあと理解するの に役に立てることができるでしょう。 見通しを持ってプログラムを組む事が、プログラミ ング上達の最重要ポイント! Delphi派 Ⅲ.その後の発展性を考えると Delphiの方が良いから その2(BASIC経験者より) 私自身は「発想の実現化」が高いことが重要だと思いま す。BASICは確かに見てわかりますし、制約もほとんど ありません。が、高度なものを作ろうと思えば思うほどわ けがわからなくなり、正直作ってるときよくても後から バージョンアップとか修正とかやる気も起きません。そこ で、発想は終わりです。・・・(中略)ところが、Delphiなら 制約は多くなりますが「娯楽プログラム」から「高度なア プリケーション」まで勉強さえすれば作れますし、・・・どこ で何が起こせるのか明確に分かるので、バージョンアッ プや修正も(BASICに比べれば)比較的容易です。そし て、どんどん発想が拡張していっても、そんなに億劫に ならずにプログラミングができ、発想が実現化しやすい と思います。 再利用性は、いいプログラムのポイント! Delphi派 Ⅳ.BASICでは欠点が多すぎるの では・・・ 私は初心者が学ぶには初心者向けに作られた言語で、 かなり自由度が高いBASIC勧めたいとは思いません。 たしかに文法に融通が効き初心者にはかなりとっつき やすいものだと思いますが、欠点の方が大きいような気 がするからです。「誤った結果を得た場合の原因の解析 が困難」「プログラミング上の基本概念が身に付きにく い」などこれからプログラミングを学習したい思ってる人 にはあまり有益なものになるとは思わないです。・・・(中 略)ですがたくさんの人が「最初に厳しいもので学ぶとつ まらなくなる」「プログラミングを学ぶ第一歩として、プロ グラミングに慣れるということが大事」「基礎を固めようと する『やる気』を持つことが、一番大切なこと」という意見 を聞いて最初はプログラミングを「学ぶ」というより「遊 ぶ」という感覚でやってみたらよいと思いました。 Delphi派 Ⅴ.Delphiを勧めるが、学習者の 意欲や性格によってはBASICも・・・ もしその人が「プログラミングを学びたい」という本格的 な意欲があるなら、構文がしっかりしているDelphiを勧 めます。 そしてそれからもっとプログラミングを簡単に作 れる言語もあるとJavaを勧めると思います。 また、逆に かるくプログラミングに興味があって、簡単なプログラミ ングしか作らないとかあまり本格的に学ぶつもりがない なら、BASICを勧めます。BASICはプログラム記述が進 むにつれ順序がバラバラになってみにくい言語ですが、 簡単なプログラミングしかつくらないのであれば初心者 向けに記述も簡単なのであの程度の言語で十分プログ ラミングの楽しさを伝えられると思います。 BASIC派 Ⅰ.最初のハードルを低くし抵抗 感なく学習してもらいたいから なぜ、BASICかというと、文法上の制約が少なく初心者 にも抵抗が少ないという点が大事だと思ったからで す。・・・(中略)私はプログラミングの敷居を高くしたくあ りません。どんな人にも触ってもらいたいし、・・・(中略) プログラミングがどのようなものなのかを最初に知って もらううえで初心者にも抵抗ないというBASICの長所を 推したいと思います。 私は間違いなくBASICを薦めると思います。やはり、初 めての取り組みに対してプログラミングの可能性という ものを潰したくないからです。私は興味を持てる環境を 人に提供すると思います。それは意外とプログラミング というものは簡単なものであるということを教えてあげた いだけです。 BASIC派 Ⅱ.まずはプログラミングの楽しさ を知ることが大切だから この講義を受けている中で、「Delphiは難しく、理解しづ らい」というイメージが私の中で出来上がってしまってい ます。なので、友人のような初学者にはできるだけ理解 のしやすい言語から学んでもらい「プログラミングは楽し い」ということを一番初めに知ってもらいたいです。 僕はBASICを勧めたいと思う。しかし、完全に独学なら ばあまり勧めたくない。ある程度のところまで誰かが導く ならばという条件付である。 なぜならば、完全な独学だ とBASICの短所を思いっきり踏むと思うからだ。・・・(中 略)BASICは指導者がいればこそ学習に使える言語だ と思う。 そして、指導者がいるならばこの言語はプログ ラミング言語の楽しさを知るにはなかなかいい言語なの ではないだろうか、と思う。 BASIC派 Ⅲ.とにかく実行できることが(初 学者には)大切だから その1 参考意見 私ならまずBASICを勧めます。 理由は、プログラムの 実行まで簡単に到達できるからです。どんなに簡単なプ ログラムであろうと、実行さえできればプログラミングの 楽しさを味わうことができると思います。また、変数宣言 や型などの基本概念が身に付きにくいと思いますが、基 礎中の基礎である「変数への代入」という考え方は BASICで十分理解できるはずです。ただ、BASICのま まプログラミングを続けていくとBASICの欠点(スパゲッ ティ等)の存在が大きくなっていくと思うので、ある程度 慣れたらDelphiなどの言語に移ればよいと思います。 始めは基本概念うんぬんよりもまず自分の思いどおり にやってみて、実行できるのが一番だと思います。 BASIC派 Ⅲ.とにかく実行できることが(初 学者には)大切だから その2(BASIC経験者より) これからプログラミングの学習をしたいという人には、は じめの内はBASICを勧めると思います。私は初めてプロ グラミングに触れた時に使った言語はBASICでしたが、 スムーズに意味が理解でき、ある程度の英語力があれ ば初心者にも抵抗なく学習できる所がBASICの利点で あって、これからプログラミングを学習する人にはまずプ ログラムを実行できる喜びを一番に感じてもらいたいか らです。ただBASICは、あまりにも記述が自由すぎるし 変数型の宣言がないなど、BASICで慣れてしまうと後々 のプログラミング学習に身に付きにくくなってしまうと思う ので、BASICはせいぜい数週間程度の学習でいいと思 います。 BASIC派 Ⅳ.プログラミングの大まかな概念をつ かみやすいから DelphiとBASICのどちらかを勧めるとしたら、BASICだ と思います。文法上の制約が少なく、思いつくままに記 述できるという長所から、プログラミングとはどういった ものなのかという、雰囲気を掴みやすいと思ったからで す。しかし、ある程度わかってくると、プログラミング上の 基本概念が身につきにくい・見直しをしようと思っても迷 路のようになっていて困難になるなど障害が出てくるか と思います。その点Delphiは基本的な文法を覚えてし まえば、あとはむしろBASICよりも学んで行き易いかも 知れません。ですから実際に勧める場合、私はBASIC を勧めつつも、2つの言語の短所・長所を伝えて本人に 選んでもらうことになると思います。 BASIC派 Ⅴ.自主的に自分の考えで学習す るようになるから あくまでも初心者の人に勧めるのであれば、BASICです。 自分がプログラムを学んだ時に一番嫌になるのが、・・・ (中略)プログラムを教科書通りに打ち込んではいるが 何をしているのかわからないためにそのエラーの意味を 理解出来ない時。つまり、やらされているので内容も理 解出来ないので楽しくないと思います。BASICには制約 が少ないので初心者の人が自由に打ち込むことができ る。自由ということは考えなければならなので、結果的 にぐちゃぐちゃになってしまっても、それは自分で考えた プログラムなので内容は理解しているということが、今 後につながり興味をもつことができるのではないか。ポ イントはやらされるのではなく、自分で考えて失敗して理 解していくというところにあります。 自分の考えでコンピュータが動作したという充実感が初学 者には重要との指摘→当を得た指摘! タートルグラフィックス FORWARD 100 RIGHT 90 FORWARD 100 RIGHT 90 FORWARD 100 RIGHT 90 FORWARD 100 RIGHT 90 正方形完成! REPEAT 4 [FORWARD 100 RIGHT 90] <一度に正方形を描ける> 対照的な意見(テーマ2のレポートより) -「理解が先」派- 昨年の自身の経験からも、「わからないけど動 いたから楽しい」と思ったことはなく、「自分が しっかり理解でき、正しく動作した」から楽しかっ たと思います。また、現在SAをやっているのです が、自分の受け持っている後輩たちは理解でき てはいないけど楽しいということはほとんどない ようです。逆に最初のうちは理解できなかったけ ど、最近少しわかるようになって少しずつ楽しく なってきたという学生もいました。
© Copyright 2024 ExpyDoc