Page 9 -
P. 9
1.1 기본 프로그래밍 모델 ALGORITHMS 1
기초 개념
이 책의 알고리즘 학습은 자바 프로그래밍 언어를 이용해 알고리즘을 실제 프로그램으로 구현하면서
이루어진다. 이렇게 하는 이유는 다음과 같다.
• 프로그램은 간명하고, 우아하며, 완전하게 알고리즘을 기술할 수 있다.
• 프로그램을 실행해 봄으로써 알고리즘의 속성을 공부할 수 있다.
• 알고리즘을 실제 프로그램에 바로 응용할 수 있다.
특정 프로그래밍 언어를 사용함으로 인해 문제가 있을 수도 있다. 예를 들어 알고리즘에 대한 아이디
어 자체와 그 구현 방식을 분리하기 어려울 수 있다. 이 문제를 피하기 위해 현대의 프로그래밍 언어
들 대부분에서 공통으로 사용되고 있으면서, 알고리즘을 기술하는데 적합한 언어적 요소들을 이용하
여 알고리즘을 구현했다.
이 책에서는 자바 언어의 아주 적은 부분만 이용하고 있다. 다음에 설명될 이 책에서 사용한 자바 언
어 기능 목록을 보게 되면 자바의 극히 일부 기능만 사용하고 있고 다른 프로그래밍 언어에서도 공통
으로 사용되는 기능들임을 알 수 있을 것이다. 이 책에서 제공하는 코드는 자기 완결적이다. 이 책은
독자가 북사이트에서 코드를 내려받아 시험용 데이터(북사이트에서 제공된 것이든 직접 만든 것이
든)를 입력해서 실행해 보기를 기대한다.
이 책에서는 프로그래밍 언어의 기능들과 소프트웨어 라이브러리 그리고 운영체제(O/S) 기능들과
같이 알고리즘의 구현과 기술에 필요한 것들을 프로그래밍 모델로서 설명하고 있다. 이 절과 1.2
절 에서 이 프로그래밍 모델 전체를 설명하고 있다. 이 절들은 이 책의 코드를 이해하는데 필요한
정보들을 담고 있는 독립적인 절들로 다른 서적인 <An Introduction to Programming in Java: An
Interdisciplinary Approach>에서 나왔던 내용을 좀 더 압축한 것과 같다.
참고용으로 사용할 수 있도록 다음 페이지에서는 이 책의 프로그래밍 모델에서 사용된 자바 언어의
기능들을 한 장으로 개괄하고 있다. 이 코드는 자바 언어의 기능을 설명할 때는 사용되지만 53페이
지의 알고리즘 설명과 같이 세세한 부분에서는 다소 다를 수 있다(53페이지에서는 고전적인 이진 탐
색 알고리즘이 적용된 화이트 리스트 필터링 애플리케이션과 그 테스트 코드를 구현하고 있다). 이
책에서는 독자가 현대의 프로그래밍 언어 중 어느 하나라도 이미 경험이 있는 것으로 가정한다. 그러
한 독자라면 이 책에서 사용된 자바 언어의 많은 부분이 이미 낯설지 않을 것이다. 독자의 편의를 위
해 자바 언어에 대한 참조를 쉽게 할 수 있도록 코드의 필요한 부분마다 자바 언어의 해당 기능이 설
명된 페이지 번호를 표시하고 있다. 이 책의 코드들은 특정한 스타일을 가지고서 자바의 관용어나 코
드 구문을 사용하고 있기 때문에 자바에 익숙한 독자라도 이 절을 읽어 보는 것이 좋다.
021