델파이

델파이(Delphi)는 윈도우즈, 리눅스, iOS, 안드로이드에서 작동하는 프로그램 제작에 이용되는 통합개발환경(IDE: Integrated Development Environment)이자 언어이다. 기본적인 문법은 파스칼 문법과 같지만 파스칼에 여러 기능들이 추가되어 현재는 델파이라는 언어로 존재한다. 원래는 볼랜드가 개발하였으나 지금은 엠바카데로사에서 소유하여 개발하고 있다.

델파이 컴파일러의 최신 버전은 엠바카데로 RAD 스튜디오에 포함되어 있다.

역사 
델파이는 볼랜드사로 이직한 엔더슨 헤즐버그가 개발한 터보 파스칼에서 시작되어 볼랜드 파스칼로 이어졌으며, 1995년에 RAD 개발 환경을 갖춘 델파이로 다시 탄생하였다. 이후 1997년에 볼랜드로부터 개발툴 사업 부문이 코드기어로 분사하였고, 이를 엠바카데로에서 인수 후 IDERA가 엠바카데로를 인수 하였으나 엠바카데로는 개발툴에 전념하기로 하였고, 현재 버전업을 계속하고 있다. 오브젝트 파스칼 혹은 델파이 언어를 바탕으로 쓴다. 델파이는 윈도우 아래에서 모든 부분을 프로그래밍할 수 있는 강력한 언어로 높은 생산성과 간결한 코드가 대표적인 장점이고, C++과 비슷한 수준의 저수준 시스템 프로그래밍도 가능하다.

엔더슨 헤즐버그는 볼랜드사의 수석 엔지니어(Chief Engineer)였으며, 터보 파스칼을 개발, 1996년에 마이크로소프트로 이직하였다.

버전 
 볼랜드 델파이 1
 볼랜드 델파이 2
 볼랜드 델파이 3
 볼랜드 델파이 4
 볼랜드 델파이 5
 카일릭스(Kylix)
 볼랜드 델파이 6
 볼랜드 델파이 7
 볼랜드 델파이 8
 볼랜드 델파이 2005
 볼랜드 델파이 2006
 코드기어 델파이 2007: 인라인 함수 지원. 프랜드 차단 지원.
 엠바카데로 델파이 2009: Generics 지원. 유니코드 지원. 익명 메서드 지원.
 엠바카데로 델파이 2010: RTTI(Run Time Type Infomation) 강화, Interface 연산자 As, Is 추가, 지연된 라이브러리(DLL, Package)로딩 기능 추가
 엠바카데로 델파이 XE
 엠바카데로 델파이 XE 2: Osx(32bit), iOS(아이폰 OS) 개발 지원. 마이크로소프트 윈도우(32/64bit) 개발 지원
 엠바카데로 델파이 XE 3: Record Helper 지원, iOS(아이폰 OS) 개발 지원 중단
 엠바카데로 델파이 XE 4: Delphi ARM optimized compiler 추가 및 iOS(아이폰 OS) 개발 지원
 엠바카데로 델파이 XE 5: Android 2.2 이상 버전의 개발 지원
 엠바카데로 델파이 XE 6: 엡터더링(로컬 wifi환경에서 이기종간의 통신을 지원) 컴포넌트, 윈도 썸네일 툴바 API 지원
 엠바카데로 델파이 XE 7: Parallel Programming Library, Blutooth LE 지원, 앱터더링의 원격 확장
 엠바카데로 델파이 XE 8: GetIt 패키지 매니져 도입, 네이티브 HTTP 클라이언트, Bluetooth Classic 지원
 엠바카데로 델파이 10 시애틀: 윈도우 10용 애플리케이션 개발 지원, Weak / Unsafe Interface References 도입
 엠바카데로 델파이 10.1 베를린: Windows 32/64-bit(High DPI 지원), OSX, iOS, Android (ARM, MIPS and X86 processors) 지원
 엠바카데로 델파이 10.2 도쿄: LLVM 기반 리눅스 컴파일러 지원
 엠바카데로 델파이 Starter: VCL(Windows 32bit) 기능으로 제한된 무료 개발도구
엠바카데로 델파이 10.3 리오: 델파이 인라인 변수 선언, C++17 지원
엠바카데로 델파이 커뮤니티 에디션: 스타터(Starter) 보다 확장된 기능을 제공하는 무료 개발도구 (사용 제한 있음)

기능 
한 가지 중요한 장점은 기반 프레임워크로 뛰어난 객체지향 프레임워크인 비주얼 컴포넌트 라이브러리(VCL)를 사용하고 있다는 점이다. VCL은 델파이1에서부터 최신 버전인 델파이 XE2에 이르기까지 열다섯 개의 버전들을 거치는 동안, 내부의 실제 코딩은 수없이 변했지만 잘 설계된 클래스 구조 덕분에 프로그래밍 인터페이스는 큰 변화없이 계승되어 왔다. 이로 인해 상/하위 호환성이 아주 뛰어나다.

이런 이유로 마이크로소프트 닷넷을 지원하게 된 최신 버전에서도 비주얼 베이직이 VB.NET으로 업그레이드되면서 겪은 대대적인 프로그래밍 방법/스킬의 변화가 없으며, 다른 최신 기술의 적용에도 기존의 프로그래밍 방식/인터페이스를 최대한 재활용함으로써 개발자들이 델파이에 적용된 새로운 기술들을 배우는 과정에서 겪게 되는 어려움인 러닝 커브(learning curve)가 대단히 작다.

델파이 2007에서 추가된 VCL for WEB은 AJAX를 지원하고 있으며, 또한 델파이 2007에서부터는 공식적으로 윈도우 비스타를 지원한다. 델파이 2009에서부터는 윈도우 비스타지원 강화, 유니코드, 제네릭 / 익명의 메소드(클로져)를 지원한다.
2009 버전에 이르러 기존 방식의 델파이.NET은 단종되고 새로운 방식의 델파이 프리즘이 그 뒤를 잇게 되었다.

2009년 8월 25일 발표된 델파이 2010 버전은 윈도우 7 운영체제를 최초로 정식으로 지원하는 개발 도구로서 멀티터치와 제스처를 지원한다. 또한 코드 포매터, 서브버전 통합, IDE 인사이트 등의 IDE 기능 개선이 많이 추가되었다.

2010년 9월 2일 발표된 델파이 XE 버전은 Azure, AWS 클라우드 시스템 지원과, REST 지원이 추가되었다.

2011년 9월 발표된 델파이 XE 2 버전은 OS X, iOS 개발 지원과 DirectX와 OpenGL을 사용하는 새로운 UI 프레임워크인 FireMonkey 가 추가되었다.

2012년 9월 발표된 Delphi XE3 버전은 일반 타입 및 구조체를 확장할 수 있는 Record Helper가 추가 되었으며 FireMonkey 프레임을 통한 iOS 개발 지원이 중단되었다. iOS개발 지원은 Mobile Builder 프로젝트로 이관 되어. XE4버전에서 통합된다. 윈도 8 개발은 지원되지만 메트로 UI에 최적화되어 있지 않으며, 윈도 8 RT는 지원되지 않는다.

2013년 4월 발표된 델파이 XE4 버전은 델파이 프리즘의 지원이 중단되었고, iOS개발 지원 위하여 LLVM기반의 Delphi ARM optimized compiler가 추가되었으며 ARC를 지원한다.

2013년 9월 발표된 델파이 XE5 버전은 Android(v2.2 / ARM) 개발 지원이 추가되었다.

2017년 3월 발표된 델파이 10.3 리오 버전은 새로운 문법 '델파이 인라인 변수, 타입 추론' 등의 기능을 제공한다.

관련 소프트웨어 
 RAD 스튜디오: 엠바카데로는 델파이, 델파이 프리즘, C++빌더로 이루어진 개발 도구가 모여있는 RAD 스튜디오를 판매한다.
 RAD PHP: 엠바카데로의 PHP 개발 도구
 델파이 포 PHP
 델파이 프리즘
 오픈소스 기능
 프리 파스칼
 라자루스

델파이 언어의 특징 

델파이는 마이크로소프트 윈도우 기반하에서 모든 부분을 프로그래밍할 수 있는 강력한 언어로 높은 생산성과 간결한 코드가 대표적인 장점이며 C 이외에도 저수준의 시스템 프로그래밍이 가능한 소수의 언어이다. 델파이의 일부로 취급되는 경향이 강해 개발사가 주도적으로 언어의 변화를 이끄는 특징이 있다.

또 현존하는 네이티브 언어(native language) 중 가장 빠른 컴파일 속도도 델파이만의 장점이다. 대표적인 개발 도구로 볼랜드/코드기어의 델파이, 카일릭스가 있다. 이외에도 프리 파스칼도 고유한 오브젝트 파스칼 외에 델파이를 컴파일할 수 있도록 지원한다. 델파이는 향후 멀티플랫폼을 비전으로 삼고 윈도 운영 체제 이외에 다른 플랫폼들을 지원하는 방향으로 개발이 진행되고 있다. 현재 개발이 가능한 플랫폼으로는 OS X과 iOS, 안드로이드가 있다.

이전의 오브젝트 파스칼과의 차이 
델파이 컴파일러의 지속적인 언어 확장을 통해 이전의 오브젝트 파스칼(터보 파스칼)의 제한을 서서히 벗어나기 시작하며 델파이에서 사용하는 언어를 오브젝트 파스칼이 아닌 델파이 프로그래밍 언어로 부르게 된다.

아래는 이전의 오브젝트 파스칼에서 지원하지 않으나 델파이 컴파일러가 지원하는 특징이다.

 멀티 플랫폼(윈도 32/64비트, OSX, iOS, 안드로이드) 지원
 클래스 내의 선언부
 클래스 사이의 친구관계 막기
 최종 상속자
 레코드가 메소드를 포함
 인라인 함수
 연산자 오버로드
 for 문의 반복자 사용
 제네릭 프로그래밍 지원
 유니코드(UTF-16) 지원
 익명의 함수 지원
 Helper를 통한 타입 확장

같이 보기 

 오브젝트 파스칼
 프리 파스칼
 라자루스

각주

외부 링크 
 

 
객체 지향 프로그래밍 언어
파스칼 (프로그래밍 언어)
파스칼 컴파일러
파스칼 소프트웨어