파스칼과 비교 - 1

"안녕. 내 이름은 라가 빌라보다. 난 외계인이고 이 우주선의 내과의사 이지. 우리가 좋은 친구가 되었으면 좋겠다."

"저도요."

"내 고향 행성에서는 후진 자바 언어 대신 고급 파스칼 프로그래밍 언어를 사용한다. 여기를 봐봐. 자바와 파스칼 코드를 나란히 비교하고 있다."

자바 파스칼
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.

"두 개의 다른 언어로 쓰여진, 같은 프로그램이다. 자바보다 적은 줄로 프로그램을 작성했으니 파스칼이 자바보다 더 우월하다는 증거다."

"파스칼을 전에 본 적이 있다면 이 예제가 자바를 더 잘 이해하도록 도움을 줄 거라 생각한다."

"아뇨, 파스칼을 본 적 없어요. 그래도 두 개의 프로그래밍 언어를 비교하는 것은 흥미롭지."

"그럼요. 그럼 계속하지."

"파스칼에서는 프로그램 본문, 프로시저 또는 함수에 코드를 배치한다. 자바에서는 이 과정을 단순화해서 프로그램 본문, 프로시저와 함수를 모두 메소드라는 함수로 대체하지."

자바 파스칼
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 Sqr(a: Real): Real
Begin
   Sqr := a * a;
End;
void 리턴 유형인 함수
void doubleWrite(String s)
{
   System.out.println(s);
   System.out.println(s);
}
프로시저
Procedure DoubleWrite(s: String);
Begin
   WriteLn(s);
   WriteLn(s);
End;

"파스칼 열에는 '프로그래밍 본문', '함수', '프로시저'라는 단어가 보이지만, 자바에서는 모두 메소드라고 한다. 좀 이상한데요."

"그래, 우리 외계인들은 아주 이상하다고 생각해. 하지만 인간은 뭐든지 통일하는 것을 좋아하지."

"자바에서는 모든 코드가 메소드의 일부라서 메소드를 선언하려고 파스칼처럼 Function이라는 단어를 쓸 필요조차 없거든."

"모두 아주 간단해. 코드 행이유형 + 이름처럼 보인다면, 그건 메소드나 변수 중 하나를 선언하는 거다. 이름 뒤에 괄호가 붙으면 새 메소드를 선언하고, 괄호가 없으면 변수를 선언하는 것이다."

"자바에서 변수 선언과 메소드 선언은 매우 흡사하다. 직접 확인해봐."

코드 설명
String name;
name이라는 변수는 String, 즉 문자열입니다.
String getName()
{
}
getName이라는 메소드는 String을 반환합니다.

"하지만 그게 다가 아니다. 자바에서는 메소드가 고립되어 존재할 수 없다. 메소드는 반드시 클래스 안에 있어야 한다. 따라서 인간이 자바에서 작은 프로그램 하나를 작성할 때는 우선 클래스를 만들어 그 클래스 안에 주요 메소드를 선언해야 하지. 그렇게 했을 때 비로소 메소드에 코드를 쓸 수 있다. 지구인들은 정말 이상하다!"

"디에고가 오늘 평소보다 일찍 들렀는데, 이 과제들을 네게 주라고 했다. 네가 과제를 좋아하면 좋겠다."