C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[23992] Re: 델파이 파스칼 렝귀지의 언어적인 한계 때문임
지나다가 [] 11618 읽음    2013-06-13 17:55
성현 님이 쓰신 글 :
: 본인은 C++ 빌더를 주로 씁니다
: 가끔 Tools API를 사용하면 좋겠다는 생각을 하다가도
: IDesignWindow, IDesignNotification, IEditHandler, IActivatable 등등
: 인터페이스로 만들어 놓아서 사용하려면 골치만 아프고 되게 깝깝하네요
:
: ActiveX도 아니고 그렇다고 COM 도 아니면서 뭐하러 이딴 식으로 Toools API를
: 만들어놨는지 이해가 안되네요. 쩝
:
:


COM Interface 방식을 안쓰고 일반적인 방식으로 구현하려고 해도, 델파이 파스칼 랭귀지는
class multiple inheritence 를 근본적으로 언어차원에서 지원하지 않기 때문에 Interface 방식을
사용할 수 밖에 없음.

클래스 다중 상속을 지원하지 않는 언어에서 Interface 방식은 사실상 언어의 한계를 우회하기
위한 방법으로 많이 쓰임. C# 또한 그렇고.

또한 Interface 를 이용하면

class CSomeServiceProvider : IInterfaceA, IInterfaceB, IInterfaceC
{
             .....
};

HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, VOID **ppvInterface)
    {
        if (IID_IUnknown == riid)
        {
            AddRef();
            *ppvInterface = (IUnknown*)this;
        }
        else if (__uuidof(IID_IInterfaceA) == riid)
        {
            AddRef();
            *ppvInterface = (IInterfaceA*)this;
        }
        else if (__uuidof(IID_IInterfaceB) == riid)
        {
            AddRef();
            *ppvInterface = (IInterfaceB*)this;
        .,..
}
클라이언트에서 CSomeServiceProvider 객체 하나를 통해서 객체를 캐스트 하는 것만으로도
필요한 인터페이스를 취할 수 있기 때문에(같은 this 포인터 이기 때문에) 사용하기 편리한
잇점이 되고, 이건 COM이 갖는 장점이기도 함.

사족으로 엠바가 닷넷을 포기하지 못하고, 또 툴을 설치하면 필연적으로 닷넷 설치 과정이 따르게 되는데

이건 근본적으로 엠바가 프로젝트 빌드시스템으로 MS사의 Build Engine을 사용하고 있기 때문임.
MS사의 빌드엔진 자체가 닷넷으로 구현되어 있음. 그래서 필연적으로 닷넷을 설치할수 밖에 없음.

엠바가 자사의 Make를 통한 빌드시스템을 포기하고 MS사의 빌드엔진을 선택한 이유는 MS사의 빌드엔진이 빠르기 때문임.
하나의 소스를 다시 컴파일해야 할지 아닐지를 판단하기 위해선 디펜던시로 걸리는 수백 수천개의 헤더파일들 중에서 하나라도
변경된게 있는지 없는지 사전에 체크해야 할 필요가 있는데, 기존의 방식은 시스템 API를 매번 호출해서 파일 변경여부를 확인하는
방식이라 느렸지만

MS사의 빌드시스템은 파일 관련한 API들을 후킹하고 있어서, 파일 변경여부를 체크하기 위해 반복적으로 API를 호출할 필요 없이
사전 탐지가 가능하기 때문에 빌드 속도가 매우 빨라서, 엠바에서도 오래전 부터 MS사의 빌드엔진을 채택하게 된 것임.
우리 엠바는 MS사의 빌드엔진 사용하면서 빌드속도 빨라졌어요 라고 광고하면서 ㅋ

엠바 IDE는 껍데기에 불과하고 디펜던시 체크, 컴파일, 리빌드 그런 과정은 MS빌드 엔진에 의해서 이루어지게 됨.

박지훈.임프 [cbuilder]   2013-06-14 07:27 X
델파이, C++빌더의 IDE에에 닷넷이 따라다니는 것은 MS의 빌드 엔진 때문이라고 보기는 어려울 것 같습니다.
RAD 스튜디오 IDE에 닷넷이 처음 적용된 것은 2003년에 지금의 갈릴레오 IDE가 처음 도입된 델파이 8 버전부터인데, 그때는 MS 빌드 엔진이 존재하기도 전이고요. MS 빌드가 적용되기 시작한 것은 비교적 최근이라고 할 수 있는 2007년 초에 출시된 2007 버전부터입니다.

RAD Studio IDE에 가장 큰 이유는, 단지 RAD 스튜디오의 옛 투게더 기능들이 여전히 닷넷으로 구현되어 있기 때문입니다. 투게더 기능들에는 클래스 다이어그램, 유즈케이스 다이어그램, 시퀀스 다이어그램 등을 포함한 여러 다이어그램 기능들, 디자인패턴 기능들, model navigation, QA metrics, LiveSource modeling, Kiviat Chart, 문서 자동 생성, audits, /metrics, refactoring 등이 포함되는데요. 이 투게더 기능들은, 볼랜드 시절이었던 2002년에 말 그대로 모델링 툴 투게더를 인수하면서 갖게 된 기능들인데 그뒤로 1~2년 사이에 J빌더를 포함한 볼랜드의 개발툴들에 모두 이식되었습니다. 처음에 인수한 투게더의 소스가 자바로 개발되어 있던 것을 볼랜드가 MS J#을 거쳐 닷넷 C#으로 포팅한 거구요. 그걸 IDE에 그대로 이식하다보니 IDE가 닷넷에 의존하게된 것입니다.

지금도 닷넷을 제거하고 Win32만으로 IDE를 설치할 수 있는 변칙적인 방법이 있는데, 그렇게 하면 투게더 기능들이 모두 disable됩니다. 이미 닷넷이 완전히 한물 간 상황인데도 IDE가 닷넷을 끌고 다니는 게 저는 아주 못마땅한데요. 엠바카데로가 투게더 기능들을 Win32로 전면 재개발하는 데에 시간을 들이기보다는 모바일 지원 등 새로운 기능 추가에 올인하고 있네요.

국내 델파이 개발자분들은 투게더 기능들을 거의 알지 못하거나 알아도 쓰지 않는 분들이 많고, 저도 드물게 사용하지만, 그중에서 리팩토링은 밥먹듯이 사용하는데요. C++빌더에는 불행히도 rename 하나만 덜렁 있어서 리팩토링이 있으나 마나한 존재지만, 델파이의 리팩토링은 상당히 강력해서, 몇번만 해보고 익숙해지고 나면 코딩 생산성이 몇배로 높아집니다. 델파이에서 따지자면, 개인적으로 델파이 7 이후로 추가된 기능들 중 가장 빛나는 기능으로 저는 리팩토링을 꼽고 싶네요. 문제는 이게 닷넷으로 구현된 탓에 기대한 만큼 빠르게 동작하지 않는다는 거죠. 가끔은 IDE가 장시간 랙 걸리기도 하고, 가끔은 아예 타임아웃으로 에러를 내고 실패하기도 한다는 거죠.
박지훈.임프 [cbuilder]   2013-06-14 07:31 X
찾아보니 Steve Trefethen이 델파이 IDE가 닷넷에 의존하게 된 이유를 설명한 글이 있네요.
Steve Trefethen은 2010년까지 볼랜드/코드기어에서 델파이 개발팀의 일원이었고 델파이 관련으로 유명 블로거였습니다.

Why does Delphi 2005 IDE require the .NET framework?
http://www.stevetrefethen.com/blog/WhydoesDelphi2005IDErequiretheNETframework.aspx
project [lovekorea]   2013-06-15 01:56 X
볼랜드 사이트 운영자라서 그런지는 모르겠으나 닷넷을 상당히 경시하는 경향이 있네요. 저희 회사에서도 엠바카데로 컴파일러를 사용했지만 하도 버그가 속출해서 요즘은 대부분의 프로그램 개발을 비쥬얼 스튜디오로 하게됩니다. 버그때문에 거래업체에서 리콜 받으면 업무에 지장도 많고 일이 몇배로 피곤해지기 때문 입니다.

딴지 걸려는건 아니고요. 델파이에서 리펙토링 기능이 닷넷으로 구현된 탓에 빠르지 않고 IDE가 랙 걸리면서 에러 난다고 주장하는 건 좀 어폐가 있는 것 같습니다. 비쥬얼 스튜디오 사용하면서 C#도 많이 쓰게 되는데, C#에서 리펙토링 기능, 코드 인텔리젼스 기능 같은 건, 델파이는 쨉이 안될 정도로 파워풀 합니다. 느리거나 랙 걸리는 일도 없고, IDE 가 에러를 내는 경우도 없습니다.

그리고 비쥬얼 스튜디오에서 이런 리펙토링, 코드 인텔리젼스 기능 역시 닷넷으로 만들어 졌습니다. 비쥬얼 스튜디오에서는 잘 돌아가는데 델파이에서만 그런 증상이 나타난다면 그건 델파이에서 코딩을 잘못했다던가 알고리즘에 문제가 있다 든가의 델파이 쪽에 문제가 있기 때문지 닷넷 탓할건 아니지요.
project [lovekorea]   2013-06-15 02:08 X
MS 빌드엔진은 저도 잘 모릅니다. 그런데 엠바카데로가 프로젝트 컴파일에 MS 빌드엔진을 사용하고, MS 빌드엔진이 닷넷을 사용하는 한다면, 엠바카데로가 닷넷 설치를 필요로 하는 근본적인 이유가 MS빌드엔진 때문이라는 지나다가님의 얘기가 맞는 거지요. 컴파일러에서 컴파일 만큼 더 중요한 기능이 어디 있겠습니까. 버그로 본래의 기능도 제대로 발휘하지 못하는 리펙토링이 더 중요한건 아니지요. 엠바카데로가 MS빌드엔진에 의존하고 있는데 프로젝트를 빌드 할수 없다면 그걸 컴파일러 라고 할수 있겠습니까.

깔쌈보이 [handsome]   2013-06-15 16:46 X
닷넷을 경시하시는 것 같기도 하지만, 이 글을 보면 닷넷을 잘 이해못하시는게 아닌가 생각되네요...

한때, 델파이나 C++빌더가 VS와 맞짱뜰수 있었던 시기가 있었었죠.
그땐 델파이나 C++빌더를 잘 모르는 사람들의 경시풍조가 일조했다던가, 매니아틱 해서 서로 으르렁 댔다던가 많은 이유가 있었었죠...

그리고 닷넷이 처음 나왔을때만 해도 지금 베타버젼 수준으로 시장에 출시하는 XE보다 더 심각한 알파버젼 수준으로 판매를 했었으니까요...
이젠 십년이 지났죠...
RAD가 VS보다 우위에 있을수 있는걸 내세우라면 어쨌든 버그투성이이지만 ios용 제품을 만들수 있는것과 생산성이 더 뛰어나다는 정도 뿐일겁니다.
그것도 써드파티는 안되! 라고 강력한 제한을 걸었을 때에야 겨우 먹혀드는 불편한 진실... ㅎㅎㅎ
크레브 [kkol]   2013-06-17 23:20 X
깔쌈보이님.. VS에 써드파티 쓰면 GUI 개발에서도 빌더와 맞먹는 UI 개발 환경이 나오나요?
이 경우 C#을 말씀하시는건지 아니면 C++도 마찬가지인지요?
깔쌈보이 [handsome]   2013-06-18 06:03 X
크레브님, 닷넷을 얘기하셔서 나온 내용이니, 당연히 C# 이나 VB.NET이겠죠? ^^
더 붙이자면 ASP.NET처럼 웹페이지용 개발을 얘기한것도 아니구요...
Hello world와 같이 단순한걸 어느게 빨리 만들어내느냐 라던가 db에 연결해서 특정 테이블의 데이터 가져오기를 어느게 빨리 구현하느냐 등등 단편적인걸 비교하자는 것도 아닙니다...

정말, 옛날에 느꼈던 엄청났던 격차가 이젠 별로 안 느껴집니다.
델파이나 c++빌더를 잘 모르면서 깔보기만 했던 아주 오래전의 vc++개발자들에게 느꼈던 늬앙스가 요즘은 반대로 닷넷에 그런식으로 선입견을 가진 분들이 많다는걸 느끼게 되더군요 ㅋ
그만큼 초/중기 버젼들은 개판이었긴 했죠 ㅋ
깔쌈보이 [handsome]   2013-06-18 06:11 X
물론 굳이 따지자면 델파이나 빌더가 개발속도가 아직 더 빠른건 맞습니다.
그 격차가 안타깝게도 개발일정에 영향을 끼치던 수준이 아닐정도가 되었다는게 문제죠.

제 글을 보니 제가 마치 델파이를 손 때고 닷넷만 가지고 일하는듯한 늬앙스를 남겼네요 ㅎ
아직도 저는 터보델파이나 상당히 구버젼의 델파이를 사용하고 있습니다 ^^
Lyn [tohnokanna]   2013-06-18 09:31 X
뭐 그건 깔본다기 보단...

닷넷 "밖에" 모르는 초짜들의 빠심에 열폭하는 정도랄까 ...
Lyn [tohnokanna]   2013-06-18 09:31 X
성능이 안나오니 이거 닷넷으로 다시만들어야 된다는소리 지겹게 들으며 살다보니 ㅡ.ㅡ; 요즘은 니 알아서 하세요~ 로 넘어갑니다
깔쌈보이 [handsome]   2013-06-18 10:44 X
Lyn/성능이 안나와서 닷넷으로 다시 만들어야 한다는 분들도 참... ^^;
자바나 닷넷이 성능면으로 보자면 상대적으로 구리죠 --;

개발자가 몸으로 겪는 개발지원/생산성 등에서 닷넷이 상당히 좋아진거지, 그 결과물의 성능은 저 역시도 만족하지는 않습니다... ^^

제 글의 요지는... 과거 델파이나 빌더가 가졌던 생산성이 이젠 델파이나 빌더만의 전유물이 아니라는거구요...
닷넷 하면 웹브라우저 기반의 결과물만 생각하면서 델파이나 빌더와 비교한다는 건 좀 아니겠죠...
반대로 델파이나 빌더로 웹브라우저 기반의 결과물을 만들어라고 해서 닷넷의 결과물과 비교하는 것도 어처구니 없는 비유이지요 ㅎ

델파이나 빌더처럼 Windows Form이나 Application Server 프로그래밍을 닷넷으로 개발하는 경우, 결코 뒤처지지 않는 생산성이 나옵니다.
물론 서두에서 처럼 써드파티 없이 개발하는 경우 Windows Form 플밍은 병맛이 되기 일쌍다반사 입니다. ㅎ
IDE의 AddOn과 써드파티 컴포넌트를 사용하게 되면 생산성이 비약적으로 올라갈 뿐이죠.
Lyn [tohnokanna]   2013-06-18 14:33 X
델파이는 그렇다 치고... 빌더에... 생산성이 과연 있었나요? ㅡ.ㅡ;

거의 메모장으로 코딩하는 느낌인데
박지훈.임프 [cbuilder]   2013-06-19 14:18 X
며칠만에 들어왔더니... project님과 깔쌈보이님이 뭘 지적하시는지 모르겠군요. 제가 쓴 내용은, 델파이//C++빌더에서 닷넷으로 작성된 부분이 네이티브 코드로 된 부분만큼 빠르지 않다, 라는 것입니다. 위에 제가 델파이의 리팩토링 기능을 '밥먹듯이' 사용하고 있다고 썼는데, project님이 몰아붙이듯이 도저히 사용하지 못할 정도라면 제가 '밥먹듯이' 쓸 수 있겠습니까. 그만큼 자주 사용하고 있기 때문에 드물게 발생하는 문제라도 잊혀지지 않고 짜증이 난다는 얘깁니다. 대부분의 경우 RAD 스튜디오 IDE의 리팩토링이나 기타 투게더 기능들은 충분히 빠르게 돌아갑니다. 그런데 100번중의 한번 정도는 짜증이 나지 않을 수 없을 정도로 느려집니다. 반면 네이티브로 구현된 기능들에는 그렇게 막 느려지는 부분이 없습니다.

구 볼랜드나 엠바카데로가 잘못 구현해서 그럴까요? 뭐 그럴 수도 있습니다. 하지만 어쨌든간에 그것은 닷넷 기반인 것과 무관할 수가 없는 문제죠. 이건 거꾸로도 마찬가지여서, 자바나 닷넷인 경우에는 불가능하거나 거의 일어나기 힘든 에러가 네이티브 환경이기 때문에 발생할 수 있는 것과 마찬가지의 문제일 뿐입니다. 아이러니컬하게도, 도리어 두분이야말로 닷넷에 대한 일반적인 인식에 대해 피해의식을 갖고 있는 게 아닌가 하는 생각도 드는군요.
깔쌈보이 [handsome]   2013-06-19 15:39 X
음... 이렇게 적으면 피해의식으로 표현되는가 보군요...
하기사 저도 그동안 임프님이 닷넷에 대해서 작성하신 글들을 보면 닷넷에 대해 이해가 부족하다고 느꼈으니까요...

지난 십여년간 사용자 도구가 워낙 다양화해지다 보니...
개발툴/언어의 좋고 나쁘다를 평가하기 보다는 주어진 개발업무에 가장 적합한 개발툴/언어가 무엇이고, 그것에 대한 이해도를 높여서 적시적절하게 사용하는것이 가장 좋다고 생각하는 편입니다.

그러다보니 여러 언어/개발툴을 두루 다루면서 먹고 살게 되고, 또 그러다보니 피해의식스럽게 느껴지는 부분이 뭔지 모르지만 암튼 그런 늬앙스를 풍기는 글도 적게 되네요... ㅎㅎ

베타버젼 수준으로 만들어 개발자들에게 돈받고 테스트를 맡기는 듯한 행태를 보이는 엠바의 정책을 비난 할 뿐...
델파이나 빌더 자체에 평가를 내리지는 않습니다. 시장성이 어떠니 뭐가 어떠니... 등등...
물론 닷넷이나 자바 또는 다른 그 어떤 것에도 마찬가지구요... ㅋ
civilian [civilian]   2013-06-19 18:32 X
토론시 "ㅎㅎ", "ㅋㅋ" 이런 부분은 본인의 의사와 상관없이 상대방을 조롱하는 듯한 느낌을 주게됩니다.

토론이 자꾸 감정 싸움으로 진행되는 주요 원인이기도 하지요.
크레브 [kkol]   2013-06-20 03:31 X
요약하면 다음과같나요?
- c#은 서드파티 사용하면 델파이나 빌더정도의 생산성이 나온다.
- 닷넷 기반의 c#등은 네이트브에 비해 느리다. ( 즉 성능은 떨어짐 )
- Visual Studio의 에디터는 좋다.
- VC++의 생산성은 델파이나 빌더에 비해서는 떨어진다. ( 닷넷이 아니므로 )

결론적으로 C++언어를 사용해야 하고 생산성과 성능이 동시에 필요하다면
에디터가 메모장 수준이라도 C++빌더밖에 없다는 얘기?
크레브 [kkol]   2013-06-20 03:33 X
아.. 그런데. 빌더 에디터가 메모장 수준 밖에 안된다는것은 지나친 비하인듯.. 당연히 메모장 보다야 100배 났죠.
깔쌈보이 [handsome]   2013-06-20 05:51 X
크레브님, 저는 델파이나 빌더와 vc+을 가지고 생산성을 논하는건 적절치 못하다고 생각하기 때문에 크레브님의 요약 중 vc++에 대해서는 딱히 뭐라고 할까 생각이 안 나네요...
그리고 전체적으로 vs를 이용한 생산성을 가지고 뭐라고 할 시대는 지난것 같습니다.
다만 기본 제공 컴포넌트가 gui쪽으로는 아직 많이 부족해서 그런 표현을 한거구요...
성능적인 부분도 문제가 될만한 부분은 적어도 저에게는 없습니다.
델파이나 빌더에 비해서 상대적으로 차이가 날 뿐, 그 차이점을 운운해야 할 곳이 얼마나 될지는 모르겠네요.
음... 고속 프레스기에 붙였더니 멘붕님께서 오신 기억이 있긴 하네요 ㅠ

civilian님, 가볍게 적었는데...  그럴 개연성도 충분히 있군요...
크레브 [kkol]   2013-06-20 09:32 X
깔쌈보이님.. 제가 장비 제어쪽 분야를 하고 있습니다.
성능에 민감한 분야라서 닷넷을 사용하는 c#이  네이티브 C++에 비해서
어느정도 실행 속도가 나오는지 궁금해서 올려본것입니다.
하긴..요즘은 C#으로도 장비 제어를 하는 분 들이  많이 있는것 같습니다.
어차피 모션 구동은 모션 드라이버가 해주고 있고 머신 비전은 상용 알고리즘 라이브러리에서 처리 해주고 있으니
시퀀스 제어만 한다면 별 영향은 없을것 같기도 하네요.


오랑캐꽃 [oranke]   2013-06-20 09:57 X
C#이랑 윈폼 쓰면 리눅스에서도 잘 굴러가서 신기하더라구요.
여기에 OpenTK 정도 붙여주면 안내용 키오스크처럼 납품단가를 확 내릴 수 있겠다는 생각이 들어요.
개발은 윈도에서, 머신은 리눅스로, 재빌드도 필요없이 단순 복사로 끝...
Lyn [tohnokanna]   2013-06-20 10:25 X
크레브님 // 닷넷 <-> Native 호출과 자료교환에서 손실이 은근히 있습니다... 사실 Native 로 된 서드파티 라이브러리의 사용이 빈번할 경우 닷넷의 매력이 꽤 많이 죽어버리기도 하구요... 생각보다 귀찮거든요 바꾸기
Lyn [tohnokanna]   2013-06-20 10:25 X
Oranke // 요샌 그것도 귀찮아서 그런지 그냥 안드로이드 올리던데요 (...) 키오스크 같은건
깔쌈보이 [handsome]   2013-06-21 08:01 X
크레브님, 닷넷으로 만들어진 컴퓨터에 물린 장비들과 모두 합쳐서 초당 1회 미만의 데이터를 주고 받는다면 데이터 손실율에 대해서는 제가 보장합니다.

저도 지금 1년간 다른분야의 일을 하고 있지만, 7여년간 회사에서 주로 한 일이 POP/MES/USN 분야였습니다.
보드설계부터 외주/칩셋구매/조립 에 이어 코드비전으로 펌웨어를 굽는것까지 참여하다보니, 제 나름대로 전체에 대한 그림이 그려지더군요.
장비와 직접 데이터를 주고 받는건 네이티브한 것으로...
데이터를 받고나면 비즈니스 로직 및 제어와 관련된 액츄에이터는 닷넷으로 만드는게 좋더라구요...

델파이나 빌더의 뛰어난 성능과 생산성...
닷넷에서 제공하는 강력하면서도 개발하기 쉬운 네트워크 개발환경이 어우러지니깐...
고객만족도는 물론이거니와 회사에서도 민감한 부분에 신경쓰지 않아도 되니 플러스가 되구요...

네이티브환경과 jvm이나 닷넷과 데이터를 주고 받는건 아이디어만 잘 떠올리면 어렵지않게 해결되더군요.
Lyn [tohnokanna]   2013-06-21 11:29 X
데이터 손실이 아니라 퍼포먼스 손실 이야기한건데 ;

+ -

관련 글 리스트
23991 참 깝깝하게도 만들어놓은 델파이 Tools API 성현 8714 2013/06/13
23992     Re: 델파이 파스칼 렝귀지의 언어적인 한계 때문임 지나다가 11618 2013/06/13
23998         Re:Re: RAD IDE와 MS 빌드엔진 연동? 여쭙니다 9598 2013/06/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.