Page 9 -
P. 9
컴퓨터 코드를 조금이라도 작성해 보면 프로그래밍이 데이터를 주로 다루는 것
임을 곧 알 수 있다. 컴퓨터 프로그램은 데이터를 입력받아 조작하고 반환하는
게 전부다. 두 수의 합을 계산하는 간단한 프로그램이든, 회사 전체를 관리하는
기업용 소프트웨어든, 소프트웨어는 데이터에 관한 것이다.
데이터는 일반적으로 모든 유형의 정보를 망라하는 용어이며 가장 기초적인 수
와 문자열로 이뤄진다. 간단하지만 고전적인 “Hello World!” 프로그램을 떠올
리면 "Hello World!" 문자열이 바로 데이터다. 매우 복잡한 데이터라도 대개
는 수와 문자열 묶음으로 나뉜다.
자료 구조란 데이터를 조직하는 방법이다. 다음의 코드를 살펴보자.
x = "Hello! "
y = "How are you "
z = "today?"
print(x + y + z)
문자열 세 개를 하나의 메시지로 이어 출력하는 매우 간단한 프로그램이다. 위
프로그램이 데이터를 어떻게 조직했는지 다음과 같이 설명해 볼 수 있다. 문자
열 세 개가 있고, 각 문자열은 변수 하나씩 연결되어 있다.
이 책은 단순히 데이터를 조직하는 방법이 아니라 데이터 조직이 코드의 실행 속
도에 미치는 영향이 크다는 것을 가르치고자 한다. 데이터를 어떻게 조직하는
가에 따라 프로그램은 수십 수백 배 더 빠르게 혹은 더 느리게 실행될 수 있다.
대량의 데이터를 처리해야 하는 프로그램이나 수천 명이 동시에 사용하는 웹
앱을 개발한다고 가정하자. 여러분이 선택한 자료 구조가 소프트웨어가 잘 실
행될지 혹은 처리량을 감당할 수 없어 멈춰버릴지를 결정할지도 모른다.
우리가 소프트웨어를 문제없이, 빠르게 실행할 수 있는 명쾌한 코드를 작성하
는 능력을 갖추고 소프트웨어 공학자가 가져야 하는 전문성을 키우려면 다양한
자료 구조를 알고, 각각의 자료 구조가 개발 중인 프로그램의 성능에 어떤 영향
을 미칠지 확실히 이해하고 있어야 한다.
020
algorith06.indd 20 2018-06-25 오전 10:32:02