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

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

プログラミング 平成24年1月11日 森田 彦.
プログラミング 平成25年10月29日 森田 彦.
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
うわさ.
プログラマのレベルアップ.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング 平成25年11月19日 森田 彦.
小学校3年 指導資料例データ.
仮説の立て方、RQの絞り方 論文を考える根本的思考 担当・柴田真吾
面接時の注意点 平成17年2月28日(月) 3021教室.
情報基礎演習I(プログラミング) 5月25日 水曜5限 江草由佳
ほんとにだいじょうぶ!? ネット や ケータイ
プログラミング 平成24年10月23日 森田 彦.
プレゼンテーションの技法 諏訪邦夫.
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
重点目標 ことばを 大切にし  共に高まろう 受信→熟考→発信.
●レポートを書くこと→主張の根拠を示して、他の人を説得するため ●最初から順に読んで分かるように書く ●
パスワードをつけよう! ~ワード・エクセル・一太郎 ・その他(アタッシェケース)~
認知カウンセリング 学習意欲改善に対する可能性.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
知能情報工学演習I 第7回( C言語第1回) 課題の回答
情報学部のWebサイトを考える 2007年5月14日 石上隆達.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
ITパソコン科初級 1ヶ月目の訓練成果発表 チーム・あおぞら 今から、ITパソコン科初級1ヶ月目の発表をさせていただきます。
環境の世紀17  第13回 駒場の電気を考える.
プログラミング 平成25年12月10日 森田 彦.
比較プログラム言語論 平成16年6月2日 森田 彦.
プログラミング 平成23年10月5日 森田 彦.
理論試験速報 理論問題部会長 鈴木 亨 先生 (筑波大学附属高等学校) にインタビュー.
比較プログラム言語論 平成17年6月15日 森田 彦.
も  じ ま ほう 文字の魔法 文字の魔法、っていったいなんでしょう? 文字は、ものすごい魔法を持っているんですよ。
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プログラミング 平成22年11月24日 森田 彦.
プログラミング 平成23年12月21日 森田 彦.
新しいSNSの提案 島本 尋史.
心のバリアフリー研修 基本プログラム例C 00:00.
初回授業オリエンテーション 理科(生物) 大野 智久.
ゲームの秘密を探ろう 第1時 小学校 学年 ひみつ さぐ ぼくはミクシって いうんだ。 いっしょにゲームのことかんがえようね
日本語検定試験合格者の感想
受講日:   月  日 暗黙知の見える化ワーク 第1回 コミュニケーションとは.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
日本の高校において、 英語の授業を英語で行うべきか?
概要.
シリーズ:著者の回答  質問 (韓国 K社、L.Y氏 開発・設計 )
日本の高校における英語の授業は 英語がベストか?
プログラミング 平成22年10月13日 森田 彦.
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
ダスキン サービスマスターの仕事 清潔で快適な環境づくりのお手伝い! 業務向け もっと たくさんある
知能情報工学演習I 第7回(後半第1回) 課題の回答
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
プログラミング 平成24年11月13日 森田 彦.
プログラミング入門 電卓を作ろう・パートI!!.
学習成果ごとの評価方法 授業中の評価 ペーパーテスト 言語情報 運動技能 知的技能 認知的方略 態度 ・一問一答の発問
教育情報共有化促進モデル事業報告 中学校数学 平成16年1月31日 岐阜県 学習システム研究会「楽しく学ぶ数学部会」
比較プログラム言語論 平成16年6月16日 森田 彦.
プログラミング 平成24年10月9日 森田 彦.
栗原正純 UEC Tokyo 電気通信大学 情報通信工学科 2007/5/2(修正2008/08/21)
専門ゼミ最終発表会ガイダンス 平成26年1月8日 森田 彦.
情報ネットワークと コミュニケーション 数学領域3回 山本・野地.
プログラミング 平成24年12月11日 森田 彦.
テクニカル・ライティング 第4回 ~文章の設計法「KJ法」について~.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
〇〇自慢 経営学部 経営学科 萱野 凌平 こんにちは
レポート&筆記試験について.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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