コンパイルとは?〜初心者プログラマーが世界一易しく解説してみた〜

プログラミング

 

第一回「月子の勉強シリーズ」

 

今回はコンパイルって何?

 

最初に勉強する前の私に「コンパイルって何?」と聞いてみましょう。

 

打ったコードの実行結果じゃないの?

 

マジでこんなレベルです。

このままだと「プログラマー失格!」と言われかねない…

 

といわけで、勉強してみました!

自分の頭で理解できるレベルまで噛み砕いているので、

駆け出しプログラマーさんのお役に立てれば幸いです。

 

 

コンパイルとは

 

まず実行するまでは以下の図の手順を踏みます。

 

 

そこで今回は、

みんな大好き「カレーライス」を表示させたいと思います。

 

手順1:ソースコードを書く

System.out.println("カレーライス");

 

人が読める文章を「ソースコード」と呼び、

ソースコードを書き込んだファイルを

ソースファイル」と呼びます。

ファイル名の末尾(拡張子)は「.java」です。

 

今回のソースファイルは「curry.java」にしましょう。

 

 

手順2:コンパイルをする

このへんから理解拒否が起きてきたので(早い)図解してみました。

 

・ソースコードを含んだ、ソースファイル(.java)

・バイトコードを含んだ、クラスファイル(.class)

 

パソコン君はソースコードが読めないんですね。

そのため、読めるように変換します。

 

 

ソースファイルからクラスファイルへの変換を「コンパイル」と呼びます

 

※余談です※

クラスファイルに入っているバイトコードは、

0と1の羅列ばかりで、人間には到底読めません。

「王様達のヴァイキング」の主人公である是枝君は

「バイトコード」を読んで、吐いてしまうシーンがあります。

人間には理解できない数字の羅列ですが、

ハッキングの天才である是枝君には何となく意味が理解できてしまって、

酔って吐いてしまうんですね。化け物かな?


 

※余談おわり※

 

ちなみにコンパイルする際には、コンパイラというソフトウェアが使われています。

ソースコードの文法チェックもしてくれるんですね。

ちなみに私のソースコードは8割くらいの確率でエラーを返されます。泣きたい。

 

あ、ちなみに、みなさん、ソフトウェアの意味わかります?え?わかるんですか、すごいですね。私は知識が曖昧なので、一応まとめておきます。

 

ソフトウェアとは?

 

手順3:実行する

 

実は0と1の羅列である、バイトコード。

まだパソコンさんは読めません。

そのため、もう一度変換をします。

 

インタプリンタというソフトウェア(また出た)に、

バイトコードを機械語に変換と実行をお願いします。

 

 

※インタプリンタさんのイメージ図

011001000110
…機械語にヘンカンチュウ……

 

 

このインタプリンタさん「JVM」という仕組みを持っています。

 

JVM(Java仮想マシン)とは
Java virtual Machineの略
バイトコードをコンピューターが理解できるよう、機械語に変換してくれる
JVMのおかげで、windowsでもMacでもJavaが使えるようになります。

 

これを聞いた時、

オタクには深夜アニメの話をし、リア充にはリムジン女子会の話をする

美人な友人Kを思い出しました。人によって話題を使い分けてました。

JVMは、Kちゃんみたいな感じですかね(違う気がする)

 

 

ソフトウェアとは

 

パソコンの中に入ってる、なんかスッゴイやつ

 

仮にもプログラマーの言葉とは思えないですね。ちゃんと勉強します。

 

ソフトウェア(英: software)は、コンピューター分野でハードウェア(物理的な機械)と対比される用語で、何らかの処理を行うコンピュータ・プログラムや、更には関連する文書などを指す[1]。ソフトウェアは、一般的にはワープロソフトなど特定の作業や業務を目的としたアプリケーションソフトウェア(応用ソフトウェア、アプリ)と、ハードウェアの管理や基本的な処理をアプリケーションソフトウェアやユーザーに提供するオペレーティングシステム (OS) などのシステムソフトウェアに分類される。
(wiki参照)

 

ああああああああああああああああ

 

すみません、拒否反応が……

 

色々探していたら、このサイトがわかりやすかったです。

 

 

 

人間の体がハードウェアで、
心や神経がソフトウェア……

 

 

私たちは脳で考えたり、心で感じたりしています。

パソコンも同じようなもので、ソフトウェアで様々な処理をしてくれています。

例えば、Windowsや、Mac OS、UNIXなどのOS(オペレーションシステム)は、ハードウェアの基本操作を制御しています。

人間でいうと、体を動かす脳のような役割ですね。

あとは目的別のアプリケーションソフトウェア

音楽ソフト、画像編集ソフト、計算ソフト…人間でいうと足や手の神経的な役割です。

 

よくiPhoneのアップデートがありますが、

人間で例えると脳のアップデートみたいなものですね。

 

私の脳も早くアップデートしてください…(頑張れ)

 

 

コンパイルとは。まとめ

 

①人間が書くソースコード
②ソースコードを、0と1の羅列であるバイトコード
③バイトコードを、パソコンが読める機械語

 

これが「実行」までの流れになります。

ソースコードから2回変換することが分かりました。

 

そしてソースコードを含んだソースファイルから、

バイトコードが含まれたクラスファイルへの変換を

コンパイル」と呼びます。

 

 

 

私は今までeclipseを使って、コードを書いていました。

 

System.out.println("Hello,World!");

 

打ったら「Hello,World!」とでた感動は今でも覚えています。

そこから様々なコードを覚えてきました。

何となく書いては、実行していましたが、

「実行を押せば出てくる」みたいな簡単な話ではありませんでした。

 

なんか色々起きてるんだろうな〜

 

マジでそんな認識でした。

しかし私の仕事はコードを書くことではありません。

システムを作り上げるのが私の仕事のはずです。

そこを忘れて、ただコードだけ書くことに集中していたのは駄目だったなぁ…と反省しています。

 

 

記念すべき「月子の勉強シリーズ」第1回は「コンパイル」についてでした。

次は「メソッド」「コンストラクタ」「フィールド」このあたりにしようかなと思っています!

 

 

お読みいただき、ありがとうございました!

 

 

 

 

\ いろいろやってるよ! /

よわよわエンジニアのブログ:月子.log

雑多な発信をしてるツイッター:@moon_trdr

ゆるーーーい絵日記:@tuki__tukiko

 

 

欲しいものリスト 公開しています🌸

「鈴木 月子」宛に届けていただけると泣いて喜びます!

(送っていただいた方の名前・住所は匿名で送られますのでご安心ください♪)

 

***

派遣から正社員として、内定をもらいました!

 

【未経験からエンジニアになりたい人、おすすめのプログラミングスクール】

(コロナの影響で、オンラインでの無料説明会で案内しています)

 

1、GEEK JOB

私が通っていたプログラミングスクールです!

1番のメリットは、

無料の転職サポート&プログラミング教育を受けられることです

私もGEEKJOBで転職サービスを受けて、入社しましたが、

最初から最後まで完全に無料でした。

プログラミングできるかな・・・と不安な方は、

最初は無料の説明会と体験会もあるので、

お試しで行くのも1つの手ですよ♩

無料説明会はこちら

 

2、TECH::EXPERT

「有料でもいいから手厚いサポートを受けたい」という方は、

私も大好きなマコなり社長が経営しているTECH::EXPERTをおすすめします!

なんと、質問し放題の環境が整っています。

未経験エンジニアとしての経験談なのですが、

質問できる環境ってありがたいですし、なにより成長ができます!

相談会や説明会は無料です。


無料相談会はこちら

3、DMM WEBCAMP

DMMが開催しているプログラミングスクールです。

こちらは有料ですが、条件を満たすことで

支払った教育訓練経費の最大70%が教育訓練給付金として支給されます。

こちらも相談は無料です。

無料相談はこちら

 

 

無料・有料どちらがいいかは体感だと、

有料の方がサポートが手厚い傾向です(当たり前ですよねw)

しかし無料だから適当というわけではないですし、

私のように転職を繰り返してお金がない人からしたら、

無料スクールはすごくありがたい存在でした🎵

 

有料スクール→手厚いサポートが欲しい人
無料スクール→自主的に勉強できる人・お金がない人

 

自分にあった方を選んでくださいね^ ^

 

この記事を書いた人
月子

文系エンジニアの月子です。
SEになり、3年目。主な言語:Java / Python / GAS
フリーランスエンジニア&副業で年収1千万いくのが夢です。

駆け出しプログラマーの毎日
プログラミング
スポンサーリンク
駆け出しプログラマーの毎日
月子.log

コメント

タイトルとURLをコピーしました