- ベストアンサー
使いこなせてプログラムを作れれば、言葉は覚えなくても良いんじゃないの?
皆さん、Javaでオーバーロードやオーバーライドや継承など、言葉は知ってっても意味はどういったものか覚えていますか?また、覚えていないと駄目なんですか? 僕は、名前は知っているが意味的なものは「大体こんな感じのものじゃなかった?」程度にしか覚えていません。 なぜなら言葉とその意味は覚えていなくても、使い方がわかっていれば良いと思うのです。 その使い方がオーバーライドだよ、とわかっていなくても、それを使いこなせていれば問題ないと思うのですが、皆さんはどう思いますか? それとも、やっぱり「オーバーロードとはこういった事で、オーバーライドとはこういった意味だよ」と 説明できるように覚えていないといけないものなんでしょうか? 説明が上手くできないのですが、 「~~このような使い方をオーバーライドと言います」と誰かがこう説明したとします。 その使い方をオーバーライドだと覚えていないといけないのですか? オーバーライドと言う事を知らなくても、その使い方がわかってれば良いと思うのですが。 i++ これは1づつプラスされますよね。その名前をインクリメントという事を知らなくても、その1づつプラスされると言う意味がわかっていれば良いと思うのですが。また前置、後置についても言葉知らなくても、意味がわかっていれば良いと思うのです。 そんな感じで、オーバーライドやオーバーロードやその他結構言葉が出てきますが、使いこなせれば、その事を●●と言うって事を知らなくても良いと思ういますが、皆さんどう思いますか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
開発の場を経験した私からすれば、 用語について、開発者としてしばらく経験すれば覚えようとしなくても、いつのまにか全ての用語を覚えている、という事がいえます。 確かに、勉強したての頃は、新しい用語がたくさんでてきて、「なんだこれは、いちいちうるさいな」と思うかもしれませんし、意味がつかめないうちは、何がなんだかわかりませんが、 やっていくうちに自然と覚えます。覚えざるを得ない状況になるといったほうが自然でしょうか。 相当の天才プログラマーで、一人で大規模システムも作れてしまう人なら別ですが、普通ならプログラムを組んでるうちに分からないところがでてきます。それをホームページなり本を読むなりして、解決しようとするときにそういう用語が使われているのです。もちろん他人に聞いたときも同じでしょう。 つまり言葉の意味など知らなくても結構なんですが、 結局知るようになってしまうのです。今無理に覚えることもありません。半年もやってればいつの間にか覚えています。 ちなみに、「オーバーロード」は会話の中でほとんど出ませんね。「~の引数を~にすればぁ?」とかそういう感じで会話されてます実際。「オーバーライド」の方がよく聞きます。「コンストラクタ」「インクリメント」は毎日のように会話されます。
その他の回答 (8)
- tikisukeman2
- ベストアンサー率32% (32/99)
恐らく質問者は、コミュニケーション云々、常識、一般論について聞いているのではないと思う。プログラミングの本質は、何かを問うていると思う。 2種類の人間がいる。 1.実践的な方法でプログラミング能力を身に着けた人間。 2.書籍から順序だてて体系的に”学習”した人間 私の経験からすると優秀な技術者は1に多い。つまり、自分で答えを見つける能力に長けているからだ。プログラミングはクリエイティブな仕事である。この世に存在しないものを生み出さないといけないときがある。そのとき、技術書に載っている言葉を知っていても役に立たない。 一方2はどこかで限界がやってくる。専門書は実は古かったり間違っていたりする事があるからだ。専門家は、現場でそのまま使える、きわめて高度な内容の書籍はこの世に無い。なぜかって?それは売れないからだ。そこでタイプ2の人間はタイプ1に切り替えなくてはならなくなる。それか、出世して足を開発の現場から洗うかだ。 質問者は、センスがあり周りの技術者より良い腕を持っていると推察する。言葉があって技術があるのではない、技術を説明するのに言葉がある。技術力は必須だが言葉は必須ではない。 ただ、いくらセンスと技術力があっても技術者は孤独では寂しい。他人と情報交換しないといけない。そのときに用語を定義すると便利だ。 プログラミング中にはその手の”定義”は嫌になるほどやってるしその便利さはわかっているだろう。それは人間世界でも同じさ。 #defineを使った事があるだろう。まさかこれを使わずに、プログラムは単に動けばいいなんていわないだろう?
- unibon
- ベストアンサー率47% (160/340)
名は体を表す、というように物事の名前は大事だと思います。たとえば「デザインパターン」もパターン化するとともにパターンに名前を付けた、というところにも意義があるはずです。 巷に溢れているコンピューター用語辞典に書いてある説明の文章は覚える必要はないとは思いますが、自分の頭の中にある使い方・やりかたを名前で指し示せたほうが良いです。名前で指し示せる、ということは少なくとも、分類はできているということになります。逆は必ずしも成り立つわけではありませんが、名前で指し示せないとするともしかしたら分類があいまいなままになっている恐れもあります。
(※すいません、長文になってしまいました) 私自身も、あんまり固有名詞を覚えるのは苦手だったりします。また英語をカタカナにしたものだと、例えばガベージコレクタかガーベジコレクタか、みたいに人によって微妙に違ってたりすることもよくありますよね。だから、「単語を暗記する」ということがそれほど重要か、ということは疑問に思います。 ただ、質問者さんが「意味を知っていれば・・」「使い方を知っていれば・・」ということを強調されていたので、そこにちょっと、うーん、と感じてしまいました。 私がこういう勉強をするときに一番重視するのは、「それはどういう働きをするものか、どう機能しているのか」といったことです。――Javaを使い始めた頃、一番ショックだったのは「Stringはオブジェクトだ」ということでした。だから==では比較できない、と。ところが「Stringリテラルは==で比較できる」という。なぜなら、Stringリテラルはnew Stringされたインスタンスではないからだ? 頭の中を???がぐるぐる回りました。 それから、リテラルというものがJava仮想マシンの中でどのように扱われているかといった働きを理解して、初めて「リテラル」がどういうものかわかりました。が、働きがわからず「リテラルはソースコード内に直接記述された値のことです」という定義だけを暗記していたら、なぜStringリテラルは不思議な動きをするのか理解できなかったでしょう。 こういうことって、プログラミングではよくあります。 なぜ、0.1を10回足すと1にならないのか? i++と++iは何が違うのか? "A"+"B"でなぜ"AB"というStringが得られるのか? なぜコンストラクタでcreateImageすると実行に失敗するのか? なぜユーザが取得したGraphicsインスタンスだけは使用後に破棄するのか? こういうことは、「オーバーライドとはこれこれこういうことです」といったような言葉の定義だけでは理解できません。それがどう機能しているかという仕組みを理解して初めてわかることです。 これらが重要になってくるのは、こうしたことを理解していないとわからないバグなどに遭遇したときです。こうした機能の仕組みを理解していないと、なぜ問題が起こるのか、内部で何が起こっているのか知ることは難しいでしょう。 「これはこういう意味だ」という言葉の定義を知っていても、その機能を知ったことにはならない、ということを私は肝に銘じるようにしています。そうした部分まで理解しようと考えたら、「固有名詞を暗記しないといけないか」などは、とるにたらない些細なことのように思えるような気がしませんか??
- dappoiriri
- ベストアンサー率20% (7/35)
これは私の体験談ですが。。。 私も2,3日前まで用語なんて覚えなくてもいいよ。って思っていました。 この時期、新人教育で今年、とうとう新人教育をしなくちゃいけなくなったんです。新入社員たちは勧めた本を読んで「オーバーライドってよくわかりません。」とか「コンストラクタがよくわかりません。」って言ってきます。 私は今まで小規模開発しか参画したことがなかったので、用語なんていらないよ~と思っていたので、新入社員にそう聞かれてちょっと焦ってしまいました。人に物を教えたり説明したりするにも用語は必要だと言うことがわかりました。
- seasoning
- ベストアンサー率25% (182/713)
こんにちは。 すでに回答が出ていますが、個人でプログラムをするのであれば問題ないと思います。 中には複数の会社で開発をする案件なんてものもありますので、打ち合わせの場で言葉が分からないと恥ずかしい思いをするかもしれません。 もちろん社内のメンバーだけで開発するときも然り。 話についていけなくなりますよ。 スキルアップを目指すのであれば、必要だと考えます。
- Swordline
- ベストアンサー率42% (291/688)
確かに、自分の中だけであればそれで十分。 しかし、人にそれを伝えるときはどうするのです? 私は昔上司に「仕様書などに難しい専門用語は使うべからず」と いわれたことがあります、どう言う事かというと・・・。 たとえば、設計書に「~がオーバーライドして~」みたいなことを書いたとします。 その設計書をレビューしていて「オーバーライドって何?」と聞かれたときに 「何?おまえオーバーライド知らないの?」と相手に言えますか? そこで説明できなければ、相手には理解もしていない言葉を設計書で使ってるの? そんなやつに任せて大丈夫なのか?不安だな~、などと思われてしまうのです。 そういうことを避けるために、わかりやすいドキュメント作成を心がける。 そのためには、知識が必要となるのです。 よって、覚えておくに越したことはないと思います。
- pcbeginner
- ベストアンサー率46% (261/560)
そうですね。個人的にはちゃんと使えてれば、それがどういう呼び方だろうがかまわないと思ってます。 個人的には。 1人でプログラムを作るだけなら。 という限定条件がつきますけど。 けど、仕事でチームで開発したり、またはこのような掲示板などで質問したり、回答したりといった場合には、お互いの意思の疎通が取れなくなりますよね。 例えば A:~はどうすればいいですか? B:オーバーライドすればいいんだよ。 A:おーばーらいど???ってなんですか? B:~を~することだよ。 A:あっ、それ知ってます。 となった場合に2回目のA以降は無駄なやりとりですよね? ですので、他人とコミュニケーションをとるのなら、基本的な単語くらいは覚えておくべきだと思います。
- keroro001
- ベストアンサー率23% (71/304)
まぁ一人でちまちま作ってる分にはいいですけどね。 大きなプロジェクトになるとコミュニケーション取る時に問題になると思いますよ。 後輩が部下について、1から教えることも出てきますしね。 ま、そのときにこっそり用語の意味だけ勉強しなおせばいいんですが(笑)
お礼
早々のお返事ありがとうございます。 確かにコミュニケーションとるときには問題になりますよね。やっぱり知ってる方が良いのかなー。
お礼
早々のお返事ありがとうございます。 確かに、pcbeginnerさんの言う通りなんですよね。 コミュニケーションが取りやすくなるし、 まさに、AさんとBさんの会話の内容なんですよ。 知ってるほうが良いようですね。