独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【プログラミング全般】プログラミング概要

具体的にプログラミングを学ぶ前に、そもそも「プログラミングとは何なのか」について簡単に説明します。
そして、プログラミングを学ぶ上で事前に知っておきたい基本用語と基礎知識を解説します。

プログラムとは

そもそもプログラムという言葉を一言で表すと何と答えますか。
プログラムとは、コンピュータに対する指示書のことです。
コンピュータは人間のように自分で考えて動くことはできません。
何かしらの命令を与えられることで初めて動くことができます。
この、コンピュータに対してどう動けばいいかという一連の命令が書かれた手順書のことをプログラムと呼びます。

プログラミングとは

プログラミングとは、プログラムを作る作業のことを言います。
一般にプログラミング言語と呼ばれる言語を使って作ります。

プログラミング言語とは

プログラムを作るための言語のことをプログラミング言語と呼びます。
沢山の種類があります。
人間の世界でも、国によって様々な言葉があります。
これはプログラミングの世界でも同じことで、言語によって特徴やできることが変わるため、
目的や作りたいプログラムによって最適なプログラミング言語を選ぶことになります。

そもそも、なぜプログラムをつくるのにプログラミング言語が必要かを説明します。
コンピュータは機械語(0と1の羅列。ビット列とも呼びます。)しか解釈できません。
詳しい説明は省きますが、コンピュータはチップの中を電気信号が流れることで動く仕組みになっています。
コンピュータは流れている電気が一定の電圧以上か以下か、の2通りしか判断できません。
そのコンピュータが認識できる2通りを一般には0と1を使って表現します。
しかし、人間が機械語(0と1の組み合わせ)を使ってコンピュータに対する命令を書くというのは想像しただけでも非常に大変な作業になることが分かるかと思います。
そこで、人間にも理解しやすい言葉でプログラムを作れるようにする仕組みが登場しました。
それがプログラミング言語です。

ソースコード

プログラミング言語で書かれたものを「ソースコード」と呼びます。
単に「ソース」や「コード」と呼んだり、「プログラム」と呼ぶこともある。
人によって、また文脈によって表現が変わりますが、どれも同じ言葉です。
プログラミングをしていくうえではよく使用される言葉なので、覚えておきましょう。
ソースコードは通常はテキストエディタと呼ばれるソフトウェアを使って記述します。

機械語

プログラミング言語のところでも簡単に紹介しましたが、改めて説明すると、機械語は0と1だけで書かれたプログラムのことです。
バイナリーと呼ばれることもあります。
コンピュータは0と1の2種類(電子回路の電圧が一定の値を超えているか下回っているかの2種類) しか解釈できないため、その2つを0と1で表現します。
機械語はコンピュータが直接解釈できる言語です。
WindowsなどのOSで新しくソフトウェアをインストールした場合、インストールしたフォルダの中に「bin」というフォルダが作成されます。
この「bin」というのはbinary(バイナリー)の略で、この中には機械語のファイルが格納されています。

コンパイル

直訳すると翻訳のことです。
プログラミングの世界ではプログラミング言語で書かれたソースコード機械語に変換(翻訳)する作業のことをコンパイルと呼びます。
コンピュータは機械語を解釈して実行することはできますが、プログラミング言語で書かれたソースコードは解釈することはできません。
逆に人間は、ソースコードの読み書きはできますが、機械語の読み書きは困難です。
コンピュータでプログラムを動かすためにはソースコード機械語に変換する作業が必要になります。
その作業のことをコンパイルといいます。

コンパイラ

コンパイルを行うプログラムのことをコンパイラと呼びます。
通常は、特定のプログラミング言語の開発環境をインストールすると、その言語に対するコンパイラも一緒に使えるようになります。

インタプリタ

直訳すると通訳のことです。
プログラミング言語で書かれたソースコードを実行するためには、一度機械語に変換する必要があるという説明をしました。
プログラムを実行する前に事前に変換する場合は、コンパイルを行う必要があるのですが、事前にコンパイルせず、プログラムを実行するときに、機械後に変換しながら実行してくれるタイプのプログラミング言語もあります。
この、ソースコード機械語に変換しながら実行してくれるプログラムのことをインタプリタといいます。

コンパイラ式とインタプリタ

プログラミング言語には、ソースコードを事前に機械後に変換するコンパイラ式と実行時に変換するインタプリタ式に分けることができます。
どちらの方が良い、悪い、というものではなく、それぞれにメリット・デメリットがあります。

コンパイラ式の場合、事前に機械語に変換されているため、一般的に処理速度は速くなります。
しかし、プラットフォーム(OS)が変わると動かなくなるという欠点があります。
つまり、Windows上で作成したプログラムを、そのままMacOSにコピーしても動かない、と言うことです。

インタプリタ式の場合、翻訳しながら実行するため、一般的に処理速度は遅くなります。
しかし、ソースコードがそのまま実行できるプログラムとなっているため、別のOSにコピーしてもそのまま動作させることができるという利点があります。

中間コード

プログラミング言語は、コンパイラ式とインタプリタ式に分かれるという説明をしましたが、実は両方の性質を持った言語も存在します。
そのような言語を、中間コード式の言語と言います。
どのような仕組みかというと、実行前にコンパイルは行いますが、コンパイルした時点では機械語には変換されず、機械語ソースコードの間に位置するコードに変換されます。
このときのコードを中間コードといいます。
中間コードを、その言語専用の実行環境が機械語に変換しながら実行します。
この仕組みにより、速度も保証しつつOSが変わっても動作できるという両方の利点を良いとこどりしています。
このような性質をもつ言語には、「Java」「VB .NET」「C#」などがあります。
Javaソースコードコンパイルすると「クラスファイル」と呼ばれる中間コードに変換され、
JVM」と呼ばれる環境の上で動作します。
VB .NET」や「C#」は、「.NET Framework」と呼ばれる環境で動作します。

プレーンテキスト

テキスト(文字)だけで作成されたデータのことをプレーンテキストと呼びます。
単にテキストデータと呼ぶこともあります。
プログラミングをしてソースコードを作成する場合、プレーンテキストとして作成するのが一般的です。
例えば、ワードなどで作成したファイルは、テキストの情報だけでなく、フォントの種類や、フォントサイズやフォントの色など、様々な情報が含まれています。
ソースコードを作成する場合、必要になるのはテキストの情報だけで、フォントなどの情報は不要となるので、通常はテキストエディタと呼ばれるツールを使ってプレーンテキストで作成します。

テキストエディタ

プレーンテキストのファイルを作成・編集するためのソフトウェアのことです。
ソースコードを作成する場合、通常テキストエディタを使って作成します。
Windowsの場合、標準で「メモ帳」というソフトウェアが入っているが、
機能が少なく、プログラミングをするには不向きです。
通常は自分で使いやすいソフトをインストールして使用します。
代表的なテキストエディタには、サクラエディタAtomVisual Studio CodeVimなどがあります。
無償で使用できるものと、有償のものがあります。

IDE

Integrated Development Environment の略です。
日本語だと「統合開発環境」と呼ばれます。
プログラミングを行う場合は、テキストエディタコンパイラ、など 様々なツールが必要となる場合が多いのですが、それらの開発に必要になるツールや、開発を便利にするためのツールをまとめたものがIDEです。
代表的なIDEには、「Eclipse」や「Visual Studio」などがあります。
作成するプログラムの規模が大きくなると、大抵の場合はIDEを使用します。
どのIDEを使用するかはプログラミング言語やプロジェクトによって変わってきます。