Ada: 강력한 타입 언어

Ada는 강력한 타입 언어(strongly typed language)입니다. 그러한 점에서 흥미롭게도 현대적입니다: 강력한 정적 타이핑(strong static typing)은 프로그래밍 언어 설계에서 인기가 높아지고 있는데, 이는 정적 타입 함수형 프로그래밍의 성장, 타이핑(typing) 영역에서의 연구 커뮤니티의 큰 추진력, 그리고 강력한 타입 시스템(strong type systems)을 갖춘 많은 실용적인 언어들의 등장과 같은 요인들 때문입니다.

타입이란 무엇인가?

정적 타입 언어(statically typed languages)에서, 타입(type)은 주로 (전부는 아니지만) 컴파일 타임(compile time)의 구성 요소입니다. 이는 프로그램의 행동에 대한 불변성(invariants)을 강제하기 위한 구성 요소입니다. 불변성(Invariants)은 주어진 타입의 모든 변수에 대해 유지되는 변경 불가능한 속성입니다. 이를 강제하는 것은, 예를 들어, 특정 데이터 타입의 변수가 절대 유효하지 않은 값을 갖지 않도록 보장합니다.

타입(type)은 프로그램이 조작하는 객체에 대해 추론하는 데 사용됩니다 (객체는 변수 또는 상수입니다). 그 목적은 객체를 가지고 무엇을 할 수 있는지(즉, 허용되는 연산(operations))에 따라 객체를 분류하는 것이며, 이런 방식으로 객체 값의 정확성(correctness)에 대해 추론할 수 있습니다.

정수

Ada의 좋은 특징 중 하나는 프로그램의 요구사항(즉, 타당한 값의 범위)에 기반하여 사용자 정의 정수 타입을 정의할 수 있다는 점입니다. 사실, Ada가 제공하는 정의 메커니즘은 사전 정의된 정수 타입의 의미론적 기반을 형성합니다. 그런 점에서 ‘마법적인’ 내장 타입은 없으며, 이는 대부분의 언어와 다르고 매우 우아하다고 할 수 있습니다.

with Ada.Text_IO; use Ada.Text_IO;

procedure Integer_Type_Example is
   -- 부호 있는 정수 타입을 선언하고,
   -- 범위를 지정합니다
   type My_Int is range -1 .. 20;
   --                      ^ 상한값 (High bound)
   --                   ^ 하한값 (Low bound)

   -- 변수처럼, 타입 선언은
   -- 선언 영역에만 나타날 수 있습니다.
begin
   for I in My_Int loop
      Put_Line (My_Int'Image (I));
      --             ^ 'Image 속성 (Attribute)
      --             값을 문자열로
      --             변환합니다.
   end loop;
end Integer_Type_Example;Code language: PHP (php)

이 예제는 부호 있는 정수 타입의 선언과 그것들을 활용하는 몇 가지 방법을 보여줍니다.

Ada의 모든 타입 선언은 (태스크 타입은 제외하고) type 키워드로 시작합니다. 타입 선언 다음에는, 타입의 하한값(low bound)과 상한값(high bound)을 정의하는 범위가 나옵니다. 이 범위는 for 루프에서 사용하는 범위와 매우 유사합니다. 경계값을 포함하는 범위 내의 모든 정수는 해당 타입에 유효한 값입니다.

번역문을 작성 중입니다.


이 문서는 ‘Introduction to Ada'(저자: Raphaël Amiard, Gustavo A. Hoffmann, © AdaCore 2018–2024)를 Google Gemini가 한국어로 번역한 것입니다. 원저작물과 동일하게 CC BY 4.0 라이선스가 적용됩니다.


게시됨

카테고리

작성자

태그:

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다