Pascal との比較 - 1

「こんにちは、私の名前はラガ・ビラーボです。この船で医者をやってる宇宙人です。仲良くなれるといいですね。」

「そうですね。」

「私の故郷の惑星では、時代遅れの Java プログラミング言語じゃなくて、進歩した Pascal プログラミング言語を使っています。Java のコードと Pascal のコードを並べて比較してみましょう。」

Java Pascal
public class MyFirstClass
{
   public static void main(String[] args)
   {
      int a, b, c;
      String s1, s2;
      System.out.println("Enter two numbers");
      a = new Scanner(System.in).nextInt();
      b = new Scanner(System.in).nextInt();
      c = a + b;
      System.out.println("The sum is " + c);
   }
}
Program MyFirstProgram;
Var
   a, b, c: Integer;
   s1, s2: String;
Begin
   WriteLn("Enter two numbers");
   ReadLn(a);
   ReadLn(b);
   c := a + b;
   WriteLn("The sum is ", c);
End.

「これは同じプログラムを 2 つの異なる言語で書いています。見て分かるように、Pascal の方が行数が少ないので、Java より優れた言語であることが分かります。」

「Pascal のコードを見たことがあるなら、この例を見て Java の理解を深めることができると思ったんですよ。」

「Pascal は見たことないです。でも、2 つのプログラミング言語を比較するのは興味深いですね。」

「いいでしょう。では続けますよ。」

「Pascal では、コードをプログラム本体、procedure (プロシージャ)、または function (関数) の中に記述します。Java ではこのプロセスが簡略化されて、プログラム本体、プロシージャ、そして関数はメソッドと呼ばれる関数に置き換えられています。」

Java Pascal
main メソッド
public static void main(String[] args)
{
   System.out.println("Ho-ho-ho!");
}
プログラム本体
Begin
   WriteLn("Ho-ho-ho!");
End.
関数 / メソッド
double sqr(double a)
{
   return a * a;
}
Function (関数)
Function Sqr(a: Real): Real
Begin
   Sqr := a * a;
End;
戻り値の型が void の関数
void doubleWrite(String s)
{
   System.out.println(s);
   System.out.println(s);
}
Procedure (プロシージャ)
Procedure DoubleWrite(s: String);
Begin
   WriteLn(s);
   WriteLn(s);
End;

「Pascal の方は 'プログラム本体'、'function (関数)'、そして 'procedure (プロシージャ)' という言葉が使われていますが、Java では全部メソッドになっていますね。ちょっと変な感じがしますね。」

「そうなんです、私たち宇宙人にとってはとても違和感があるんですよ。でも人間は全部 1 つにまとめたがるんです。」

「Java では、すべてのコードがメソッドの一部になっているから、メソッドを宣言するときに、Pascal でやるようにわざわざ Function って言葉を書く必要はありません。」

「すべてシンプルになっています。もし 型 + 名前 と書かれたコードがあれば、それはメソッドか変数の宣言です。その名前の後に丸括弧が続いていたら、それは新しいメソッドの宣言です。丸括弧がなかったら、変数の宣言ということになります。

「Java では変数とメソッドの宣言はよく似ているんです。自分の目で確認してみてください。」

コード 説明
String name;
name という変数は String です。
String getName()
{
}
getName を返す String というメソッド。

「でもこれだけではありません。Java のメソッドは孤立して存在することができないので、クラスの中に置く必要があります。したがって、Java で小さなプログラムを 1 つ書くだけでも、地球人はわざわざ最初にクラスを作成しその中で main メソッドを宣言してから、 やっとメソッドにコードを書くという作業を行っているんです。地球人って本当に変ですよね!」

「先ほどディエゴが来て、あなたにタスクを置いていきましたよ。楽しいタスクだといいですね。」