CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.