レポート抜粋(7月14日)
<テーマ>
本日の講義で、あなたが最も興味を持った点はどのような点ですか?講義の全体的な感想と共に、できる限り具体的に、200字〜400字程度で記述して下さい。
<前回のレポートについて>
- 前回のレポート抜粋、GOTO文について。「Go To文は無駄だったのではなく、プログラミング言語が発展してきた過程だと私は思います」、まったくそのとおりです。人間の歴史にある連続性と段階性がプログラミング言語の歴史にもあって当然。GOTO文が無ければ、その失敗を生かしたより効率的なその後のプログラミング言語もまた無かったでしょう。
- スーパクラスとサブクラスについて。「ある意味、家系図に似ている、と思いました」、うまい言い方だと思いました。
<カプセル化のメリットについて>
- カプセル化の中身は確かに使用者が理解する必要の無いものではあると思うが、やはり中身の見えない状況は使用者によっては不安を持つ場合がある。システムの本流を理解しないまま支流ばかりに気を取られている今のプログラミングは少々危険を含んでいる気がする。まるでマスコミの情報ばかりに気を取られ、本質に気づいていない状態と同じである。つまり画一的な考え方になってしまうのだ。しかし、カプセル化された情報は一般人には殆ど理解は不可能かもしれない。「使うは天国、作るは地獄」....実際その通りである。だが、地獄を経験した分全てを理解している....テスト前に焦って勉強している人間と余裕を持って受けられる人間の違いだ。よってカプセル化の中身を理解できていない人間は後になって大きなダメージを受ける。PCのエラーを理解できない原因はそこにあるのではないだろうか?
- 補足のカプセル化のメリットの説明に興味を持ちました。そこでの説明で自分が連想したのは、数学の公式でした。数学の公式は、仕組みが解らない難解なものがあるが、解らなくてもその公式をあてはめると式を解くことができた。この時その公式の意味を考える手間を省くことができているところが、カプセル化に似ていると感じました。しかし、オブジェクト指向のデメリットで、カプセル化は、中身を知らないため適用範囲外の用途に用いる危険性がある。というのはかなり問題があると感じました。
<ソフトウェアの著作権について>
- ソフトウェアの著作権問題に興味を持ちました。講義中、私は全く気がつきませんでしたが、プログラムソースにも当然著作権が発生し、そのソースを使用して改良することは許されていない。また、レポートにもあったように、企業秘密などでオープンにならないソースはそのままの状態から企業内で改良されない限り、進化は見込めないので、プログラムの発展性が低い。オープンソース活動もそんなプログラムの発展を促す経緯から発生したものなのだと知りました。プログラムソースへの著作権がどのくらいの期間有効なものか分かりませんが、これからは新たにソースを作るよりも、既存のプログラムを改良することでプログラムの発展を見込む方が、開発効率が高くなるように感じました。
<オブジェクト指向の難しさについて>
- 今回の講義の最初のレポートでオブジェクト指向の難しさについて述べている感想を読むと全くそのとおりだなと共感できる。自分もクラスについて授業で一応分かったつもりなんですが、うまく使えていない。説明を聞く上では理解できているつもりなんですが、いざ使うとなるとただ漠然と使っているだけでそれをうまく使えていない。最初のレポートにある「使う方は天国、作るほうは地獄」という言葉が本当に当てはまっていると実感できる。
- やっぱりオブジェクト指向は難しく理解しづらいということを聞いて、少しほっとしました。ウェブサイトや掲示板を覗くとどの人もみなオブジェクト指向について理解した上で議論しているようで「オブジェクト指向というものは容易に理解できるものなのだろうか」驚いていました。今回の講義でのオブジェクト指向の説明(特に日本人、アメリカ人、イタリア人クラス)は分かりやすくてよかったと思います。
<「オブジェクト指向に欠点はないの?」について>
- オブジェクト指向に欠点は無いのかというところで、「複雑なクラスを次々と増やしてしまったら、混乱するのではないか」ということが言われていたが、私もそう思った。スーパークラスとサブクラスを理解がなかなか難しく、クラスを見て、何のクラスから何を継承して来ているかなど、それが複雑なものとなれば、作った本人ならともかく、他の人が見た時に理解するまでかなり時間がかかってしまうのではないか?
- 今回の講義で興味を持ったことは、オブジェクト指向に欠点はないかというところです。複雑なクラスを次々と増やしていったら混乱するのではないかという点で、なるほどと思いました。長所は短所にもなり得るというところで、継承がスパゲッティ継承に陥りやすいとあり、私はそうゆう事になる可能性があるのなら、欠点は無いとは言い切れないと思った。
- オブジェクト指向の短所について。「一般に、長所は短所にもなり得る」、納得しました。考えてみれば何であれそうですね。
<「天気はオブジェクト?」について>
- 今日の講義で、印象に残ったのは「天気はオブジェクト?」のところです。今まで天気とプログラミングは、何の関係もないと思っていました。でも、データはオブジェクトになり得て、気象情報(データ)オブジェクトの場合、プロパティは各地の気象データ、メソッドは指定日時の気圧配置図をグラフ化表示する操作というように、天気もこのように表せるというのを知ってびっくりしました。この他にもプログラミングで習ったことが、日常生活のどれかに置き換えられるということはないのでしょうか?
<オブジェクト指向の実装−これまで習ったJavaプログラムの構成について>
- 今日の講義ではJava言語を詳しく知ることが出来たと思う。確かに今まではあまりフレームクラスのことなんかはあまりよく理解はしていないけど使えるという感じでした。ですが、今日の講義を聞いてなんとなくではありますが、クラスを定義したりすることによってそれを継承したりすることが出来るという意味がわかったような気がします。ただ、こういったことは初めに勉強するべきかどうかは正直わかりません。初めに聞いていたら全く理解できなかったと思うからです。今ですらやっとですから。
- 今までプログラミングをしていく時にはなぜextendsのあとにJButtonなど記述した覚えの無いものが出てくるんだろうと思っていました。今回の講義を聞いてあたりまえだったんだと思い、なぜ気付かなかったんだろうと思い、また、クラスというものを全然理解していなかったんだと思いました。
- 昨年、プログラミングの授業で一つ前に作ったプログラムを書き換えてプログラムを作るという課題がよくありましたが、そのまま足してしまうとその前のプログラムが上書きされてしまうし、かといってまた新たに作るのはめんどうだといつも思っていましたが、今日の授業を聞いて、ボタン一つ足すときにもクラスを使えば継承できるということを、初めて知って驚きました。
- プログラミングの授業などでJavaを使ってきていますが、実際にFrameのほうは使いますが、Applicationのほうはいつもまったく触れないので、何に使えるのかと思っていましたが、今日の授業でフレームを作るのにApplicationが使われるという話をしていて、何気なく出来ていたフレームがApplicationで作られていたのだと初めて知りました。
<オブジェクト指向の実装−人間クラスの定義について>
- 私が今回の授業でもっとも興味を持った点は、スライドの「2.人間クラスの定義」の部分です。今までJavaの授業でクラスやスーパークラスの事に関して学んできましたが、どうもよく理解しきれていないところがまだややありました。ですが、プログラムのわかりやすい解説とともにサンプルプログラムも用意されていたので、プログラムのどこがどうやった仕組みで動いているのか?ということがとても理解しやすいものでした。今回の授業で改めてJavaの楽しさを学ばせてもらったと思います、有難うございました。
- 前回のクラスを継承するというのを聞いて、わかりやすいと思いました。今回のHumanクラスを継承するという例を見てさらによくわかりました。同じ記述を何度も入れなくてよいというのはやっぱり手間が省けるし、見るときにわかりやすいので。 Java言語のデメリットでは、クラスを継承するといっても、初心者では確かにわかりずらく、理解するのが大変だと思います。しかし実際にJavaでプログラミングをしながら、このようにプログラミングの内容を勉強していけばわかりやすいと思いました。
- 今回は前回よりもっとオブジェクトについてより具体的で、イメージしやすく、オブジェクトをちゃんとした形として捉えることができました。人間クラスという定義から、日本人、アメリカ人、イタリア人というクラスの定義を継承し、宣言すれば、それぞれの条件から処理が分岐できることがわかりました。そしてこのことが多能性の実現ということになることもわかり、少しずつオブジェクト指向の考え方が見えてきたような気がします。
- 今日の講義で興味を持ったのは「人間クラスの定義」です。理由は日頃何気なく行っている「動く」、「話す」という基本的な動作をオブジェクト指向の観点で捕らえるという発想が新鮮だったと言う事と、「話す」と「動く」のメソッドからなる人間というスーパークラスとそれを継承した上で、言語別に分岐するサブクラス、日本、アメリカ人、イタリア人
分けて考えるという具体例が分かり易かったからです。
- 今日の講義で興味を持ったのは、人間クラスの定義です。 本当にできてしまうんだとすこし感動しました。
まず、プログラムの前に関連を図で書いてあったので、分かりやすかったです。
しかし、Java言語のデメリットにも書いてありましたが、初心者には、動作やデータをクラスやオブジェクトに置き換える考え方を身につけるまでが難しそうだと感じました。私も、実際あまりよく分かっていません。
<Java言語のメリット/デメリットについて>
- 今回の講義で興味関心を持った点は、Java言語をオブジェクト指向の観点から見たメリット・デメリットです。この前の講義でもJava言語は記述が簡単であるが間違いなどが多いと言っていましたがオブジェクト指向の観点から見ても同じように記述など物理的な作業は簡単であるが理解は困難であるということがわかりました。
- 今回一番興味を持ったのは、Java言語のメリット・デメリットについてです。独特の記述が初心者には理解困難とありますが、実際に自分が去年の講義で学習したときには理解しにくいということはありませんでしたし、英語や日本語とは違う新しい言葉として学習していけば数が多いというわけでもないので自然と慣れて身につくと思いました。豊富なクラスライブラリの存在については、全体像を把握できないデメリットはあるにしても、そのおかげで多種多様のアプリケーションが作成できるわけですから、それはそれでしょうがないと思いました。
- JAVA言語のデメリットにあげられた。『オブジェクト指向の独特の記述が初心者には理解困難。』
『クラスライブラリの全体像の把握することが困難。』の二つであるが、(開発)ツールの側で解決できないかと考えた。
すぐにJBuilderなどに、先を越されていることに気付いた。記述問題に関して、エラーやおかしな文を指摘し、全体像に関しても、繋がりがわかりやすいようにしてある。
JAVA言語の特徴や、オブジェクト指向を、半期講義を受けて、ようやくツール設計の必然性に気付けた。もうすぐ、前期の終わりだが何か学んだ気がした。
- Java言語のメリット・デメリットについて関心を持ちました。 私たちにとって身近になってきたJava言語について、今まで授業などでのプログラム作成をしていくにつれて、経験していくにつれて、メリット・デメリットがなんとなくわかってきました。まずは役割分担がはっきりしていないとわかりづらいということは、どの言語においても言えるのではないかと思います。Java言語において、オブジェクト指向の観点から、デメリットとして初心者には理解困難というように挙げられているけれど、私は最初に学んだ言語がJava言語でよかったように思えます。なぜなら、オブジェクト指向の観点から、プログラミングの記述が容易にできるというメリットがあれば、多少のデメリットもカバーできたような気がするからです。
- 今日の授業で印象に残ったことは、Java言語のメリット・デメリットです。どうも、メリット・デメリットはJava言語の特徴から来ていて、メリットをなくせばデメリットもなくなるということがわかりました。やっぱり、使う目的に応じてプログラミング言語を使い分けるべきなのかなと思いました。
- 今回私が興味を持ったのは、Java言語のメリット・デメリットについてです。メリットとして、オブジェクト指向プログラミングの記述が容易にできるとあり、デメリットとしてはオブジェクト指向の独特の記述が初心者には難解であるとありますが、確かにそれは言えていると思います。私の実体験から見ても、メリットの点を鑑みてみてもJava言語のオブジェクト指向プログラミングは他のプログラミング言語に比べて楽であると思いますし、デメリットに関しては、確かに最初はそういった難解さに戸惑いを感じると思います。そう考えてみると、一長一短だということが良くわかりました。
<次回の講義への要望>
- 来週で最後ということなので、森田先生の考える、これからの時代に求められているプログラミング、みたいな話を聞いてみたいです。
- 最終回の講義についてですが、実際の企業などにおいてプログラミングの作業がどのようにされているのかなどについて興味があるので聞けたらいいなと思っています。
- あまり関係ない話なのですが、Javaの現状について(一般的な評価、利用方法など)講義していただけると嬉しいです。
個人的な興味という面もありますが就職活動を控えて、現場でどのような使われ方がしているのかや、需要と供給の移り変わりなど、Javaの世間的な評価も知ってみたいなと少し思いました。
- 来週の最後の講義では、今まで見たことのないような、Javaの技術を見てみたいです。
- 一つ提案というか…最初のプログラミングの時に、コマンドプロント上で文字が表示される、簡単なプログラムを書いたじゃないですか。あれを改良…というわけではないですが、灰色の四角を表示するくらいまでのものにしてもいいのではないかと。HTMLタグは打ち込んで表示の操作をすると結果がすぐに分かります。
そのように、ある程度視覚化できるレベルまでをテキストエディタから作ってみたほうがより分かりやすいのではないかと思います。
<感想・意見>
- 今回、人間をオブジェクトと捉えてシミュレートしたプログラムを見せて頂きましたが、難しいとの言葉があった関連など、身近な動作や言葉を使用することによって理解しやすくなっていたと思います。
- 今回の講義でJAVA言語はオブジェクト指向の観点からするとプログラミングの記述が容易にできるということで、まだピンとこない点も多いがだいたい理解できたように思います。オブジェクト指向で重要なのは(オブジェクト=もの)であるから、いかにその『もの』を観察できるかという点が重要で、多様で複雑なオブジェクトを効率よく表現するためにはしっかりした観察が必要なのだと感じることができました。オブジェクト指向は難しい。というイメージはまだ拭えないが理解したいという気持ちをもてたので良かったです。
- 企業内でのオブジェクト指向言語の取り扱いですが、大企業はきちんと計画性とゆとりを持って開発できそうですが、中小企業になるとやっぱり有効活用が難しいのではないかと思いました。オブジェクト指向はお金と時間のある(人を使って長い時間をかけながら議論できる)組織のための手法なんじゃないかと感じます。
<疑問>
- ソフトウェア危機について。なんでもソフトウェア開発はものすごい勢いで発展しているため、現在企業に雇われるプログラマーは即戦力の使い捨てで、次々に新しいプログラムが登場し、激務でその新たなプログラムを勉強する暇もないのだと聞いたのですがどうなんでしょう。読んで「そこまでひどいものか?」と内心疑っていますが。
- 様々な職種で役割分担を行い、効率をあげているのはあたりまえであるが、開発現場でも行われていることに興味を持ちました。
以前に別々なプログラムを統合できるのか?という疑問を持ちましたがカプセル化を用いれば可能であることが分かりました。しかし、プログラマによってクラスの設計や継承が異なるので共有しにくい欠点があったことや現在は開発手法が整備されルールが共有されていることに疑問を感じました。ルールとはどのようなものがあるのでしょうか?
- 人間クラスの定義の中で、「話す」というボタンを作るというところで、すべての言語の定義でSpeakを使って、多態性を実現したということでしたが、Speakと書くと日本語だったら「こんにちわ」というようにでるという機能を新しく作りだしたということですか?今までだったらどのように作られていたのですか?
- 今回興味を持ったことはJava言語のメリット・デメリットで書いてあることのデメリットに書いてあるオブジェクト指向の独特の記述が初心者には理解困難という事です。それでいてクラスライブラリの全体の把握が困難であるということは教育用としては不向きという事なのでしょうか?
このデメリットはメリットの裏返しであることはわかってはいるのです。 オブジェクト指向のメリットを殺さないように改良はできないのでしょうか?自分が努力をしていないのを棚に上げていますが、簡単なものを求めてしまいます。