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

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

プログラミング 平成24年1月11日 森田 彦.
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
フィードバック型復習 理数系科目の成績を大きく伸ばす方法 東大理数学院 塾長 西村 太一.
情報基礎演習I(プログラミング) 5月25日 水曜5限 江草由佳
比較プログラム言語論 平成17年6月22日 森田 彦.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
アルゴリズムとデータ構造1 2007年6月12日
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング基礎I(再) 山元進.
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
認知カウンセリング 学習意欲改善に対する可能性.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
変数のスコープの設計判断能力 を育成するプログラミング教育
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
プログラミング 平成25年12月10日 森田 彦.
比較プログラム言語論 平成16年6月2日 森田 彦.
プログラミング 平成23年10月5日 森田 彦.
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
比較プログラム言語論 平成17年6月15日 森田 彦.
第7回 条件による繰り返し.
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
プログラミング 平成23年12月21日 森田 彦.
アルゴリズムとプログラミング (Algorithms and Programming)
コンピュータに計算させる命令を確かめよう!
ソフトウェア制作論 平成30年10月3日.
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
新しいSNSの提案 島本 尋史.
第7回 条件による繰り返し.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
比較プログラム言語論 平成16年6月9日 森田 彦.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
ソフトウェア制作論 平成30年10月10日.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
プログラミング 平成22年10月13日 森田 彦.
プログラミング 平成22年12月15日 森田 彦.
2007/6/12(通信コース)2007/6/13(情報コース) 住井
オブジェクト プログラミング 第2回 プログラムの基本.
第1章 いよいよプログラミング!! ~文章の表示 printf~
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
プログラミングⅡ 第2回.
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
プログラミング 平成24年10月9日 森田 彦.
プログラミングⅠ 平成30年12月10日 森田 彦.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
2006/6/27(通信コース)2006/7/5(情報コース) 住井
栗原正純 UEC Tokyo 電気通信大学 情報通信工学科 2007/5/2(修正2008/08/21)
プログラミング基礎演習 第4回.
プログラミング 平成28年11月15日 森田 彦.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング 平成24年12月11日 森田 彦.
skill-net(MILESTONE CAI,笈川他,1982)[Fortranの課題選択など]
情報処理Ⅱ 2005年11月25日(金).
プログラミング 平成28年10月25日 森田 彦.
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
プログラミングの原理 データ構造とプログラミング (第4回).
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

レポート(6/9)総括  < テーマ >   6/2のレポート抜粋に掲載されているレポート(意見)のいずれかについて、あなたのコメントを記述して下さい。その際、(その意見に)同意なのか、反論なのか、を述べた上で、なぜそう思うのかを、できる限り明確に記述して下さい。 <論点> 厳密文法派、自由度・融通派とも求めていることは同じ、という感想への共感 討論の前提確認① 厳密文法派、自由度融通派いずれも、どの程度の厳密さあるいは自由度を想定しているのか? 討論の前提確認② 何のためにプログラミング言語を学ぶのか? 厳密文法と、記述の自由度双方の良いところを取り入れた言語はないか? エラーを体験する方が理解が深まる?

厳密派、自由度派は根っこは同じ!? <6/2の感想> 文法厳密派、自由度・融通派ともに言っている意見は一理あるのに、その理由となっていることが同じようなことなのが面白いと思いました。 同意する。文法厳密派の意見で「最初にきちんとした書き方を覚えさせる」とあるが、(それと)自由・融通派の「エラーを出すより、動作させる楽しさを知ることが大切だ」ということは底辺が同じ。きちんとした書き方を覚えれば基本が理解できることで楽しさが分かってきているということだと思う。このように二つの派閥はもとの底辺が一緒であると言うことだ。 「なるほど」と思い、賛成しました。両方とも言っていることは違うが、間違えたことをきちんと把握し、理解するという点では、同じことだと思います。動作の楽しさを覚える(ことが大切)という点でも同じだと思います。

文法の厳密さ、自由度の度合いは? -討論の前提条件①- 自由、融通派の人はどの程度自由、融通なものを望んでいるのでしょうか? 単にエラーが出ず、動かすことができるものなのか、ベーシックのような宣言をしなくてもいいようなものなのでしょうか?同じく厳密派の人もどの程度厳密なものを望んでいるのでしょうか?意見されているものはJAVAを基準とした発言なのでしょうか? 討論を進めるには、この点についての共通理解が必要。

各派のとらえ方 文法が厳密な言語 記述の自由度が高い言語 厳密文法派 きちんとした書き方が身に付く。 初心者が基礎をきちんと学べる。 文法が厳密な言語  記述の自由度が高い言語 厳密文法派 きちんとした書き方が身に付く。 初心者が基礎をきちんと学べる。 将来的に伸びる。 変なクセが身に付いてしまう。 基礎が身に付かない。 将来的に行き詰まってしまう。 初心者に苦手意識を植え付ける。 楽しさを味わいにくい。 自由な発想が制限される。 初心者にハードルが低い。 動作する楽しさを味わえる。 自由な発想を促す。 自由度融通派

双方、自派の長所と他派の短所のみを見ていないか? (前略)ただどちらにしても思うのは、自由文法言語を継続して使わせることは小さな子供にクレヨンを手渡して「これでピカソが描けるよ」と、逆に厳密文法派は油絵の具を手渡しながら「これがモネの一部だ、君はこれからモネを描く」と言っているような感じがすることです。要するにどちらも放言です。前者はともかく慣れることを主眼に置き過ぎて後のことを考えられないし、後者は後のことを考えすぎて不安を軽く見ています。両方のいいところを取った都合のいいプログラミング言語はやはりないのでしょうか?

何のためにプログラミング言語を学ぶのか?-討論の前提条件②- <厳密文法派> 一度付いた我流のプログラミングスタイルはなかなか直らない。(だから)上達したいと思うなら(変な)癖をつける前に、対処していった方が良いと思います。楽しみたいとか、ただプログラミングをやってみたいというだけの感覚なら、自由度・融通派を支持し学んでいけば良いと思います。 <自由度・融通派> まず、簡単なプログラミング言語に触れることで、基本を身に付けていけばいいと思います。そして、ある程度プログラミングがどういうものか、こうすればうまくいく、など理解してから、少しずつハードルを上げていけばいいのではないかと思います。

学習曲線(概念図) 最適な言語 BASICを想定 Delphiを想定

最適な言語の提案!? 重要なことは、初学者でも楽しみながらプログラムを組め、同時にきちんとした書き方を身につけさせるということです。こうなると、ここで議論している大半の人の、常識の範疇を超えたところに答えを探す必要があるでしょう。私が見つけたのはSmalltalk、Squeakです。おそらく今後は、オブジェクト指向言語にシフトしていくでしょう。それを考えると、オブジェクト指向の考え方、組み方を徹底づけるには良いのではないかと思います。 <コメント> オブジェクト指向の考え方を実地的に学ぶにはよい言語。しかし、(現状では)用途は限定されている。 また、プログラムの中身を理解しようとすると、かなりの知識を要する。

参考:言語の制約の度合い BASIC C 制約大 Java どの言語が良いかは用途によって決まる。 オールマイティな言語はない。 print “Hello!” 行が基本 制約大 main( ) { printf(“Hello!\n"); } C 関数が基本 public class Hello { public static void main(String args[ ]) { System.out.println(“Hello!”); } Java クラスが基本 どの言語が良いかは用途によって決まる。 オールマイティな言語はない。

参考:変なクセについて (前略)反論中でも、『変な癖』としてしか出ておらず、具体的な指摘にやや欠けている感があります。  制約の少ない言語の典型としてBASICを想定する。  BASIC言語プログラミングによる(好ましくない)クセとは?

スパゲッティ・プログラム 思いつくままに、GOTO文を使ってプログラムを拡張。→ 迷路のようなプログラムに。 10: INPUT A 20: IF A>0 THEN 50 30: PRINT “正ではない” 40: GOTO 60 50: PRINT “正の数” 60: END 10: INPUT A 20: IF A>0 THEN 50 25: IF A=0 THEN 45 30: PRINT “負の数” 40: GOTO 60 45: PRINT “0である” 46: GOTO 60 50: PRINT “正の数” 60: END 思いつくままに、GOTO文を使ってプログラムを拡張。→  迷路のようなプログラムに。

エラーを体験することで理解が深まる!? (確かに)エラーの原因を特定できれば、より深い理解に到達する。 そしてその知識をプログラミングに生かすことができる。 しかし、それには、その言語処理系が行っている処理内容を理解することが求められる。場合によっては、ハードウェアの知識も必要になる。 一般に、初心者には、そのような解読は困難。

C言語の落とし穴 if文中の比較 Javaでは文法エラーになる。 次のプログラムはC++ではコンパイルエラーにはなりません。 int a=0; if(a=0) { Edit1->Text=“値は0です。”; else { Edit1->Text=“値は0以外です。”; } 実行すると・・・ 「値は0以外です」が表示される。 C++では、条件式に整数を用いた場合、   0以外の整数→true   0        →false として扱うから。 なぜか?・・・ C言語の“落とし穴”の一つ Javaでは文法エラーになる。

Java言語の実行エラーの例 1~5までの和を求める。 for (int i=1; i<=5; i++) { sum=sum+i; } int sum=0; for (int i=1; i<=5; i++) { sum=sum+i; } <症状> int sum=0; for (int i=1; i<=5; i=i++) { sum=sum+i; } 無限ループに陥り、実行が終了しない。

Delphiの場合 var for文は回数の決まった繰り返し専用 i,sum:Integer; begin for i:=1 to 5 do sum:=sum+i; end; for文は回数の決まった繰り返し専用 無限ループに陥る可能性はない。 書き方が決まっていて融通が利かないが、致命的なエラーは防げる。

理解が先?楽しさが先? <疑問> 皆の場合はどちらでしたか? 楽しさと理解度の相関で楽しいと感ずる人ほど、理解度は高いと書いてありましたが、楽しいから理解できるのか、理解できるから楽しいのか、どっちだろうと思いました。 皆の場合はどちらでしたか?

アドバイス ープログラム上達の極意は一を聞いて十を知る- アドバイス ープログラム上達の極意は一を聞いて十を知る- 実は私は初心者向けのちょっとしたプログラムは楽しくない、つまらないと思ったたちです。十数行のプログラムからなんとなく結果が見えてしまい、プログラムの何が楽しいのかと思う人間でした。なので初心者時代に、文法が自由だろうが厳密だろうが、結局書いているプログラムはつまらないので大差ないという考えがありました・・・(略) <アドバイス> 初学者用の入門的なプログラムが簡単なのは当然。 しかし、その例題プログラムの結果そのもので面白さを判断していては上達はない。 その結果が示すことがどこまで一般化(普遍化)できるか、想像力を働かせることが大切。

要望 あまり関係のない話ですが、どうも議論がループしているように見えるので、一度ゼミ形式で対話型の議論をしてみたいのですが、それは無理でしょうか? この要望について、意見があれば小レポートに記述して下さい。

第9回目レポートテーマ テーマ1   6/9のレポート抜粋には、幾つかの論争があります。その内どれか一つ(以上)採り上げ、どちらの意見を支持するのか、そしてそう支持する理由をできる限り明確に記述して下さい。 テーマ2   6/9のレポート抜粋の中で、あなたが最も印象に残ったのは、どの意見ですか?その意見と、どういう点が印象に残ったのかを具体的に記述して下さい。 テーマ3   理解度と楽しさの相関について、あなたは「楽しいから理解度が上がる」と思いますか?それとも「理解できたから楽しくなる」と考えますか?回答と共にそう思う理由を、昨年のプログラミング演習での体験に基づいて答えて下さい。

第9回目レポート 上の3つのテーマについていつもと同じ要領でレポート提出して下さい。 なお、上の記述を行った上で、(いつも通り)講義の感想や質問等を付加しても結構です。 提出先:hiko@edu.sgu.ac.jp  件名:「学籍番号(半角)+半角空白+氏名」を記入して下さい。    例) s02xxx 学院太郎