プログラミング言語は、正直たくさんあってどれから学べばいいのか迷ってしまいます。
選ぶにしても、結局何がちがうのかがよくわからない状態ではないでしょうか?
プログラミング言語には、それぞれ得意な分野、カバーしている範囲というのがあります。
そこで、初心者が学ぶなら選択の対象にはいってくると思われる言語に対して、何ができるかを示します。
それを見て、あなたがやりたいことに一番合っているプログラミング言語を選ぶ参考にしてください。
プログラミング言語のやれる範囲
プログラミング言語として今回、比較の場にあげた対象は、次の10個です。
HTML+CSS、
Javascript、Typescript
PHP、
Python、Ruby、 Go、 Java、 C#
C/C++
SwiftやRがない、とか数値計算やってるのにFORTRANがないとか、まだまだ現役のCOBOLがないとか意見はあると思います。
実際に仕事で使う言語が決まっている場合には、それらを選択すべきです。
今回は、これからプログラミング言語をはじめようと思うけど、言語の違いが何?というかたにむけて、さきほどの10のプログラミング言語を分類しています。
世の中にあるアプリケーション(プログラム)の種類
世の中にあるアプリケーションはいくつかに大別できます。これらのアプリは何かのプログラミング言語で開発されています。
- Webアプリ(ブラウザでアクセスすれば動作するもの)
- スマホアプリ(スマホでAppStoreやGooglePlayなどからダウンロードして使うもの)
- デスクトップアプリ(PCにインストールしてつかうもの)
- サーバアプリ(上記のアプリとやりとりしてサーバ上で実処理を行うアプリ)
- 組込み系アプリ(各種機器に組み込まれているプログラム)
Webアプリの代表は、Amazon、楽天などのECサイトです。
他にもyoutubeもそうですし、gmailなどもブラウザ利用の方も多いのではないでしょうか。
Webアプリの場合、ブラウザからでも使えますが、アプリとしてもプログラムが提供されていて、ダウンロードして利用する場合も多くあります。
youtube、Facebook、Twitterなどはどちらでも使えるように提供されています。
それらのダウンロードして利用するもの(最初からインストールされているものもあります)が、スマホ・タブレット用とPC(Windows、Mac、Linux等)のアプリケーションが存在しています。
また、WordやExcelなどのPCアプリの場合には、主にクライアントPC上で動作するものもありますが、Webアプリやスマートフォンのアプリの場合には、サーバー側で処理をして、その処理結果を画面に返しています。その際にサーバ側で実際に処理するアプリ(プログラム)が存在しています。
それとは別に、炊飯器や冷蔵庫、医療機器、自動車等に搭載されているプログラムも存在しています。
IoT (Internet Of Things)モノとモノとをつなげるように時代がかわってきていますが、各種機器に搭載されているプログラムがデーター通信をしているものもあります。
カーナビ等に搭載されているプログラムが位置情報を把握しているから、混雑情報がわかったりするのです。
プログラミング言語は、上記のように分類される各種アプリケーション(プログラム)のどの部分を開発ターゲットとしているかで、得意不得意がわかれます。
それらを前提として次の図をご覧ください。
プログラミング言語のカバー範囲
先ほどあげた10のプログラミング言語に対して、カバー範囲のマップを作成しました。
縦軸に、Webアプリ、スマホアプリ、PCアプリで分類しました。
組込み系のアプリは、画面制御は少ないですが、装置に組み込まれるためコンパクトさも求められる言語になります。
図から読み取れるように、プログラミング言語は、いくつかのグループにわかれます。
Webアプリ専門、サーバ側アプリ、システム制御アプリに、分類して説明します。
Webアプリ専門のプログラミング言語グループ
Webアプリ専門グループは、HTML+CSS、Javascript、Typescript、そしてPHPです。
Webアプリを動かすには、HTMLとCSSは必須になりますが、実はこの2つは画面上の見た目の表現をやっているものになります。
クライアント側で画面を動かしたいときがあります。
お客様の入力チェックを画面上でしたり、ウェブの画面にさまざまな演出を加えたりとかです。
そのためには、JavascriptやTypescriptが使われます。
ただ、TypescriptはJavascriptでもある程度大きな規模の開発が可能なように、プログラムのチェックを厳しくするなどしているものなので、Typescriptを学ぶにはJavascriptも知っておいた方が、現時点では有利とは思います。
HTML+CSS、TypescriptかJavascript、それだけではサーバ側での処理ができないため、HTMLと連携してサーバ側の処理を行えるのが、PHPという言語です。
HTMLに埋め込んで利用されるため、サーバー側だけの単独処理につかうのには向いていないと思ってください。
Webデザインをやるなら、HTML+CSSは必須。
PHPまで覚えれば、ECサイトやブログなどのカスタマイズ、Web画面とデータのやり取りをするアプリ処理、を作ることができます。
サーバー側処理用のプログラミング言語グループ
サーバ側の処理はPHPでも作れましたが、サーバ側だけの単独処理や、計算や分析、機械学習なども含めた各種ロジックのプログラミングをするには、Ruby,Python,Go,Java,C#などの言語を覚える必要がでてきます。
これらの言語は、様々なことができる汎用的なプログラミング言語のため、どれかを覚えておけばサーバー側の処理の開発は可能になります。
ただし、大きく2つのグループにわかれます。
インタプリタ型とコンパイラ型です。
インタプリタ型の言語は、プログラムの実行のタイミングで書いたプログラムを読みこんで、解析しながら動かしていくものです。
一方コンパイラ型とは、事前にプログラムをコンピュータが解釈できる命令に翻訳しておいて、実行のタイミングではその命令を上から実行していくものになります。
開発の時にはひと手間かかるものの、処理速度は速くなるし、できたプログラムもちいさくなります。
興味がある場合には、下記の記事に詳しく触れてあります。
-
プログラミング言語とプログラムの関係【コンピュータの動作原理からひも解いてみよう】
ところでプログラムってどのように動いてるんだろう? 最近勉強しはじめたんだね、それじゃあ今回は、プログラムとコンピ ...
続きを見る
インタプリタ型の言語としては、ここでは、RubyとPythonをあげています。
この2つは、言語そのものにも利用可能な標準ライブラリがたくさん用意されていて、手軽にプログラムをつくることが可能です。
あわせて周辺部品を使うことで様々なことが可能になります。
機械学習なら、Pythonといわれていますが、それも使える部品がそろっているからです。
コンパイラ型の言語としては、Go、Java、をあげています。
これは、手軽に開発するという意味ではPython、Rubyに一歩劣りますが、処理速度面では勝ります。
また、実際のアプリが小さくなるため、組込み系でつかえることが多いです。(何に組み込むかによります)
処理速度が要求されるゲームや、大規模なチーム開発の場合にも、しっかりしたコンパイラ型の言語がつかわれることが多くなっています。
システムの制御プログラミング言語グループ
最後に残った、C/C++もコンパイラです。
これは、JavaやC#よりも以前から利用されているプログラミング言語のため、他の言語より習得難易度があがります。
また、同じプログラムを書くにしても、簡単に書けないためコーディング量が増える傾向があります。
それでも現在まで生き残っている理由は、各種システム装置の直接操作、OSに対しての細かい制御、超高速な処理を求められるケースなどに利用可能だからです。
これから新たにプログラミングを覚えようという方に、自分としては率先しておすすめできる言語ではありませんが、他ではできない強みも持つので、使われつつけているプログラミング言語になっています。
まとめ
以上、今回はプログラミング言語は何ができるのか、その違いを説明いたしました。
自分が何をやりたいかにあわせて学ぶ言語を選ぶ参考にしてもらえればと思っています。
Webをやるなら、HTML+CSSは必須。
できれば、Javascriptまで覚える。
サーバ側は、Web以外は手をださないのであれば、PHPでもいいですが、プログラミングで処理を組むという場合、つぶしがきくということを考えると、今ならPythonがおすすめになります。
大規模開発で現時点の多さを狙うならまだまだJava。
逆に現時点でまだまだ技術者が少ない(需要が供給をうわまわるため単価が高い)ことを狙うならGo言語だと思います。
もちろん、いつまでこの状態がつづくかは不明です、Pythonなどは学びやすいため、数年たてば需給バランスが変わってくると思われます。
ただし、プログラミング言語は1つめを極めれば2つ目は短期間で習得可能ですので、まずはしっかり、サーバ側の言語を身につけるのが、おすすめです。
挫折せずにがんばってみてください。
挫折を避ける意味でも、習得のしやすいPythonをお勧めしております。
おすすめの教育
最後までお読みいただき、ありがとうございました。