델파이 언어는 Object Pascal 이라는 객체지향 파스칼 언어에 해당합니다.
정확히는 Object Pascal 형의 언어가 되는 격 입니다 (코드기어 즉, 볼랜드 측에서는 델파이 랭귀지 라고 호칭합니다)
C 에서도 C 와 C++ 이 존재 하듯이, Pascal 역시 Object Pascal 이 C++ 에 해당하는 구조라 하겠습니다.

Pascal 의 경우는 C 와 달리 type casting이 매우 정확 해야 하며, 이로 인해 유연성이 C 에 비해 많이 떨어 지는 편 입니다.
그로 인해 델파이 에서는 그런 문제들을 위해 다양한 포인터를 지원하고 이로 인해 C 나 C++ 로 만든 DLL 과도 완벽한 호환이 가능하고 재사용이 가능합니다.

문법에 있어서는 C 이전에 나온 언어라 C 나 C++ 과 비슷한 면도 있고 다른 면도 있습니다.
일례로 , 단순한 코드만 보더라도 C 와는 다른 부분이 있습니다.

void exampleFunc(int input1, int*output1)
{
    int retVal = input1 * 100;
    *output1 = retVal;
}

procedure exampleFunc(input1:integer; var output1:integer;);
var
    retVal : integer;
begin
    retVal := input1 * 100;
    output1 := retVal;
end;

코드상으로 보면 두 언어의 차이는 좀 더 파스칼이 길고 복잡해 보이는 면이 있을 것 입니다.
하지만 일반적으로 VisualBasic 과 비슷한게 아니냐는 오해를 살수 없다는 점은 , 파스칼은 C 나 C++ 과 같이 포인터의 사용이 비교적 자유롭게 사용이 가능하고(C 나 C++ 에 비하면 매우 제한적이긴 합니다), 컴파일 속도가 매우 빠르다는 장점이 있습니다.

또한 델파이 특성으로 static build 시 , MFC 에 비해 훨씬 적은 바이너리 크기를 제공할 수 있는 장점이 있습니다.

또한 이 외에도 MFC 에 해당하는 VCL 라이브러리를 안쓰고 Windows32.API 함수만을 이용해서 윈도우를 만들고 제어 할 수 있습니다. 즉, Win32.API를 사용한 C 바이너리와, win32.API를 사용한 Pascal 바이너리는 거의 동일한 크기로 만들어 진다는 것등으로 인해 결과물에 있어서는 크게 차이가 없을 수 도 있다는 점 입니다.

하지만 개인적으로는 MFC 와 VCL 을 출력바이너리 크기 및 성능을 비교해 본다면 일단 저로서는 VCL에 손을 들고 싶습니다.

서로의 장단점은 있겠지만 C 와 C++ 에 비해 더 빠른 개발시간을 가질 수 있고, IDE 를 통한 윈도우 컴퍼넌트 디자인 등의 빠른 이점 으로 인해 모르는 분들에게는 다음과 같이 설명을 해 드리는 편 입니다.
Visual Studio 에 있는 Visual Basic 의 편리한 기능들을 C++ 에 적용한 듯한.
사실 델파이는 그냥 델파이 입니다만 국내에서는 C 와 C++ 은 알아도 델파이를 아는 경우는 좀 적은 편이라 설명을 하자면 이런 방법 말고는 없는 것 같더군요.

제목에서는 델파이 그 이전에 파스칼 이라고 한 이유는 C++ 을 하려면 적어도 C 문법은 알아야 하기에 쓴 제목이라 하겠습니다. 델파이를 쓰려면 파스칼 문법을 알아야 합니다.
파스칼 문법은 C 에 비해 매우 정확한 데이터 형의 교환을 해야 하며 , 포인터 조차도 C 처럼 typecast 만으로는 재정의 사용이 어렵습니다.
하지만 파스칼 문법을 통해서 얻을 수 있는 장점이라면 정확한 데이터형의 정의로 인해 남용되는 포인터 캐스팅을 줄일 수 있는 습관과 메모리상에 존재하는 데이터의 다른 방법으로서의 접근 등을 암 으로서 좀 더 넓은 시야를 가질 수 있다는 점 입니다.

또한 델파이에서 되는건 C와 C++ 에서도 되는 것 이고.
C 와 C++ 에서도 되는건 델파이에서도 되는 것이라는 점 입니다.

문법상이나 소스의 변환의 어려움 등으로 인해 GCC 나 Visual-C++ 등으로 만들어진 DLL 을 델파이에서 import 해서 얼마든지 쓸 수 있으며 (보통 call type 을 저는 stdcall 로 추천하는 편 입니다), 이를 통해 다양한 언어로 만들어진 복합적인 프로그램을 생산 해 내어 기능별 분리를 통해 다양한 작업을 할 수도 있습니다.

또한 x86 에 한하는 점 이겠습니다만, 인라인 어셈블러의 사용에 대한 편의성으로 인해 오히려 다른 언어로 만들어진 어플리케이션 보다 더욱 더 빠른 퍼퍼먼스를 내는 경우도 있습니다.

이전에 인기를 끌었던 사사미2K, KMplayer 등은 모두 델파이로 만들어진 미디어 재생기 이며, 이 미디어 재생기들을 통해 이미 다른 언어로 만들어진 플러그인과의 조합의 가능성 등은 입증된지 오래 전 이라 하겠습니다.

연령으로 따지면 C 와 C++ 보다 더 오래된 언어 이고 , 좀더 고차원적인 이유로 마치 베이직을 쓰는 듯한 느낌이 들 수도 있지만 그만큼 사용이 편리하고 C 와 C++ 을 함께 사용할 경우 더욱 더 파워풀 해 지는 언어라 할 수 있겠습니다.

다만 델파이와 C/C++ 을 함께 사용하다 보면 문법적인 차이점으로 인해 혼용되어 서로 오류를 만드는 경우도 있긴 합니다만 이는 과도기일 뿐 두 언어에 대한 상이한 차이점에 대한 제대로 된 이해를 거치게 되면 그로 인해 생기는 시너지와 파워는 매우 놀랍다고 할 수 있다고 생각 됩니다.

또한 상용 어플리케이션 개발에도 전혀 지장이 없는 TurboDelphi2006 explorer 버젼을 CodeGear 사에서 무료로 제공하고 있는 편의성으로 인해 누구나 Windows 개발자가 되 볼 수 있는 기회가 있다는 점도 좋은 점 이라 하겠습니다.
물론 GCC 와 같은 GNU-GPL 컴파일러가 있듯이 델파이도 이와 비슷한 FPC (Free Pascal Compiler) 가 존재 하고 있어서 컴파일러에 있어서는 C 에 못지 않게 선택권을 가질 수 도 있습니다.
FPC 같은 경우는 x86 만이 아닌 ARM 계열도 지원하므로 좀 더 넓은 플랫폼 개발 영역을 가지는 장점도 있습니다.

다만 아쉬운 점은 C/C++ 로 만들어진 LIB 과 델파이로 만들어진 LIB 이 서로 호환되지 않는 점이 앞으로의 개선사항에 서로 포함되었으면 하지만 .. 현실성은 매우 떨어져 불가능 할 것이란 게 아쉽다고 할 수 있곘습니다.

다음부터는 간단한 예제를 통해 C와 C++ 에 익숙한 사람들인 경우 더욱 더 빨리 델파이에 대해 이해하고 습득 할 수 있도록 강의를 준비 해 보도록 하겠습니다.

델파이에 대한 좀 더 자세한 정의는 위키피디아의 정보를 확인 해 보시는 것을 추천 드리는 바 입니다.

감사합니다.

Posted by 견족자K rageworx
  • Favicon of http://gunnih.tistory.com BlogIcon gunnih
    2009.05.10 17:00 신고

    오홋+_+ 쏙쏙 들어오기 시작했어요!! ㅋㅋ

  • Favicon of http://manofpro.tistory.com BlogIcon 금메달.아빠
    2010.08.31 00:02 신고

    좋은 정보 감사합니다. 재미있게 읽고 엮인글(트랙백)을 추가하였습니다.

    행복한 하루 되세요.

    • Favicon of https://rageworx.pe.kr BlogIcon 견족자K rageworx
      2010.08.31 23:38 신고

      저역시 같은 이유로 아직도 잘 쓰고 있죠. 저는 중학교때 부터 터보파스칼을 했으니 ... 거의 20년 정도 ? 사용하고 있는거군요 ... 오래 되긴 한듯..

    • Favicon of http://manofpro.tistory.com BlogIcon 금메달.아빠
      2010.09.01 00:21 신고

      20년 정도 델파이를 쓰셨다면 더이상 설명이 필요없으시네요. 고개가 절로 숙여 집니다.
      델파이를 보면 볼랜드 기술자들의 창의력이 엿보이고 감탄해 마지 않습니다. 언어 개발의 전후관계까지는 모르지만 최근 언어는 모두 델파이를 따라 모방한 느낌이 들 정도니까요.
      앞으로도 좋은 글 기대합니다. 행복한 하루되세요.

  • Favicon of http://manofpro.tistory.com BlogIcon 금메달.아빠
    2010.09.02 07:32 신고

    새로운 환경에서도 등불을 끄지 말고 밝혀 주세요.
    블로그 방문 감사합니다. 행복한 하루되세요.