Overview of Free Pascal and Lazarus/ko

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) Bahasa Indonesia (id) italiano (it) 日本語 (ja) 한국어 (ko) polski (pl) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

프리 파스칼(FPC)은 두 개의 큰 특징을 가진 오픈 소스 파스칼 컴파일러 입니다. 첫번째는 델파이와의 호환성입니다. 또 하나는 다중 플랫폼에 대한 지원으로서 현재 윈도우즈, 맥 OS X, 리눅스에서 사용할 수 있습니다. 프리 파스칼은 델파이에서 확장된 오브젝트 파스칼 프로그래밍 언어를 지원하는 것 뿐만 아니라, 델파이에서 사용되는 강력한 기능의 라이브러리나 클래스들도 함께 이용할 수 있습니다. 델파이 사용자에게 잘 알려져 있는 System, SysUtils, StrUtils, DateUtils, Classes, Variants, Math, IniFiles 그리고 Registry 등의 유니트들도 있으며, 이것들은 프리 파스칼이 동작하는 모든 플랫폼 상에서 동작 합니다. 그 외에도 프리 파스칼에는 Windows, ShellAPI, BaseUnix, Unix, 그리고 DynLibs 처럼 특정 운영체제를 위한 유니트들도 준비되어 있습니다. 프리 파스칼 런타임 라이브러리(RTL)는 이 유니트들을 모아놓은 커다란 라이브러리 입니다.

라자루스는 프리 파스칼용 통합 개발 환경(IDE)을 제공하는 오픈 소스 프로젝트 입니다. 프리 파스칼로 개발 되었으며, 문법 강조가 가능한 코드 에디터와 직관적인 폼 디자이너를 가지고 있습니다. 라자루스가 사용하는 라자루스 컴포넌트 라이브러리(LCL) 은 델파이의 비주얼 컴포넌트 라이브러리(VLC) 과 높은 호환성을 가지고 있으며 VCL 컨트롤과 마찬가지로 폼이나 버튼, 텍스트박스 등을 제공 합니다. 이 컨트롤들을 적절하게 배치하여 그래픽 사용자 인터페이스(GUI)를 가지는 어플리케이션을 작성할 수 있습니다.

프리 파스칼과 라자루스는 파스칼 코드로 작성 되어 있습니다. 프리 파스칼 컴파일러와 라자루스 뿐 아니라 RTL 이나 LCL의 모든 유니트들의 소스 코드는 완전히 공개되어 있습니다.

프리 파스칼과 라자루스는 델파이와 마찬가지로 일반적인 프로그래밍 툴 입니다. 이 의미는 다음과 같은 폭 넓고 다양한 프로그램을 개발하는 데 사용할 수 있다는 의미 입니다.


콘솔 어플리케이션

콘솔 어플리케이션은 GUI를 가지지 않습니다. 그 대신 일반적으로 콘솔상에서 실행되며 입력과 출력 모두 콘솔을 통해 이루어지게 됩니다. 콘솔은 윈도우즈 에서 보통 커맨드 프롬프트 윈도 라고 불리며 OS X나 리눅스에서는 터미널 윈도라고 불립니다. 콘솔 어플리케이션으로는 윈도우즈의 FC (파일비교:file compare)나 유닉스의 cd, cp 같은 작은 유틸리티를 예로 들 수 있습니다. 콘솔 어플리케이션은 GUI가 없지만 다른 프로그램이나 배치파일 (유닉스/리눅스에서는 셸 스크립트) 에서 실행될 수 있는 강력한 처리 계통 입니다. 프리 파스칼 컴파일러 및 함께 포함된 유틸리티들은 모두 콘솔 프로그램이며 따라서 콘솔이나 배치파일, 또는 라자루스 IDE 내에서 실행시킬 수 있습니다.

콘솔 어플리케이션은 간단한 텍스트 에디터와 프리 파스칼 컴파일러 만으로도 개발할 수 있으며 굳이 라자루스를 사용할 필요는 없습니다. 그러나 라자루스 IDE 상에서 콘솔 어플리케이션을 작성한다면 보다 쉽게 소스 코드를 편집하고 컴파일을 할 수 있습니다.

동적 링크 라이브러리

동적 링크 라이브러리는 컴파일된 함수의 집합이며, 다른 프로그램으로부터 호출할 수 있습니다. 그 명칭에서 알 수 있듯이, 이 라이브러리는 실행 파일이 컴파일 될 때 링크할 필요가 없으며, 실행시에 호출할 수 있습니다. 윈도우즈에서 이 라이브러리 파일은 .dll (dynamic-link library 또는 DLL) 이라는 확장자를 가집니다. OS X 에서의 확장자는 .dylib (dynamic shared library) 이며, 리눅스에서는 .so (shared object library) 라는 확장자가 붙습니다. 동적 링크 라이브러리는 일반적으로 다른 프로그램에 새로운 기능을 추가 하거나, C나 C++같은 언어에서 호출될 라이브러리를 만들거나, 아주 큰 프로젝트에서 각 프로그래머들이 기능을 분담해 개발하기 위한 용도로 사용됩니다. (역자 주: 마지막 문단은 "다른 개발자의 발가락을 밟지 않게 하기 위해 사용된다"는데... 이 표현을 우리말로 맛깔스럽게 옮기기가 쉽지 않네요. ㅠㅠ). 윈도우즈 자체도 수백개의 DLL로 구성되어 있으며, OpenOffice.org 같이 규모가 큰 어플리케이션도 마찬가지 방법을 쓰고 있습니다.

콘솔 어플리케이션 개발과 마찬가지로 동적 링크 라이브러리도 간단한 텍스트 에디터와 프리 파스칼 컴파일러 만으로 개발할 수 있습니다. 물론 라자루스 IDE 상에서도 동적 링크 라이브러리의 프로젝트를 생성해 개발할 수 있습니다.

윈도우 환경에서 DLL은 복잡하고 불안정하다는 별로 좋지 않은 평을 듣고 있습니다. 이것은 종종 DLL과 연관성을 갖는 대신 DLL 자체가 설치되는 방식과 더 관계가 있습니다. 실제로 DLL과 정보를 교환할 때는 표준, 또는 특정 언어에 종속적인 객체나 구조체가 아닌 간단한 데이터 타입을 넘겨 주어야 하는데, 이를 위해 프로그래머는 매우 세심한 주의를 기울여야 합니다. 물론 이것을 잘 해낼 수 있다면 보다 좋은 결과를 얻을 수 있고 프로그램은 안정적으로 동작 할 것입니다.

GUI 어플리케이션

우리가 매일 사용하는 대부분의 프로그램은 GUI 어플리케이션 입니다. 워드 프로세서, 웹 브라우저, 스프레드쉬트, 그리고 많은 개발 툴들이 그러합니다. 라자루스와 델파이는 완전한 기능을 가지는 GUI 어플리케이션의 대표적인 예 입니다. 라자루스에서 GUI 어플리케이션을 개발할 때는, 단지 파스칼 코드를 유니트에 적어주는 것 외에도 비주얼 컨트롤들, 예를 들면 버튼이나 텍스트 박스 등을 이용해 폼을 디자인 할 수도 있습니다. 델파이와 마찬가지로 라자루스의 폼 디자인 역시 직관적입니다. 컨트롤들의 속성(property)는 IDE 또는 코드로 설정할 수 있습니다.

LCL 컨트롤들이 여러가지 플랫폼을 지원하고 있기 때문에, 이를 사용한 GUI 어플리케이션은 하나의 플랫폼 (예를 들면 윈도우즈) 에서 개발을 하더라도 폼의 디자인 또는 코드 한 줄 바꾸지 않고도 다른 플랫폼 (예를 들어 OS X 또는 리눅스) 로 컴파일 할 수 있습니다.

라자루스 아키텍쳐

라자루스 작성된 프로그램은 다음에 그린 아키텍쳐를 따른다:

Lazarus App Architecture.png

LCL 자체는 다음과 같은 아키텍쳐를 따른다:

LCL Architecture.png

LCL은 controls, forms, buttons 및 grids 와 같은 플랫폼에 독립적인 유닛을 가지고 있으며 스스로는 동작할 수가 없다. 이들은 추상적 계층으로 구현부가 필요하다. LCL은 후처리 장치나 "widgetset"(win32, gtk, qt, carbon, cocoa, ...) 과 통신하는 서로 다른 LCL 인터페이스를 제공한다. 후처리 장치는 패키지 LCL을 사용하여 간단히 컴파일 되고, 처음 추가 되는 것 중의 하나로서 "interface" 유닛을 프로그램에 추가한다. 라자루스 IDE로 어플리케이션을 작성하게 되면 이것은 자동적으로 수행이 된다. 후처리장치는 컴파일 시간에 선택되어지며 런타임에 변화될 수는 없다.

더 볼 것