CH 03. 코딩과 디버깅에 관하여
1. 코딩의 중요성을 간과하지 말라
이 책에서 프로그래밍 대회에서 어떤 성적을 올리느냐를 가장 직접적으로 결정하는 요인은 알고리즘이나 자료 구조에 대한 지식이 아니라 어떤 문제를 풀 때나 항상 필요한 코딩 능력이라고 한다.
"프로그래밍 대회에서 좋은 성적을 올리기 위한 비결은 당장 빨리 코드를 작성하기보다 읽기 쉬운 코드를 작성하는 것입니다."
"간결하고 효율적인 프로그램을 작성하는 능력은 프로그래밍 대회에서 얻어 갈 수 있는 가장 큰 소득 중 하나입니다."
이 구문을 읽었을 때 공감이 갔다. 그동안 프로그래밍 대회를 위한 코딩 문제를 풀어보면서 내 나름대로 코드의 스타일이 생기고 설령 다른 사람의 코드를 참고하더라도 내 스타일대로 바꾸는 방법을 배웠던 것 같다.
현재 내가 하고 있는 코딩 방법이 간결하고 효율적인 코드를 짜는 것인지 확신하지는 못하지만 이 책을 통해 더 공부하면서 효율적인 방법을 배워나가려고 한다.
2. 좋은 코드를 짜기 위한 원칙
이 책에서 프로그래밍 대회에서 중요하게 적용되는 좋은 코드의 원칙을 설명하고 있다. 좋은 코드의 원칙은 다음과 같다.
• 간결한 코드를 작성하기
• 적극적으로 코드 재사용하기
• 표준 라이브러리 공부하기
• 항상 같은 형태로 프로그램을 작성하기
• 모든 자료를 정규화해서 저장하기
• 코드와 데이터를 분리하기
각각의 원칙에는 몇 가지 권고사항이 적혀있다. (ex. 전역 변수의 광범위한 사용, C++ 매크로 사용, 표준적인 알고리즘 구현 사용법 알아두기 등)
이 좋은 코드의 원칙은 나에게 그동안 한 번도 집중해본 적 없는 부분이었는데 이 책을 통해 정리된 내용을 확인해보니 좋은 코드를 짤 때 정말 필요한 부분임을 깨달았고 앞으로 코드를 짤 때 이런 부분에 신경을 써서 작성할 것 같다.
3. 자주하는 실수 & 4. 디버깅과 테스팅
3장에는 프로그래머들이 코딩 테스트에 참가하면서 저지르는 실수 중 대표적인 것들을 확인할 수 있다.
4장에서는 프로그래밍 대회에서 왜 디버거를 통해 디버깅을 하는 것보다 눈으로 프로그램의 버그를 찾아내야 하는지 필요성과 그 방법에 대해 알려주고 있다. 또한, 테스트의 중요성 역시 기술하고 있다.
6. 실수 자료형의 이해
실수 자료형 표기 방식은 IEEE 754 표준을 사용하는데, IEEE의 특징에는 이진수로 실수를 표기한다는 점과 부동소수점 표기법, 무한대, 비정규 수 NaN 등의 특수한 값이 존재한다는 점이 있다.
이런 실수 연산은 근사 값을 사용하는데 이 근사 값으로 연산한 결과는 수학적으로 정확하지 않을 수 있다. 따라서 이 부정확성을 방지하기 위해 실수를 비교할 때 오차 한도를 정하거나, 상대오차를 이용하는 등의 방법을 사용하는 경우가 있다. 실수 자료형에 대해 이해할 수 있도록 이 책에서 많은 예시를 들어가며 실수 자료형을 설명하고 있다. 하지만 결론은 실수 연산을 적절히 변형하여 실수 연산을 아예 하지 않는 것을 권고한다고 한다.