プログラミングってなんなんだ?【解説】

こんにちは、ふぁいちです。

突然ですが皆様は、誰かに『プログラミングってなに?』と聞かれたときにしっかりと言葉で説明をすることができますでしょうか?

また、AIが発達していくに連れて『プログラマ』が必要になってくると言われている今日この頃ですが、そもそも『プログラミング』という行為が何を指すのかがわかっていないと、時代の流れにもついていけなくなってしまいますよね。

そこで本記事では、これからプログラマになりたいと思われている方や、プログラミングに興味を持ち始めた方のために『プログラミングとはなにか』や『今後プログラミングを始めるためには』についてを解説していきます!

プログラミングとは?

早速本題なのですが、そもそもプログラミングという行為が何を指すのかを説明していきます。

プログラミングとは、一言でいうと・・・

達成したい目的のためにコンピュータを制御すること

です。コンピュータがなにかについては以下の記事を御覧ください。

コンピュータってなに?【解説】

『プログラミング』という行為によって、コンピュータに代わりに作業をしてもらうことになります。

そのための指示書のことを『コードと言います。コードを書く作業をコーディングと言います。

すなわち、『プログラミング』とは、ある目的を達成するためにコーディングをして、それを基にコンピュータに代わりに作業をしてもらうことを指します。

ちなみに、その作業を行う人をプログラマと呼びます。

プログラミング言語とは?

ここからは、プログラミング言語というものについてを説明していきます。

コンピュータの言語

そもそもコンピュータは何語を理解することができるのでしょうか?

日本語?英語?それとも別の言語?

実は我々人間が扱っている一般的な言語をコンピュータは理解ができません

それでは、彼らが理解できる言語は一体どのようなものでしょうか?

結論から言いますと、コンピュータがダイレクトに取り扱える言語は『機械語(マシン語)』と呼ばれるものです。

機械語は『0と1の羅列』で構成されております。なぜ0と1だけなのかは先程リンクをはらせて頂いた記事をご覧いただければと思います。

コンピュータは機械語しか理解できないのですから、我々もコンピュータとは機械語でコミュニケーションをとる必要があるのでしょうか?

答えは半分Yesです。最終的には機械語でコミュニケーションをとる必要がありますが、0と1だけの羅列は人間にとっては分かりづらいです。

そのため、コンピュータと人間の間に翻訳家に入ってもらいます。

この翻訳家は、以下図のように人間が書いたコード(指示書)を機械語に翻訳しコンピュータに受け渡してくれます

このときに人間側がコードを書くときに用いる言語がプログラミング言語と呼ばれています。

翻訳家は『言語プロセッサ』と呼ばれ、後述するプログラミング言語の種類に合わせて大きく分けて3種類存在します

ということで、コンピュータが取り扱えるのは0と1の羅列である機械語のみで、人間の言葉を機械語に翻訳してくれる言語プロセッサを通じて人とコンピュータはコミュニケーションをとることができるようになります。

言語プロセッサ

それでは、機械語とソースコードの翻訳をしてくれる言語プロセッサについてもう少し詳細な説明をしていきます。

言語プロセッサは大きく分けて・・・

  1. コンパイラ
  2. インタプリタ
  3. アセンブラ

上記の三種類あります。

コンパイラ

コンパイラは・・・

ソースプログラム(コード)を目的プログラム(機械語)へと翻訳する言語プロセッサ

です。目的プログラムというものが、機械語をまとめたノートのようなものです。

コンパイラという翻訳家は、ソースプログラムを一気に全て翻訳するため、同じソースプログラムは一度翻訳(コンパイル)すればその後は翻訳不要です。

ただし、コンパイルが終わるまではエラーが発生しているかわからないというデメリットもあります。

インタプリタ

インタプリタは・・・

ソースプログラムを一命令ずつ機械語へと随時翻訳する言語プロセッサ(目的プログラムは作らない)

です。ソースプログラムを随時翻訳していくので、プログラムが未完成でも完成しているところまで実行していきます。

そのためデバッグがしやすいというメリットもありますが、毎回翻訳するのでプログラム自体の動作速度が遅くなります。

アセンブラ

アセンブラは・・・

機械語と一対一の翻訳が行われる

言語プロセッサです。そのため最も翻訳速度は速いのですが、機械語に近いコードを書かなければいけないので、取り扱いの難易度が高いです。

今日のほとんどのプログラミング言語はコンパイラかインタプリタしか用いておりませんので、アセンブラというものもあるんだなぁくらいの認識で大丈夫です。

プログラミング言語の種類

プログラミング言語は、用いられる言語プロセッサ文法の違いによって様々な種類の言語があります。

その中でも代表的ないくつかご紹介いたします。

C言語

C言語は歴史が長く、多くの銀行等の基幹システムマイコンと呼ばれる小さなコンピュータに用いられる言語です。

言語プロセッサはコンパイラで、今回紹介する言語の中では最も機械語に近いため習得難易度は比較的高いです。

理解しなければいけないことが多いですが、その分C言語を会得できれば他の言語の取得が簡単に感じることができます。

JAVA

JAVAはAndroidのアプリ開発等に用いられているコンパイラ言語です。

様々なコンピュータ上で動作するような仕組みを持っていて、ライブラリ(便利な機能を簡単に使う仕組み)も豊富なため非常に人気の高いプログラミング言語です。

HTML / CSS

HTMLとCSSはWebサイトやWebサービスの外観設計(デザイン)を行うために必要な言語です。

HTMLが骨組みを作り、CSSが肉付けをするようなイメージです。これらはあくまでデザインのための言語ですので厳格に言うとプログラミング言語ではないと言われることもあります。

後述するJavaScriptと合わせて用いられることが多いです。

JavaScript

JavaScriptはWebページに動きをつけたりWebアプリを作製するために用いられるインタプリタ言語です。

Javaという名称ですが、お互いにあまり関係はなくオーストラリアとオーストリアくらい違うものです。

実行環境の構築の容易さや情報の豊富さから初心者にオススメの言語だと言われています。

Python

Pythonは機械学習や統計処理が得意なインタプリタ言語です。

機械学習とは、今話題のAI等の基になっているモデルのことです。文法理解の容易さや、ライブラリの豊富さから世界中で用いられている今一番アツい言語(大げさでしょうか)です。初心者にもオススメです。

プログラミングを始めるなら

基本的にはどの言語で始めてもOKです。

というのも、どれか一つの言語を会得すれば、「ちょっとした文法の違い」等だけで基本的な部分は他の言語でも転用が可能なためです。

とりあえずプログラミングというものに触れてみたいという方にはJavaScriptをオススメいたします。

ブラウザとメモ帳さえあればすぐに始めることが出来て、初心者用の書籍/コンテンツも豊富であるためです。

これからガッツリプログラマとして活躍していきたいという方にはC言語をオススメいたします。

C言語を学ぶことで、メモリの操作等の比較的に新しいプログラミングではブラックボックスされてしまっている大事な部分を理解することができるためです。

またC言語は理解しなければいけないことも多いため、C言語を学んだ後にPython等の最近の言語に触れると「こんな便利な関数があるのか!」と感動できます。

まとめ

今回の記事では、プログラミングとはどのようなものなのかプログラミング言語はとはどんなものなのかを説明いたしました。

これからプログラミングを始めたいという方に少しでも本記事が役に立っていれば幸いです。

なにか気になること等あればお気軽にコメントやTwitterでコンタクトをして頂けますと嬉しいです!

それではまた次回の記事でお会いしましょ〜