[ CnUnix ] in KIDS 글 쓴 이(By): zeo (ZeoDtr) 날 짜 (Date): 1994년02월07일(월) 14시30분45초 KST 제 목(Title): Re:마지막으로 결론 아아, 누명은 아직도 벗겨지지 않았는가... TC의 변호인(?)으로서 몇가지만 지적하렵니다. 우선, HellCat님께서 써 주신 다음의 글. > 마치.. ++i + ++j + ++k 가 >++i,++j,++k, i+j+k > >이러한 경우로 해석되는 것이 아닌지요? 예, 그렇게 해석되고 있지요. 그것은 -Ot option을 쓴 MSC 7.0도 마찬가지구요. (assembly listing을 보면 알겁니다. constant를 4로 계산했다는 건 위의 경우처럼 해석했다는 거죠.) 자아, 이제 TC뿐이 아니라 MSC 7.0도 물귀신처럼 걸려들고 말았습니다. 그럼 이게 잘못된 것이냐? 아닙니다. 제가 몇번이고 썼듯이, 이 경우 . . . . . evaluation 순서는 컴파일러 맘입니다. (그래도 의심나시면 K&R 48-50쪽을 참조) 따라서, . . . . . . 이 문장의 evaluation 순서에는 룰이 없습니다. 그러므로, 맞고 틀리고 자시고 할 게 없다는 말입니다. 여기서 중요한 교훈(?)은 compromise라는 겁니다. K&R이 이상주의자였다면 이런 문장 하나하나에 evaluation rule을 정했을 것이고, 따라서 코딩을 거지같이(실례) 하는 많은 초보자들이 기뻐했겠지만, 그에 따라 많은 똑똑한 컴파일러들이 expression을 optimize할 기회를 놓쳤을 겁니다. K&R은 이런 것들을 정하는 데 많은 고민을 했을 겁니다. 어디까지 명확히 하고, 어디까지 컴파일러의 자유에 맡기느냐? 이런 고민들은 The Annotated C++ Reference Manual에 보면 많이 나와 있습니다. C++이야말로 compromise의 덩어리라고 할 수 있으니까요. 전 그런 의미에서 C++을 좋아하고, 따라서 Bjarne Stroustrup을 존경합니다. 근데, Bjarne... 이 사람 이름을 어떻게 발음하면 되나요? 나는 그래서 이 사람은 성만 발음합니다. 아시면 가르쳐주세요, 발음기호라도... ZZZZZZ zZZ eeee ooo zZ Eeee O O ZZZZZZ Eeee OoO |