CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): quack (승진아자씨)
날 짜 (Date): 2003년 6월  6일 금요일 오후 01시 31분 46초
제 목(Title): Re: c++ exception handling (윈도, 유닉스


> 이식성은 생각보다 중요한 이슈임.
> 예를들어 heavily pipelined architectures에서 divide by zero는
> asynchronous한 이벤트임.

간단히 쓰다 보니 오해가...
언급하고 싶었던 것은 컴파일러의 이식성이 아니고
언어의 이식성입니다.

이식성에 있어서 c++은 c와 같은 입장을 취합니다.

즉 java나 c#처럼 하부 시스템을 프로그래머에게 감춤으로써
이식성을 추구하는 언어들도 있고,

c나 c++ 처럼 하드웨어나 시스템에 의존적인 부분을 최소화하여
하부 시스템을 프로그래머에게 그대로 노출하고
언어 자체를 가볍게 함으로써
이식성을 추구하는 언어들도 있습니다.


> 다르다. 따라서 일괄적으로 exception 처리하는 것이 힘들다...
> 라는 말씀인지요?

아뇨.
java나 c# 처럼 언어 차원에서 divide by zero를 처리하면
특정 시스템의 독특한 처리 기능을 무시할 수 밖에 없습니다.
이식성을 위한 하향 평준화.

c나 c++은 아예 divide by zero를 언어에서 처리하지 않는 방식을 택합니다.
하부 시스템의 에러 처리 기능을 프로그래머에게 그대로 노출.


> 예를들어 heavily pipelined architectures에서 divide by zero는
> asynchronous한 이벤트임.

시스템 error는 synchronous error와 asynchronous error로 나눌 수 있습니다.
대부분의 기계에서 divide by zero는 synchronous error이지만
heavily pipelined architectures에서는 asynchronous error입니다.

c#, java, c++의 exception handling은
synchronous error를 위해 설계 되었기 때문에
heavily pipelined architectures에서 divide by zero 에러를 어떻게 
처리하느냐가
언어 설계자의 고민거리였습니다.

c#, java는 하향 평준화쪽을 선택했고
c++은 처리하지 않고 그대로 노출하는 쪽을 선택했습니다.





[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.