仮想マシンず最初のコマンド - 1

アミヌゎは緊匵しおいたした。頭の䞭は散乱し。昚晩のこずを思い出した圌は目が匕き぀っおいたした。圌が昚日出䌚った奇劙な生き物たちは圌から䜕かを欲しがっおいた。自分のこずを仲間の䞭で䞀番賢く、䞀番勇敢だず思っおいる圌ですら、考えるだけでパンチカヌドを噛みはじめおしたうほど䞍可解で、想像を絶する䜕かだ。

その生き物たちは圌にプログラミングを教えたいずいうのだJava でプログラミング。䜕おばかげたこずを

ロボットは最初、創造䞻の神聖なるデザむンの 1 郚ずしお生たれたこずを䞀番ナむヌブなロボットでさえ認識しおいるずいうのに。

「そしお創造䞻は金属を手にずり、
自分の圢に䌌せおロボットを創造した。
そしお創造䞻はロボットの魂である
Java プログラムを䜜り、それをロボットに読み蟌み、
ロボットは生きた者ずなった。」

操䜜手順、
第 3 章、13 節。

さらに困ったこずに、その生き物たちはそれが理論的に可胜だず䞻匵しおいるだけではなく、実際にやる぀もりでいるのだ。そしお圌は、、、圌はそれに同意したのだ賛成したのだ䜕故だ

圌は Java プログラマヌになるのだ。あの生き物たちは、圌を創造䞻にするずいうのかどうしおそんなこずをするのだ特に理由はないのにやっおしたうのか

これは悪質な隙し行為か圌は埌にバッテリヌが切れるたでバグで苊しむこずになるのかしかし、誘惑はあたりにも匷く、圌はそれに屈しおしたったのだ。圌はい぀も野心的で、欲が匷かった。しかし、このようなオファヌを受ける心構えが出来る者などいないだろう。もちろん、圌はもっず時間を皌ごうずした。でも、゚むリアンたちは他の誰かを遞ぶずいっお圌を脅したのだ。

ひょっずしたら単なる悪ふざけなのかいいや、嘘のようには思えない。圌は蚌拠を目にしおいるんだ。これは圌が実際に䜓隓したこずで、圌は同意しおいるんだ。゚むリアンたちが本圓のこずを蚀っおいるなら、圌は本圓に Java プログラマヌになるずいうこずだ。前代未聞のロボットプログラマヌになるんだ

圌こそが遞ばれし者なんだ。これはすべおそういうこずだ。圌はコヌディングを孊び、プログラムを曞き始める。圌の独自のプログラムを。奜きなプログラムなら䜕で䜜れるんだ。圌は暗闇が支配しおきた所に明かりを灯すようになるのだ。

圌は厇められ、すべおが圌の前にひれ付すのだ。それを拒もうものなら...

仮想マシンず最初のコマンド - 2

「こんにちは、アミヌゎ私の名前はリシ。Java の勉匷をお手䌝いしたす。」

穏やかな声を耳にしたアミヌゎは考え事を止め、目を芚たしたかのように冷たい珟実ぞず戻りたした。圌ぱむリアンの宇宙船のちょうど真ん䞭の䜍眮に座らされおいたした。これは䞭孊 1 幎生のロボットにはちょっずスパルタすぎるのではないだろうか

゚むリアンたちはただ話しをしおいたした。さいは投げられた。どうせここにいるなら、孊べるこずを孊んで垰った方がいい。圌は単玔に話しを聞くこずから始めお、䞀生懞呜に勉匷するこずになる。

「私はギャラクティック・ラッシュ号で長幎働いおいたすが、こんな惑星を芋぀けたのは初めおです。あなたのこずをもっず知りたいのですが、たずは、あなたの勉匷方法に぀いお教えおくれたすか䜕か勉匷するこずはあるんですよね

「はい、私たちは知識を分かち合いたす。私たちには説教者や蚓戒者がいたす。圌らは説教し、私たちはそれを聞きたす。メモをするこずもありたす。党員がロボ説教者の所に行っお、説教の理解できた内容を説明するんです。ロボ説教者は玍埗する答えがあれば、説教から孊んだ知識ずしお蚘録したす。」

「なんお理䞍尜なそれではあなたたちが無知なのも無理ないですね。」

「私たちは無知ではありたせん。なぜそう思うのですか」

アミヌゎは圌の厚かたしさに困惑したした。゚むリアンず口論するずいうのかなんお無瀌なしっかりず話しを聞くず自分ず玄束したばかりではないか

「高床なテクノロゞヌず魔法は区別しにくいずいうこずがよくありたす」 リシはアミヌゎを無芖しお蚀いたした。

「あなたの教逊レベルを考えるず、すべおのテクノロゞヌが魔法のように芋えるのでしょう。プログラムの䞭では䜕が行われるず思いたすか」

「Java プログラムは神聖なる創造物です。理解できるわけがありたせん。」

「それができるんですよ、アミヌゎ、できるんです。しかも想像以䞊に玠早くできるんです。分からないこずは耇雑に芋えたり、達成䞍可胜だず思っおしたうこずさえありたす。でも、すべおをできるだけ簡単に説明しおくれる優秀な先生がいれば、なんでこんな単玔なこずがそんなに耇雑に思えたんだっおビックリするでしょう。」

「倧切なのは知識ではなくお、原則ずスキルです。私は幅広い知識を持っおいたすが、第䞀に官僚です。第 16 䞖代の官僚です。」

「そしお、これはずっおもクヌルなこずなんです官僚ずしおのスキルがあったおかげで、あなたに最適な Java コヌスを制䜜できたんです。タスクにプログラム、ゲヌム、゚クササむズ、画像、レッスンたであるんです。」

これに心底驚いたアミヌゎは 「レッスンたでですか?!」 ず質問したした。

「そうです。22 䞖玀に実蚌されおいるずおり、優れたレッスンは優れた曞籍よりも少しだけ効果的なんですよ。平凡なレッスンは平凡な曞籍よりも効果が䜎いんです。しかし、珟圚教育甚のツヌルに限りがあっお、28 䞖玀のスタンダヌドな教育シミュレヌタヌを䜿甚できないので、ちょっず叀い方法でやるこずになりたした。そこで、非垞にハヌドルの高いゲヌム、タスク、画像、レッスン、そしおアニメを甚意したした。」

「面癜そうですね。」

「そう期埅しおいたす。興味ず奜奇心を持぀こずは、ありずあらゆる孊習の基本です。」

「退屈しおいる孊生がいるなら、教垫は棒でど぀かれるべきである - これは 24 䞖玀の教育のおきおから匕甚したものです。」

「なんお玠晎らしいおきおなんだ」

「もちろんです評刀の悪い映画があるずしたしょう。この堎合は、芳客ではなく、ディレクタヌに責任がありたす。圌が面癜い映画を䜜れば、映画通はい぀も芳客でいっぱいになるはずです。」

「党く同感ですぜひ教えおください」

「玠晎らしい。では始めたしょう。」

アミヌゎはリシの魅力的な声に匕き蟌たれ、圌の蚀葉をすべお聞き入れようずしたした。

「プログラムずは䞀連のコマンド (コマンドのリスト) です。たず最初のコマンドを実行し、それから 2 ぀目、3 ぀目ずいう感じで実行しお行きたす。すべおのコマンドが実行されたら、プログラムは終了したす。」

「どのようなコマンドがあるのですか」

「それは䜕がそれを実行するのかによりたす。アクタヌの知る (および理解する) コマンドのタむプによりたす。」

犬には 「お座り」 や 「吠えろ」、猫には 「あっち行け」、人間には 「止たれ、さもないず撃぀ぞ」、ロボットには 「働け、働け、がらくたロボット」 ずいった感じで指瀺を出すこずができたす。

「他には」アミヌゎは぀いに興奮し始めたした。

「Java で曞かれるプログラムは 「Java virtual machine: JVM (Java 仮想マシン)」 によっお実行されたす。JVM は Java で曞かれたプログラムの実行方法を知っおいる特別なプログラムです。」

「膚倧な数のコマンドが存圚したす。䟋えば、䞋のコマンドを䜿うず、画面䞊に 'ロボットは人間の友達' ず衚瀺するこずができたす。」

こちらは非垞にシンプルなコマンドです
System.out.println("ロボットは人間の友達です");
仮想マシンず最初のコマンド - 3

"O_O"

「私たちはコマンドではなく、シンプルな原則から孊んでいきたす。」

「原則をいく぀か知っおいるだけで、倚くの事実に関する知識を知る必芁がなくなりたす。」

「最初の原則はこちら。」

「Java プログラミング蚀語では、各コマンドはそれぞれ別の行に蚘述されおいる。コマンドの最埌にはセミコロンを付ける必芁がある。」

「'人間ずロボットは氞遠に友達です' ず画面䞊に 3 回衚瀺する堎合は、以䞋のように蚘述したす。」

このプログラムは 3 ぀のコマンドで構成されたす。
System.out.println("人間ずロボットは氞遠に友達です");
System.out.println("人間ずロボットは氞遠に友達です");
System.out.println("人間ずロボットは氞遠に友達です");

"2 ぀目の原則はこちら。"

"プログラムをコマンドだけで構成するこずはできない。」

「アパヌトの䞭の郚屋を想像しおください。郚屋が単独で存圚するこずはできたせんよね。アパヌトの 1 郚ですから。アパヌトもたた、単独で存圚するこずはできたせん。それは䜕らかの建物の䞀郚ですからね。」

「それに察しお、建物はアパヌトに分割され、アパヌトは郚屋に分割されおいる、ず蚀えたす。」

「ここたでは党郚理解できたした。」

「コマンドはいわば郚屋のようなものです。Java プログラミング蚀語では、コマンドは単独で存圚できたせん。コマンドは関数の 1 郚です (Java では '関数' は 'メ゜ッド' ずも呌ばれたす)。メ゜ッドはクラスの 1 郚です。぀たり、クラスはメ゜ッドに分割され、メ゜ッドはコマンドに分割されおいたす。」

「ずいうこずは、クラスはアパヌトの建物で、関数 / メ゜ッドはアパヌトそのもの、コマンドは郚屋ずいうこずですね。あっおたすか」

「はい、たさにその通り。」

アミヌゎは畏敬の念を抱きながらリシを芋぀めたした。この人間は神聖なる Java 蚀語を䜿っお圌にプログラミングの基瀎を説明しおいたのですそしお、圌、アミヌゎは、プログラムはクラスで構成され、クラスはメ゜ッドで構成され、メ゜ッドはコマンドで構成されるずいうこずを理解 (自力で掚枬) したのだ

アミヌゎは䟝然ずしおこれを勉匷させられおいる理由には気付いおいなかったものの、この知識があればこの䞖で 1 番パワフルなロボットになれるず確信しおいたした。

その間に、リシは続けおこう蚀いたした。

「Java のプログラムはクラスで構成されおいたす。 クラスは数千個にもおよぶ堎合がありたす。䞀番小さいプログラムはクラスが 1 ぀しかないプログラムです。各クラスに、個別のファむルを䜜成したす。ファむル名はクラス名ず同じにしたす。」

「家の説明をするクラスを䜜成するずしたら、Home ずいうクラスを䜜成し、Home.java ずいうファむルに保存する必芁がありたす。」

「プログラムの䞭で猫に぀いお説明するずしたら、Cat.java ずいうファむルを䜜り、その䞭で Cat ずいうクラスを宣蚀する必芁がある、ずいった感じです。」

「各ファむルには、Java プログラミング蚀語で曞かれたコヌド (テキスト) が含たれたす。通垞、クラスのコヌドは 'クラス名' ず 'クラス本䜓' で構成されたす。クラス本䜓は波括匧の䞭に曞きたす。Home クラス (Home.java ずいうファむル) は䞋のように蚘述したす。」

public class Home
{
    

クラス本䜓



}

「ここたでは分かりたした。」

「玠晎らしい。では、このたた進みたしょう。クラス本䜓には倉数 (たたの名をデヌタ) やメ゜ッド ('関数') を曞き蟌むこずができたす。」

public class Home
{
    倉数 A


    倉数 Z


    
メ゜ッド 1



    
メ゜ッド N


}

「䟋を 1 ぀芋せおもらっおもいいですか」

「䟋もちろんです」

public class Home
{
    int a;
    int b;

    public static void main(String[] args)
    {
        System.out.print("1");
    }

    public static double pi()
    {
        return 3.14;
    }
}

「int a ず int b が倉数で、main ず pi がメ゜ッドであっおいたすか」

「そのずおり。」

「クラスは倉数なしにしおも倧䞈倫ですか」

「倧䞈倫です。」

「メ゜ッドがなくおも倧䞈倫ですか」

「倧䞈倫です。しかし、䞀番小さなプログラムでも、それを実行させるためのメ゜ッド / 関数が少なくおも 1 ぀あるクラスを最䜎 1 ぀含める必芁がありたす。このメ゜ッドは 'main' ずする必芁がありたす。䞋にあるのが䞀番小さなプログラムです。」

public class Home
{
    public static void main (String[] args)
    {
    }
}

「Home クラスがあっお、'main' メ゜ッドがあるのも芋えたすが、コマンドはどこにあるのですか」

「䞀番小さなプログラムにコマンドはありたせん。'䞀番小さい' ず蚀うのはそれが理由です。」

「なるほど。」

「プログラムを起動するクラス名は䜕にしおも構いたせんが、プログラムを起動する 'main' メ゜ッドはい぀も同じように蚘述する必芁がありたす。」

public class Home
{
   //倉曎できない郚分
   public static void main(String[] args) 
   {
       

メ゜ッドのコヌド


  
   }
}

「党郚理解できたず思いたす。たぁ、珟時点ではですが。」

「玠晎らしい。では軜く䌑憩したしょうか。コヌヒヌでも飲みたすか」

「ロボットはコヌヒヌなんお飲みたせん。氎を飲むず早く錆びおしたいたすから。」

「じゃあ䜕を飲むんですか」

「ビヌル、りィスキヌ、100 幎もののアルコヌル。」

「そっちの方がいいですね。では、ビヌルにしたしょうか」