未経験からのJava.part0.プログラミングの動き
導入
はじめまして。
未経験からエンジニアを目指して勉強している、ありまです。
Javaを学び始めた頃、
コードを書いてはいるものの、
今なにが行われているのか
どこで失敗しているのか
が分からず、
「とりあえず写経しているだけ」の状態に何度もなりました。
このシリーズでは、
僕自身が未経験からJavaを学ぶ中で
「これ、先に知っておけば楽だったな」 と思ったことを、
過去の自分に向けて噛み砕いてまとめていきます。
part0では、
プログラミングがどんな流れで動いているのかを
文法の前に整理していきます。
プログラミングは 「お願い文を書くこと」
プログラミングは難しそうに見えますが、
やっていること自体はとてもシンプルです。
人間がコンピュータに「こう動いてほしい」とお願いを書くこと。
これがプログラミングです。
ただし、
コンピュータは日本語も英語も理解できません。
そこで、決められたルールを持った言語を使って
命令を伝えます。
Javaは、そのための言語のひとつです。
ソースコードとは何か
僕たちが普段書いている、
System.out.println("Hello World");
こういったコードの集まりを
ソースコードと呼びます。
ソースコードは、
人間が読める
意味もなんとなく分かる
という特徴があります。
でも、コンピュータはこのままでは理解できません。
そのため、
書いた瞬間にすぐ動くわけではありません。
ここで必要になるのが「コンパイル」です。
コンパイルって何をしているの?
コンパイルとは、
人間向けに書いたソースコードを
コンピュータ向けに翻訳 する作業です。
Javaでは、
Main.java(ソースコード)
↓
Main.class(翻訳後のファイル)
という流れで変換されます。
javac を実行すると、
この .class ファイルが作られます。
この時点で、
文法ミスがあるとエラーが出ます。
つまり、
「コンパイルエラー」は
日本語の文法が間違っている状態 に近いです。
機械語って結局なに?
コンピュータが本当に理解できるのは
0と1だけです。
これを 機械語と呼びます。
Javaの場合、
ソースコードをいきなり 0 と 1 にするのではなく、
ソースコード
.class ファイル(中間コード)
実行時に機械語へ変換
という 2段階 の流れを取っています。
最初は
「Javaはワンクッション挟んで実行される」
くらいの理解で十分です。
実行すると何が起きている?
java Main のように実行すると、
.class ファイルを読み込む
内容を機械が理解できる形に変換する
上から順番に処理する
という流れでプログラムが動きます。
このときに起きるのが、
実行時エラーです。
つまり、
コンパイルは通った
でも動かしてみたらエラーが出た
という場合は、
書き方は合っているけど、処理の中身に問題がある
ということになります。
まとめ
Javaのプログラムは、
ソースコードを書く → コンパイル → 実行 → 機械語として処理
という流れで動いています。
文法を覚える前に、
「今、自分はどの段階で止まっているのか」
を意識できるだけで、
エラーへの向き合い方はかなり楽になります。
次回は
「まず知っておきたいJavaの基本用語」 をテーマに、
Javaを学んでいく中でよく出てくる言葉を、
未経験目線で整理していきます。
Discussion