CodeGym /Java Blog /ランダム /プログラミング言語の選択
John Squirrels
レベル 41
San Francisco

プログラミング言語の選択

ランダム グループに公開済み
私が初めてプログラミングに出会ったのは、学校のコンピューター サイエンスの授業でした。これらは、n 進数体系がどのように機能するかについてのいくつかの退屈な説明で構成されていました。そしてもちろん、自分のウェブサイトを書くことを要求するテストもありました。当時の私には、これほど退屈な職業はないように思えました。私はなんと間違っていたのでしょう!残念ながら、高校のコンピューター サイエンス プログラムでは IT 業務の全体像が得られず、プログラミング言語の選び方も説明されていません。「どのプログラミング言語を学べばよいですか?」と考える前に、初心者はどのような言語があるのか​​、そしてそれらはどのように異なるのかをよく理解する必要があります。 プログラミング言語の選択 - 1

参入しきい値: 高、低、中

プログラマーはよく「入門しきい値」について話します。これは、特定の「ジュニア開発者」が、初めて本格的なプログラムを作成して仕事を見つけるのに十分なプログラミング言語を習得するために必要な努力の量を反映する概念です。「エントリのしきい値」は、次の知識で構成されます。
  • 言語の構文の特殊性とニュアンス
  • 図書館
  • アルゴリズムとデータ構造。
Excel での作業は、一種のプログラミングとさえ言えます。ところで、このおなじみのオフィスプログラムは、見た目ほど単純ではありません。1 人のユーザーの場合、エントリのしきい値はテーブルを作成できるかどうかです。もう 1 つは、複雑な数式やマクロの知識かもしれません。いずれの場合も、このしきい値は小さいです。次に、 1Cプログラミングなどの準言語が続きます。次に、 PHPなど、学習するのに最も簡単な言語があります。さらに、 JavaJSなど、メモリ管理を処理する必要のないネイティブ構文 (通常は英語から派生した) を備えた言語もあります。さらに、 Cやアルゴリズムなど、メモリ、データ構造、アルゴリズムを非常に慎重に扱う必要がある言語もあります。C++Scalaなどの若いマルチパラダイム言語は、おそらく最も敷居が高い言語です。これを習得するには、非常に多くのプログラミング パラダイムを深く掘り下げる必要があるからです。ただし、言語を選択する前に、次に何をするか、Web、エンタープライズ、デスクトップ、またはモバイルデバイス向けに開発するかを決定する必要があります。

ウェブかウェブではないのか?

ウェブ

Web プログラマーは、フロントエンド開発者とバックエンド開発者に分類できます。これらの用語の意味を理解する必要があります。フロントエンド開発者は、クライアント側、つまりユーザーに表示されるものに関与します。「バックエンド」とは、データの操作と保存に関するもので、サーバー上で実行されるサービスの一部です。フロントエンド開発者がどのプログラミング言語を学ぶかを決定する場合、 JavaScriptと JavaScript フレームワーク (Angular JS、React など) が不可欠です。CoffeeScript や TypeScript などの JS 方言は、親ほど人気が​​ありませんが、便利な場合もあります。Flash AS もあり、かつては JScript や VBScript もありましたが、これを覚えているのは恐竜だけです =) これに加えて、HTML を理解する必要がありますそしてCSSプログラミング言語の選択 - 2多くの初心者は、JavaScript と Java はほぼ同じものだと考えています。これらの言語を混同しないでください。JS は以前は「LiveScript」と呼ばれていましたが、「Java」という言葉が普及したために現在の名前になりました。Web バックエンド開発者には、PHP、Python、Ruby、Perl、Java が適しています。ここでは PHP に焦点を当てたいと思います (他の言語については後で説明します)。PHP は学習の敷居が低く、最も習得しやすい言語の 1 つです。有名な Web 開発者を対象とした調査によると、Ruby はゆっくりと、しかし確実に人気を集めており、その簡潔さと美しさで愛されています。

Web ではありません (エンタープライズ、デスクトップ、モバイル)

以下のプログラミング言語を意図的に奇妙な名前でこのカテゴリにまとめました。それらのほとんどは、エンタープライズ、デスクトップ、さらにはモバイル アプリケーションの作成に使用できます。 Python は理解しやすいオブジェクト指向プログラミング言語であり、成長機械学習(ML) のおかげで最近非常に人気が高まっています。ML 開発者は Python を多用しています。 MLは IT の中でもかなり新しい分野であり、すでに成果を上げていますが、私はプログラミング言語を選択するときにこの業界に飛びつくつもりはありません。まず、数学に対する優れた理解が必要です。第二に、人気の波は「ブロックチェーン」や「ナノテクノロジー」の場合と同じように過ぎ去る可能性があります。そうは言っても、Python が Web 開発で使用されていることを覚えているかもしれません。 C++: すべてが「プラスプラス」演算子に基づいて構築される古典的な言語。この言語は、人気のあるすべてのオブジェクト指向プログラミング言語の祖先であり、初心者は必ず注意を払う必要があります。多くの人気のあるアプリケーションがこれを使用して作成されています。しかし、「足を撃たれる」可能性が高く、構文が理解しにくいため、初心者がこのマストドンのプログラミングをマスターできる可能性はゼロになります。 コトリンは流行に敏感な人向けの Java のようなもので、OOP と関数型プログラミングをクレイジーに組み合わせたものです。経験豊富な開発者が Java から Kotlin に切り替えると生産性が大幅に向上するという事実により、最近人気が高まっています。経験豊富な開発者は、このプログラミング言語にすぐに慣れます。ちなみにScalaもそうですが、Androidの世界ではKotlinが人気です。 Javaは初心者にとっても学びやすいです。特にCodeGymの助けを借りれば=) Java 構文は理解でき、「足を撃たれる」リスクはありますが、重大ではありません。

OOPかPOPか?

手続き的アプローチ

手続き指向のアプローチには、特定の問題セットを効果的に解決するために統合された全体に組み立てることができる連続したステートメントで構成されるプログラムを作成することが含まれます。このような言語には、 CPureBasicPascal などがあります。つまり、高校生や大学生に絶望をもたらす言語。比較的若いGOもいます言語。とはいえ、手続き型言語に精通していることは、潜在的な開発者にとって非常に役立ちます。私が手続き型言語に没頭するようになったのは、Wolfram Mathematica システムと大学の研究がきっかけでした。プログラムの最初から最後まで直線的に進む適切なアルゴリズムと簡単な手順により、現代の理論物理学に関連する値を計算することができました。この「シーケンシャル」プログラミング言語は、手動で計算を実行するコードを作成する方が簡単な場合があることを理解するのに役立ちます。手順指向プログラミング (POP) の学習は、優れたアルゴリズム トレーニングを提供し、雇用主はほぼ常に求職者にこれを望んでいます。IT のあらゆるものは手続き型言語の基礎に基づいて構築されているため、手続き型言語を過小評価しないでください。ところで、どのプログラミング言語を学ぶかを決める初心者は、OOP 言語だけがマルチスレッドをサポートしていると考えることがよくあります。本当じゃない。手続き型プログラミング言語では並列計算も可能です。 プログラミング言語の選択 - 3

オブジェクト指向のアプローチ

手続き型言語を始めた人は、通常、数学、アルゴリズム、データ構造に精通しています (工科大学はこれらの分野に重点を置いているため)。それでも、今日の現実は、成功したプログラマーは通常、プログラミングに対する別のアプローチ、つまりオブジェクト指向パラダイムを習得した人たちです。OOP イデオロギーにより、真にグローバルなシステムを構築できます。このアプローチの特徴は、現実世界との類似性です。
  • 異なるオブジェクトは相互作用し、互いに独立して存在します。
  • オブジェクトには階層があり、祖先の動作を採用または変更できます。
  • 抽象的な概念を使用できますが、相互作用できるのは実際に存在するオブジェクトのみです。

手続き指向言語は、特定の問題を解決するためのツールです。タスクがわずかでも変更されると、おそらくすべてのアルゴリズムを書き直すのに時間と労力を費やす必要があります。

新車と中古車の両方を販売する自動車販売店を説明するプログラムを想像してください。手続き型言語では、新車、新車、中古車、中古トラックなどのエンティティごとにデータの入力または出力を処理する関数を定義する必要があります。OOP は何を提供しますか? オブジェクト指向のアプローチでは、すべての車両タイプに共有される特性を格納する Vehicle 基本クラスを定義するだけで済みます。

  • 作る
  • エンジン排気量
  • 馬力
  • 新品または中古品
  • 価格

そして、情報を取り入れ、発信する方法。次に、Vehicle クラスの特性を継承するオブジェクト、Car と Truck を作成します。これらには、これらのタイプの車両に特に関係する情報と入出力メソッドが含まれています。

突然、ディーラーの経営者はオートバイも提供することでラインナップを拡大することを決定しました。手続き型アプローチでは、新品および中古のオートバイのすべてのロジックを再作成する必要がありますが、OOP 言語を使用すると、Vehicle スーパークラスのすべての特性を継承し、オートバイ固有の改良を含む新しい Motorcycle クラスを簡単に作成できます。

そして、さまざまな車両を追加するとどうなるでしょうか? 手続き型の実装では、OOP よりも多くの作業が必要になります。さらに、ラインナップが増えるほど、オブジェクトに関する操作が少なくなります。

つまり、OOP は、データとメソッドを 1 つのエンティティに結合し、それらを統合されたオブジェクトとして操作できるようにするプログラミング スタイルです。エンティティは階層内に配置され、互いの内部実装の詳細を掘り下げることなく相互に対話できます。 私にとって OOP がより進歩的なアプローチである理由を 3 つ挙げます。
  1. OOP には個々のモジュールの独立した開発が含まれており、プログラマーまたはチームが連絡先と情報交換の方法と境界を選択できるようになります。
  2. 小さなモジュールに分割されたコードは、モノリシックなプロシージャよりもはるかに読みやすくなります。その結果、部外者があなたのコードをすぐに理解できるようになり、同様に、必要に応じて新しいプロジェクトに参加することができます。
  3. あるクラスは、別のクラスの相互作用に影響を与えることなく変更できますが、そのような変更は子オブジェクトの階層に影響を与える可能性があります。このアプローチをマスターすると、プログラムの拡張や変更が簡単になります。
1 つのアプローチが他のアプローチと競合するわけではありませんが、階層内では OOP が依然として上位にあることに注意してください。 では、なぜ Java を推奨するのでしょうか? 以下の理由を強調したいと思います。
  1. クロスプラットフォーム。

    Java は、Java 仮想マシン (JVM) のおかげでどこでも動作します。この言語の主な利点の 1 つは、クロスプラットフォームであることです。追加するライブラリや特定のプロセッサのアーキテクチャについて考える必要がありません。「一度書けば、どこでも実行できます。」

  2. ドキュメンテーション。

    Oracle の公式ドキュメント、トレーニング ポータル、絶えず進化するコミュニティなど、膨大なドキュメント ベースがあります。開発中に発生するほとんどの質問に対する答えは数分で見つかります。重要なのは、検索エンジンに何を入力するかを理解することです =)

  3. 人気。

    Java は世界で最も人気のあるプログラミング言語です。前述の Android 開発者や Web 開発者に加えて、ほぼすべての企業開発者が Java で記述しています。エンタープライズとは、大企業のニーズに必要な社内開発を指します。

    毎年、嫌悪者たちは「Javaの死」を予言している。彼らは「Oracle はそのサポートを停止するでしょう。完全に時間の無駄です。」と言いますが、これは真実ではありません。彼らは、Java の新しいバージョンを 6 か月ごとにリリースすると約束しています。

    新しいバージョンは言うまでもなく、私にとって Java 8 のラムダ式は革命的であり、啓示でした。私は現在「レガシー」プロジェクトに取り組んでいるため、最新のイノベーションについては詳しく調べていませんが、Java が生きていることは事実です。

    プログラミング言語の選択 - 4
  4. アンドロイド。

    過去 4 年間、Android は携帯電話市場の 80% 以上を一貫して保持してきました。テレビ、メディア プレーヤー、さらには車載インフォテインメント システムもこのオペレーティング システムで動作します。そして、この OS のアプリ開発は主に Java で行われます。開けてくる展望を想像してみてください。Android 開発者として就職したとき、自分が開発している製品にはどれくらいの価値があるのだろうかと考えました。結局のところ、価格は年間約5ドルでした。そこで疑問が生じます。「では、このオフィス、給与、スナックルーム、卓球台、ロボット、その他の特典の資金はどこから出てくるのでしょうか? 答えは量にあります。私たちのアプリには 2,000 万人のユーザーがいます。」

  5. 給与。

    さらにおまけとして、Java 開発者の給与は業界で最も高いものの 1 つです。結局のところ、あなたは特定の目的のためにプログラミングを勉強するつもりです: 良い仕事に就くためです。

プログラミング言語の人気

公式の情報源があるので、そちらを参照しましょう。TIOBEによると、2019 年 10 月の時点で Java は 1 位にランクされています。PYPLランキングでは、Java は JS を大きく引き離して 2 位にランクされ、流行の Python に匹敵します。

結論

初心者がプログラミング言語の選択を検討する際には、次の点に注意する必要があります。
  • 人気 (Java は一貫して主導的な地位を占めています)
  • 参入基準 (Java の場合は中程度です。雇用主はかなり広範囲のスキルを必要とします)
  • 利用可能なマテリアル (CodeGym へようこそ =))
  • 応用分野: プログラミング言語が使用される分野が増えるほど、市場で必要とされる専門家も増えます。Java がクロスプラットフォーム開発をどのようにサポートしているかについてはすでに述べましたが、繰り返しても飽きることはありません。
もちろん、どこにでも落とし穴はありますが、一歩を踏み出した人は前に進みます。どのプログラミング言語を選択するかを決めることができるのはあなただけです。学習頑張ってください!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION