みなさんはプログラミングについてどれくらいご存じでしょうか?
私は現在情報系の学生をしているのですが、高校までの私はいわゆる「ITオンチ」で、パソコンなどからっきしでした。
できたことは、ワードで文章書くこととインターネットで検索することくらいです。
…冷静に考えてなんで情報系進んだんですかね?笑
そんな知識0であったからこそ、同じくまったく知識がない方の目線で「プログラミングってなんだ?」的なことが語れるのかなと思い、今回の記事を書きました。
つたない説明になるかもしれませんが、どうぞ最後までお付き合いください。
それではどうぞ~
プログラミングってなんじゃい?
プログラミングとは、ずばり!!「プログラムを書くこと」です!!!
・ ・ ・ ・ ・ ・
ちょ、ちょっと待ってください!ブラウザバックしないでええええ~
ちゃんと説明します…
プログラムの正体とプログラミング言語
そもそもコンピュータはプログラムに従って動いています。
例えば、「1+1を5回繰り返して」というプログラムが来れば1+1を5回繰り返すわけです。
では、この「プログラム」の正体とは一体何でしょう?
正解は、「機械語」と呼ばれる、0と1だけから構成される言語です。
なぜ、0と1なのかと言いますと、コンピュータの計算の単位である電流のoff・onに対応させているためです。
とすると、機械語で記述されたプログラムは次のようになるわけです。
0011010101010011111111100000010101010010101010000111001010…….
いや、待ってくれと。こんなの分かるわけねえだろ!と思った方、まさにその通りです。
そこで、人間が分かりやすいようにと生み出されたのが「アセンブリ言語」です。
例えば、アセンブリ言語で「1+1」と書くには「ADD 1 1」のような形になります。
次にあなたは、「おお!分かりやすい!」と言う!!
おお!分かりやすい!! ハッ!
いや自分でいうんかい。それは回避できたフラグでしょうが!
…失礼いたしました。(元ネタが分からない方はジョジョで検索だあ!)
確かに、分かりやすくなったのですが、まだ問題がありました。
アセンブリ言語はCPUの仕様をよく理解している必要があるなどの制約があったのです。
これではやりにくい、もっと汎用的にプログラムを書けるものないの?
ということで開発されたのが、ようやく登場しました「プログラミング言語」ということだったんですね~
そして、一般的にプログラミングというのは「プログラミング言語でプログラムを記述すること」であるといえます。
プログラミング言語ってどんなの?
先ほどの説明では、プログラミング言語とは人間に分かりやすい形でプログラムを記述するために開発されたという話でした。
ここからはそのプログラミング言語の基礎的なお話をしていこうと思います。
プログラミング言語を大きく分ける2つの軸
現在数多くのプログラミング言語が登場していますが、おおむね次の2つの軸で分けることができます。
- インタプリタ型 or コンパイラ型
- 低級 or 高級
まずは、インタプリタとコンパイラから。
この2つは何かと言いますと、「プログラミング言語を機械語に翻訳するもの」です。
前にも説明しましたが、コンピュータの基本は機械語です。そのため、プログラミング言語で記述したプログラムを機械語に変換する必要があります。
例えるならば、日本人と海外の人の間に立つ通訳さん的な立場で、両者の違いは翻訳・通訳の方法にあります。
- インタプリタ(インタープリタ)型・・・一行ずつ機械語へ翻訳する。 どちらかというと通訳
- コンパイラ型 ・・・プログラムのファイルをまとめて機械語へ翻訳する。 どちらかというと翻訳
このような感じです。
インタプリタ型の言語にはPython、コンパイラ型の言語にはC言語などがあります。
続いて、低級・高級について。
一口に低級・高級といっても値段のことではなく、「人間寄りか、機械寄りか」という軸になります。
高級な言語は比較的人間が理解しやすく、低級な言語は比較的機械(コンピュータ)が理解しやすい言語となっています。
さきほどの例ですと、Pythonは高級、C言語は低級な言語であるとされています。
プログラミング言語同士のちがいってなに?
Google先生に「プログラミング言語」と検索すると、それはもう本当に多くの種類の言語が出てくると思います。
C、Python、C++、Ruby、Perl、GO、C#、…
そのあまりの多さに、何が違うんじゃい!と思った方も沢山いるのではないでしょうか。
これらの言語の違いとしては、先ほど説明した、翻訳のタイプと低級高級などがあります。
ですがそれだけでなく、それぞれの言語に得意な処理と苦手な処理というものが存在しています。
そのため、プログラミング言語について検索するときは、処理ごとの向き不向きといった特徴なども検索してみるといいと思います!(例えばPythonは機械学習とか得意みたいです)
分かりやす例えとしては、やはり日本語、英語、ドイツ語、中国語といった各国の言語でしょうか。
どの言語にも得意な表現や苦手な表現がありますよね。そんな感じです。
以下まとめです。
おわり
お疲れさまでした!!
少し文字だらけになってしまいましたね…(苦笑)
ですが、この記事が皆さんの検索の足掛かりになればうれしいです!
つたない説明で申し訳ありませんが、最後まで読んでいただき本当にありがとうございます。
また別の記事でもよろしくお願いします!