대개의 경우는 설계 -> 구현을 하지.
리버싱이란, 구현 -> 설계를 해야 되는 거다.
설계에서 구현을 하는 경우, 추상화를 통해 문제를 효과적으로 공략하고 컴파일등을 통해서 추상화를 버리고 최적화를 택하는 경우가 보통이지.
니가 구현을 보고 설계를 유추해 나가야 되는데... 이게 보통 일이 아니게 되는 거야. 특히 꼬꼬마 들에게는.
니가 이미 실력이 있어서 대단한 설계가 가능하고, 컴파일 등에서 최적화 기법을 안다고 치자. 그러면 대충 결과물에서 설계를 추론할 수 있는 거지.
리버싱이 가능한 조합을 알아보자.
- 최초 설계자의 실력
- 컴파일 최적화
- 너의 실력
컴파일 최적화가 실제로는 변수라도, 대략 상수로 볼 수 있으므로, 나머지 두개만 주목하자.
- 최초 설계자 실력 좋고 니 실력 조팝 - 유추 어려움
- 최초 설계자 실력 조팝이고 니 실력 좋음 - 유추 어려움
- 최초 설계자 실력 좋고 니 실력 좋음 - 유추 가능
한줄요약: 얌마 정신차려라. 니가 리버싱으로 성공하기는 니가 제대로 된 설계자로 성공하는 거보다 어렵다.
설계자 실력 조팝 니실력 조팝 = 리버싱 불가능