Q&A

  • 비쥬얼베이직과 델파이의 비교를 좀 부탁드려요 ^^
전 비쥬얼 베이직을 사용하는 개발자입니다. 필요에의해 델파이를 사용하게 되었습니다.

그런데 들리는 말에 비쥬얼 베이직과 델파이가 많이 흡사하다는데요 크게 어떤것들이

다른고 비슷한점이 또 어떤것들이 있는지요 델파이를 공부해 오셨던 고수님들의 조언과

도움 부탁드립니다. ^^

1  COMMENTS
  • Profile
    종이학 2000.12.29 19:11
    VB와 델파이를 비교합니다. 파워빌더까지같이...



    ----------------------------------------------------------------------------------------

    컴파일 속도:

    ----------------------------------------------------------------------------------------

    전반적인 컴파일 속도는 3.0비젼에 비해 4.0버젼이 느리졌다.

    그러나 체감 속도를 비교했을 때 VB나 PB보다 빠른 것으로 평가된다.

    실제로 델파이는 순수한 컴파일러방식 이기 때문에 다른 RAD계열의 툴보다 빠른 속도를 보인다.



    ----------------------------------------------------------------------------------------

    실행파일크기:

    ----------------------------------------------------------------------------------------

    기장 기본적인 폼을 이용해 창(윈도우)를 화면에 출력하는 형태의 프로젝트를 생성할 경우

    (단, 컴파일 옵션에서 디버깅 정보를 제외하고 컴파일한 후에 생성된 실행파일의 크기를 기준)

    델파이는 별도의 런타임(Run-Time) 라이브러리가 필요하지 않으므로 275KByte이다.

    하지만 VB는 생성된 프로젝트 크기16,384Byte 에다 배포용 해당 컨트롤까지 모두 복사해야 하므로

    기계어방식으로 컴파일하든 인터프리터방식으로 컴파일하든 2MByte의 크기가 넘게 된다.

    PB도 VB와 비슷하다. 배포해야할 DLL(PBVM60.DLL) 파일의 크기가 3MB가 넘는다.



    ----------------------------------------------------------------------------------------

    Win32 API 지원:

    ----------------------------------------------------------------------------------------

    델파이4.0은 Window API를 완벽하게 지원한다.

    이점 때문에 C언어에서 파스칼로 포팅이 용이하다.

    VB은 포인터와 유니온(Union)의 부재로 인한 모든 API를 100% 사용은 불가능하다.

    AddressOf 연산자를 이용해 CallBack 함수의 사용이 5.0버젼부터 지원되지만

    6.0버젼에서는 쓰레드 관련 API에서 문제가 보이고 있다.

    반면에 Win32 타입 라이브러리를 이용하면 아주 손쉽게 API를 사용할 수 있기도 하다.

    PB는 포인터가 없어서 모든 API와 100% 호환이 불가능하다.

    Win32 API를 사용하는데 문제는 없지만 RECT와 같은 구조체를 자체적으로 지원하지 않아서

    사용자가 직접 정의해 사용해야 하는 불편함이 있다.







    ---------------------------------------------------------------------------------------------------

    객체지향 델파이4.0 VB6.0 PB6.5

    프로그래밍 기법

    ----------------------------------------------------------------------------------------------------

    객체의 캡슐화 메뉴, 폼(윈도우). 모든 폼과 컨트롤에서 메뉴, 윈도우, 데이터 내의

    속성과 메소드와 제한자 각 칼럼, 트랜잭션 등

    설정 가능. 유무형의 모든 요소가

    객체로서 관리되고 각각의

    속성과 메소드가 있다.

    -----------------------------------------------------------------------------------------------------

    다형성 지원 메소드 오버라이딩/ 상속에 의한 다형성은 클래스 라이브러리,

    오버로드와 가상 메소드, 약간 독특하게 지원된다. 캡슐화, 함수 오버로드,

    다이나믹 메소드 등을 베베의 상속은 다단계 계승, 다형화 메시징

    모두 잘 지원한다. '구현에 의한 상속' 등을 잘 지원한다.

    이기 때문에 인터페이스만을

    상속하며, 정확한 상속이

    이루어지지 않음에도 불구

    하고 다형성이 한정적인

    형태로 지원된다.

    -----------------------------------------------------------------------------------------------------

    상속성 지원 기본적으로 단일상속은 기본적인 상속의 개념은 상속성 완벽하게 지원.

    지원하지만 다중상속은 포함되어 있지만

    지원되지 않는다. 사용자가 사용할 때는

    극히 제한적으로만 사용

    가능. 이는 인테페이스만

    상속이 이루어지기 때문이며,

    다형성을 구현하기 위해

    지원되는 상속이니만큼

    완벽한 상속은 아니다.

    -----------------------------------------------------------------------------------------------------







    포인터지원:



    델파이4.0은 자체적인 지원으로 기존의 DB툴을 사용하지 않고

    단지 링크드리스트(Linked List)나 더블 링크드 리스트(Double Linked List) 같은

    자료구조용 알고리즘을 이용한 데이터베이스 구축이 가능하다.

    이것으로 인해 게임 제작이시 유용성이 크다.

    VB는 자체 포인터 개념이 없다. MS사는 VB를 최대한 안정성에 역점을 두고 제작했기 때문에

    포인터를 제공하지 않았다고 한다. PB도 포인터를 사용할 수 없다.

    그러나 구조체나 배열을 이용하면 어느 정도 포인터를 대신한 역활이 가능하다.







    인터넷 관련 컴포넌트 지원: TseverSocket

    -----------------------------------------------------------------------------------------------------

    언어 SOCKET FTP SMTP POP3 NNTP HTTP UDP

    -----------------------------------------------------------------------------------------------------

    델파이4.0 TclientSocket, TNMFTP TNMSMTP TNMPOP3 TNMSMTP TNMSMTP TUDP



    비베6.0 Winsock 컨틀롤 Ient 컨트롤 Winsock 지원불가 지원불가 Ient컨트롤 UDP컨트롤

    컨트롤을

    RFC 815에

    맞게 변형

    해야함.



    PB6.5 Power site Power site Power site Power site Power site Power site Power site

    -----------------------------------------------------------------------------------------------------





    -델파이가 좋은 점



    멀티-티어(Multi-Tier) DB 아키텍처 마이다스(MIDAS):

    100개이하의 DB클라이언트를 관리하는 경우 C/S 모델의 2-티어 만으로로 층분하겠지만, 1천개, 또는 1만개 이상의 클라이언트가 접속하면 병목현상이 일어난다. 델파이에선 미들서버를 통해 DB서버의 부하를 줄이고 자원을 효율적으로 관리함으로서 보다 많은 클라이언트의 연결을 가능하게 하는 마이다스 아키텍처를 제공한다. 마이다스는 DCOM,CORBA, OLEnterprise, Socket 등 많은 프로토콜을 제공하며 부분적으로 균형과 실패 복구(Fail-over) 기능을 지원하다.



    CORBA 지원:

    개발환경에서 CORBA 지원이 잘 통합되어 있는 유일한 개발 툴(RAD 툴中)이다. CORBA 객체와 멀티-티어를 위한 DB CORBA 서버 객체(Data Module)를 생성하는 위저드를 제공한다.



    인라인 어셈블리(Inline Assembly):

    소소코드에 어셈블리어를 포함시켜 컴파일할 수 있기 때문에 속도를 원하거나 보다 직접적인 제어가 필요한 부분은 에셈블리어를 사용해서 최적화할 수 있다. 델파이 런타임 라이브러리의 많은 부분이 인라인 어셈블리로 코딩되어 있어서 델파이의 응용프로그램은 그만큼 빠르다.



    순수한 컴파일러방식:

    순수한 컴파일러 방식을 사용하기 때문에 VCL(Visual Component Library)이 없이도 자체 언어와 Window API 함수만으로도 윈도우용 응용프로그램을 제작할 수 있으며 또한 C언어와 유사한 점이 많아서 C로 작성된 프로그램을 파스칼로 포팅이 가능하다.



    독자적인 실행 파일:

    별도의 배포용 동적연계라이브러리(DLL: Dynamic Linked Library)가 없이 실행 파일만으로 완전 동작을 한다. 다만, 데이터베이스사용시 볼랜드 데이터베이스 엔진(BDE)을 사용한 경우 실행 파일과 함께 BDE를 배포해야 한다.



     



    -델파이가 부족한 점:



    한글지원이 없다.

    소스코드에서 문제가 없는 한글이 실행 파일로 가면서 문제가 발생 될 수도 있으며



    변수나 속성등을 한글로 사용할 없는다. 한글 처리가 취약한 편이다.







    자체분석/설계 모델링 툴이 없다.

    최근 들어서 대부분의 개발툴은 자신이 작성한 응용프로그램의 분석,설계에 관한 모



    델링 툴을 지원하고 있다.







    로컬 SQL은 다음의 경우 테이블(Table)의 수정이 불가능하다.

    3개 이상의 테이블을 조인(Join)한 경우.



    UNION,INTERSECT 또는 MINUS를 사용한 경우.



    서브 쿼리(Sub Query)를 사용한 경우.



    색인이 없는 데이터베이스의 필드를 Order By 구문에 사용한 경우.