규칙과 구조
복잡한 정보를 효율적으로 정리하고, 체계적으로 이해하는 방식을 끊임없이 발전시켜 왔다. 프로그래밍에서는 데이터를 다루는 방식이 중요하다. 배열(Array)과 리스트(List)는 데이터를 정리하고 구조적으로 저장하는 가장 기본적인 방법이다. 흔히 알고 있는 엑셀과 같은 개념이다. 열과 행으로 구성된 화면에 (이를 스프레드시트 라고 한다.) 정보를 작성하면 효율적이고, 체계적으로 정보를 저장할 수 있다. 프로그래밍에서도 엑셀과 같은 형태로 저장하는 방식이 데이터베이스(DB)이다.
데이터베이스는 영구적으로 저장하는 반면 배열과 리스트는 프로그램이 수행하는데 필요한 데이터를 잠시 메모리에 저장해서 사용하기에, 데이터베이스처럼 복잡하지 않고, 단순한 형태다.
데이터 구조의 원리
프로그래밍에서 데이터 구조(Data Structure)는 정보를 정리하고, 논리적으로 배치하는 방법이다. 배열과 리스트는 순차적인 데이터를 효율적으로 저장하고 관리하는 대표적인 구조다.
예를 들어, 숫자 목록을 정렬하거나, 데이터를 체계적으로 저장하고 검색하는 데 사용되고, 각각의 요소가 명확한 위치(index)를 가지며, 질서와 구조적인 배치를 중시한다.
// 배열과 리스트의 예시
numbers = [1, 2, 3, 4, 5] // 순차적으로 정렬된 데이터 구조
console.log(numbers[2]) // 3번째 요소(3) 출력
각 데이터는 명확한 위치를 가지며, 순차적으로 정렬되어 있어 논리적인 흐름을 유지한다. numbers[2]가 3번째 요소를 출력하는 이유는 프로그램은 숫자를 셀 때 0부터 시작하기 때문이다.
배열과 리스트는 정해진 규칙을 따르는 데이터 구조로, 데이터를 논리적으로 정리하고, 특정한 규칙 속에서 패턴을 유지하는 방식을 따른다.
// 배열을 활용한 정렬된 데이터 구조
students = ["Plato", "Aristotle", "Socrates", "Cicero"]
students.sort() // 알파벳 순서대로 정렬
console.log(students) // ['Aristotle', 'Cicero', 'Plato', 'Socrates']
sort는 배열로 되어 있는 데이터를 정렬하는 기능이다. 기본적으로 알파벳순으로 정렬하지만, 원하는 규칙대로 정렬할 수도 있다.
18세기 후반 유럽에서 등장한 신고전주의(Neoclassicism)도 질서와 구조를 강조한 예술 운동이었다. 신고전주의 예술은 균형 잡힌 구도, 기하학적 형태, 명확한 규칙성을 바탕으로 엄격한 구조와 논리를 강조했다.
이성과 질서를 추구한 예술 운동
18세기 중반까지 로코코(Rococo) 예술이 유행했으며, 이는 우아하고 장식적인 스타일이 특징이었다.
하지만 프랑스혁명(1789)을 전후로 로코코의 가볍고 감각적인 분위기가 사치스럽고 나약하다는 비판을 받게 되었다. 또한 이성과 논리를 중시하는 계몽주의 시대에 맞춰, 예술도 합리성과 구조적인 질서를 갖춰야 한다는 인식이 강해졌다. 혼란스러운 감정보다는 명확한 메시지를 전달하는 것이 목표가 되었다.
여기에, 이탈리아에서 고대 도시 폼페이와 헤르쿨라네움이 발굴되면서, 그리스·로마 예술에 대한 관심이 다시 부활했다. 예술가들은 바로크와 로코코의 감각적인 스타일에서 벗어나, 고대 조각과 건축의 엄격한 비례와 단순미를 재현하려 했다. 이로 인해 고대 그리스·로마의 엄격한 형식미를 되찾아야 한다는 요구가 높아졌고, 신고전주의가 등장하게 되었다.
1784년 프랑스 왕 루이 16세는 자크 루이 다비드에게 역사적인 주제를 다룬 대형 회화를 의뢰한다. 당시 프랑스는 혁명의 전조가 보이던 시기로, 왕실은 도덕과 국가적 의무를 강조하는 예술을 통해 국민의 충성을 강화하고자 했다. 다비드는 이 요청을 받아, 고대 로마를 배경으로 한 역사적 사건인 기원전 7세기 로마와 알바롱가(Alba Longa) 사이에서 벌어진 전쟁과 관련된 이야기에서 영감을 얻어 신고전주의의 대표작 격인 <호라티우스 형제의 맹세(The Oath of the Horatii)>를 그리게 된다.
이 작품은 로마의 세 형제가 조국을 위해 결투를 맹세하는 장면으로 군더더기 없는 구도, 기하학적 구조, 명확한 대칭적 배치를 통해 질서를 강조한다. 병사들은 좌우 대칭적인 형태로 배치되어 있으며, 중앙의 기둥들이 수직적이고 안정적인 구조를 형성한다. 극적인 감정을 배제하고, 논리적이고 명확한 메시지를 전달하고 있다.
1784년 루이 16세의 의뢰로 제작되었지만, 프랑스혁명(1789) 이후 더욱 강한 의미를 가지게 되었다.
이 작품은 프랑스혁명의 가장 상징적인 회화 작품 중 하나이다. 프랑스혁명 중 암살당한 프랑스 혁명기 급진적 공화주의자이자 ‘자코뱅당’의 지도자 장 폴 마라(Jean-Paul Marat)의 죽음을 기리는 정치적 초상화이며, 순교자적 이미지를 통해 혁명의 정당성을 강화하려는 목적으로 제작되었다.
다비드는 불필요한 요소를 배제하고, 오직 마라의 죽음만을 강조했다. 배경은 어두운 암흑으로 처리되어 있으며, 이는 바로크 미술에서 순교자들을 묘사할 때 사용된 기법과 유사하다.
신고전주의는 이성과 논리를 바탕으로 한 예술 운동으로, 감각적이고 장식적인 요소를 배제하고, 본질적인 형태와 의미를 강조한다. 프로그래밍의 데이터 구조 역시 효율적인 저장과 접근을 위해 불필요한 복잡성을 제거하고, 가장 논리적인 방식을 추구한다.
신고전주의는 고대 그리스·로마의 엄격한 비례와 질서를 계승하며, 예술 속에서 구조적 사고를 강조했다. 프로그래밍의 배열과 리스트는 데이터를 논리적으로 정리하고, 체계적인 접근 방식을 제공한다.
프로그래밍은 데이터가 정확해야 한다. 데이터가 모호하거나, 알 수 없다면 프로그램으로서의 가치가 없어진다. 정확한 데이터를 위해서는 다소 엄격한 규칙과 구조가 필요하다. 이러한 면에서 엄격한 비례와 구조를 강조한 신고전주의와 맥락을 같이 한다.
규칙 없는 자유 주제가 오히려 더 어렵듯이 규칙이 있어야 더 나은 창의적 결과물이 나올 수 있다. (신고전주의는 너무 고지식한면 있기는 하지만) 프로그램 또한 규칙이 없다면 IT 분야에서 흔히 말하는 스파게티 코드(로직이 이해하기 힘들게 꼬여 있는 코드)가 될 수 있듯, 규칙 아래 정리된 코드가 잘 된 코드이다.