맨위로가기

오브젝트 파스칼

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

오브젝트 파스칼은 1980년대에 파스칼 언어에 객체 지향 프로그래밍 기능을 추가하여 개발된 언어이다. 애플에서 시작되어 볼랜드의 터보 파스칼, 델파이로 이어지며 윈도우 GUI 애플리케이션 개발에 널리 사용되었다. 현재는 델파이 언어로 불리며, 윈도우, macOS, iOS, 안드로이드 등 다양한 플랫폼을 지원하는 컴파일러가 존재한다. 또한, Free Pascal, GNU Pascal과 같은 오픈 소스 구현도 있다. 오브젝트 파스칼은 캡슐화, 상속, 다형성을 지원하며, 간결하고 명확한 문법으로 객체 지향 프로그래밍 학습에 적합하다.

더 읽어볼만한 페이지

  • 볼랜드 - 코드기어
    코드기어는 보랜드에서 분사되어 개발 도구 및 데이터베이스 제품을 판매하는 브랜드였으나 엠바카데로 테크놀로지스에 인수되었으며, RAD 스튜디오, 델파이, C++빌더, 인터베이스 등이 주요 제품이다.
  • 볼랜드 - 비주얼 컴포넌트 라이브러리
    VCL(Visual Component Library)은 Borland가 Delphi 및 C++Builder에서 윈도우 기반의 시각적 컴포넌트 라이브러리로 개발하여 객체 지향 프로그래밍 방식으로 사용자 인터페이스를 쉽게 구축하도록 지원하며, .NET Framework의 WinForms에 영향을 미쳤다.
  • 1986년 개발된 프로그래밍 언어 - 오브젝티브-C
    오브젝티브-C는 C 언어를 기반으로 스몰토크의 객체 지향 기능을 결합하여 개발된 프로그래밍 언어이며, 애플의 macOS와 iOS 개발 환경에서 핵심 언어로 사용되었다.
  • 1986년 개발된 프로그래밍 언어 - 오베론 (프로그래밍 언어)
    오베론은 니클라우스 비르트가 설계한 프로그래밍 언어로, 단순성을 추구하며 라이브러리 개념을 강조하고 엄격한 타입 검사 등으로 안정성을 높였으며, 후속 버전에서는 객체 지향 프로그래밍 기능이 추가되었다.
오브젝트 파스칼 - [IT 관련 정보]에 관한 문서
기본 정보
Object Pascal의 깃발
오브젝트 파스칼 깃발
패러다임명령형
절차적
구조적
객체 지향
함수형 (델파이 방언만 해당)
컴포넌트 기반
이벤트 기반
제네릭
계열니클라우스 비르트 파스칼
설계자래리 테슬러 (애플)
니클라우스 비르트 (애플)
안데르스 헤일스베르그 (볼랜드)
개발자애플 컴퓨터 (초기)
볼랜드 인터내셔널
출시일1986년
타이핑정적 및 동적 (변형, "상수 배열" 및 RTTI를 통한 동적 타이핑)
강타입
안전
범위어휘적 (정적)
플랫폼ARM
x86
PowerPC
ppc64
SPARC
MIPS
CLI
자바
코코아
파일 확장자.p, .pp, .pas
웹사이트해당 없음
구현체델파이 (x86, ARM)
프리 파스칼 (x86, PowerPC, ppc64, SPARC, MIPS, ARM)
옥시진 (CLI, 자바, 네이티브 코코아)
스마트 모바일 스튜디오 (자바스크립트)
방언애플
터보 파스칼
프리 파스칼 (objfpc 또는 delphi 모드 사용)
델파이
Delphi.NET
델파이 웹 스크립트
PascalABC.NET
옥시진
영향을 받은 언어파스칼, 시뮬라, 스몰토크
영향을 준 언어C#
Genie
자바

C/AL

2. 역사

파스칼은 1970년대 주요 프로그래밍 언어로 부상했으며, 특히 애플에서 애플 파스칼, 리사 파스칼 등으로 활발히 사용되었다.

리사 개발 중 객체 지향 기능의 필요성이 제기되자, 1983년 래리 테슬러가 이끄는 팀은 파스칼 창시자 니클라우스 비르트의 자문을 받아 파스칼에 객체 지향 확장을 도입한 Clascaleng을 개발했다.[2] 이는 이후 매킨토시용 오브젝트 파스칼로 발전하여, 애플리케이션 프레임워크인 MacAppeng 개발에 핵심적인 역할을 했다. 오브젝트 파스칼과 MacAppeng은 1986년에 정식 출시되었다.

1986년, 볼랜드 역시 터보 파스칼에 유사한 객체 지향 기능을 도입했고, 1995년에는 윈도우용 RAD 도구인 델파이를 출시하며 큰 성공을 거두었다. 델파이와 함께 소개된 '델파이 언어'는 오브젝트 파스칼을 기반으로 확장되었으며, 사용 편의성과 높은 성능으로 많은 개발자에게 인기를 얻었다. 델파이의 성공은 이후 마이크로소프트의 .NET이나 C# 같은 기술 개발에도 영향을 미쳤다.[19]

델파이 개발은 볼랜드의 개발 도구 부문(CodeGear)이 2008년 엠바카데로 테크놀로지스에 인수된 이후에도 계속 이어지고 있으며[7], Windows, macOS, iOS, Android 등 다양한 플랫폼을 지원하도록 발전했다.

한편, 오픈 소스 진영에서도 Free Pascal, GNU Pascal 등의 구현이 활발히 개발되어 리눅스, macOS, Windows 등 다양한 운영체제와 하드웨어 아키텍처를 지원하고 있다. 이러한 오픈 소스 프로젝트들은 오브젝트 파스칼 생태계를 더욱 풍부하게 만들고 있다.

2. 1. 애플 파스칼과 초기 오브젝트 파스칼

파스칼은 1970년대 프로그래밍 세계에서 주요 언어 중 하나였으며, 미니컴퓨터마이크로컴퓨터 플랫폼에서 널리 사용되었다. 특히 UCSD 파스칼 시스템은 여러 플랫폼에서 실행 가능한 중간 ''p-System'' 코드로 컴파일되어 널리 쓰였는데, 애플은 이를 라이선스하여 애플 II애플 III를 위한 애플 파스칼 시스템의 기반으로 삼았다.

파스칼은 이 시기 애플 내에서 주요 언어 중 하나였으며, 리사 프로젝트에서도 주요 프로그래밍 언어로 채택되었다. 다만 이때는 p-System 인터프리터 방식이 아닌 컴파일러 기반이었다. 리사 개발 과정에서 객체 지향 기능의 필요성이 대두되면서, 1983년 래리 테슬러가 이끄는 팀은 파스칼 창시자 니클라우스 비르트의 자문을 받아 리사 파스칼에 객체 지향 확장을 도입했고, 이를 Clascaleng이라 명명했다.[2] 이 Clascaleng이 이후 매킨토시용 오브젝트 파스칼의 기반이 되었다.

오브젝트 파스칼은 확장 가능한 매킨토시 애플리케이션 프레임워크인 MacAppeng (현재의 클래스 라이브러리 개념)을 지원하기 위해 개발되었다. 배리 헤인스, 켄 도일, 래리 로젠스타인이 개발을 주도하고 댄 앨런이 테스트했으며, 래리 테슬러가 프로젝트 전체를 감독했다. 개발은 1985년에 시작되어 1986년에 제품으로 출시되었다.

애플의 자체 개발 환경(Macintosh Programmer's Workshop, MPW) 외에도, 오브젝트 파스칼은 시만텍의 Think Pascal 통합 개발 환경(IDE)에서도 구현되었다.[3] Think Pascal은 컴파일러, 구문 강조 편집기, 디버거, 클래스 라이브러리를 포함했으며, 애플의 구현보다 빠른 컴파일-링크-디버그 속도와 긴밀한 통합 환경을 제공하여 많은 개발자들이 선호했다. Think Pascal의 마지막 공식 릴리스는 1992년의 4.01 버전이었고, 이후 시만텍은 비공식 4.5d4 버전을 무료로 배포하기도 했다.

그러나 애플은 1994년 매킨토시의 CPU모토로라 68000 시리즈에서 IBM파워PC 아키텍처로 전환하면서 오브젝트 파스칼 지원을 중단했다. 이때 이미 MacAppeng 3.0은 C++로 재작성되어 새로운 플랫폼으로 포팅된 상태였다.

한편, 메트로웍스는 코드워리어 개발 환경을 통해 68k파워PC 양쪽을 모두 지원하는 오브젝트 파스칼 컴파일러를 제공했다. 덕분에 애플과 시만텍의 지원 중단 이후에도 기존 오브젝트 파스칼 개발자들은 파워PC 아키텍처로 전환할 수 있는 경로를 확보할 수 있었다. 실제로 오브젝트 파스칼로 작성된 MacAppeng 2.0은 코드워리어를 사용하여 파워PC로 포팅되기도 했다.[4][5]

2. 2. 볼랜드, 인프라이즈, 코드기어, 엠바카데로 시기

1986년, 볼랜드는 매킨토시용 터보 파스칼 제품에 오브젝트 파스칼이라는 객체 지향 확장을 도입했고, 1989년에는 DOS용 터보 파스칼 5.5에도 이를 적용했다. 1990년에 출시된 터보 파스칼 5.5에는 오브젝트 파스칼을 활용한 터보 비전과 같은 CUI 라이브러리가 포함되었다.

1994년 볼랜드가 개발 방향을 DOS에서 윈도우로 전환하면서, 터보 파스칼의 후속작인 델파이 개발이 1993년에 시작되었다. 델파이 1.0은 1995년 2월 14일 미국에서 공식 출시되었다. 델파이는 윈도우용 RAD 도구로서, 당시 복잡했던 윈도우 GUI 애플리케이션 개발의 어려움을 낮추고 효율성을 높여 큰 성공을 거두었다. 특히 비주얼 베이직과 달리 처음부터 고속의 기계어 코드를 생성하는 네이티브 컴파일 방식을 채택했고, C++에 비해 컴파일 속도가 빨랐던 점도 인기에 기여했다. 무료 개인용 에디션 배포는 일반 취미 프로그래머들에게도 오브젝트 파스칼을 널리 알리는 계기가 되었다.

델파이는 터보 파스칼 객체 모델을 사용하는 코드와의 호환성을 유지하면서도 새로운 기능을 도입했다. `object` 대신 `class` 키워드를 사용하고, Create 생성자와 가상 Destroy 소멸자를 도입하여 `New` 및 `Dispose` 프로시저를 직접 호출할 필요가 없도록 개선했다. 또한 속성(property), 메서드 포인터 등의 기능을 추가했다. 이러한 변화는 ISO의 객체 지향 확장 작업 초안에서 일부 영감을 받았지만, 모든 메서드를 가상 함수로 해야 한다는 요구 사항 등은 터보 파스칼과의 호환성을 고려하여 채택하지 않았다. 델파이에 포함된 VCL은 터보 파스칼의 오브젝트 파스칼 클래스 라이브러리 기술을 계승하여 발전시킨 것이다.

델파이 언어는 이후에도 동적 배열, 제네릭 프로그래밍, 익명 함수 등의 현대적인 프로그래밍 구문을 지원하며 지속적으로 발전해왔다.[6] 애플이 도입했던 이전 객체 구문(구식 객체 유형)도 여전히 지원된다.[6]

델파이의 성공과 VCL의 완성도는 마이크로소프트에도 영향을 주었다. 마이크로소프트는 델파이의 프로그래밍 스타일과 유사하게 언어에 덜 의존적인 .NET Framework라는 애플리케이션 개발 및 실행 환경을 개발했다. .NET의 주요 언어인 C#의 언어 사양, .NET의 기본 클래스 라이브러리 설계, 그리고 비주얼 C#이라는 RAD 환경은 각각 오브젝트 파스칼, VCL, 그리고 델파이 RAD 환경에 상당한 영향을 받은 것으로 평가된다. 실제로 C#의 핵심 개발자인 안데르스 헤일스베르는 이전에 볼랜드에서 델파이 개발을 주도했던 인물이다.[19]

델파이에서 사용되는 프로그래밍 언어의 명칭은 변화를 겪었다. 델파이 6까지는 '오브젝트 파스칼'로 불렸으나, 델파이 7부터는 '델파이 언어'(Delphi Language영어)로 개칭되었다. 이후 Appmethod가 등장하면서 다시 '오브젝트 파스칼'이라는 명칭이 사용되기도 했지만, 공식 문서 등에는 여전히 '델파이 언어'라는 표기도 혼용되고 있다.

개발 도구를 담당하던 볼랜드의 CodeGear 부문은 2008년 엠바카데로 테크놀로지스에 인수되었고, 델파이 및 델파이 언어의 개발과 지원은 엠바카데로로 이관되었다.

델파이 XE2 버전부터는 기존의 VCL 외에 멀티플랫폼 개발을 위한 새로운 클래스 라이브러리인 FireMonkey영어 (FMX)와 각 플랫폼용 크로스 컴파일러가 추가되어 개발 범위를 확장했다.

한편, 볼랜드는 .NET 플랫폼을 위한 오브젝트 파스칼 컴파일러도 개발했다. 'Delphi for .NET영어'이라는 이름으로 델파이 8부터 RAD Studio 2007 버전까지 포함되었다. 이후 RAD Studio 2009부터 XE3까지는 RemObjects사의 Oxygene 컴파일러가 'Delphi Prism영어'이라는 이름으로 번들 제공되었다.

2. 3. 오픈 소스 진영

오픈 소스 오브젝트 파스칼 구현으로는 Free Pascal과 GNU Pascal이 있다. Free Pascal은 초기 터보 파스칼의 언어 사양을 기반으로 만들어졌다. 현재는 애플 호환 모드 및 델파이 호환 모드도 구현되었으며, 더 나아가 크로스 플랫폼을 위한 독자적인 사양 추가 및 C 언어와 같은 매크로 등의 확장도 이루어지고 있다. 델파이와 같은 통합 개발 환경(IDE)을 멀티플랫폼에서 구현하기 위한 Lazarus 및 클래스 라이브러리 '''Lazarus Component Library|라자루스 컴포넌트 라이브러리영어'''(LCL)의 개발도 오픈 소스 기반으로 진행되고 있다. GNU Pascal은 표준 파스칼 (ISO/IEC 7185) 및 확장 파스칼 (ISO/IEC 10206)을 주로 구현하고 있지만, 델파이의 기능도 부분적으로 구현하고 있다. 또한, GNU Pascal에도 Dev-Pascal이라고 불리는 통합 개발 환경이 존재한다.

3. 파스칼로부터의 확장

오브젝트 파스칼은 (C++ 계열의) 객체 지향 언어의 3대 요소인 캡슐화, 상속, 그리고 다형성을 지원한다. 오브젝트 파스칼에서 기존의 파스칼로부터의 주요 확장점은 다음과 같다.

3. 1. 클래스

클래스의 정의 구문은 기존의 파스칼에서의 `record` (C 언어의 구조체에 해당) 정의 구문을 확장한 것이다. 클래스형의 요소로 변수 외에도 프로시저나 함수를 작성할 수 있게 되었다. 클래스에 속하는 변수는 필드 (C++의 멤버 변수에 해당), 그리고 프로시저 및 함수는 메서드 (C++의 멤버 함수에 해당)라고 불리며, 일반적인 변수, 프로시저 및 함수와 구별된다.

또한 클래스의 속성인 필드에 접근할 때, 불필요한 메서드를 사용하는 대신, 더 간결하게 기술하기 위한 장치로 프로퍼티라고 불리는 구문이 준비되어 있다. 프로퍼티를 사용함으로써 객체 지향캡슐화를 유지하면서 마치 필드에 직접 접근하는 것과 같은 직관적인 기술로 클래스의 속성을 조작할 수 있게 된다.

메서드의 구현은 `(클래스명).(메서드명)` 형태로 기술한다.

예시:

```pascal

program MyObjectPascalTest;

type

TMyBaseClass = class

private

Fa: Integer;

Fb: Integer;

public

procedure SetValueA(v: Integer);

function GetValueA: Integer;

property ValueB: Integer read Fb write Fb; // 읽기/쓰기 모두 가능한 프로퍼티

procedure DoSomething; virtual; abstract;

end;

TMySubClass = class(TMyBaseClass)

public

procedure DoSomething; override;

end;

procedure TMyBaseClass.SetValueA(v: Integer);

begin

Fa := v

end;

function TMyBaseClass.GetValueA: Integer;

begin

Result := Fa

end;

procedure TMySubClass.DoSomething;

begin

WriteLn('TMySubClass.DoSomething is called.');

WriteLn('ValueA = ', GetValueA);

WriteLn('ValueB = ', ValueB)

end;

var

obj: TMyBaseClass;

begin

obj := TMySubClass.Create; // 오브젝트의 생성

obj.SetValueA(100);

obj.ValueB := -5;

obj.DoSomething; // 파생 클래스에서 오버라이드된 메서드가 실행된다 (다형성)

obj.Free; // 오브젝트의 해제

obj := Nil

end.

```

클래스명은 관례적으로 Type을 의미하는 'T'로 시작하는 경우가 많고, 필드명은 관례적으로 'F'로 시작하는 경우가 많다.

`type TX = class` 구문은 System 유닛에서 정의된 기본 클래스 TObject에서 암묵적으로 파생됨을 의미한다. `type TB = class(TA)` 구문에서 클래스 TA는 TObject 그 자체이거나, TObject에서 파생되어야 한다. 한편, `type TB = object(TA)` 구문을 사용함으로써 TObject에서 파생되지 않고, 내장된 생성자나 소멸자 등의 메서드를 지원하지 않는 '''오브젝트형'''을 선언할 수 있지만, Delphi나 Appmethod에서는 하위 호환성을 유지하기 위한 목적으로만 남아 있으며, 오브젝트형의 사용은 권장되지 않는다.

클래스 정의에 유닛(unit)을 사용하는 경우, 클래스의 선언은 interface부에, 메서드의 implementation부에 기술한다.

예시:

```pascal

unit MyUnit;

interface

type

TMyClass = class

public

procedure Proc;

end;

implementation

procedure TMyClass.Proc;

begin

{ 여기에 구현을 기술 }

end;

end.

3. 2. 인터페이스

오브젝트 파스칼은 C++과 달리 구현의 다중 상속을 지원하지 않는다. 대신 인터페이스를 구현하여 형식의 다중 상속을 지원한다. 인터페이스 이름은 관례적으로 인터페이스(Interface)를 의미하는 'I'로 시작하는 경우가 많다. 오브젝트 파스칼의 이러한 상속 기능 및 메커니즘은 자바와 매우 유사하며, 이후 C#에도 영향을 주었다.

3. 3. 클래스 참조형

C++ 등의 객체 지향 언어와 비교하여 오브젝트 파스칼이 우수한 점으로, 클래스 참조형 지원을 들 수 있다. 클래스 참조형 변수에는 실체가 아닌 클래스 자체를 변수에 대입할 수 있다. 이는 설계도를 바탕으로 만들어진 제품이 아닌, 설계도 자체를 저장하는 변수를 정의할 수 있다고 생각하면 이해하기 쉽다. 클래스 참조형은 메타클래스라고도 불리며, 실행 시간 형식 정보(RTTI)에 의해 실현된다. 클래스 참조형은 실제 형식이 컴파일 시점에 알 수 없는 클래스 또는 객체에서 클래스 메서드 또는 가상 생성자를 호출하고 싶은 경우 (예: 역 직렬화 등)에 편리하다.

3. 4. 예외

오브젝트 파스칼은 오류 처리 방식으로 예외를 지원한다. 예외 객체는 오류나 다른 사건으로 인해 프로그램의 정상적인 실행 흐름이 중단될 때 만들어진다. 예외를 사용하면, 단순히 정수 값으로 된 오류 코드를 사용하는 것보다 더 많은 정보를 호출한 부분에 전달할 수 있다.

예외를 다루기 위한 구문으로는 '''try...except'''와 '''try...finally'''가 있다.

4. 언어로서의 특징

오브젝트 파스칼은 간결하고 명확한 언어 사양 덕분에 객체 지향 언어 학습에 적합하다는 평가를 받는다. 초기에는 C++ 등 다른 언어에서 볼 수 있는 연산자 오버로딩, 템플릿, 다중 상속과 같이 편리하지만 복잡할 수 있는 기능들을 지원하지 않았다. 또한, 당시에는 제네릭이나 람다식 같은 현대적인 기능이 없어 제네릭 프로그래밍이나 함수형 프로그래밍 방식에는 한계가 있었다.

하지만 델파이 환경으로 넘어오면서 지속적인 기능 확장이 이루어졌다. 델파이 2005 버전부터는 인라인 함수를 지원하여 실행 속도 개선을 꾀했고, 델파이 2006에서는 연산자 오버로딩이 도입되었다. 델파이 2009에서는 제네릭익명 메서드가 추가되었으며, 델파이 10.3 Rio 버전에서는 타입 추론이 가능한 인라인 변수 선언 기능까지 구현되어[24] 더욱 유연한 프로그래밍이 가능해졌다. 델파이 2010에서는 RTTI(런타임 타입 정보) 기능이 강화되어 리플렉션도 지원하게 되었다.

프리 파스칼 역시 델파이와의 호환성을 유지하려는 노력을 보이며, 델파이 호환 모드에서는 제네릭연산자 오버로딩을 지원한다. 동시에 프리 파스칼 자체적으로도 델파이에는 없는 새로운 기능들을 도입하며 발전하고 있다.

델파이의 VCL이나 FMX와 같은 프레임워크는 단순한 클래스 라이브러리를 넘어, 컴포넌트라고 불리는 소프트웨어 부품들의 집합으로 구성된다. 개발자는 이러한 컴포넌트들을 IDE 상에서 시각적으로 조합하여 애플리케이션을 빠르게 개발할 수 있다. 또한 사용자가 직접 컴포넌트를 만들어 개발 환경에 통합할 수도 있기 때문에, 오브젝트 파스칼(특히 델파이 환경)은 때때로 "'''컴포넌트 지향 언어'''"라고 불리기도 한다.

5. 컴파일러 및 인터프리터

오브젝트 파스칼 컴파일러는 다양한 운영 체제와 아키텍처에서 사용할 수 있다. 초기에는 애플의 MacApp 프레임워크를 지원하기 위해 개발되었으며[2], Think Pascal 통합 개발 환경(IDE)에서도 구현되었다. Think Pascal은 컴파일러, 구문 강조 표시 및 검사 기능을 갖춘 편집기, 강력한 디버거, 클래스 라이브러리를 포함했으며, 빠른 컴파일–링크–디버그 사이클과 긴밀하게 통합된 도구 덕분에 많은 개발자들이 선호했다.[3]

애플은 1994년 모토로라 68000 시리즈 칩에서 IBM의 파워PC 아키텍처로 전환하면서 오브젝트 파스칼 지원을 중단했다. 그러나 메트로웍스는 코드워리어를 통해 68k파워PC 모두를 대상으로 하는 매킨토시용 오브젝트 파스칼 컴파일러를 제공하여, 개발자들이 파워PC 아키텍처로 포팅할 수 있는 경로를 열어주었다. 오브젝트 파스칼로 작성된 MacApp 2.0 역시 코드워리어를 사용하여 파워PC로 포팅되었다.[4][5]

이후 델파이, 프리 파스칼, GNU 파스칼 등 다양한 컴파일러들이 등장하여 여러 플랫폼과 환경을 지원하고 있다. 각 컴파일러 및 인터프리터에 대한 자세한 내용은 해당 하위 섹션에서 다룬다.

5. 1. 델파이

1986년, 볼랜드는 매킨토시용 터보 파스칼 제품과 1989년 DOS용 터보 파스칼 5.5에 오브젝트 파스칼이라는 유사한 확장을 도입했다. 볼랜드가 1994년 DOS에서 윈도우로 개발 방향을 전환하면서, 터보 파스칼의 후속작인 델파이를 개발하고 '델파이 언어'로 알려진 새로운 확장 세트를 도입했다.

델파이 개발은 1993년에 시작되었으며, 델파이 1.0은 1995년 2월 14일 미국에서 공식 출시되었다. 터보 파스칼 객체 모델을 사용하는 코드는 여전히 컴파일할 수 있었지만, 델파이는 `object` 대신 `class` 키워드를 사용하는 새로운 구문, Create 생성자 및 가상 Destroy 소멸자(그리고 `New` 및 `Dispose` 프로시저를 호출할 필요가 없도록 함), 속성, 메서드 포인터 및 기타 몇 가지 기능을 갖추고 있었다. 이는 ISO의 객체 지향 확장에 대한 작업 초안 문서에서 영감을 얻었지만, 터보 파스칼 방언과의 차이점 중 다수(예: 모든 메서드가 가상 함수여야 한다는 초안의 요구 사항)는 무시되었다.

델파이 언어는 동적 배열, 제네릭 프로그래밍익명 함수와 같은 구문을 지원하기 위해 수년에 걸쳐 계속 발전해 왔다. 애플이 도입한 이전 객체 구문("구식 객체 유형")은 여전히 지원된다.[6]

Borland는 초기 버전에서 프로그래밍 언어에 "오브젝트 파스칼"이라는 이름을 사용했지만, 나중에 "델파이(Delphi)"로 이름을 변경했다. 오브젝트 파스칼과 호환된다고 주장하는 컴파일러는 종종 델파이 소스 코드와 호환되려고 한다. 델파이가 상표로 등록되면서, 호환 컴파일러들은 계속 '오브젝트 파스칼'이라는 이름을 사용하고 있다.

2008년에 델파이를 인수한 Embarcadero Technologies는[7] 오브젝트 파스칼의 델파이 방언을 다양한 플랫폼으로 컴파일하는 델파이 통합 개발 환경(IDE)을 판매한다. 주요 지원 플랫폼 및 버전별 특징은 다음과 같다.

플랫폼지원 버전 및 특징
윈도우윈도우 9x (델파이 2007 및 이전), 윈도우 NT 계열
macOS델파이 XE2 이상
iOS델파이 XE2 이상 (XE4 이상에서 네이티브 바이너리 생성)
안드로이드델파이 XE5 이상 (네이티브 바이너리 생성)
지원



.NET 지원은 델파이 8부터 델파이 2007까지 존재했으며, 이후 Oxygene이라는 별도 제품으로 분리되었다. 이 언어는 델파이와 완전히 역호환되지는 않는다.

5. 2. Free Pascal

프리 파스칼(Free Pascal, FPC)은 오픈 소스 오브젝트 파스칼 컴파일러이다. 터보 파스칼 7, 델파이 등 다양한 파스칼 방언을 지원한다.[17] 초기에는 터보 파스칼의 언어 사양을 기반으로 개발되었으나, 현재는 애플 호환 모드 및 델파이 호환 모드도 구현하고 있다. 또한, 크로스 플랫폼 개발을 용이하게 하기 위해 독자적인 언어 사양을 추가하거나 C 언어와 유사한 매크로 기능을 지원하는 등 확장성을 높였다.

FPC는 매우 폭넓은 운영 체제와 하드웨어 아키텍처를 지원하는 것으로 알려져 있다. 주요 지원 대상은 다음과 같다.

구분지원 대상
운영 체제리눅스 (32비트, 64비트), FreeBSD, Classic Mac OS, macOS (Xcode 통합 키트 포함), 솔라리스, 윈도우 API (32, 64, CE) 등
하드웨어 아키텍처IA-32, x86-64, PowerPC, SPARC, ARM 아키텍처



2009년 1월 17일에는 iPhone 소프트웨어 개발 키트 (SDK) 2.''x'' 버전을 지원하는 Free Pascal의 첫 번째 버전이 발표되기도 했다.[8]

라자루스 (IDE)(Lazarus)는 Free Pascal을 기반으로 신속한 애플리케이션 개발(RAD)을 지원하는 대표적인 오픈 소스 통합 개발 환경(IDE)이다. 라자루스는 델파이와 유사한 개발 환경을 제공하며, (LCL)라는 멀티플랫폼용 클래스 라이브러리를 통해 다양한 운영 체제에서 동일한 코드로 GUI 애플리케이션을 개발할 수 있도록 돕는다.

5. 3. GNU Pascal

GNU 파스칼(GNU 컴파일러 모음의 일부로 별도 배포됨)은 공식적으로 델파이 방언의 파스칼을 목표로 하지는 않는다. 하지만 터보 파스칼 호환 모드를 포함하고 있으며, 몇 가지 델파이 언어 기능을 점진적으로 통합하고 있다. 이 때문에 델파이로 작성된 대규모 코드를 직접 다시 컴파일하는 데는 적합하지 않을 수 있다. 그러나 GNU 파스칼은 다양한 운영 체제와 하드웨어 아키텍처를 폭넓게 지원한다는 점에서 주목할 만하다. GNU 파스칼을 위한 통합 개발 환경으로는 Dev-Pascal이 존재한다.

5. 4. 기타 컴파일러


  • RemObjects Software에서 개발한 Oxygene 언어는 공통 언어 인프라, Java 런타임 환경, 그리고 애플의 Cocoa 프레임워크를 iOS 및 macOS 대상으로 한다. 이 컴파일러는 마이크로소프트 비주얼 스튜디오에 통합되며, CLI에서 네이티브로 실행되는 무료 명령줄 인터페이스 컴파일러로도 사용할 수 있다. Oxygene은 하나의 컴파일러로 .NET 프레임워크, 모노, WinRT, Windows Phone 8용 Echoes, JDK 및 안드로이드용 Cooper, iOS 및 macOS용 Nougat 등 세 가지 다른 플랫폼을 대상으로 한다. 과거 델파이에서 지원했던 .NET 지원(Delphi 8부터 2007까지)은 현재 Oxygene으로 대체되었다.
  • Smart Pascal 언어는[9] ECMAScript–JavaScript를 대상으로 하며, Jon Lennart Aasenden이 작성하고 Optimale Systemer (2012)에서 게시한 Smart Mobile Studio에서 사용된다. 이 언어는 객체 지향적이고 신속한 애플리케이션 개발 (RAD) 방식을 통해 HTML5 개발을 크게 단순화한다. Smart Pascal은 node.js, Embarcadero DataSnap, Remobjects SDK와 같은 기존 기술과 긴밀하게 통합되어 고성능 클라이언트-서버 모델 웹 애플리케이션을 생성한다. 이 언어는 시각적 구성 요소와 재사용 가능한 라이브러리를 쉽게 만들 수 있게 해준다. Smart Pascal 방언은 JavaScript 환경 및 라이브러리와의 더 나은 통합을 위해 확장된 DWScript 언어에서 파생되었다. Smart Pascal은 기본 JavaScript에 없는 진정한 상속, 클래스, 부분 클래스, 인터페이스, 가상 메서드 테이블 등을 도입한다.
  • Morfik Pascal 언어는 Morfik에서 개발되었으며, Ajax 지원 웹 애플리케이션을 대상으로 한다. 컴파일러는 회사의 AppsBuilder IDE에 내장되어 있으며, 브라우저 또는 서버에서 실행되는 코드를 구현하는 데 오브젝트 파스칼 코드를 사용할 수 있다. Free Pascal 컴파일러를 사용하여 오브젝트 파스칼에서 네이티브 바이너리를 생성한다.
  • Turbo51은 Intel 8051 칩을 프로그래밍하는 데 사용되는 무료 컴파일러이다.[10]
  • WDSibyl은 Microsoft Windows 및 OS/2에서 사용할 수 있는 오픈 소스 Delphi와 유사한 IDE 및 컴파일러이며,[11] Speedsoft라는 회사에서 출시한 상용 터보 파스칼 호환 환경에서 유래했다. 이는 나중에 Sybil이라는 Delphi와 유사한 RAD 환경으로 개발되었으며, 해당 회사가 문을 닫았을 때 GPL 하에 오픈 소스로 공개되었다. 현재 Wolfgang Draxler (WD)가 해당 소프트웨어를 유지 관리하고 있다.[12][13][14]

5. 5. 인터프리터

파스칼 스크립트(Pascal Script, 이전 명칭: ''InnerFuse'')와 DWScript(델파이 웹 스크립트)는 델파이로 작성된 오픈 소스 오브젝트 파스칼 인터프리터 및 스크립팅 엔진이다. 이들은 오브젝트 파스칼의 하위 집합을 지원한다.

DWScript는 오브젝트 파스칼 코드를 자바스크립트 코드로 컴파일(스마트 파스칼)할 수 있으며, JIT 컴파일(JIT)을 지원한다.

모던 파스칼(Modern Pascal)은 3가지의 서로 다른 인터프리터를 제공한다. 명령줄 인터페이스 (CLI), 아파치 모듈 (Celerity), 그리고 포트별로 다른 스크립트를 처리할 수 있는 Node.js와 유사한 솔루션인 CodeRunner가 있다. 또한 스크립트의 소스 코드를 컴파일하고 보호하는 기능도 제공한다.[15]

참조

[1] 간행물 Borland and Microsoft Enter the Object-Oriented Pascal Ring https://books.google[...] 2021-09-18
[2] 논문 Object Pascal Report 1985
[3] 간행물 Think Pascal 3 https://archive.org/[...] 1990-11
[4] 간행물 MacApp Pascal Rides again https://archive.org/[...] 1995-11
[5] 간행물 MacApp 2 for PowerPC in Object Pascal https://archive.org/[...] 1996-02
[6] 서적 Delphi in a nutshell: a desktop quick reference https://archive.org/[...] O'Reilly and Associates 2000
[7] Webarchive Community Letter: Embarcadero Technologies agrees to acquire CodeGear from Borland http://edn.embarcade[...] 2018-03-02
[8] 웹사이트 iPhone/iPod development http://wiki.freepasc[...] Free Pascal development team 2009-04-13
[9] 서적 A Smart Book https://leanpub.com/[...] Leanpub 2013-06-19
[10] 웹사이트 Turbo51: Turbo Pascal Compiler for 8051 microcontrollers http://turbo51.com/ 2021
[11] 웹사이트 WDSibyl: Visual Development Environment https://www.wdsibyl.[...]
[12] 웹사이트 EDM/2: WDSibyl http://www.edm2.com/[...]
[13] 웹사이트 EDM/2: List of Tools http://www.edm2.com/[...]
[14] 웹사이트 eCSoft/2: The Complete OS/2 Software Encyclopedia: WDSibyl https://ecsoft2.org/[...]
[15] 웹사이트 Modern Pascal http://www.modernpas[...] 2018-10-22
[16] 웹사이트 New Delphi language features since Delphi 7 http://dn.codegear.c[...] CodeGear 2008-07-06
[17] 문서 Mac Pascal - Free Pascal wiki https://wiki.freepas[...]
[18] 문서 Windows API 및 C언어 혹은 C++의 지식을 필요로 하고, 또 Visual Basic이외의 RAD는 충분히 서포트 되고 있지 않았다.
[19] 문서 主な機能 - Embarcadero Website https://www.embarcad[...]
[20] 문서 TObject는, Java에 있어서 암묵의 최상위 기저 클래스인 오브젝트형{{Javadoc:SE|name=java.lang.Object|java/lang|Object}}나, .NET에 있어서 System.Object에 상당하지만, Object Pascal에 있어서의 「오브젝트형」이라고 하는 용어는 의미가 다르므로 주의 바란다.
[21] 웹사이트 Object Pascal 언어 가이드 http://docs.embarcad[...] 2019-01-11
[22] 문서 클래스와 오브젝트(Object Pascal) - Appmethod Topics http://docwiki.appme[...]
[23] 문서 클래스와 오브젝트(Delphi) - Embarcadero DocWiki http://docwiki.embar[...]
[24] 문서 인라인 변수 선언 - RAD Studio http://docwiki.embar[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com