Q&A

  • 참으로 궁금합니다.
현재 저는 Delphi를 사용하고 있습니다.



델파이를 사용하면서... 원하는 기능 구현은 거진 전부다 하고 있거든요...



근데...



C++ Builder 는 어떤지요...



Delphi 와 C++ Builder 의 차이점을 알고 싶거든요...



델파이는 파스칼.... C++ Builder 는 말 그대로 C++ 을 사용하는거 가튼데..



언어에서 말고 큰 차이점이 무얼까요?



어느용도에선 장단점이 있을듯 한뎅..... 점 자세한 설명점 부탁드립니다.

2  COMMENTS
  • Profile
    박지훈.임프 2001.09.20 11:09
    임프랍니다.



    간단히 한마디로 말하면, 델파이와 C++Builder의 차이는 언어의 차이 이상도 이하도 아닙니다.

    하지만 그 언어의 차이가 크지요.



    물론 어느 언어에 더 익숙한 사람인가, 기존 프로젝트가 파스칼로 짜여져 있는가 혹은

    C++로 짜여져 있는가에 따라 개인적인 선호나 개발 퍼포먼스가 달라질 수 있습니다.



    하지만, C++과 파스칼은 "언어가 다르다"라고 한마디로 말하기엔 내재적인 차이가 너무

    큽니다. 하나씩 나열해보지요.



    일단, C++은 표준 지향적인 언어입니다. 반면에 파스칼은 표준이라고 할 만한 것이 없지요.

    C++ 컴파일러 개발사는 새로운 버전을 내놓을 때마다 ANSI/ISO 스펙을 따르고 있느냐

    아니냐 하는 시비를 받습니다. C++Builder를 사용하는 볼랜드쪽 개발자들이 Visual C++

    개발자들을 향해서 개발 퍼포먼스 외에 또한가지 공격하는 것이 Visual C++은 비표준이라는

    겁니다.



    이런 표준이 있다는 점은, 장단점이 있는데, 장점은 새로운 문법이 신중하게 추가되고

    최초의 언어 설계 철학을 크게 벗어나지 않으므로 일부 표준을 따르지 않는 개발사 고유의

    스펙을 추가하는 외에는, 표준을 따르는 거의 대부분의 코드는 소스레벨에서 호환성을

    가진다는 것입니다. 실제로 Visual C++로 짜여진 모든 소스는 C++Builder에서 컴파일됩니다.

    단점은, 컴파일러 개발사가 새로운 언어 특징을 추가하면서 최초의 C++ 설계 철학을

    어기지 않도록 대단히 신중해져야 하고 기존의 문법에 항상 구속된다는 점입니다.



    반면 거의 표준에 구속되는 일 없이 컴파일러 개발사의 독자적인 판단으로 언어 스펙이

    추가되거나 변경될 수 있는 파스칼의 경우 아주 유연합니다. 하지만 지금 델파이로 작성한

    코드가 다른 어느 파스칼 컴파일러에서 컴파일될 수 있는지를 생각해보면, 어떤 측면에서는

    고립적이지요. 물론 델파이 외에 더이상 상용 파스칼 컴파일러가 나오지 않습니다만.



    표준 지향적인지 아닌지 외에 다른 차이점은, 언어의 기본 설계 방향에서 볼 수 있습니다.

    C++은 기본적으로 시스템 프로그래밍을 위해 설계된 C의 위에 OOP를 덧씌운 언어입니다.

    잘 아시다시피 C는 유닉스를 개발하는 과정에서 실무 차원에서 필요해서 개발 실무자에

    의해 만들어진 언어입니다. 그래서 사실 C는 언어 구조적으로는 실무에 꼭 필요한 특징들을

    제외하면 프로그래밍 언어로서의 예술성이랄까 구조성은 많이 떨어집니다.

    또한 설계시부터 기존의 C 프로그래머들을 끌어들이기 위해 철저한 하위 호환성을 가지고

    있기 때문에 C++의 설계 철학에도 시스템 프로그래밍적인 특징이 대단히 강합니다.

    함축적인 표현에 유연하고, 특히 포인터 연산에 대단히 강하지요.



    반면 파스칼의 경우엔 개발 실무자가 아닌 학자에 의해 만들어진 언어지요.

    개인적인 취향의 차이는 있겠습니다만, C++ 전문인 제가 보더라도 파스칼 코드는 구조화에

    대단히 많이 신경을 쓴 언어입니다. 반면 원래의 파스칼은 특별한 목적이 없는, 그냥

    범용 언어입니다. 시스템 측면에서 뛰어나지도 않고, 더 쉽지도 않고, 더 OOP적이지도

    않은, 그냥 범용 언어지요. 볼랜드에서는 과거 터보 파스칼에서부터 볼랜드 파스칼,

    그리고 델파이에 이르기까지 이러한 파스칼의 약점을 보완하기 위하여 수없이 새로운

    문법과 키워드들을 추가해왔습니다. 그리고 지금에 와서는, 못할 게 없는 대단히 강력한

    언어가 되었습니다.



    제가 개인적으로 생각하기에, C++과 오브젝트 파스칼은 모두 간략함이라는 특징을 가지고

    있습니다. C++은 코드의 간략함, 반대로 오브젝트 파스칼은 구조의 간략함을 주로 하고

    있습니다. 표현이 적절한지는 자신이 없습니다만.

    C++의 코드 간략함은 실무에서 최적화 가능성으로 나타납니다. 포인터를 능란하게 사용하는

    분이 작성한 C++코드는 그야말로 코드 레벨 최적화의 절정을 보여줍니다. 물론 이 경우

    가독성은 극적으로 떨어집니다만.

    반대로 오브젝트 파스칼의 구조 간략함은 실무에서 쉽게 배워서 쉽게 사용할 수 있다는

    점으로 나타납니다. 하지만 C++만큼의 코드 최적화 기회는 없습니다.

    웬만한 중급 수준이상 오르게 되면 더 이상의 코드 최적화가 안됩니다. 물론 여기서

    말하는 최적화란 아주 다른 방법을 도입하는 경우를 배제한, 같은 알고리즘으로 같은

    코드를 만들 경우를 말합니다. C++의 경우엔 배워도 배워도 끝이 없을 정도로 표현의

    한계가 끝이 없어보입니다.

    (어정쩡하게 C++을 공부하신 분의 반박은 사양합니다. 어쩌다보니 요 2,3년간 자바

    프로그래머들을 계속 만나고 있는데, C++ 공부하다 지쳐 자바로 넘어간 분이 하는

    "나도 한때는 C++에 한칼했다"는 말에 정말 신물났습니다.)



    델파이와 C++Builder의 컴파일러가 극에서 극에 이를 만큼 차이를 보이는 이유도 이때문입니다.

    C++코드는 대단히 유연한 문법으로 인해 파스칼보다 파싱이 훨씬 복잡합니다. C나 C++을

    조금이라도 배워보신 분이라면, 보는 사람 열받게 포인터들과 ? : 연산자 등등을 섞어가며

    비꼬고 틀어놓은 문장을 한번쯤은 보셨을 겁니다. 파스칼에서는 이런 표현이 안됩니다.

    C++의 이런 표현을 두고 좋지 않은 평을 하는 분들도 있고, 또 C++ 프로그래머 스스로도

    이런 문장이 과연 의미가 있을까 하는 회의를 품게 되기도 합니다.



    하지만 C/C++의 역사를 돌아보면 이런 비꼬인 문장이 괜히 보는 사람 열받으라고 만든

    것은 아니란 걸 알 수 있습니다. C는 원래 시스템 프로그래밍 언어로 설계된 것이고,

    경쟁 언어는 파스칼이나 베이직, 포트란 등이 아닙니다. 어셈블리지요. C는 처음부터

    어셈블리를 대체하기 위해 만들어진 언어였기 때문에 CPU 클럭을 하나 더 쓰느냐 마느냐

    혹은 메모리를 한번 더 할당하느냐 마느냐 하는, 지금 보기엔 대단히 사소할 수도 있는

    문제에 매달릴 수밖에 없습니다. 지금도 임베디드 프로그래밍을 하시는 분은 역시 마찬

    가지의 고민을 하고 계실 겁니다.



    예를 들어서요. 파스칼에서 사용하는 스트링, 원래의 파스칼에서 사용하던 쇼트 스트링 말고

    델파이2에서였던가 새로 도입된 안시스트링의 경우 말입니다. 범용적인 목적으로는 대단히

    최적화가 잘 되어있습니다. 범용 최적화를 위해 내부 코드가 모두 어셈블리로 되어있지요.

    그러니 기본 알고리즘이 동일하다면 누가 작성하더라도 상당히 좋은 성능이 나옵니다.

    하지만 제대로 작성한 C++ 코드에는 비교가 안됩니다. 물론 델파이에도 PChar형을 직접

    다루는 문자열 함수들이 별도로 있어서 이것들을 적절히 사용하면 표준 스트링을 사용했을

    때보다 성능이 상당히 좋아집니다만, C++의 표현력은 절대 못따라가지요.

    물론 이런 차이는 몇십 킬로바이트짜리 짧은 문자열에서는 별로 나타나지 않습니다만,

    몇백단위가 넘어가게 되면 성능차이가 느껴지게 됩니다.



    졸면서 썼더니 좀 앞뒤가 없군요.

    결론은, 저도 역시 많은 분들이 하는 말을 되풀이하게 됩니다.

    "C++과 파스칼 중 더 익숙한 것이 있다면 그것을 선택하라, 하지만 숙련도에 차이가 없다면

    시스템 프로그래밍을 하거나 퍼포먼스가 아주 중요한 경우가 아닌 한 파스칼을 하라"



    디비 프로그래밍을 전문으로 하실 분이 처음 시작할 개발툴로 C++Builder를 선택하는 것은

    바보짓입니다. 개인적으로 생각하기에 C++은 파스칼보다 배우는 시간이 두배 이상 걸립니다.

    또 최고의 성능을 내야하는 분야로 입문하시는 분이 델파이를 선택하는 것도 바보짓입니다.



    마지막으로 여기까지 끄적거린 것은, 공부하면서 찾아볼 수 있는 개발 리소스들.. 서적이나

    웹문서 등등을 고려하지 않은, 그야말로 언어 자체만을 비교한 것이란 것을 말씀드립니다.

    혹 C++Builder를 공부하거나 사용할 필요가 있으시다면 저희 사이트로 오십시오.

    http://www.bcbdn.com/



    그럼 이만...





    고양이 wrote:

    > 현재 저는 Delphi를 사용하고 있습니다.

    >

    > 델파이를 사용하면서... 원하는 기능 구현은 거진 전부다 하고 있거든요...

    >

    > 근데...

    >

    > C++ Builder 는 어떤지요...

    >

    > Delphi 와 C++ Builder 의 차이점을 알고 싶거든요...

    >

    > 델파이는 파스칼.... C++ Builder 는 말 그대로 C++ 을 사용하는거 가튼데..

    >

    > 언어에서 말고 큰 차이점이 무얼까요?

    >

    > 어느용도에선 장단점이 있을듯 한뎅..... 점 자세한 설명점 부탁드립니다.

  • Profile
    이경문 2001.09.20 12:11
    어떤 분이 이런 엄청난 글을 올리나 했더니

    bcbdn에 계시는 분이네요.

    참으로 좋은 글입니다.



    박지훈.임프 wrote:

    > 임프랍니다.

    >

    > 간단히 한마디로 말하면, 델파이와 C++Builder의 차이는 언어의 차이 이상도 이하도 아닙니다.

    > 하지만 그 언어의 차이가 크지요.

    >

    > 물론 어느 언어에 더 익숙한 사람인가, 기존 프로젝트가 파스칼로 짜여져 있는가 혹은

    > C++로 짜여져 있는가에 따라 개인적인 선호나 개발 퍼포먼스가 달라질 수 있습니다.

    >

    > 하지만, C++과 파스칼은 "언어가 다르다"라고 한마디로 말하기엔 내재적인 차이가 너무

    > 큽니다. 하나씩 나열해보지요.

    >

    > 일단, C++은 표준 지향적인 언어입니다. 반면에 파스칼은 표준이라고 할 만한 것이 없지요.

    > C++ 컴파일러 개발사는 새로운 버전을 내놓을 때마다 ANSI/ISO 스펙을 따르고 있느냐

    > 아니냐 하는 시비를 받습니다. C++Builder를 사용하는 볼랜드쪽 개발자들이 Visual C++

    > 개발자들을 향해서 개발 퍼포먼스 외에 또한가지 공격하는 것이 Visual C++은 비표준이라는

    > 겁니다.

    >

    > 이런 표준이 있다는 점은, 장단점이 있는데, 장점은 새로운 문법이 신중하게 추가되고

    > 최초의 언어 설계 철학을 크게 벗어나지 않으므로 일부 표준을 따르지 않는 개발사 고유의

    > 스펙을 추가하는 외에는, 표준을 따르는 거의 대부분의 코드는 소스레벨에서 호환성을

    > 가진다는 것입니다. 실제로 Visual C++로 짜여진 모든 소스는 C++Builder에서 컴파일됩니다.

    > 단점은, 컴파일러 개발사가 새로운 언어 특징을 추가하면서 최초의 C++ 설계 철학을

    > 어기지 않도록 대단히 신중해져야 하고 기존의 문법에 항상 구속된다는 점입니다.

    >

    > 반면 거의 표준에 구속되는 일 없이 컴파일러 개발사의 독자적인 판단으로 언어 스펙이

    > 추가되거나 변경될 수 있는 파스칼의 경우 아주 유연합니다. 하지만 지금 델파이로 작성한

    > 코드가 다른 어느 파스칼 컴파일러에서 컴파일될 수 있는지를 생각해보면, 어떤 측면에서는

    > 고립적이지요. 물론 델파이 외에 더이상 상용 파스칼 컴파일러가 나오지 않습니다만.

    >

    > 표준 지향적인지 아닌지 외에 다른 차이점은, 언어의 기본 설계 방향에서 볼 수 있습니다.

    > C++은 기본적으로 시스템 프로그래밍을 위해 설계된 C의 위에 OOP를 덧씌운 언어입니다.

    > 잘 아시다시피 C는 유닉스를 개발하는 과정에서 실무 차원에서 필요해서 개발 실무자에

    > 의해 만들어진 언어입니다. 그래서 사실 C는 언어 구조적으로는 실무에 꼭 필요한 특징들을

    > 제외하면 프로그래밍 언어로서의 예술성이랄까 구조성은 많이 떨어집니다.

    > 또한 설계시부터 기존의 C 프로그래머들을 끌어들이기 위해 철저한 하위 호환성을 가지고

    > 있기 때문에 C++의 설계 철학에도 시스템 프로그래밍적인 특징이 대단히 강합니다.

    > 함축적인 표현에 유연하고, 특히 포인터 연산에 대단히 강하지요.

    >

    > 반면 파스칼의 경우엔 개발 실무자가 아닌 학자에 의해 만들어진 언어지요.

    > 개인적인 취향의 차이는 있겠습니다만, C++ 전문인 제가 보더라도 파스칼 코드는 구조화에

    > 대단히 많이 신경을 쓴 언어입니다. 반면 원래의 파스칼은 특별한 목적이 없는, 그냥

    > 범용 언어입니다. 시스템 측면에서 뛰어나지도 않고, 더 쉽지도 않고, 더 OOP적이지도

    > 않은, 그냥 범용 언어지요. 볼랜드에서는 과거 터보 파스칼에서부터 볼랜드 파스칼,

    > 그리고 델파이에 이르기까지 이러한 파스칼의 약점을 보완하기 위하여 수없이 새로운

    > 문법과 키워드들을 추가해왔습니다. 그리고 지금에 와서는, 못할 게 없는 대단히 강력한

    > 언어가 되었습니다.

    >

    > 제가 개인적으로 생각하기에, C++과 오브젝트 파스칼은 모두 간략함이라는 특징을 가지고

    > 있습니다. C++은 코드의 간략함, 반대로 오브젝트 파스칼은 구조의 간략함을 주로 하고

    > 있습니다. 표현이 적절한지는 자신이 없습니다만.

    > C++의 코드 간략함은 실무에서 최적화 가능성으로 나타납니다. 포인터를 능란하게 사용하는

    > 분이 작성한 C++코드는 그야말로 코드 레벨 최적화의 절정을 보여줍니다. 물론 이 경우

    > 가독성은 극적으로 떨어집니다만.

    > 반대로 오브젝트 파스칼의 구조 간략함은 실무에서 쉽게 배워서 쉽게 사용할 수 있다는

    > 점으로 나타납니다. 하지만 C++만큼의 코드 최적화 기회는 없습니다.

    > 웬만한 중급 수준이상 오르게 되면 더 이상의 코드 최적화가 안됩니다. 물론 여기서

    > 말하는 최적화란 아주 다른 방법을 도입하는 경우를 배제한, 같은 알고리즘으로 같은

    > 코드를 만들 경우를 말합니다. C++의 경우엔 배워도 배워도 끝이 없을 정도로 표현의

    > 한계가 끝이 없어보입니다.

    > (어정쩡하게 C++을 공부하신 분의 반박은 사양합니다. 어쩌다보니 요 2,3년간 자바

    > 프로그래머들을 계속 만나고 있는데, C++ 공부하다 지쳐 자바로 넘어간 분이 하는

    > "나도 한때는 C++에 한칼했다"는 말에 정말 신물났습니다.)

    >

    > 델파이와 C++Builder의 컴파일러가 극에서 극에 이를 만큼 차이를 보이는 이유도 이때문입니다.

    > C++코드는 대단히 유연한 문법으로 인해 파스칼보다 파싱이 훨씬 복잡합니다. C나 C++을

    > 조금이라도 배워보신 분이라면, 보는 사람 열받게 포인터들과 ? : 연산자 등등을 섞어가며

    > 비꼬고 틀어놓은 문장을 한번쯤은 보셨을 겁니다. 파스칼에서는 이런 표현이 안됩니다.

    > C++의 이런 표현을 두고 좋지 않은 평을 하는 분들도 있고, 또 C++ 프로그래머 스스로도

    > 이런 문장이 과연 의미가 있을까 하는 회의를 품게 되기도 합니다.

    >

    > 하지만 C/C++의 역사를 돌아보면 이런 비꼬인 문장이 괜히 보는 사람 열받으라고 만든

    > 것은 아니란 걸 알 수 있습니다. C는 원래 시스템 프로그래밍 언어로 설계된 것이고,

    > 경쟁 언어는 파스칼이나 베이직, 포트란 등이 아닙니다. 어셈블리지요. C는 처음부터

    > 어셈블리를 대체하기 위해 만들어진 언어였기 때문에 CPU 클럭을 하나 더 쓰느냐 마느냐

    > 혹은 메모리를 한번 더 할당하느냐 마느냐 하는, 지금 보기엔 대단히 사소할 수도 있는

    > 문제에 매달릴 수밖에 없습니다. 지금도 임베디드 프로그래밍을 하시는 분은 역시 마찬

    > 가지의 고민을 하고 계실 겁니다.

    >

    > 예를 들어서요. 파스칼에서 사용하는 스트링, 원래의 파스칼에서 사용하던 쇼트 스트링 말고

    > 델파이2에서였던가 새로 도입된 안시스트링의 경우 말입니다. 범용적인 목적으로는 대단히

    > 최적화가 잘 되어있습니다. 범용 최적화를 위해 내부 코드가 모두 어셈블리로 되어있지요.

    > 그러니 기본 알고리즘이 동일하다면 누가 작성하더라도 상당히 좋은 성능이 나옵니다.

    > 하지만 제대로 작성한 C++ 코드에는 비교가 안됩니다. 물론 델파이에도 PChar형을 직접

    > 다루는 문자열 함수들이 별도로 있어서 이것들을 적절히 사용하면 표준 스트링을 사용했을

    > 때보다 성능이 상당히 좋아집니다만, C++의 표현력은 절대 못따라가지요.

    > 물론 이런 차이는 몇십 킬로바이트짜리 짧은 문자열에서는 별로 나타나지 않습니다만,

    > 몇백단위가 넘어가게 되면 성능차이가 느껴지게 됩니다.

    >

    > 졸면서 썼더니 좀 앞뒤가 없군요.

    > 결론은, 저도 역시 많은 분들이 하는 말을 되풀이하게 됩니다.

    > "C++과 파스칼 중 더 익숙한 것이 있다면 그것을 선택하라, 하지만 숙련도에 차이가 없다면

    > 시스템 프로그래밍을 하거나 퍼포먼스가 아주 중요한 경우가 아닌 한 파스칼을 하라"

    >

    > 디비 프로그래밍을 전문으로 하실 분이 처음 시작할 개발툴로 C++Builder를 선택하는 것은

    > 바보짓입니다. 개인적으로 생각하기에 C++은 파스칼보다 배우는 시간이 두배 이상 걸립니다.

    > 또 최고의 성능을 내야하는 분야로 입문하시는 분이 델파이를 선택하는 것도 바보짓입니다.

    >

    > 마지막으로 여기까지 끄적거린 것은, 공부하면서 찾아볼 수 있는 개발 리소스들.. 서적이나

    > 웹문서 등등을 고려하지 않은, 그야말로 언어 자체만을 비교한 것이란 것을 말씀드립니다.

    > 혹 C++Builder를 공부하거나 사용할 필요가 있으시다면 저희 사이트로 오십시오.

    > http://www.bcbdn.com/

    >

    > 그럼 이만...

    >

    >

    > 고양이 wrote:

    > > 현재 저는 Delphi를 사용하고 있습니다.

    > >

    > > 델파이를 사용하면서... 원하는 기능 구현은 거진 전부다 하고 있거든요...

    > >

    > > 근데...

    > >

    > > C++ Builder 는 어떤지요...

    > >

    > > Delphi 와 C++ Builder 의 차이점을 알고 싶거든요...

    > >

    > > 델파이는 파스칼.... C++ Builder 는 말 그대로 C++ 을 사용하는거 가튼데..

    > >

    > > 언어에서 말고 큰 차이점이 무얼까요?

    > >

    > > 어느용도에선 장단점이 있을듯 한뎅..... 점 자세한 설명점 부탁드립니다.