JavaRush /Java Blog /Random-JA /プログラミング言語の選択
Алексей Дмитревский
レベル 31
Москва

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

Random-JA グループに公開済み
私が初めてプログラミングに出会ったのは、学校のコンピュータ サイエンスの授業でした。これらは、n 進数体系の原理に関するいくつかの退屈な説明でした。さて、テストとして、自分の Web サイトを作成する必要がありました。その時、この世にはこれ以上退屈な活動はないように思えました。私はなんと間違っていたのでしょう!残念ながら、学校のコンピューター サイエンスのカリキュラムでは IT の仕事の全体像が示されておらず、プログラミング言語を選択する方法も明確ではありません。 プログラミング言語の選択 - 1「学習するためにどのプログラミング言語を選択するか」という質問をする前に、初心者はどのような言語が存在し、それらの違いは何であるかを理解する必要があります。

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

プログラマーの間では、「参入の閾値」についてよく耳にします。これは、個々の「ジュニア」が、初めて本格的なプログラムを作成して仕事を見つけるのに十分なレベルでプログラミング言語をマスターするために必要な努力の量を反映する概念です。「参入閾値」は次の知識で構成されます。
  • 構文の特徴と言語のニュアンス。
  • 図書館;
  • アルゴリズムとデータ構造。
実は、Excelでの作業も一種のプログラミングと言えるのです。ところで、このおなじみのオフィスプログラムは、見た目ほど単純ではありません。1 つはテーブルを作成できる能力、もう 1 つは複雑な数式とマクロの知識がエントリーの基準となります。いずれにせよ、この閾値は小さいです。次に準言語が登場します。たとえば、1Cプログラミングです。次に、学習するのが最も簡単な言語: たとえば、PHP。次に、メモリとの手動対話を必要としないネイティブ (通常は英語から派生した) 構文を持つ言語です。たとえば、JavaJSです。さらに、 CC++など、メモリ、データ構造、アルゴリズムを非常に慎重に扱う必要がある言語もあります。若いマルチパラダイム言語は、おそらく、最も参入障壁が高いでしょう。なぜなら、それらを習得するには、他のプログラミング言語 (たとえば、Scala)で複数の犬を食べる必要があるからです。ただし、言語を選択するときはまず、次に何をしたいのか、つまり Web、エンタープライズ、デスクトップ、またはモバイルアプリケーションの開発を決定する必要があります。

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

ウェブ

Web プログラマーは、フロントエンド開発者とバックエンド開発者に分類できます。これらの用語の意味を理解することは価値があります。「フロントエンド」開発者は、いわゆるクライアント側、つまりユーザーに表示されるものを扱います。「バックエンド」とは、サービスのソフトウェアおよびハードウェア部分、つまりサーバー上で実行されるものです。フロントエンド開発者がどのプログラミング言語を選択するかを決定する場合、必須となるのはJavaScriptとそのフレームワーク (Angular JS、React など) です。JS 方言は親ほど人気が​​ありませんが、CoffeeScript、TypeScript なども便利です。JScript や VBScript が登場する前には Flash AS もありましたが、それを覚えているのは恐竜だけです =) さらに、HTMLCSSを理解する必要があります。
プログラミング言語の選択 - 2
多くの初心者は、JavaScript と Java はほぼ同じものであると考えており、これらの言語を混同すべきではありません。JS はかつて「LiveScript」と呼ばれていましたが、まさに「Java」という言葉の人気により現在の名前になりました。PHP、Python、Ruby、Pearl、Java はWeb バックエンドに適しています。ここでは、 PHPに注目していただきたいと思います。他の言語については後で説明します。PHP は、学習の敷居が低く、学習するのが最も簡単な言語の 1 つです。馴染みのある Web 開発者への調査から判断すると、Ruby はゆっくりと、しかし確実に人気を集めています。Ruby はその簡潔さと美しさで愛されています。

非 Web (エンタープライズ、デスクトップ、モバイル)

これらのプログラミング言語を、このような奇妙な名前のカテゴリに特別にグループ化しました。そのほとんどは、エンタープライズ、デスクトップ、さらにはモバイル アプリケーションの作成に使用できます。 わかりやすい OOLP であるPython は、機械学習の開発により最近非常に人気があり、その支持者は Python を広く使用しています。ML は IT の中でもかなり新しい分野であり、すでに最初の成果は得られていますが、プログラミング言語を選択する際に、私は急いでこの業界に飛び込むつもりはありません。まず、数学が非常に得意である必要があります。第二に、人気の波は「ブロックチェーン」や「ナノテクノロジー」と同じように進む可能性があります。さらに、ご存知のとおり、Python は Web 開発で使用されます。 C++ : クラシック。すべては「プラス」に基づいて構築されます。この言語はすべての人気のある OOLP の元祖であり、初心者は必ず注意を払う必要があります。多くの人気のあるアプリケーションはこれに基づいています。しかし、「足を撃たれる」可能性が高く、構文が理解しにくいため、初心者がこのマストドンのプログラミングを習得する可能性は否定されます。 Kotlin - 流行に敏感な人のための Java - OOP と関数型プログラミングのクレイジーな組み合わせです。経験豊富な開発者が Java から Kotlin に切り替えると生産性が大幅に向上するという事実により、最近人気があります。経験豊富な開発者は、この言語にすぐに慣れるでしょう。ちなみにScalaもそうですが、AndroidではKotlinが人気です。 Java は初心者にとっても学びやすいです。JavaRushのおかげで、私はここでプログラミング言語の選択方法を理解しました =) Java 構文は明確で、「足を撃たれる」可能性がありますが、重大ではありません。

OOPかPOPか?

手続き的アプローチ

手続き指向のアプローチには、特定範囲の問題を効果的に解決するために単一の全体に組み立てることができる連続したステートメントで構成されるプログラムを作成することが含まれます。これらの言語には、CPureBasicPascalが含まれます。高校生や中学生に落胆をもたらすのと同じものです。比較的若いGOもいます。ただし、手続き型言語に精通していることは、潜在的な開発者にとって非常に役立ちます。私にとって、手続き型言語への没入は、Mathematica システム (Wolfram) と大学の研究活動に関連しています。プログラムの最初から最後まで直線的に進む、正しいアルゴリズムのアプローチと簡単な手順のおかげで、現代の理論物理学に関連する値を計算することができました。これらの「シーケンシャル」言語のおかげで、場合によっては自分でコードを書くよりもコードを書く方が簡単であることがわかり始めます。PPP を学習すると、優れたアルゴリズム トレーニングが提供されます。雇用主は、採用の際、ほぼ常に候補者にそれを見たいと考えています。IT におけるあらゆるものの基礎は手続き型言語に基づいて構築されているため、手続き型言語を過小評価しないでください。ところで、学習するプログラミング言語を選択する初心者は、マルチスレッドが OOP の独占的な特権であると考えることがよくあります。これは間違っています。手続き型プログラミング言語を使用すると、並列計算を実行することもできます。
プログラミング言語の選択 - 3

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

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

手続き型言語は、特定の問題を解決するためのツールです。また、タスクに変更が加えられた場合、それがたとえ軽微なものであっても、すべてのアルゴリズムを書き直すのに時間と労力を費やす必要がある可能性が高くなります。

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    最も広範なドキュメント ベース: Oracle の公式ドキュメント、トレーニング ポータル、継続的に開発されているコミュニティ。開発中に生じるほとんどの質問に対する答えは数分で見つかります。重要なのは、検索エンジンに何を入力すればよいかを理解することです =)

  3. 人気。

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

    毎年、嫌いな人たちは「Javaの死」を予測し、「OracleはJavaのサポートをやめるだろうし、全体的に見てナンセンスなことをしている」と言います。これは間違っています!Java の新しいバージョンは 6 か月ごとにリリースされることが約束されています。最新バージョンの最も重要な革新と機能は、ここで読むことができます。

    新しいバージョンは言うまでもなく、私にとって Java 8 のラムダは革命であり発見でした。現在、私は「逆行」プロジェクトに取り組んでいるので、イノベーションについては掘り下げていませんが、Java が生き続けているという事実は事実です。

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

    Android は過去 4 年間、自信を持って携帯電話市場の 80% 以上を占めており、テレビ、メディア プレーヤー、さらには自動車のメディア システムもこのオペレーティング システムで動作しています。そしてこのOSの開発は主にJavaで行われています。どのような展望が開けるか想像してみてください。Android 開発者として就職したとき、私が開発している製品のコストはどれくらいなのかということに興味を持ちました。年間の料金は約5ドルであることがわかりました。当然の疑問が生じました。このオフィスの給料、クッキー、テニステーブル、ロボット、その他の「良いもの」の資金はどこから来たのでしょうか? それは量の問題です。私たちのアプリケーションには 2,000 万人のユーザーがいます。

  5. 給与。

    そしておまけに、Java 開発者の給与は業界で最も高いものの 1 つです。あなたは、良い仕事に就くという特定の目的のためにプログラミングを学ぶことになります。

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

プログラミング言語を選択するときは、学習の最終目標である最初の仕事に就くことについて考える必要があります。さまざまな言語の人気を評価するために、私は人気のある求人ポータルにアクセスし、モスクワに関するさまざまなリクエストに対する求人数を調べ始めました。結果は以下で確認できます。
ジャバ: 277
パイソン: 227
php: 188
c#: 147
c++: 131
ルビー: 40
スカラ: 24
コトリン: 20
最近人気の Python ですら Java を超えることはできませんでした。しかし、これらは特定の都市、特定の日の主観的なデータです。公式の情報源があるので、そちらを参照しましょう。TIOBEによると、2018 年 10 月の時点でJava が 1 位にランクされています。PYPLランキングでは、Java が JS を大きく引き離して 2 位となり、「流行の」Python と競合しています。

結果

初心者がプログラミング言語を選択する際に注意すべき点は次のとおりです。
  • 人気 (Java は一貫して主導的な地位を占めています)。
  • 参入基準 (Java の場合 - 平均: 雇用主が要求する能力の範囲は非常に広い)。
  • 利用可能な資料 (ロシア語には JavaRush に似たポータルがないため、手のひらで誰が誰であるかを推測することになります =));
  • 応用分野: プログラミング言語を使用できる業界が増えるほど、市場で必要とされる専門家も増えます。クロスプラットフォームについてはすでに説明しましたが、繰り返しても飽きません。
もちろん、どこにでも落とし穴はありますが、歩いた者は道をマスターすることができます。どのプログラミング言語を選択するかを決めることができるのはあなただけです。勉強頑張ってください!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION