K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[270] オブジェクト指向から入れば簡単?
投稿者:(ぱ)
2007/02/20 02:13:25

まったく違う話題にシフトします。件名とスレッド変えました。 >「プログラミングは Java が初めて」という人ならこういう経験をしなくて済むかもしれません。 >何しろ邪魔する前知識が無いですから。 「Cなどの言語を知っている人は、今までの知識が邪魔をしてオブジェクト指向の習得が 難しいけど、最初からオブジェクト指向を覚えるのなら簡単だ」 とたまに聞きますけど、これはどの程度事実なんでしょうか。 たまに、上の言葉の後ろに「なにしろオブジェクト指向は自然だから~」というのが 続いたりすると、どうも眉に唾をつけたくなります。私の場合。 古い知識が邪魔をするという傾向はもちろんありますが(FORTRAN屋やCOBOL屋が設計した Cプログラムにどれほど泣かされたことか)、じゃあまったくの初心者がJavaから 入門したとして、最初に動かすプログラムがhello, world. だったら、結局のところ 手続き指向→オブジェクト指向の流れで習得することになるように思います。 Javaの場合、hello, world.といってもアプレットから入るんでしょうか。 その場合、#include <stdio.h>なんかとは比べ物にならないくらい「とりあえず こう書いとけ」的な記述が増えてしまいますが、まあ、それは「いずれ分かる」と 言っておけばよいでしょう。 んで、ただブラウザにhello, world.と表示されるだけのプログラムから 順次発展していく場合、どの辺で「オブジェクト指向」を意識することになるんでしょうか。 クラスがアプレットしかなければ、メソッドも単なる関数ですし、インスタンスフィールドは グローバル変数と同じです。 GUIのボタンを作ったりするところは、「決まり文句」としか思ってもらえない気も するんですが、こういうところから、だんだんオブジェクト指向になじんでいったり するのかな。 私自身はBASICから入ったクチですし、新人にJavaを教えたことは何度となくありますが うちの会社では新人はまずCの研修を受けてくるので、「オブジェクト指向から入門」 した人の観察例が私にはほとんどありません。 自分自身がオブジェクト指向から入った人、またはそういう人を身近にたくさん 見てきた人の経験を聞いてみたいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[271] Re:オブジェクト指向から入れば簡単?
投稿者:れぷ
2007/02/20 02:13:25

便乗して・・・ Javaを教えるほうにC言語などを知らないで育った方が 一体どれくらいいるのかも知りたいかも。 (あくまで参考として)
[この投稿を含むスレッドを表示] [この投稿を削除]
[275] Re:オブジェクト指向から入れば簡単?
投稿者:けろ助
2007/02/20 02:13:25

あら、私のネタ振りから別スレッドに。 前橋さん> 自分自身がオブジェクト指向から入った人、またはそういう人を身近にたくさん 前橋さん> 見てきた人の経験を聞いてみたいです。 サンプルが少なくて申し訳ないですが、友人に 1 人、Java から本格的にプログラミングを始めた人がおります。 それ以前も C 言語を触ったことがあるのですが、"Hello, World." 程度でした。 私>「プログラミングは Java が初めて」という人ならこういう経験をしなくて済むかもしれません。 私> 何しろ邪魔する前知識が無いですから。 実はこれ、その友人のことなんです。 今度彼と会う機会があるので、もっと詳しくインタビューしてみますね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[276] Re:オブジェクト指向から入れば簡単?
投稿者:774RR
2007/02/20 02:13:25

ウチは組み込み屋さんなのでアセンブラ経験はほぼ全員が、C 経験は半数が、もっています。 C++ を本格的に使っているのは俺だけです。 次のプロジェクトでは後輩君に C を飛ばして C++ をいきなり使わせようとたくらみ中です。 # どうなることやら... とりあえず俺的には入門者に最初に教えたいのが継承派生です。 「ほらほら、『使うほう』はその実体が具体的に何であるか気にしなくていいんだよ」 ある程度プログラム経験がある人だと、これで結構ぐらぐらしてくれます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[277] Re:オブジェクト指向から入れば簡単?
投稿者:774RR
2007/02/20 02:13:25

>とりあえず俺的には入門者に最初に教えたいのが継承派生です。 あ、ここでの「入門者」は「プログラム経験があって、でもオブジェクト指向は入門者」です。 今年の新入社員君がプログラム経験無いようなら、いきなり C++ など逝ってみたいと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[278] Re:オブジェクト指向から入れば簡単?
投稿者:kei
2007/02/20 02:13:25

# どこにぶら下げようか迷いました。。 僕の職場の新人研修は、いきなりJavaです。 会社的には「今はJavaの案件が一番多いから」ぐらいの理由で選んでいるんだと 思います(情けない。。) で、そんな新人研修をしてきた後輩を見る限り、「オブジェクト指向から入れば 簡単」ということでは無さそうです。 確かに、概念的な部分の吸収は早いように感じます。 でもそれって、ただ単に「何も疑問を持たないから」ってだけなんですよね。 しかも、実際のコードでは、オブジェクト指向を「使えない or 使わない」んです。 結局、「それが出来ると何がうれしいのか」ってことを実感してからじゃないと、 使いこなすことが出来ないんじゃないかと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[283] Re:オブジェクト指向から入れば簡単?
投稿者:(ぱ)
2007/02/20 02:13:25

>とりあえず俺的には入門者に最初に教えたいのが継承派生です。 ちょうど今、oosquare-mlで継承の是非に関する議論が白熱しています。 http://www.ogis-ri.co.jp/otc/otc2/oosquare-ml/Archive/thread.html なんかもう、「言葉の上だけの議論は空しい」状態になってる気もしますが… まあ継承には色々な問題があると私も思うんですが、一連の議論の中で、 http://www.ogis-ri.co.jp/otc/otc2/oosquare-ml/Archive/200501.month/4468.html | 継承は確たる「設計思想」が無い場合、スーパークラスが単なる「ごみ置き場」 | と化していることが多いようです。 これ、具体的にはどういう例なんだろう… あるクラス群が共通に使うメソッドを、それらのクラスのスーパークラスに 山ほど押し込んでいる、ってことかなあ。 スーパークラスには「外から見て」そのクラスに必要なメソッドが入っていれば よいわけで、サブクラスが共通に使うメソッドなんか持つ必要はないと 思うんですが。共通処理があるのなら、Utility.javaみたいな「関数」を 書けばいい。 >「ほらほら、『使うほう』はその実体が具体的に何であるか気にしなくていいんだよ」 >ある程度プログラム経験がある人だと、これで結構ぐらぐらしてくれます。 これはJavaならinterfaceですよね。 ただ、interfaceには実装がまったく書けないので、やっぱりデフォルトの挙動が 欲しい、とか思ったときに、DefaultHogeとかSimpleHogeとかAbstractHogeとか 作っちゃうわけで… これがよいのかどうか。 http://struts.apache.org/api/org/apache/struts/action/Action.html これなんかはどうなんだろう。私なら、こういうのは反射的にinterfaceにしますが。 クラスにした結果、結構ごみ置き場になってるような気も。
[この投稿を含むスレッドを表示] [この投稿を削除]
[285] Re:オブジェクト指向から入れば簡単?
投稿者:774RR
2007/02/20 02:13:25

飴と鞭、って鞭ぢゃないですけど、既に kei さまが [278] で述べられているとおり > 結局、「それが出来ると何がうれしいのか」ってことを実感してからじゃないと、 これが端的に直感できるのが「使うほうは基底クラス、実装するほうは派生クラス」 だと *個人的には* 思います。 飴が無ければ、鞭で叩かれないと新しい知識の勉強なんてしないでしょ? # そーいうのに興味が無い人の場合。放っておいていい子は教えなくても勝手にやってるし。 C++ の場合 <algorithm> だけでも学ぶ価値&即戦力になる実力があるのですが 「ぴゅあOO」を学んでも、それが明日役立つか、って言われるとキツイものがあります。 「入門者でも即、目に見える価値」が無いと教える側としては困るのです。 で、そーいう入門段階を既に過ぎた人でないと | 継承は確たる「設計思想」が無い場合、スーパークラスが単なる「ごみ置き場」 | と化していることが多いようです。 なんて議論は理解できないでしょう。 # 今この場では「入門」の話に限定、していい?のですよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[286] Re:オブジェクト指向から入れば簡単?
投稿者:kei
2007/02/20 02:13:25

仕事中の現実逃避で、前橋さんが紹介されたoosquare-mlを読んでました。 読んだ感想なんですが、僕の中では、ただ単に「手抜きのために継承は使うな」って いうだけのような気がします。(考えなさ過ぎ?) 委譲を使ったとしても、やたらと関連が集中しているクラスを作ってしまったら、 結局ごみ置き場になってしまいますし。 > 「ぴゅあOO」を学んでも、それが明日役立つか、って言われるとキツイものがあります。 > 「入門者でも即、目に見える価値」が無いと教える側としては困るのです。 僕はそれほど教える立場にはいないんですけど、確かにそれは感じますね。 2年ほど前にあったSun Super Tech DaysのBOFを覗いた時、どなたかが 「インドではプログラマを養成する際、UMLなどを使用して、まずオブジェクト指向から 叩き込む。実際のプログラムを教えるのはその後。日本のIT業界もそうでなければ。」 といった趣旨の発言をされていました。 その時は、「あー、そーなんだー。」ぐらいに思っていたんですけど、今になって 思えば、全然そんな事はないんじゃないかと。プログラマなんだから、まずプログラムを 覚えろと。 オブジェクト指向が有効かどうかという判断は、その後なんじゃないかと、最近では 思います。 例えばデザインパターンなんて教えるものじゃなくて、試行錯誤や見よう見真似で、 「気が付いたら使ってた」ぐらいが理想だよなぁ、なんて思ったりします。 で、教える側は、そこに到ることの出来る基礎を身につけさせてあげれば良いのでは、 そしてその基礎というものは、オブジェクト指向というよりも、「プログラムを組む ための地力」となる知識と経験なのでは、と思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[287] Re:オブジェクト指向から入れば簡単?
投稿者:(ぱ)
2007/02/20 02:13:25

>で、そーいう入門段階を既に過ぎた人でないと >| 継承は確たる「設計思想」が無い場合、スーパークラスが単なる「ごみ置き場」 >| と化していることが多いようです。 >なんて議論は理解できないでしょう。 これはそう思います。 ># 今この場では「入門」の話に限定、していい?のですよね。 了解です。 ちょうどoosquare-mlで継承の話が出てたので[283]のように書きましたけど、 「継承の問題点」のような話は入門者にわかりにくいのは確かだと思いますので、 そういう話は別スレ立てることにして、今この場は「入門」の話に限定、しておきましょう。 まあ入門者相手でも、継承が「ソースの再利用のためのテクニック」だと言われれば それは変だと思いますが、774RRさんの出されている >「ほらほら、『使うほう』はその実体が具体的に何であるか気にしなくていいんだよ」 という例は、継承の使い方としてまっとうだと思いますし。
[この投稿を含むスレッドを表示] [この投稿を削除]