여기서 말하는 "적절한 규모" 는 데이터의 처리 속도의 규모 이다. 즉 성능인데, 이 성능은 빠를 수록 좋다. 책에선 '언제, 어떻게'를 아는게 중요하다.란 이야기를 하는 것이다. 그렇다면 여기서 말하는 성능 최적화의 '언제'는 언제인가? '언제'를 알 기란 매우 어려운데, 수 많은 책에서는 '언제'에는 절대 속하지 않을 때가 있다고 한다. 바로 '초기' 이다. 프로그램 코딩의 초기에는 데이터 처리 성능엔 신경을 쓰지 말라고 한다. 왜냐하면, '이른 최적화는 항상, 프로그램이 복잡해 지기 때문' 이라 한다. 그러면 초기에 무엇을 염두해야 하는가? 바로 '얼마나 더 간결하고, 얼마나 더 정확한지' 이다. 그러면 '일반적인 답'이 나왔다. 바로, '프로그램 초기에는 최적화를 하지 않는다' 이다. : ) 그러..
책 정리 검색 결과
제1장 일반적 프로그래밍과 C++ 표준 라이브러리 1. vector의 올바른 용법과 잘못된 용법 2. 문자열 포매팅, 1부: sprintf 3. 문자열 포매팅, 2부: 표준의 세련된 대안들 4. 표준 라이브러리 멤버 함수 5. 여러 수준의 일반성, 1부: 기초 6. 여러 수준의 일반성, 2부: 충분히 일반적인가? 7. 함수 템플릿을 특수화하지 말아야 하는 이유 8. 템플릿 친구 만들기 9. export의 한계, 1부: 기초 10. export의 한계, 2부: 상호작용, 유용성 문제, 지침들 제2장 예외 안전성 문제와 기법 11. try와 catch 12. 예외 안전성: 추구할 가치가 있는가? 13. 예외 명세에 대한 실용적인 고찰 제3장 클래스 설계, 상속, 다형성 14. 순서의 중요성 15. 접근 권한..
1 ) std::string::erase가 비멤버 함수가 될 수 있을까? 2 ) std::string의 나머지 멤버 함수들을 분석하고, 비멤버 함수들로 만들 수 잇는지(또는 그렇게 하는 것이 좋은지) 설명하라 a. replace b. copy와 substr c. compare d. find 군(find, find_*, rfind ) 이렇게 질문이 있는데, 하나의 진리에서 나온 것들이다. "클래스 구현시, non-member, non-friend function 으로 만들 수 없는 함수만, member 함수로 만들어라." 이번 항목의 요약을 책에서 그대로 옮긴다. 분활과 캡슐화는 좋은것이다. 특히 C++의 경우에는, 알고리즘과 컨테이너를 분리시키는 것이 좋다. STL도 대부분 그런 원칙에 따라 만들어 졌다..
이 정석은 평생 가장 익히기 힘든 것 중에 하나이다. 명언만 써도 바로 이해 될 수 있는 항목일 것이다. 프로그램은 사람이 읽을 수 있또록 쓰여져야 하고, 컴퓨터가 실행할 수 있도록 하는 것은 그 후의 문제이다. - 헤롤드 아벨슨, 제랄드 제이 수스맨 프로그램을 쓸 때는 사람을 먼저 생각하고, 컴퓨터는 두 번째로 생각하라 - 스티브 맥코넬 컴퓨터 시스템의 가장 값싸고, 빠르고 안정적인 구성 요소는 바로, 없는 요소이다 - 고든 벨 빠진 구성 요소야말로 가장 정확한 요소이며(절대 실수하지 않으므로), 가장 안전한 요소이며(부서질 수 없으므로), 디자인하고, 문서화하고, 테스트, 관리하기 가장 쉬운 요소이다. 간결한 디자인의 중요성은 아무리 강조해도 디나치지 않다. - 존 베틀리 이 모든 말은 "하나를 표현..
나는 이것을 첫번째 프로젝트 진행 중에 깨닫게 되었다. 1942 게임을 만드는 중에, 연산과 출력, 즉, 비행기의 이동과 비행기의 그림 출력을 하나의 Loop 안에 넣고 돌리고 있었다. 처음, 비행기의 이동과 비행기의 출력을 하나의 함수안에 하나의 루프안에 넣고 나서, 비행기의 이동에 따른 출력을 정상적으로 처리 했으나, 추가적으로 총알의 출력을 처리해야 될 때, 함수 안이 점점 복잡해 졌다. 명언 중에, 바보는 복잡한 것을 무시하고, 현실주의 자는 복잡한 것을 피하거나 괴로워 하고, 천재는 복잡한 것을 없앤다 - 앨런 펄리스가 했던 것이 기억이 난다. 바로 이런 상황이 "복잡한 것" 이다. 복잡한 것은 어디를 수정하든, 다른 곳도 수정해야 "정상적"으로 되는 상황을 뜻한다. 이게 물의 파장처럼 계속 퍼..
1 ) string::resize가 비멤버 함수가 될 수 있을까? 설명하라. 될 수 있다. 공개 인터페이스로 확장시켜 놓고 swap 시키면 되는데 소스코드를 보자. template void resize( std::basic_string& s, typename Allocator::size_type n, charT c ) { if( n > s.max_size() ) throw std::length_error( "won't fit"); if( n
최근댓글