
드디어 여러분의 첫 번째 SPARK Ada 프로그램을 작성해 볼 시간입니다! 2장에서 개발 환경을 성공적으로 구축했으니, 이제 실제로 코드를 작성하고 실행하는 경험을 통해 SPARK Ada의 기초를 다져보겠습니다. 이번 장에서는 화면에 간단한 메시지를 출력하는 아주 기본적인 프로그램을 만들면서 코딩의 첫걸음을 내딛어 볼 거예요.
3.1 아주 간단한 프로그램 만들기 (화면에 글자 보여주기)
프로그래밍을 처음 시작할 때 가장 많이 사용하는 예제 중 하나는 화면에 “Hello, World!”라는 문구를 출력하는 프로그램입니다. SPARK Ada에서도 이와 비슷한 간단한 프로그램을 만들어 보면서 기본적인 코드 구조를 익혀볼게요.
다음 코드를 텍스트 편집기를 열어 작성해 보세요.
with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
begin
Put_Line ("Hello, World!");
end Hello;
작성한 코드는 hello.adb
라는 이름으로 저장해 주세요. .adb
는 Ada 언어의 소스 파일 확장자입니다.
이제 이 코드가 어떤 의미를 가지고 있는지 간단히 살펴볼까요?
with Ada.Text_IO; use Ada.Text_IO;
: 이 부분은 화면에 텍스트를 출력하는 기능을 제공하는Ada.Text_IO
라는 라이브러리를 사용하겠다고 선언하는 것입니다. 마치 요리를 할 때 필요한 도구나 재료를 먼저 준비하는 것과 비슷하다고 생각하면 돼요.use Ada.Text_IO;
는Ada.Text_IO
에 있는 기능을 이름 앞에Ada.
를 붙이지 않고 바로 사용할 수 있도록 해줍니다.procedure Hello is
: 이것은Hello
라는 이름의 프로그램을 시작하겠다는 선언입니다.procedure
는 일련의 동작을 묶어 놓은 코드 블록을 의미하며, 프로그램의 기본적인 단위가 됩니다.is
키워드는 프로그램의 내용이 뒤에 이어진다는 것을 나타냅니다.begin
: 이 키워드는 프로그램의 실제 실행 코드가 시작되는 지점을 나타냅니다.Put_Line ("Hello, World!");
: 이 부분이 바로 화면에 텍스트를 출력하는 역할을 합니다.Put_Line
은Ada.Text_IO
라이브러리에서 제공하는 기능으로, 큰따옴표 안에 있는 텍스트(Hello, World!)를 화면에 출력하고 줄을 바꿔줍니다.end Hello;
: 이 키워드는Hello
라는 프로그램이 끝나는 지점을 나타냅니다.end
뒤에 프로그램 이름을 다시 써주는 것은 프로그램의 끝을 명확하게 표시하는 좋은 습관입니다.
3.2 코드를 쓰고 실행하는 순서 (컴파일과 실행)
우리가 작성한 hello.adb
파일은 사람이 이해할 수 있는 형태의 코드입니다. 컴퓨터가 이 코드를 실행하기 위해서는 컴퓨터가 이해할 수 있는 언어, 즉 기계어로 번역하는 과정이 필요합니다. 이 과정을 컴파일(Compile)이라고 합니다.
FreeBSD 환경에서 SPARK Ada 코드를 컴파일하고 실행하는 순서는 다음과 같습니다.
터미널 열기: 먼저 터미널 애플리케이션을 실행합니다.
소스 파일이 있는 디렉토리로 이동: cd
명령어를 사용하여 hello.adb
파일이 저장된 폴더로 이동합니다. 예를 들어, 파일을 홈 디렉토리에 저장했다면 cd ~
명령어를 입력하고 Enter 키를 누릅니다.
컴파일하기: 터미널에 다음 명령어를 입력하고 Enter 키를 누릅니다.
gnatmake hello.adb
gnatmake
는 Ada 코드를 컴파일하고 실행 가능한 프로그램을 만들어주는 도구입니다. 이 명령어를 실행하면 hello
라는 실행 파일이 생성됩니다.
실행하기: 컴파일이 성공적으로 완료되면, 터미널에 다음 명령어를 입력하고 Enter 키를 누릅니다.
./hello
여기서 ./
는 현재 디렉토리에 있는 파일임을 나타냅니다. 이 명령어를 실행하면 화면에 “Hello, World!”라는 메시지가 출력될 거예요!
축하합니다! 여러분은 첫 번째 SPARK Ada 프로그램을 성공적으로 작성하고 실행했습니다.
3.3 코드가 어떻게 실행되는지 간단하게 알아보기
우리가 작성한 코드가 컴퓨터에서 실행되기까지에는 몇 가지 단계를 거칩니다. 간단하게 그 과정을 알아볼까요?
- 작성: 우리는 텍스트 편집기를 사용하여
hello.adb
파일에 SPARK Ada 코드를 작성했습니다. 이 파일은 사람이 읽고 이해할 수 있는 소스 코드입니다. - 컴파일:
gnatmake
명령어를 사용하여 소스 코드를 컴퓨터가 이해할 수 있는 기계어 형태로 번역했습니다. 이 과정에서 컴파일러는 우리가 작성한 코드에 문법적인 오류는 없는지, 의미상 문제가 없는지 등을 확인합니다. 컴파일이 성공하면 실행 가능한 파일(hello
)이 만들어집니다. - 실행:
./hello
를 입력하여 실행 파일인hello
를 호출합니다. 운영체제는 이 파일을 읽고 중앙 처리 장치(CPU)에 실행 지시를 전달하며, 그 결과로 “Hello, World!”라는 메시지가 화면에 출력됩니다.
이처럼 프로그래밍은 우리가 원하는 동작을 컴퓨터에게 지시하기 위해 특정 규칙(문법)에 맞춰 코드를 작성하고, 이 코드를 컴퓨터가 이해할 수 있는 형태로 변환하여 실행하는 과정이라고 할 수 있습니다.
3.4 에러와 친해지기 (오타는 컴퓨터가 싫어해요!)
프로그래밍을 하다 보면 예상치 못한 에러를 만나는 경우가 많습니다. 특히 처음 코딩을 배우는 단계에서는 오타나 문법 규칙을 잘 몰라서 발생하는 에러가 흔합니다. 에러가 발생하는 것은 때로는 좌절스러울 수 있지만, 에러 메시지를 통해 우리는 코드를 더 잘 이해하고 수정할 수 있으며, 궁극적으로 더 나은 프로그래머가 되도록 도와주는 중요한 배움의 기회이기도 합니다.
예를 들어, hello.adb
파일에서 Put_Line
을 PUt_Line
과 같이 대소문자를 틀리게 입력하거나, 큰따옴표("
)를 빼먹고 컴파일을 시도해 보세요.
with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
begin
PUt_Line ("Hello, World!); -- 'u'가 대문자, 마지막 따옴표 빠짐
end Hello;
이 코드를 저장하고 다시 gnatmake hello.adb
명령어를 실행하면, 컴파일러는 에러 메시지를 출력하면서 컴파일에 실패할 것입니다. 에러 메시지는 어떤 줄에서 어떤 종류의 오류가 발생했는지 알려주므로, 이 정보를 바탕으로 코드를 수정할 수 있습니다.
컴퓨터는 우리가 작성한 코드를 아주 정확하게 이해하려고 합니다. 따라서 오타나 문법적인 실수는 컴퓨터에게 혼란을 줄 수밖에 없습니다. 처음에는 에러 메시지가 어렵게 느껴질 수 있지만, 차근차근 에러 메시지를 읽고 이해하려고 노력하는 것이 중요합니다. 에러를 두려워하지 말고, 에러를 통해 배우는 즐거움을 느껴보세요!
이제 여러분은 SPARK Ada 프로그램을 작성하고 실행하는 기본적인 방법을 알게 되었습니다. 다음 장에서는 더 다양한 종류의 프로그램과 SPARK Ada의 강력한 기능들을 함께 살펴보겠습니다.