質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

10回答

6137閲覧

プログラミング、わからない所は飛ばすべきですか?

Java_Test2019

総合スコア27

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

3グッド

3クリップ

投稿2019/04/25 08:19

編集2019/05/09 05:09

プログラミングの勉強に王道はないので、時間をかけてでも一つ一つ基礎を学ぶ事から始める事。
効率を気にする必要はない。とプログラミング関係ではネットでも世間でもどこでもよく聞きます。
しかし時間がかかりすぎてはいつまでも・・・と思います。
この話はまた今後、説明しやすい悩みにまとめられたら質問しようかなと思っております。

本題ですが、Javaを勉強していて、クラス型変数というものがわからず一日が経ってしまいました。
一日中一つの項目を、というのが普通のスピードなのかどうかはわかりませんが、時間も効率も気にしないでいいという話があるとはいえ、これが実務なら仕事になりませんよね。わからない所は飛ばすべきという人とわからないまま次に進むのはよくないという人がいます。明らかに一つに何十時間も縛られるのはナンセンスだとは思うのですが、クラス型変数に限らず他にもいろんな手段つくして調べてもわからなかった用語や文法がたくさんあって飛ばしてきました。クラス型変数を調べ始めた時も「これもわからない、いつものように飛ばすしかないか」と思ったのですがさすがに飛ばした数が多すぎると思い、調べる事にした結果1日かかってしまったという経緯です。そして何も学習できていない・・・。

一概には言えないと思いますが、それでも飛ばすべきでしょうか?

ちなみにただネットで調べまくっていただけではなく、関連する用語を調べたりと方法を模索したり、ここのような専門家の集まるサイトで質問したり、知人にJavaに詳しい人がいて質問したり、いろんなJavaの参考書のクラス型変数の項目の解説を見ました。(それでもオブジェクトという謎の物体があるという事までしかわかっていませんが・・・)

※ヤフー知恵袋などと違ってベストアンサー後も回答が来るものなのかと戸惑っております。
回答は多ければ多いほどいろんな意味で参考になるのでとても嬉しいのですが、長いあいだ返事がなかったらすみません。

WeilSpinor, bochan2, navca👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答10

0

ベストアンサー

わからない所は飛ばすべきという人とわからないまま次に進むのはよくないという人がいます。

ものにもよります。「まず実務では使わない重箱の隅」を放置して先へ進むとか、あとは「今は理解するのは難しいので、先で説明するまでとりあえずおまじないとして進める」というのは、ありがちな話です。

ただ、Javaの「クラス型変数」については、使わなければごく限られたコードしか書けないような、すべての基礎になる箇所ですので、これを飛ばしてしまうと、基礎のない家を建てるような状態になります。

投稿2019/04/25 08:37

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

飛ばしていいところもありますが、基礎は飛ばしてはいけません。
クラス型変数は基礎の基礎の基礎なのでわかるまで踏ん張ってください。

投稿2019/04/25 08:36

編集2019/04/25 08:40
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミングの勉強以外でも言える事ですが、戻ってみるのも大事です。
クラス型変数の前に構造体と関数を理解しましょう。Javaには構造体という概念はありませんが、Javaを親に当たるC言語には存在します。
きっとあなたにとっていきなりJavaは難易度が高かったのでしょう。振り返ってC言語から勉強してみる事をおススメします。C言語でもダメならC言語に影響を与えたとされるB言語やPascalをやってみましょう。
そうして理解すればおのずとJavaの分からなかったところも自然に理解できます。
その山があなたにとっては険しいのなら別の挑みやすい山から攻略していくのも手ですよ。

投稿2019/04/25 08:45

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Javaで挫折した人物としての意見を。

結論を言うと、飛ばすべきではありません。
始めの内のそれぞれ個別コンテンツを学ぶ上ではコンテンツによっては問題無い場合もあります。

しかし、それはあくまで個別で切り取って考えた場合には問題無い場合があるだけです。
最終的には全て繋がってきます。
一つ無視する連鎖的に分からなくなり、結果としてプログラム全体が分からなくなります。

ご自身が本気で取り組むなら順序よく理解を深めて行くべきです。
javaやプログラミングに限らないかもですが、実際参考書等を見てみると分かりますが、大概似た順番で章が組まれます。
これは、当然基礎からというのもありますが、その順番に理解しないと後々困るからという側面もあるからです。

投稿2019/04/25 08:36

編集2019/04/25 08:38
mutsuki22

総合スコア445

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

なんつーか、あとから「そういうことだったのか!」ってなることもあるので、あえて他の方とは違う「行き詰まったまま悶々とするくらいであればコード書きまくって理解しろ」という助言をしたくなるような・・・

でもそれだと、よくわからないままコード作ってるコピペプログラマー(当然能力は低い)と紙一重になので、皆さんが謹んでいる気持ちもよくわかります。安易にそうは言えない。


わからないところは飛ばすべきか、ではなくて、Javaの初心者向けの教本とかで勉強している時点で、かなりすっ飛ばされていると自覚してください。

「オブジェクトは物」なんていうのは初心者向けの説明です。もっと厳密な説明はいくらでもあり得ます。「初心者にはわからねえだろ」「まともに書いたらそれだけで一冊書けちゃうので困る」「実は俺もよくわからん」といった判断のもと、本の著者が端折っているだけです。

その誤魔化しを真に受けて勉強すると、進めば進むほど訳がわからなくなる、ということは当然あり得ると思います。悲劇ですね。


ぶっちゃけた話、Javaは初心者には難しすぎるんだよ。他の回答者さんでそう書いてる人もいますが、基本的に賛成。

書いててコンピュータに命令している感じがしないですよね。抽象的な構造を作っていくことでプログラミングするんだけど、その構造の作り方にものすごく細かい作法があって、面倒くさいしそうする必然性がわからない、と初心者は思うはず。

なんでわざわざそんな言語を作ったのか、というところが大切です。昔は違うやり方でやってたんです。メモリの何番地の何ビット目を立てる、みたいな。あるいは、ここまで実行したら次は○行目にジャンプする、とか。手続き型言語(ただし非オブジェクト指向の)と呼ばれるような言語はたいがいJavaよりは素直に理解しやすいと思います。

ただし、それらはコンピュータの動作に寄り添った言語でした。人間の脳みそでコンピュータの動作をトレースできない規模になると、とたんに全体像が把握できなくなって、厄介なバグてんこもりになる。

オブジェクト指向で「オブジェクト」なんてものを扱いだしたのはなんでかというと、まあいろいろな説明はありますが、一つ挙げるとメモリ領域とその上のデータの管理に失敗する心配をなくしたくて、それを抽象化したんです。こう書くと、わかっている人は「まあそうだね、間違ってはいない説明だね」と頷いてくれますが、たぶん質問者さんにとっては「なんのこっちゃ」。


効率を気にする必要はない

を真に受けるんであれば、CPUの設計の仕方から勉強してください。それで機械語やってアセンブリやってOSとコンパイラやって、次あたりでようやく高級言語が登場します。オブジェクト指向にたどり着くまでに何年かかるかな? という世界。

妥協してC言語から、というのはそう悪くない選択です。そのまま下にも上にも比較的スムーズに進めるからです。

Javaから入るのであれば、下の方はもはや見えないので、できるだけ厳密な定義を参照して「そういもの」と丸呑みして進めていく力が要ります。

Javaのレイヤの説明はわかろうとわかるまいとすべて「そういうもの」として覚えないといけない、ということです。「こう書けば動く。なんでかは知らない」をものすごく緻密にやっていけば、マスターすることは可能でしょう(でもかえって難しいと思う)。

投稿2019/05/09 06:20

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/09 06:23

>手続き型言語(ただし非オブジェクト指向の)と呼ばれるような言語はたいがいJavaよりは素直に理解しやすいと思います。 よーしCOBOLやろうぜ(もう10年以上触ってないなぁ・・・)
hayataka2049

2019/05/09 06:31

その名前を聞くたびに「あ、うちの母親が若いころやってたやつだ」って思ってます>COBOL
m.ts10806

2019/05/09 06:32

ジェネレーションギャップを感じた今日この頃 orz
mutsuki22

2019/05/09 06:36

>よくわからないままコード作ってるコピペプログラマー 耳が痛いですww
sazi

2019/05/09 06:53 編集

> 一つ挙げるとメモリ領域とその上のデータの管理に失敗する心配をなくしたくて、それを抽象化したんです。 だけど、フルGCに落ちいった時の恐怖。 メモリ管理に関してはVMありきでそうせざるを得なかったんじゃないかしら
Java_Test2019

2019/05/09 07:48

なんていうかものすごくわかりやすかったです。 基礎はしっかりとするため効率なんて、いや時間をかけすぎるととある目的への・・・などなどいろいろありますがその度合をやはり初学者ながらもバランスつけていくのが大事ですよね。初学者じゃわかりにくすぎるものですが他の初学者たちの基礎固めと端折るところは端折っているところを見ていると皆さんも初学者なりに折り合いをつけているものと思います。クラス型変数など大事な基礎部分はしっかりしなきゃとわかりますが。
m.ts10806

2019/05/09 07:52

「分からないから端折る」のと「端折っても問題ないから端折る」のでは全く意味合いが違いますので、そこを判断できないのであれば「端折るべきではない」と。(ふと思った私の回答の説明不足部分)
Java_Test2019

2019/05/09 08:27

こちらこそ説明不足ですみません。この質問投稿時に書いた最初の質問の文章の、「わからないところで行き詰まっていたら端折っていいかな」は後者の「行き詰まっているところが端折っても問題ないなら端折る判断をしていいか」というものです。全く違う意味の文章を書いてしまいました。そして問題ないなら端折っていいのは聞かずともわかる事ですよね。本当に聞きたかったのはその判断の折り合いをどうつけるか、なのですがよくよく考えればそんなの一概には言えないので質問として無理難題でした。
m.ts10806

2019/05/09 08:29

あれこれ考えながら書いていると日記っぽくなって他人には全く要点が伝わらなくなるので 質問テンプレートを利用されたら良いかと思います。 ※次の質問でも同じように日記っぽくなっているので調整してみてください。
guest

0

一度飛ばしてみて、後で戻るのが王道だと思います。

投稿2019/04/25 09:21

syunn

総合スコア78

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

しかし時間がかかりすぎてはいつまでも・・・

わたしはCが実務で使える(自分が思っているだけかも?)ようになるまで4〜5年かかりました。(もとはアセンブラとPASCALだった)そのおかげでなんとか30余年仕事をしてこれました。基礎に時間をかけるのは大事なことです。実務では奇抜な仕様はまず無いので、基礎の応用だけで仕事になります・・・

投稿2019/04/25 08:54

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Java_Test2019

2019/04/25 09:00

回答有難う御座います。同じところで詰まるっていう話はよく聞きます。 それが1日だろうが1年だろうが基礎を!ですよね。当然な話だとは思います。 という事は皆さんも専門家に聞くネットや本で調べる以外の方法をとっているという事ですかね・・・ それが何かを調べます。
cateye

2019/04/25 09:35 編集

私の頃(1990?)は本とIRC(Internet Relay Chat)だけが頼りでした。しかも殆どが英語;;IRCでは、FreeBSD3のCでプログラム(たしかShellソート)組んで「俺のほうが早いv^^」とかやってました。・・・けっこう勉強になった。・・・intelのマニュアルなんて1冊7千〜8千円ぐらいした、今はいいなぁ・・・と思っています。
guest

0

言ってしまえば, 人に因ると思います.
ご自分の事情によって, お好きなように勉強して頂いてよいのはないでしょうか.

投稿2019/04/25 08:47

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

解決済みですが。一言。とりあえず不必要であるならば飛ばすのもありです。が、何を持って不必要と考えるかはケースバイケースです。

必要性まで含めて考え、必要性も理解できなければ飛ばします。必要性を理解した上で、中身を理解できないならば飛ばしません。

投稿2019/04/28 13:52

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2019/04/28 13:57

初学者に「必要性」を考えさせるのは無理があるのでは…?
HogeAnimalLover

2019/04/28 14:25

はい。その場合は飛ばすようにします。
guest

0

小学校、中学校 ... で何年も勉強をしてきていると思います。
どのように過ごましたか?
得意な学科はどのような態度で学習してきましたか?
不得意な学科はどうして不得意になったのでしょうか?
受験などで得点を取れるようにするためにはどんな方法をとりましたか?

クラス型変数については、この理解を飛ばしていたら、プログラムを読み書きできる範囲は、ものすごく狭くなってしまいます。

まずは教科書(図書館で借りてきてもよい)で基本的な事を順序立てて習得することが必要です。
そして。ひとつの言語である程度しっかり学習した後なら他の言語学習の敷居はだいぶ下がります。

投稿2019/04/26 16:24

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問