プログラミングとは?
最終更新日: 2019年 04月07日
プログラミングを勉強するのに、いきなりプログラムを動かすのも良いのですがちょっとその前にプログラミングってそもそもどういうもの?
というところや世の中にはプログラミング言語のとしてこういうのがあってという全体観的は話をさっと知っておくと良いので今回はこちらでプログラミングって何?というところを説明していきます。
プログラミングとは?
最近ちまたでよく聞くプログラミングですが、プログラミングとは、コンピュータに何らかの作業の命令を行い、コンピュータに作業を代替してもらうものです。
プログラミングでは、ある一定の文法に則って司令を行わなければいけないのですが、その司令をまとめたファイルがプログラムです。 文法はそれぞれのプログラミング言語で多少異なるのですが、最終的には機械語というマシンが理解できる言語に変換(コンパイル)され、プログラムが実行されます。 さらに言うと機械語は0と1でできた数字の羅列なので、人間が解読するのは相当な労力が必要です。 そこでより人間がわかりやすいかたちでコンピュータに仕事をしてもらえるように、現在使われているC,Java,Ruby,PHPなどの高級言語と呼ばれる言語が生まれました。
一見、コンピュータに計算を指示するというのがイメージ湧きづらいかと思うのですが、そう言う方は電卓を思い浮かべて頂けるとわかりやすいと思います。 電卓も一種のコンピュータであの中には、1というボタンを押して、+ボタンを押した後に数字を入力すると、1と入力した値の足し算の結果が出力されるプログラムが仕込まれています。
これが正にコンピュータに作業を代替してもらっているということで、簡単な計算なら人間の方が速いですが、より複雑な計算をコンピュータにさせたら速さ正確性の点で圧倒的にコンピュータが優れています。
プログラミングというと何かアプリを作ることのようなイメージを持たれる方も多く間違いではないのですが、プログラミングで人間の仕事をコンピュータにやらせることで何かを便利にする、効率的にするということがプログラミングの目的なのでそこは忘れないように覚えておきましょう。
プログラミングのイメージ
スクリプト言語とコンパイル言語
話が少し変わるのですが、先ほど触れた機械語に関連してスクリプト言語とコンパイル言語についても書いておきます。
いきなりスクリプト言語とコンパイル言語と言われてもピンとこないのですが、プログラミング言語の多くはこの2つの言語にわけられその違いはコンパイルのタイミングによります。 コンパイルとはざっくりプログラムを機械語に翻訳することなのですが、Java,C,Goなどに代表されるコンパイル言語はプログラムを実行する前に必ずコンパイルが必要になります。
一方、RubyやPHP,JavaScriptに代表されるスクリプト言語は実行する際にコンパイルを行い機械語に変換する点でコンパイル言語と異なります。
コンパイル言語とスクリプト言語のイメージ
一般的にコンパイル言語の方がすでにコンパイル済みのものを実行するので実行速度が速いです。一方スクリプト言語は都度コンパイルをかけながら実行するのでコンパイル言語に比べて実行速度が遅いです。 ただし、スクリプト言語は実行前のコンパイルが不要なため小回りが利き安く修正が容易であったりすることが多いです。
またスクリプト言語は実行して初めてエラーになることが、わかるのでコンパイル言語に比べると安全性の面では劣る所があります。
このようなことがわかると初心者の方としてはどちらを選べばいかわからなくなりそうですが、 Webなりとしては、スクリプト言語からプログラミングを始めるのがおすすめでRuby,JavaScript,PHPなどの言語から学びはじめるのが良いと考えています。
上中級者になるとコンパイル言語も使えると良いというのはあるのですが、文法が厳密すぎて動かすまでに手間がかかるといった点が初心者には少し厳しく感じるので、スクリプト言語からプログラミングを、始めることをおすすめしています。
さまざまなプログラミング言語
冒頭からプログラミング言語という言葉を説明なしに使ってしまっていますがプログラミング言語はコンピュータに意図を伝えるための言語です。
英語のネイティブに意図を伝えるには英語が必要ですが、それと同じでコンピュータに意図を伝えるにはプログラミング言語を理解してつかいこなせる必要があります。 世間で知られているプログラミング言語というとJavaなどが有名ですが世界にはたくさんのプログラミング言語がありその数は200以上にものぼるそうです。
また、プログラミング言語が意図を伝えるためのツールだとすると文法を厳守しないと意図した動作をしてくれないという特徴があり、普段人間が使う言葉より相当厳密な文法がありますあ。 ヒト同士の会話だと文脈で理解して些細な文法は簡略化されることがありますが、プログラミングがはそれができないのでしばしば初心者や熟練のプログラマを苦しめます。 プログラムの非日常性になれるのは決して簡単なことではないのですが、文法が厳密な分人間が話す言葉よりルールがシンプルなので一度慣れてしまえばスムーズに理解できるようになります。
先にも書いた通り初心者にはRuby,PHP,JavaScriptあたりを学ぶのが良いですが、プログラミングを学ぶ上での教養として知っておいてたほうが良さそうなプログラミング言語を以下で紹介しておきます。
Java
Javaはコンパイル言語で、使用しているシステムも多く、求人も多いのでプログラミング未経験の方でももしかしたら 聞いたことのある言語かもしれません。
いわゆるSIer業界で多く採用されている言語で銀行のシステムや大手企業のシステムなど大規模開発でよく採用されている 言語です。言語的にもメジャーで決して悪くない言語ではあると思うのですが、Javaで仕事をしようとなると既存システムの 運用・保守にまわることが多く新規での開発という例も少ないのでこれからエンジニアになる方への習得はおすすめしていません。
SIerなどに就職してすでに研修で学んでいるという人は決して無駄にはならないので、Javaを学んだ経験を生かしてRuby,PHP などの言語を勉強してWeb系企業に就職されることをおすすめします。
C
こちらもプログラミング言語の中では知名度も歴史も長いです。JavaやC, C++などのC系の言語のモデルにされるほど 有名な言語です。
C言語を用いてプログラミングする場合はメモリやCPUなどハードウェアを意識しながらプログラミングを行う 必要があり習得の難易度は他のプログラミング言語に比べると高いと言えると思います。ただ、その分ハードウェアに ついての知識も一緒に身につくので興味ある方はさわってみると良いかもしれません。
C言語自体古い言語ではあるのですが、今でも処理速度は最速レベルで他のコンパイル言語の中でも早い分類のようです。 コマンドラインベースの多くのソフトがC言語で作られてはいるのですが、一方Webでの表示などグラフィカルな処理を 実装するのに適していないので、そういう必要がある場合は他の言語を選択した方が良いです。
アセンブラ言語
アセンブラ言語はC言語よりもよりハードウェアに近く、C,Javaなどの高級言語に対して低水準言語に分類されます。
C言語を作るのに使われたり、OSを作るのに使われるほどのもので機械語よりはわかりやすいいけど、C言語よりは読みづらいというような言語のようです。 言語としてこの必要不可欠なものではあるのですが、Webエンジニアとして使う機会はほとんどないのでよほどの興味がなければさわりだけ知っていれば 良いでしょう。
PHP
PHPはこれまで紹介してきた言語とは別でスクリプト言語になります。CMSと呼ばれる ブログや企業のサイトを簡単に構築できるWordpressがPHPで作られているのでそちらが 一番有名かと思いますが、WebフレームワークとしてもCakePHPやLaravelなどのフレームワークも ありベンチャーで利用されている例も聞きます。
PHPを採用する企業も100~200程度の規模の中規模の企業から10名程度のベンチャーまで 数多くあり、エンジニア未経験での募集もPHPはよく見かけます。
自分でサイトを公開したい場合のレンタルサーバーの多くがPHPを利用する前提で作られている ことが多いので、自分のブログやサイトを構築したいという方はPHPを勉強されると良いと 思います。
Ruby
Rubyは数あるプログラミング言語の中でも国産の言語で日本語のドキュメントが充実して 習得のハードルは他の言語に比べても習得しやすい部類に入るかと思います。
ソース管理サービスであるGitHubがRubyを採用しているというのが有名ですが、世界の 色々なサービスでRubyを使ったサービスが稼働しているので学習の容易さ合わせて 求人などについてもまったく問題ないプログラミング言語となっています。
また、Rubyで作られらたWebフレームワークであるRuby On RailsはRuby = Ruby on Rails といういうほどに多くのWebアプリケーションで採用されています。
Rubyを使用して開発する企業はベンチャー企業などの小規模な会社での事例が多く、 ベンチャーでWebエンジニアとしてコードを書いてバリバリ仕事していきたい。 自分の考えたサービスを公開したいなどのモチベーションのある方はこちらの言語を選択 されると良いと思います。
JavaScript
JavaScriptはもともと動的なホームページを作成するために使われるプログラミング言語でしたが、 近年ではReactやVueなどのフレームワークが現れ、Webアプリケーションを構築する上で不可欠な技術となってきています。
この流れにともなうフロントエンドのコードの増加などを根拠にReactやVueを扱えるフロントエンドエンジニア の求人も増加してきています。
一人前のエンジニアになるためにはPHP/Rubyなどのサーバサイド言語に加えてフロントエンドのJavaScriptも扱える 必要があるため、Webエンジニアを目指すみなさんには必須の技術と言えると思います。
イベント処理やJavaScript独自のエコシステムになれるまで大変な部分はありますが、ネットの情報や書籍の情報も 少なくはないので是非とも習得したい言語の一つです。
Python
Pythonは昨今話題の機械学習と相性の良いプログラミング言語で、機械学習エンジニアを目指される方は是非とも 習得したいプログラミング言語になります。
Djangoというフレームワークが有名で、Ruby on Rails, Laravelなどと同様にWebアプリケーションを実装できるので、 なにかしら機械学習に絡む仕事をしたいのであれば勉強してみるとよいでしょう。一方、機械学習に絡まない企業で この言語を採用してシステム開発を行うことはまれなので、自分が機械学習をやるならPython,やらないのであれば その他のPHP, Rubyなどを選択して勉強を始めると良いでしょう。
まとめ
- プログラミングは、プログラミング言語を用いてコンピュータに指示をする。
- コンパイル言語は機械語にコンパイル(翻訳)してから実行する。
- スクリプト言語は実行の都度機械語にコンパイル(翻訳)してから実行する。
- プログラミング言語は世界に200言語以上存在する。
- 初心者はRuby, PHP, JavaScriptあたりから学ぶのがオススメ。
以上、ここまででプログラミング初心者の方に向けて、プログラミングとはそもそもどういうものか? というのを説明してきました。
いろいろと説明してきましたが、プログラミングとは、コンピュータに指令をして作業を代替してもらうことを 目的とするということを忘れないでください。また、コンピュータに指令を出すためにはプログラミング言語で指示を 出す必要があり、プログラマーが書いたプログラムはコンパイラによって機械が読める形に変換されてコンピュータに指示が 読み込まれてプログラムが実行されるという流れは大切なのでぜひとも覚えてこのページを閉じてください。