Presentation is loading. Please wait.

Presentation is loading. Please wait.

比較プログラム言語論 平成16年6月9日 森田 彦.

Similar presentations


Presentation on theme: "比較プログラム言語論 平成16年6月9日 森田 彦."— Presentation transcript:

1 比較プログラム言語論 平成16年6月9日 森田 彦

2 レポート(6/2)総括 < テーマ > <回答結果> ちょうど半数に意見が割れた! 厳密文法派を支持 50% 自由度・融通派を支持 50%
 < テーマ >  「初めて学習するプログラミング言語としては、文法が厳密でエラーを未然に防ぐタイプのものが良いですか、それとも、記述の自由度が高く融通が利くタイプの方が良いと思いますか?」に関する5/26の厳密文法派と自由度・融通派の意見について あなたはどちらの説を支持しますか?その回答と、そう支持する理由を、できる限りHPに掲載している意見を参照(引用)する形で説明して下さい。 <回答結果> 厳密文法派を支持      50% 自由度・融通派を支持 % ちょうど半数に意見が割れた! 文法厳密派、自由度・融通派ともに言っている意見は一理あるのに、その理由となっていることが同じようなことなのが面白いと思いました。 <感想>

3 厳密文法派を支持Ⅰ 自由度・融通派からの反論
厳密文法派を支持Ⅰ  Ⅰ.最初にプログラミング言語の特殊性を意識させるべき 『プログラミング言語というのは今まで触れてきた日本語・英語などといった言語よりも厳密な規則が多々あり、違う性質・理論を持つ』という話にとても納得出来ました。確かに、特に日本語はそういった意味では曖昧な点が多いように感じます。規則がきちんとしているからこそ、その規則をきちんと把握して理解しさえすれば記述もしやすく、わかりやすくなるのではと思いました。先にそのような言語を学んでいた方が、後から自分で違う言語を学ぼうと思った時にも厳密な書き方が出来るようになり入って行きやすいのではないかと思います。 自由度・融通派からの反論

4 厳密文法派を支持Ⅱ  Ⅱ.最初にきちんとした書き方を身につけるべき 先週は自由度・融通派がきくほうがよいと考えていたが、今週の解説や他の意見をよく聞くと厳密文法派のほうがよいと感じた。なぜなら、エラーを未然に防いでくれるほうが、変な癖や間違った書き方を覚えないで、しっかりとした文法が身につくと言う意見に賛成できるからです。 厳密文法派を支持します。(中略)実際に自分も「自由度が高く融通が利くタイプでプログラムを学習してしまうと、変なくせがついてしまう。」ということは前回の講義レポートにも書きましたし、「正しい位置で打つタイピング練習も、変なくせがついている人たちはとても大変そうでした」という点で自分もWORDの資格検定の講座でとても苦労しているからです。 自由度・融通派からの反論

5 厳密文法派を支持Ⅲ①  Ⅲ.エラー表示が厳しい方が親切で理解も深まる エラー表示が厳密な程“間違えた原因”を特定しやすいとの意見に賛成です。プログラムの地点ではエラーが確認されず、動作した地点でエラーが発覚することがありますが、初心者にとってエラーは未知のもので、どこが間違えているのか理解出来ずに混乱するという経験が私にもありました。JAVAの開発チームもエラーに苦しんでC++からJAVAを開発したと伺いました。エラー表示は厳密で詳細な程よいことの立証になると思います。

6 厳密文法派を支持Ⅲ②  Ⅲ.エラー表示が厳しい方が親切で理解も深まる HPにも載っていたようにいくら熟練した人でも必ずエラーは出るので初心者であるならばそのエラー数は格段に多くなる。何事も基礎が肝心だと思うのでハードルを低くしてある自由な言語より、わざと難しくしてエラーを極力出さない方法を学ぶべきである。だが、ある程度の実力がついてきたら自由度の高いほうが、幅が広がるので使いやすいのではないかと思う。結論として歩行器の役目は厳密文法派でそれ以降は自由に歩かせるほうがよい。 自由度・融通派からの反論

7 自由度・融通派を支持Ⅰ Ⅰ.最初のハードルを低くしてまず慣れることが先決 厳密文法派からの反論
自由度・融通派を支持Ⅰ  Ⅰ.最初のハードルを低くしてまず慣れることが先決 やはり最初はプログラミングの文法や言語の厳密性を理解するのではなく、プログラミングという事に触れてそれがどんなものか、どういうことができるのかなどプログラミングということについてなんとなくでもいいので知る事が大切だと思うからです。これはプログラム言語だけに限った事ではないとおもいます。 重要なのは、どちらの説を採るにしても、まず"慣れる"ということで、その中でも特にキーボードを使うことに慣れるということは、最優先してもいいのではないでしょうか。その次として、どんなものでもいいから、"とりあえず走らせてみる(run,実行する)"ということだと思います。その結果から、"どの部分をいじってどうなった"など考えていけば、あとは個人の力量に応じてステップアップする。そういうプロセスの方が重要ではないかと考え、プログラム学習の初めにふさわしいのは、"自由度が高く、融通が利くもの"という説を支持します。 厳密文法派からの反論

8 自由度・融通派を支持Ⅱ Ⅱ.エラーを出すより、動作させる楽しさを知ることが大切 厳密文法派からの反論
自由度・融通派を支持Ⅱ  Ⅱ.エラーを出すより、動作させる楽しさを知ることが大切 私は、今回の講義を聞いて意見が変わり、初めて使うプログラム言語は自由度の高いものが良いと思いました、それはエラーを出すより動く楽しさを体験するという意見に賛成するからです、去年プログラムを習いエラーが出るとやる気が無くなるのを思い出したので、やはりやる気を出させるためにもプログラムを動かしているという自信をもたせるためにも自由度の高い言語が良いと思いました。 私は、自由度・融通派を支持します。なぜなら、「はじめから文法的に厳しくしてしまうと、プログラミングの楽しさを知る前に嫌いになり挫折してしまう」ということが一番大事だと思ったからです。何を学ぶにしても、スポーツをするにしても、一度苦手意識を持ってしまうと、そこからスキルアップをするには大変なことだと思います。プログラミングは難しいことですが、自分のやる気と努力次第で無限大にまで広がる知識だと私は思っています。こういったことを考えると、まずプログラムを作る楽しさ、完成した作品を実行したときの達成感を知り、次はもっと大きなプログラムにチャレンジしよう、といったチャレンジ精神を掻き立てることが大事だと思いました。 厳密文法派からの反論

9 自由度・融通派を支持Ⅲ①  Ⅲ.エラーを体験する方が理解が深まる 厳密文法が適すると回答した人の中で、何も知らないうちから厳密なプログラムを書くほうが、後々役に立つと回答しているけど、最初から厳密なプログラムを経験するよりは、ある程度エラーや間違いを経験してからでも遅くないと思いました。なぜなら、エラーというものを経験しないまま学習するのは、それこそ後々役に立たなくなってしまうような気がするからです。間違いをしながら学習することは自分のためにもなるし、間違いを正すというのも勉強になるからです。

10 自由度・融通派を支持Ⅲ②  Ⅲ.エラーを体験する方が理解が深まる 自由度が高く融通が利くタイプのほうがエラーを起こした部分を理解するためにプログラム上で認識するよりも実際に動かしてみて、そのエラーが起こった原因を追究し判断、修正を行うほうが知識として身に付くと思うという意見がありましたが、私もそのとおりだと思います。やはりエラーがなぜ起きたのかを自分で考えることによって、これからそれが起こったときにでも対処が出来るようになると思います。 厳密文法派からの反論

11 整理-厳密文法派の説 言語の特殊性を意識させるべき 最初にきちんとした書き方を身につけるべき エラー表示が厳しい方が親切で理解も深まる
PASCAL言語 言語の特殊性を意識させるべき   支持: そう意識することで後の学習がスムーズになる。   反論: 始めにつまずいて挫折する危険性がある。 最初にきちんとした書き方を身につけるべき   支持: 変なくせがつかず、後に応用が利くようになる。   反論: その言語特有の書式が身に付き、応用が利かなくなるのでは? エラー表示が厳しい方が親切で理解も深まる   支持: エラーの箇所や原因を特定しやすいので理解も深まる。   反論: エラーが頻出することでやる気を失う恐れがある。 苦手意識

12 整理-自由度・融通派の説 ハードルを低くして慣れることが先決 とにかく動作させる楽しさを知ることが大切 エラーを体験する方が理解が深まる
BASIC ハードルを低くして慣れることが先決   支持: 初学者の場合、まず慣れることが肝心。それには余計な制約はない方が良い。   反論: 基礎を理解せずに我流で慣れると後で発展性がなくなる。 とにかく動作させる楽しさを知ることが大切   支持: 細かいエラーを出すより動作させることで、楽しさを実感すれば自ずと自信とやる気が出てくるはず。   反論: きちんとした書き方でプログラムを作成し、正しく動作できなければ楽しさも実感できないのでは。 エラーを体験する方が理解が深まる   支持: エラーを体験的に克服することで理解が深まる。   反論: 初心者には、自力でのエラー克服は無理。

13 第8回目レポート 6/2のレポート抜粋に掲載されているレポート(意見)のいずれかについて、あなたのコメントを記述して下さい。その際、(その意見に)同意なのか、反論なのか、を述べた上で、なぜそう思うのかを、できる限り明確に記述して下さい。 なお、上の記述を行った上で、(いつも通り)講義の感想や質問等を付加しても結構です。 件名:「学籍番号(半角)+半角空白+氏名」を記入して下さい。    例) s02xxx 学院太郎

14 自由度・融通派からの反論Ⅰ 『プログラミング言語というのは今まで触れてきた日本語・英語などといった言語よりも厳密な規則が多々あり・・・(中略)最初から文法が厳密なものであり、理論が異なるものであるという認識を持ってもらえば、今までの言語を習う姿勢とは、また違った姿勢で入っていけるのだと思います。』とありましたが、それはパソコンに強く、初めから好きな人の意見だと思います。確かに、初めに厳しい規則で覚えてしまったほうが後々楽だとは思います。ですが、初めにつまずいて嫌になってしまっては、後々はないのですから。

15 自由度・融通派からの反論Ⅱ 「自由度が高く融通が利くタイプでプログラムを学習してしまうと、変なくせがついてしまい、無駄や粗が多い間違った書き方が身についてしまう」と載っていますが、私は逆ではないとかと思います、文法が厳密なプログラミング言語を使うことで、その言語特有の書き方が染み付いてしまい、自由に書けなくなると思います。 最初にきちんとした書き方を身に付けさせるべきという意見がありましたが、例え変な癖がついたとしてもなにかの拍子に間違いに気付けば直すように努力すればいいことであってたいした問題にはならないと思いますが、最初から拘束されていたらどこか作業的で、プログラミングをして全然楽しくないと思います。

16 自由度・融通派からの反論Ⅲ 厳密文法派の方の意見に、エラー表示が厳しい方が親切で理解も深まるとありましたが、そう思える人はともかくとして、そうでない人にとっては拘束以外のなにものでもないと思います。比較的融通が利くJavaでさえたまにエラーがうっとうしいと思う時があるので、やはり初心者にはそういうのは抜きにしてプログラミングの楽しさを教えさせたほうがいいと思います。

17 厳密文法派からの反論Ⅰ プログラムに「慣れるために」自由文法のプログラムを習うほうが良いというのは、若干間違っていると思います。確かに厳密文法は記述が面倒ですが、今日出てきた中でだけ判断するなら、言語の特徴は変数や演算子、制御構造の仕様に集中しているように見えます。ならばそれぞれを厳密に細かく考えて、頭を整理してくれるほうが初学者には優しいように思います。更に、『変なくせ』をつけてもらっては後々他の言語に移るときに困るということもあります。厳密なのは正確さを求めるが故なので、正確さ=プログラムの基礎知識を身につけてもらえればそっちのほうがいいです。『厳密だと大変』と書かれる人もいますが文法が厳密になると、そんなに大変でしょうか? 純粋に「慣れるため」のプログラムなら、大して難しいものでもありません。せいぜい数十行です。「慣れる」とは「段階を経て学習していく」ことでしょうから、あまり関係あることだとは思えません。

18 厳密文法派からの反論Ⅱ 初心者にとっては自由度を高くさせて楽しいと思わせてからプログラミングを習わせたほうがいいから「自由度が高く融通の利くタイプ」の方がいいとも思えるのですが、最初にきちんとした書き方を身につけないと楽しむものも楽しめなくなるのではないかと思います。楽しんでプログラミングをするというのはまず文法をきちんと覚えてからだと思います。 実行してみて、プログラムが動く楽しさを知るという意見があった。確かに、プログラムをとりあえず動かすことができるのがJavaだが、正しく動かすことができなければ楽しくないと思うし、学習するという点からは課題を的確に解いて自信をつけることが大切だと感じます。

19 厳密文法派からの反論Ⅲ (自由度・融通派の意見に対して)しかし、「記述の自由度が高い」場合、どこにエラーが発生しているのかなぜエラーが発生しているのかがわからないといったことが起きると思います。そうなってしまうと、解消法を考えるという前に行き詰ってしまい、投げ出したくなると思います。 エラーを体験する方が、理解が深まるというのも当然のことですが初心者にそんなことができるとも思えません。体験する前にエラー表示を見てエラーを回避していき、なぜそのようなエラーがでてくるのかを発見していくという方が初めて学ぶ場合にはいいと思います。

20 補足 PASCAL言語のめざしたもの 1971年 Wirth(ヴィルト)により発表 ALGOL60の後継言語
特徴:構造化プログラミングの実現、適切なデータ構造   系統的なプログラミング教育に最適   → 既存の言語とは異なる視点で開発(プログラミング教育用言語) 欧米では情報科学専攻の学生はまずPASCALでプログラミングを学んだ。→その後、必要に応じてC言語やFORTRANに移行した。                        一定の効果を上げた。 日本では、そういった教育は徹底しなかった。

21 補足 PASCAL言語その後 大型計算機全盛の時代は、欧米ではプログラミング教育用言語として普及。
ダウンサイジング(汎用大型計算機→ワークステーション→PC)により、80年代後半からあまり使用されなくなった。 PASCALのPC版がTurbo PASCALとして登場(Borland社)→一部のファンに普及 その後’90年代後半に、C言語並みの能力を備えてDelphiとして登場。→ 熱烈なファンはいるものの、ユーザ人口はそう多くはない。

22 参考 苦手意識がもたらすもの ‘91年度情報処理 BASICプログラミング理解度 3節は数学的例題を使用 苦手意識が文系Gの理解度を下げた。
参考 苦手意識がもたらすもの ‘91年度情報処理 BASICプログラミング理解度 3節は数学的例題を使用 苦手意識が文系Gの理解度を下げた。 4節はグラフィックス課題 数学的な知識は不要 ただし手間はかかる。→アルゴリズム的には複雑 にもかかわらず文系Gの理解度は上昇。 グラフィックスを描く楽しさが理解度を上げた。 数学的例題 グラフィックス

23 参考 楽しさと理解度の相関 楽しいと感ずる人ほど、理解度は高い!

24 参考 BASICの功罪 初心者を意識して開発→とっつきやすい! 変数の型がない。とにかく作って動作させてみる、というプログラミングスタイル。
初心者には好評!多くのユーザの心をつかむ。 反面・・・・ 一度身に付いた我流のプログラミングスタイルはなかなか直らない。 BASICのくせがついたら、なかなか上達しない、とかつてよく言われた。

25 BASICプログラム例 10: A=2 20: B=3.5 30: C=A+B 40: print A,”+”,B,”=“,C
 変数宣言なし!  実数型、整数型の区別もなし!  思いつくままに書いてprintで答を出力すれば良い!


Download ppt "比較プログラム言語論 平成16年6月9日 森田 彦."

Similar presentations


Ads by Google