| [ 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++은 처리하지 않고 그대로 노출하는 쪽을 선택했습니다. |