JavaRush /Java Blog /Random-JA /最初から始めましょう、または「Hello, Java World!」
articles
レベル 15

最初から始めましょう、または「Hello, Java World!」

Random-JA グループに公開済み
この記事は、一見すると珍しい余談から始めたいと思います。後で正確にその理由が明らかになるでしょう。
最初から始めましょう、または Hello, Java World!  - 1
それでは、誰かを想像してみましょう。この人はアルペンスキーをマスターしたいと考えています。そしてこのために彼は次のような措置を講じます。
  • インストラクター、教科書、マニュアルなど - これはすべて邪悪な者によるものです。スキーは独学でも学べます。さらに、学校ではクロスカントリースキーもそこそこ上手に習いました。したがって、より知識のある人々からのアドバイスはすべて無視されます。

  • 最もクールな装備が選択されます。エキスパートレベル以下ではありません。足が痛くなる硬いブーツ。誰かの体力レベルを遥かに超えて、曲げるのに物凄い力を必要とする硬いスキー。まあ、など。

  • テストトラックは…そうですね、ワールドカップの大回転の舞台となるトラックだとしましょう。これは勉強するのにちょうどいいですね。
  • 同じ精神で続けてください。
そこで質問です。この人を何と呼びますか? 個人的には、約 20 年間アルペン スキーに精通している者として、私は彼を絶望的だと言います (そしてこれはまだ非常に穏やかです!)。このアプローチでは何も学ぶことはまったく不可能です。しかし、確実に傷つく方法です。そして最も確実なことは、スキーをするという考えを永久に放棄することです。この評価については、あなたも私の意見に同意していただけると思います。いずれにせよ、この人は自分に不快なことを言われることを期待していないことはほぼ確信しています。では、別の誰かを想像してみましょう。たとえば、彼をコンピューター サイエンスの学生だとしましょう。彼は C++、C#、Pascal についてある程度の知識を持っています。彼は Java を学びたいと思っています。彼の行動:
  • 彼の知識レベル(はっきり言ってゼロレベル)に相当する文献は一掃される。前述の C++、C#、および OOP 理論についての多少の知識に基づいています。
  • 最も強力なプログラミング環境が採用されます。Eclipse または NetBeans としましょう。ボタンを 1 つ押すだけで、すべてが自動的に行われます。
  • 試用アプリケーションとして、チャットを選択します。クライアント/サーバー アプリケーション、クライアント部分はアプレットの形式、サーバー部分は Web サービス、または最悪の場合はサーブレットです。勉強するのにちょうどいい。
質問。この人を何と呼びますか? パラドックスとは何か知っていますか?実際のところ、この場合、公平な評価は大幅に少なくなります。状況はあらゆる点で同じであるにもかかわらず。2番目の場合の健康と生命への影響が致命的ではない限り。もしかしたらこれが問題なのでしょうか?状況は本当によく似ています。それらを同じスタイルで具体的に説明しました。そして奇妙なことに、最初のシナリオの不条理が明らかであれば、驚くべき数の初心者開発者が 2 番目のシナリオに従います。Java の習得は、MIDlet、データベースのクライアント、チャット、サーブレットに基づく Web サイトの作成などを作成することから始まります。これを長期間続けることもできます。しかし、それでも要点は明白です。同時に、入門レベルの文献は軽蔑されて脇に置かれます。これを読む?私に?はい、私は 3 年間 C++ で書いています。(オプションは Pascal であり、Visual Basic でもあります。) そして、私は OOP を知っています。まあ、一般的には。それで、次は何でしょうか?そして、これ:
  • 8バイトの配列をlongに変換するにはどうすればよいですか?
  • なぜこのようなことが起こるのでしょうかNoClassDefFoundError
  • Eclipse ( ) でアプリケーションを起動するNetBeans/IDEA/JBuilderとすべて問題ないのに、 Eclipse なしで と入力するjava HelloWorld.classとエラーが発生するのはなぜですか?
  • なぜクラッシュしてしまうのでしょうかClassNotFoundException
  • なぜ図書館がないのですか?すでにclasses.zipに入れておきましたが、まったく役に立ちませんでした。
  • オブジェクトの配列を作成するのに、配列の要素を使用しようとすると、次のメッセージが表示されるのはなぜですかNullPointerException?
  • なぜ ...?
  • なぜ ...?
  • なぜ ...?
なぜ、なぜ、なぜ?ただし、Java は C++ や Pascal ではないためです。そして、Perlではありません。これらの言語の知識は、ほとんどの場合役に立たないだけでなく、妨げにもなります。これらの言語がまったく異なるイデオロギーを持っているという理由だけであれば。しかし、外観の類似性は誤解を招きます。もちろん、これらすべての「なぜ」と「どのように」には、本の中に答えがあります。最も基本的なレベルの文学。しかし、それを読むのは怠惰です(選択肢:恥ずかしい、時間がないなど)。私は、優秀な C++ 専門家によって Java に移植されたステレオタイプをかなり多く知っています。最近の例: コンストラクターで例外をスローしてはなりません。なぜ?はい、C++ ではそのようなオブジェクトの状態が定義されていないためです。したがって、メモリリークが発生する。Java ではガベージ コレクターが存在するため、原理的にはこのような問題は発生しません。しかし、そのような状況を避けようとする人もいます。根深い固定観念に従っているだけです。そして最悪のことは、こうした努力の結果、コードがさらに複雑になってしまうことです。構文は簡単に学ぶことができます。そして完全に不十分です。言語のイデオロギーの方がはるかに重要です。そして、それを最も効果的にマスターするには、最初から始める必要があります。正確になぜ、そしてどのようにして? そして、これは別の質問です。それで。どこから、どのように始めればよいのか。それは何を達成したいかによって異なります。熟練したコーディング猿になりたければ、ほぼ何でも始めることができます。プロになりたい場合は、状況は少し複雑になります。私の経験から、次のように言えるのです。プロの開発者と「コーダー」の違いは、何が起こっているかを理解しているかどうかです。彼はボタンを押す以上のことをします。強力な環境は非常に役立ちます。無くても大丈夫な人向け。しかし、それを始めた人にとっては、それが唯一のツールであることがよくあります。そして、それが存在しない場合、コーディング猿の価値はゼロになります。押すボタンがないからです。一般に、ボタンを押すと、実に恐ろしい形になることがあります。私の同僚の 1 人は、Java で書かれた製品を目にしました。インストール手順は「ディスクから JBuilder をインストールします...」という言葉で始まりましたが、これはすでに致命的です。開発者が開発環境なしでは製品を動作させることができなかったとしたら、それがどのように書かれたのかを考えるとゾッとします。少なくとも素人が書いたものだ。「何が起こっているかを理解する」とはどういう意味ですか? これは、次のことを理解する必要があることを意味します。
  • 仮想マシンとは何ですか?なぜ必要ですか?
  • 仮想マシンの観点から見たクラスとは何ですか。
  • パッケージとは何ですか?
  • 図書館とは何ですか?
  • 仮想マシンがクラスを検索してロードする方法。クラスローダーとは何ですか、またそれはどのように機能しますか。デフォルトではいくつありますか。クラスパスとは何ですか。
等。等々。リストは続きます。開発者自身に特有の知識は含まれていないことに注意してください。スレッドとは何か、OOP の観点から見たクラスとは何か、オブジェクトとの違いは何か、レイアウト マネージャーがどのように機能するか - すべての開発者はこれらすべてを知っておく必要があります。私がリストしたものはすべて、より専門的なものです。しかし、何が間違っているのかを理解するには、それらを知ることが非常に重要であることが判明することがよくあります。人生の一例。xalan という XML を操作するためのライブラリがあります。これには、パーサー、トランスフォーマーなど、いくつかの javax.xml... パッケージが含まれています。この図書館はとても人気があります。問題は、これらと同じパッケージがバージョン 1.4 以降 J2SDK に存在していることです。質問。xalan がクラスパスにも存在する場合、ライブラリから javax.xml.transform.stream.StreamSource クラスにアクセスするときに、ライブラリまたは J2SDK からどのクラスがロードされますか? この質問に答えるには、クラス ローダーがどのように機能するかを知る必要があります。私はかつて、フォーラムの 1 つで 4 日間にわたる議論が最終的にこの問題に行き着いたのを見ました。コードが正しく動作しなかったのは、ローダーが予期したクラスを取得しなかったためです。私は何を目指しているのでしょうか?ここで重要なのは、開発環境が強力であればあるほど、開発者にとってより多くのことができるようになり、開発者が考える必要が少なくなるということです。そして、これはもう、ああ、なんてひどいことでしょう。猿にとても近いです。これは、どんなに逆説的であるように見えても、最初の結論につながります。

結論 1. 強力な環境なしで Java の学習を始めることをお勧めします。

私はメモ帳レベルのエディタで書くことを推奨しません。しかし、私がこれを行うのは唯一の理由ではありません。原則として、構文の強調表示がないからです。これは非常に便利ですが、悪影響はありません。Notepad++のようなものを使用できます。これは Java 構文を理解し、ちなみに無料です。たとえば、.java ファイル タイプを専用にシステムに登録しています。つまり、構文強調表示とコマンド ラインを備えたテキスト エディターです。2、3 日の苦悩と、クラスパスとは何か、インタプリタの起動方法、その他の小さなことを理解することは、永遠に残ります。さらに遠く。私の経験から、将来に役立つ知識を得るのは不可能であると言えます。答えが得られる質問がある場合にのみ、文学を読む価値があるという意味で。何も疑問を持たずに本を読んでしまうと、1週間もしないうちに情報が消えてしまいます。私自身の経験も含めて、このことはよく知っています。私はかつて、サーブレットに関する本を 5 回読み始めました。仕事で彼らと関わるようになるまで、情報は吸収されませんでした。そして、これは決して特別なケースではありません。むかしむかし、8~10年ほど前、私は次のような文章を読みました。残念ながら著者は覚えていません。「人に新しいプログラミング言語を教えるにはどうすればよいでしょうか?」とてもシンプルです。それには言語、いくつかのタスク、そして最小限のドキュメントを与える必要があります。そして、数か月後、彼が少なくともこの言語で書き始めたら、包括的な文書を提供します。探偵小説のように2週間で読み終わり、その後はすぐに仕事に就くことができます。私はこの意見に 100% 同意します。2か月も経てば、小さな問題はすべて解消されます。それらに対する答えは独立して得られるため、その価値は大幅に高まります。一方で、明確な質問がすでに形成されており、その答えはドキュメントによって提供されます。これは 2 番目の結論につながりますが、これは最初の結論と同様に逆説的であるように見えます。

結論 2. 教科書なしで Java の学習を始めることをお勧めします。Java API ドキュメント + Java チュートリアル - これで十分です。

Java API ドキュメントは必須です。ローカルのディスク上に保存しておくことを強くお勧めします。彼女に連絡する必要があるのは、1 回ではなく、2 回、さらには 10 回です。個人的には、そこに行かない日はありません。また、Java チュートリアルをローカルに保存しておくことをお勧めします。これは完全に教科書に代わる入門レベルの情報です。ただし、そこにはかなりの量があります。仕事では扱っていない分野でも、自分にとって新しい発見があると言わざるを得ません。たくさん読むのは悪いことです。リクエストがない限り、応答はありません。ちょっと読むのもダメです。黄金の中庸はどこにあるのでしょうか?私はこのルールを守っています。質問に対する答えを受け取ったと思われるまで読みます。90% のケースではそうではありません。しかし、現時点では、立ち止まって自分で続けるのが最善です。最初の推進力はすでに受け取られており、問題を独自に解決すると、さらに多くのことが得られます。もちろん、しばらくしたら、文学を取り上げる価値があります。ただし、繰り返しますが、入門レベルの文献です。たとえこれがすべてナンセンスであるように思えても、最初の章を読む価値はあります。少なくとも何か新しいことを学べることはほぼ保証できます。そして、これは後で非常に重要であることが判明する可能性があります。わかりました。何を書くべきかは決まったようです。書き方も~。でも何を書けばいいのでしょうか?この記事がどこから始まったかを思い出してください。インスタント メッセージング システムを作成することから始めるべきでしょうか? もちろん、選択はあなた次第です。それは価値がないと私には思えます。タスクが複雑になればなるほど、より多くの疑問が生じます。経験がなければ、これほど多くの質問をされると、解くことは不可能であるという感覚が生まれ、その後、自分自身の劣等感や愚かさなどの感情が生まれます。最終的には、これが「もうダメだ…」という決断につながり、言語学習をやめてしまう可能性があります。それらの。必要とされていたものとはまったく逆の効果をもたらします。これは Java の特徴というよりも、学習プロセス自体の特徴です。しかし、プログラミングを教えるとなると、どういうわけか彼らはこのことを忘れてしまいます。一方、小さなタスクを最後まで完了することは、旅の最初で放棄された壮大なシステムよりもはるかに大きな満足感とはるかに多くの知識をもたらす可能性があります。したがって、3 番目の結論は次のとおりです。 結論 3. Java の現在の知識レベルに適切なタスクから Java の学習を開始することをお勧めします。 F1 マシンで車の運転を学び始めるべきではありませんし、ワールドカップのトラックでアルペン スキーを学び始めるべきではありません。同様に、何か巨大なものを書くことから Java の習得を始めるべきではありません。野心が求められることは理解しています。しかし、この場合、それらは根拠がありません。そして、不合理な野心を持てば持つほど、プロになれる可能性は低くなります。学習に関して注目すべき現象は、奇妙なことに、さまざまなフォーラムです。賢く使えば。賢明なことに、これは、通常とは逆のことをする必要があることを意味します。つまり、質問するのではなく、質問に答えるということです。あなたが到達できる強さがあるものなら何でも。私自身がすべてを知っていると思っているなら、それは大きな間違いです。はい、よく知っています。しかし、私が遭遇したことのない領域もあります。あるいは持っていますが、ほんのわずかです。私の実践における典型的な例は、コード署名、安全な接続などの証明書の操作です。1998 年に論文を書いたときにこれを行いましたが、それ以来すべてが大きく変わりました。長年にわたり、私には疑問が蓄積してきました。文学も読み始めました。しかし、上で述べたように、将来に役立つ知識を得ることができません。それはバールのようなものです - 片方の耳に入れて、もう片方の耳に出ます。頭に穴が空く以外に結果はありません。そして、これは最近、Tomcat との SSL 接続についてフォーラムで質問がなされるまで続きました。いくつかの問題がありました。そして、この質問だけが私を深く掘り下げるきっかけになりました。そして要求があれば応答もある。その人の問題が何であるかを理解しただけでなく、他にもたくさんの有益な情報を見つけることができました。ようやく証明書の仕組みが理解できました。対応記事は計画中です。そして、これは常に起こります。たとえば、GUI を使ってかなりの作業をしました。TextLayout の機能の一部を理解できたのは、フォーラムでの誰かの質問の結果でした。この質問をするまで、私は彼らについて全く知りませんでした。同様に、JButton も html を独自のヘッダーとして解釈することが判明したことを最近知りました。以前は、これができるのは JLabel だけだと思っていました。これもまたフォーラムのおかげです。つまり、質問に答えれば答えるほど、私たちは自分自身を学ぶことができるのです。だからこそ、私は、フォーラムに参加している人は何もしないという一般的な意見に同意しません。これは明らかではなく、主にその人がなぜフォーラムに参加しているのかによって決まります。そして彼は主に何をしますか?質問するか答えるかです。実際、尋ねることもできます。しかし、賢明でもあります。解決策を求めるのではなく(特に、つい先日遭遇した「知っている人は質問せずに答えてください!」という追記も!)、逆に、もう一度、解決策を設定するように依頼してください。移動の方向。初心者にとっては、単純に経験が足りないため、どこを掘ればよいかを理解するのが難しいことは十分に理解できます。これはその人のせいではありませんし、問題でもありません。これで大丈夫です。誰もがこれを経験したことがあります。私も含めて。私個人にとっては、人が何かを学びたいと思うことの方がはるかに重要です。そしてただ答えを得るだけではなく、プログラミングラボを受講した5分後には忘れてしまいます。進行方向は必ずお伝えします。私自身が彼を知っていれば。そして、わからなくても、少なくとも推測することはできます。そして私も必ず答えを探します。しかし、私はおそらく直接答えたことはありません - 少なくとも覚えていません。ちなみに、これが原因で私はフォーラムの 1 つから離れました。私が誘導的な質問をし始めると、彼らは口をそろえて、単純に答えるのが通例だと説明してくれました。そして、私の質問によってさらに前進することができます。特にこのアプローチのおかげで、フォーラムのレベルにはまだ不十分な点が多く残されていたことを考えると、– もう時間を無駄にしないことにしました。好みに合わせてフォーラムを選択して、さあ始めましょう。ちなみに、このサイトはまさにフォーラムのおかげで登場しました。そこでしばらく話し合った後、最も頻繁に取り上げられたトピックのリストを蓄積し、そのようなサイトには需要があることに気づきました。そしてそれは起こりました。ほぼすべての記事は、フォーラムでの議論を踏まえて書かれています。または、私も定期的に行っている通信に従ってください。結果は何ですか? 仕事、仕事、そしてまた仕事。初期段階で自分でやればやるほど、得られる知識は少なくなります。そしてプロへの道は長くなります。しかし、誰になりたいかを選択できるのはあなただけです - 何も考えずにボタンを押すサルになるか、プロフェッショナルになるか。そして、これやこれを達成するための道を選択できるのはあなた自身だけです。最初の方法は明らかです。2枚目を見せてみました。紳士諸君、あなたの行動です! 元のソースへのリンク:最初から始めましょう、または「Hello, Java World!」
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION