알고리즘으로 철학하기

   
변정수 (지은이)
ǻ
이상북스
   
26000
2025�� 04��



■ 책 소개


알고리즘을 통해 기술과 철학의 경계를 가로지르는 여정

책의 서론 격인 “1부 왜 ‘알고리즘으로 철학하기’일까?”에서는 인간과 알고리즘에 대한 간략한 역사를 기술한다. 알고리즘은 컴퓨터과학에서 주로 사용되지만 그 배경은 수학이다. 그래서 약간의 수식과 알고리즘, 그리고 간단한 프로그래밍 코드가 추가되었지만 관련 지식이 없어도 이해하기 어렵지 않다.

“2부 알고리즘 용어 이해하기”에서는 이 책 전반에서 사용되는 알고리즘의 가장 기초적이면서 근본적인 개념과 프로그래밍 언어에 관해 소개한다. 계산에 대한 다양한 개념과 상호 상관성을 미리 파악하고 읽기를 권한다.

“3부 알고리즘 용어로 철학 개념 잡기”에서는 알고리즘의 기본 용어들을 철학의 주요 개념들과 대조하며, 알고리즘 접근방식이 철학의 사유방식이나 이론과 어떻게 연결될 수 있는지를 살펴본다. 알고리즘이 철학의 문제를 명료하게 설명하는 방식에 집중하여 논의를 전개한다.

“4부 알고리즘으로 철학하기”에서는 알고리즘을 철학 사상과 연결하여, 각각의 알고리즘이 철학적 이론을 어떻게 설명하고 새로운 해석 가능성을 열어주는지 구체적 사례를 통해 알아본다.

마지막 “5부 우리가 선택하지 않은 미래, 알고리즘 사회”는 알고리즘이 현대 사회를 어떻게 재구성하고 있는지 대표적 사례와 그 철학적 함의를 살펴보며 알고리즘 사회의 본질에 대한 논의로 마무리한다.

■ 저자 변정수
학부에서 수학과 전산학을 전공했고, 정보보안과 암호학으로 프랑스 마르세이유 2대학과 툴롱에듀바 대학에서 석사와 박사 학위를 받았다. 삼성SDS, 경찰청, 김앤장 법률사무소, 개인정보보호위원회 등에서 정보보안, 해킹, 개인정보 유출 등 사이버범죄 수사 및 자문하는 일을 했고, 현재 광운대학교에서 정보보안학, 디지털포렌식, 암호학 등을 강의하고 있다.

오랜 실무경력을 통해 기술이 인간을 훈육하고 길들이며 새로운 삶의 형태를 재구성하는 존재임을 체험하고, 10여 년간 ‘수유너머 파랑’ 연구원으로 다양한 현대 기술철학 세미나에 참여하면서 기술철학, 신유물론, 인공지능 철학을 공부하고 있다. 역서로 《컴퓨터로 철학하기》(이상북스)가 있다.

■ 차례
들어가며

1부 왜 ‘알고리즘으로 철학하기’일까?
1장 | 고리즘의 두 얼굴
2장 | 고대, 바빌로니아ㆍ이집트 문명과 알고리즘의 유래
3장 | 고대, 동아시아의 문제 해결 방식
4장 | 중세, 이슬람 세계의 체계적인 문제 해결 방법
5장 | 근대, 수학과 논리를 통한 알고리즘의 체계화
6장 | 현대, 컴퓨터과학의 발전과 알고리즘의 역할

2부 알고리즘 용어 이해하기
1장 | 표상과 데이터 구조
2장 | 언어와 의미
3장 | 제어 구조와 반복문
4장 | 재귀와 자기참조
5장 | 유형과 제네릭 프로그래밍
6장 | 언어와 알고리즘

3부 알고리즘 용어로 철학 개념 잡기
1장 | 탐욕 알고리즘과 도구적 합리성
2장 | 병렬 처리와 다원성
3장 | 재귀 알고리즘과 재귀성
4장 | 분할정복 방식과 분석적 사고
5장 | 백트래킹과 귀류법
6장 | 그래프와 네트워크 사유
7장 | 유전자 알고리즘과 자유의지 혹은 결정론
8장 | 엔트로피와 오토포이에시스
9장 | 확률 알고리즘과 우연성

4부 알고리즘으로 철학하기
1장 | 구문분석 알고리즘과 언어철학
2장 | 패턴 인식 알고리즘과 게슈탈트 이론
3장 | 강화학습과 경험주의
4장 | 범죄 예측 알고리즘과 정의론
5장 | 베이즈 알고리즘과 과학적 추론
6장 | 객체지향프로그래밍과 객체지향 철학
7장 | 에이전트 기반 모델링과 신유물론
8장 | 외부 메모리 관리 알고리즘과 기억의 외부화
9장 | GAN 알고리즘과 이드ㆍ자아ㆍ초자아
10장 | 추론 알고리즘과 온톨로지
11장 | 마스터 알고리즘과 전일론

5부 우리가 선택하지 않은 미래, 알고리즘 사회
1장 | 맞춤형 광고 알고리즘과 프라이버시 제로 사회
2장 | 블랙박스 알고리즘과 블랙박스 사회
3장 | 데이터 자본주의의 핵심 도구로서의 알고리즘
4장 | 알고리즘의 힘과 플랫폼 자본주의
5장 | 테크노퓨달리즘, 알고리즘이 만든 새로운 종속 구조

나오며

참고문헌
찾아보기(용어)
찾아보기(인명)

 




알고리즘으로 철학하기


왜 ‘알고리즘으로 철학하기’일까?

알고리즘의 두 얼굴

AI 시대의 철학, 알고리즘과 윤리적 사유의 필요성

'알고리즘으로 철학하기'는 철학 개념을 명확하고 체계적으로 분석하는 데 초점을 둡니다. 알고리즘의 논리적 구조를 활용해 복잡한 철학적 문제를 세분화하고, 그 해결책을 단계적으로 도출하는 방식이죠. 이 방식은 철학과 과학기술을 융합하여 복잡한 문제를 해결하는 데 유용합니다. 특히 컴퓨터과학, 물리학, 인공지능 등 다양한 분야의 지식과 철학적 사고를 결합하여 더 넓은 관점에서 문제를 바라볼 수 있습니다.


알고리즘으로 철학을 해야 하는 중요한 이유 중 하나는 인공지능 윤리와 밀접한 관련이 있습니다. 알고리즘의 편향성과 책임성에 대한 철학적 논의를 통해 보다 윤리적인 알고리즘을 개발할 수 있기 때문입니다. 최근 천재 컴퓨터과학자 스티븐 울프램의 인터뷰 기사에서 AI가 넘쳐나는 시대에 왜 고전철학이 필요한지 역설한 바 있습니다. 울프램은 AI 개발 회사 관계자들과 소크라테스 대화법으로 난상 토론을 벌인 후 경영진과 개발자 모두 '아무 생각 없음'에 큰 충격을 받았다고 하죠. 그래서 지금은 여러 대학의 철학과 학생들을 대상으로 강연을 한다고 합니다. 'AI가 세상을 지배한다면, AI가 인류에게 어떻게 행동하기를 원하는가?' 'AI 시대에 정치철학이란 어떤 의미인가?', 이런 물음들을 통해 플라톤이 물었던 근본적인 질문으로 되돌아가서 다시 시작하자고 말합니다. 컴퓨터과학의 최전선에 있는 울프램이 철학과 기술, 특히 철학과 컴퓨터과학 간의 연관성을 보고 있습니다. 이것은 AI 개발에 관한 질문을 수학이나 컴퓨터과학의 문제로만 다루기보다 철학적 접근이 보다 중요하다는 것을 철학자가 아닌 컴퓨터과학자가 역설적으로 말해주는 것입니다.



알고리즘 용어 이해하기

표상과 데이터 구조

철학과 컴퓨터과학에서의 표상, 사고와 계산의 중간적 매개

표상(representation)은 본래 철학적 맥락에서 모호하고 중간적인성격을 가진 것을 의미합니다. 고대 그리스 철학에서 표상은 사물의 실재에도 인간의 사고(思考)에도 완전히 속하지 않는 존재로 간주되었죠. 그리스 철학자들은 인간이 감각을 통해 사물의 참된 본질을 파악할 수 있다고 주장했지만, 표상은 이러한 감각적 경험의 결과로 생겨나는 일종의 '감각에 의한 운동'으로 간주되곤 했습니다. 다시 말해, 표상은 실재를 직접적으로 반영하는 것이 아니라, 감각적 경험에 의해 형성된 중간적이고 주관적인 산물이라는 것이죠. 이렇게 고대 그리스 철학에서 표상은 감각적 운동의 결과를 넘어, 인간 정신의 작용에서 비롯된 환상(phantasia)으로 이해되었습니다. 다시 말해 사물의 본질이나 진리를 직접적으로 나타내는 것이 아니라, 인간의 정신이 감각적 경험을 기반으로 형성한 상을 의미했습니다. 이런 관점에서 표상은 인간 사고와 실재 사이에 위치한 불완전하고 주관적인 매개체로서, 우리의 인식과 현실 이해를 복잡하게 만듭니다.


컴퓨터과학에서 표상은 현실 세계의 객체, 개념, 상태 등을 기호나 구조로 나타내는 과정을 의미합니다. 문제를 정의하고 해결하기 위한 계산의 기초가 되죠. 복잡한 문제를 체계적으로 분석하고 해결할 수 있도록 돕는 표상은 특히 고대 신화의 이야기에서도 찾아볼 수 있습니다. 미노타우로스가 갇혀 있는 미궁(labyrinth)에 들어간 테세우스는 아리아드네의 실타래를 사용해 탈출하는데, 이 과정은 표상을 활용한 대표적 사례라 할 수 있습니다. 이 실타래는 이동 경로를 표시함은 물론, 미로라는 복잡한 환경에서 안전한 탈출 경로를 체계적으로 구성하는 데 중요한 역할을 합니다.


표상은 문제적 표상과 계산적 표상으로 구분될 수 있습니다. 문제적 표상은 미궁이라는 공간에서 안전과 위험을 구분하는 데 중점을 둡니다. 미로의 각 길목과 갈림길은 안전한 경로와 미노타우로스와 같은 위험 요소를 구분하는 문제적 표상의 역할을 하죠. 반면, 계산적 표상은 테세우스가 실타래를 이용해 미로를 탐색하고 탈출하는 구체적 단계를 나타냅니다. 테세우스는 실타래를 통해 이미 지나온 경로를 기억하고, 미로를 되돌아 나가는 안전한 경로를 체계적으로 계산합니다.


미로와 실타래는 표상이 계층적으로 어떻게 작동하지를 잘 보여줍니다. 실타래의 각 구간은 개별적인 계산적 표상으로 작동하며, 지나온 길과 앞으로 나아가야 할 경로를 구분합니다. 동시에 실타래 전체는 미궁이라는 복잡한 구조에서 테세우스가 안전하게 탈출하기 위한 전체 경로를 나타내는 상위 표상으로 기능합니다. 복잡한 문제를 단순화하고 해결하기 위해 표상이 어떻게 작동하는지를 상징적으로 보여주죠.


표상은 여러 계층으로 이루어질 수 있으며, 문제 해결 과정의 각 단계에서 다른 표상 방식이 사용될 수 있습니다. 실타래의 각 구간은 테세우스가 이동한 특정 위치를 나타내는 계산적 표상이지만, 실타래 전체는 미로의 출구로 돌아가는 완전한 경로를 나타내는 상위 표상으로 작용합니다. 이런 계층적 구조는 미로라는 복잡한 문제를 부분적으로 해결하고, 이를 조합해 최종적인 해결책을 도출하는 데 효과적입니다. 이는 문제를 분할하고 단계적으로 해결하는 알고리즘 사고와도 밀접하게 연결되어 있습니다.


배열과 리스트, 데이터 구조의 선택이 문제 해결을 결정한다

데이터 구조(data structure)는 데이터를 체계적으로 관리하고 조작하기 위한 구체적인 구현 방식으로, 표상을 현실화하는 역할을 합니다. 알고리즘이 효율적으로 작동할 수 있는 기반이 되면서 문제 해결의 효율성을 결정짓는 중요한 요소이기도 하죠. 데이터 구조는 표상과 밀접하게 연결되어 있으며, 데이터 타입(data type)을 구체적으로 구현하는 역할을 합니다. 데이터 타입은 작업의 본질을 정의하고, 데이터 구조는 이를 물리적 또는 논리적으로 표현하는 방식입니다. 데이터 타입은 컴퓨터과학에서 특정 작업에 적합한 데이터의 본질과 형식을 정의하는 개념입니다. 데이터 타입은 숫자, 텍스트, 논리값과 같이 다양한 형태의 데이터를 다루며, 이를 통해 프로그래밍 언어가 데이터를 처리하고 조작하는 방식을 결정합니다.


알고리즘에서 많이 사용되는 두 가지 대표적인 데이터 구조가 배열(array)과 리스트(list)입니다. 배열은 일정한 크기의 데이터를 저장하는 공간을 미리 확보하고, 각 데이터를 순서대로 저장하는 구조입니다. 책꽂이에 책을 차례대로 꽂아두고 특정 위치의 책을 쉽게 꺼내볼 수 있는 방식과 비슷하죠. 배열의 가장 큰 장점은 각 데이터를 빠르게 찾을 수 있다는 것입니다.


책꽂이에서 책이 몇 번째 칸에 있는지 알면 바로 꺼낼 수 있는 것처럼, 배열에서는 숫자로 된 '주소'(인덱스)를 이용해 데이터에 즉시 접근할 수 있습니다. 하지만 배열은 처음에 정해진 크기를 변경할 수 없다는 단점이 있습니다. 마치 책꽂이의 칸이 정해져 있어서 더 많은 책을 넣으려면 새로운 책꽂이를 사야 하는 것과 비슷하죠.


반면 리스트는 필요할 때마다 공간을 늘리거나 줄일 수 있는 유연한 구조입니다. 책꽂이에 책을 정해진 칸에 놓는 것이 아니라, 책들을 자유롭게 묶어서 관리하는 방식이라고 생각하면 됩니다. 즉, 책 하나를 다른 책과 연결해두면, 새로운 책이 생길 때마다 기존 책에 이어 붙일 수 있고, 필요하면 중간에 있는 책을 쉽게 빼낼 수도 있습니다.


이런 특징 덕분에 리스트는 데이터를 추가하거나 삭제하는 작업이 많을 때 유리합니다. 하지만 배열처럼 특정 위치의 데이터를 바로 찾는 것은 느릴 수 있습니다, 왜냐하면 리스트는 각 데이터가 앞뒤로 연결된 구조이기 때문에 처음부터 하나씩 찾아가야 하기 때문입니다. 이처럼 배열과 리스트는 각각 장점과 단점이 있어서 해결해야 할 문제의 성격에 따라 적절한 구조를 선택하는 것이 중요합니다. 배열은 빠른 접근 속도가 필요한 경우에 적합하고, 리스트는 데이터 크기가 계속 변하거나 중간에 데이터를 자주 추가하고 삭제해야 하는 경우 유리합니다. 알고리즘을 설계할 때 어떤 데이터 구조를 선택하느냐에 따라 실행 속도와 효율성이 크게 달라질 수 있으므로, 이를 잘 이해하고 활용하는 것이 중요합니다.


언어와 의미

언어의 한계와 번역의 문제, 철학과 프로그래밍 언어의 교차점<
/P> 언어(language)가 본격적으로 철학적 문제로 다루어지기 시작한 것은 비교적 최근 일입니다. 이전에는 언어가 타자에게 사고를 전달하는 도구로만 여겨졌죠. 철학적 전통에서는 사고가 정신 내에서 형성되고, 언어는 이를 표현하여 전달하는 역할에 그친다고 보았습니다. 특히 언어는 사고의 정확성을 손상시키면서도 타자와의 의사소통을 가능하게 하는 불완전한 수단으로 간주되었습니다. 그래서 언어 자체의 구조와 작동방식은 사유의 대상은 아니었습니다. 언어가 단순한 도구를 넘어 사고를 구성하는 중요한 요소로 인식되기 시작한 것은 비트겐슈타인에 이르러서였습니다.


철학자들이 말, 즉 지식, 존재, 대상, 자아, 명제, 이름 등을 사용하여 사물의 본질을 파악하고자 할 때 항상 다음과 같이 물을 필요가 있다. 도대체 이 말은 그 고향인 언어 속에서 실제로 그렇게 쓰이고 있는가? 이러한 말들을 그 형이상학적인 용법에서 일상적인 용법으로 다시 되돌리자.


비트겐슈타인은 《철학적 탐구》(아카넷, 2016)에서 언어를 철학의 근본 토대로 보았습니다. 철학적 문제를 해결하기 위해 일상 언어의 사용법으로 돌아가야 한다고 했죠. 철학적 사유의 출발점이자 궁극적 고향이 언어라는 점을 강조한 것으로, 형이상학적 용어를 일상적 맥락으로 되돌리는 작업을 통해 철학적 혼란을 해소할 수 있다고 보았습니다. 그는 사고와 표상이 언어 바깥에서 독립적으로 존재하는 것이 아니라, 오히려 언어를 통해 실현된다고 보았습니다. 이 관점에서 언어는 인간이 세계를 이해하고 해석하는 방식을 규정하며, 언어 없이는 사고나 표상이 성립할 수 없다고 말합니다.


또 비트겐슈타인은 언어를 이해하기 위해 또 다른 메타언어가 필요하지 않다고 강조했습니다. 언어는 그 자체로 충분히 스스로를 설명할 수 있으며, 이를 이중 구조적으로 분석하려는 시도는 불필요하다는 것이죠. 철학이 철학 자체를 초월하려는 시도를 경계하며, 언어를 설명하기 위해 언어 바깥에서 새로운 틀을 찾으려는 시도를 비판하는 태도입니다. 언어의 구조와 작동방식은 그 자체로 사고와 표상을 구성하며, 추가적인 외부 도구 없이도 스스로를 이해할 수 있다고 보았기 때문입니다. 그러나 컴퓨터 언어는 인간 사고를 기계가 이해하고 처리하기 위해 일종의 메타언어를 통한 번역 과정이 필요합니다. 프로그래밍 언어는 알고리즘과 계산을 표현하는 강력한 도구지만, 기계는 이러한 언어를 직접 처리하지 못합니다.


따라서 컴파일러(compiler)와 인터프리터(interpreter) 같은 중간 도구가 필요하죠. 이들은 고급 프로그래밍 언어를 기계어로 변환하거나 명령을 실시간으로 해석해 컴퓨터가 실행할 수 있도록 합니다. 이 언어 변환은 한 프로그래밍 언어로 작성된 코드나 명령을 다른 형태로 변환해 다양한 환경에서 실행할 수 있게 하는 과정입니다. 컴파일러는 파이썬, 자바와 같은 고급 언어를 기계어로 변환해 컴퓨터가 이해하고 실행할 수 있는 형태로 만들고, 인터프리터는 코드를 실시간으로 해석해 명령어를 즉시 실행하죠. 이런 변환 과정은 언어 간 차이를 극복하고, 알고리즘이 다양한 환경에서 활용될 수 있도록 합니다.


제어 구조와 반복문

프로그래밍 언어와 제어 구조, 알고리즘을 표현하는 기초 원리

모든 알고리즘은 특정한 언어를 통해 표현되며, 그 언어의 형식적 의미체계, 즉 의미론에 따라 수행할 계산과 동작이 결정됩니다. 이때 알고리즘이 어떤 종류의 언어로 표현되느냐에 따라 실행 환경과 결과물이 달라짐에도 불구하고, 이러한 언어들은 공통으로 두 가지 기본 지침에 의해 구성됩니다. 첫째, 동작(operations)은 특정한 효과를 만들어내는 명령어이며, 둘째, 제어 구조(control structure)는 이러한 동작의 순서와 반복, 조건에 따라 실행 방식을 조정하는 메커니즘입니다. 특히 제어 구조는 알고리즘의 표현력을 결정하는 중요한 요소죠. 제어 구조가 풍부하고 유연할수록 더 복잡하고 다양한 알고리즘을 언어로 구현할 수 있습니다. 가령 반복문(for, while)이나 조건문(if, switch) 같은 기본 제어 구조는 알고리즘이 복잡한 문제를 체계적으로 해결하는 기반이라 할 수 있습니다. 반대로 제어 구조의 표현성이 제한적인 언어는 특정 유형의 알고리즘만 표현할 수 있어 문제 해결 범위가 축소됩니다. 따라서 언어 설계에서 어떤 제어 구조를 포함할지를 결정하는 것은 언어의 기능성은 물론 그 언어로 해결 가능한 문제의 범위를 정의하는 본질적인 작업이라 할 수 있습니다. 


알고리즘으로 표현한 니체의 영원회귀, 정형성과 변주 사이</P> 반복문은 조건이 충족될 때까지 반복 실행되지만, 종료 조건이 명확하게 설정되지 않으면 무한히 반복될 위험이 있습니다. 이를 무한 루프라고 하며, 프로그램이 멈추지 않고 계속 실행되어 시스템 성능을 저하시킬 수 있습니다. 따라서 반복문을 설계할 때 명확한 종료 조건을 설정해야 합니다. 반복 횟수 제한을 두거나 최대 실행 시간을 정하는 방법으로 문제를 예방할 수 있습니다. 실제 사례를 보면, 웹 서버가 클라이언트의 요청에 응답하기 위해 대기하는 경우, 일정 시간 내에 응답이 오지 않으면 대기를 종료하도록 설정할 수 있습니다. 이를 타임아웃이라고 하는데, 무한 대기 상태를 방지하기 위해 끝내는 종료조건에 해당됩니다.


반복문 중에는 repeat문이 있습니다. 특정 작업을 반복 실행하는 반복문으로, 주로 조건을 나중에 검사하는 방식으로 작동합니다. 즉, 최소 한 번은 반복문 내부의 작업이 실행되며, 이후 조건을 평가해 반복을 계속할지 결정합니다. 파이썬에서는 사용되지 않지만, 일부 프로그래밍 언어에서는 여전히 사용됩니다. 


반복문은 순환을 기술하는 것으로, 알고리즘 자체와 그것에 의해 수행되는 계산을 모두 포함하는 개념입니다. 반복 과정은 물론 반복을 설계하고 정의하는 구조, 즉 알고리즘과 이를 실행하여 결과를 만들어내는 실제 과정, 즉 계산을 모두 포괄합니다. 여기에서 중요한 점은 '기술(description)'과 '실행(execution)'의 차이를 이해하는 것입니다. 알고리즘은 무엇을 어떻게 해야 하는지에 대한 설계도를 제공하는 반면, 계산은 이 설계도가 구체적인 실행으로 나타나는 과정을 의미합니다. 반복문을 이해했다면, 이제 니체의 영원회귀을 알고리즘으로 표현해볼까요?


영원회귀 (event)

입력 : 반복될 사건 event

출력 : 반복된 event 또는 종료 메시지


1. 시작

2. 반복:

a. event를 실행하거나 출력한다.

 

b. 사용자에게 "계속하려면 Enter를 누르고, '죽음'을 입력하면 종료합니다:"를 요청한다.

c. 사용자의 입력을 확인한다.

i. 만약 입력이 "죽음"이면:

- "영원회귀의 사슬이 끊어졌습니다."를 출력한다.

- 반복을 종료한다.

3. 끝


이 알고리즘은 반복될 사건(event)을 입력으로 받아 동작합니다. 사용자가 "죽음"이라는 단어를 입력하면 반복이 멈추고, 종료 메시지가 표시됩니다. "삶은 무한히 반복된다. 너는 이 영원을 견딜 준비가 되었는가?"라는 문장을 사건으로 입력했다고 가정해보겠습니다. 그러면 화면에 이 문장이 출력되고, 사용자는 Enter를 눌러 반복을 계속하거나 "죽음"을 입력해 반복을 끝낼 수 있습니다. Enter를 누르면 문장이 다시 출력되고, "죽음"을 입력하면 "영원회귀의 사슬이 끊어졌습니다. "라는 메시지가 표시되며 아래와 같이 종료됩니다.


삶은 무한히 반복된다. 너는 이 영원을 견딜 준비가 되었는가?

계속하려면 Enter를 누르고, '죽음'을 입력하면 종료합니다:

삶은 무한히 반복된다. 너는 이 영원을 견딜 준비가 되었는가?

계속하려면 Enter를 누르고, '죽음'을 입력하면 종료합니다: 죽음

영원회귀의 사슬이 끊어졌습니다.


우리는 매일 일어나서 옷을 입고, 아침을 먹고, 출근하는 일을 반복합니다. 이런 일상적인 반복은 무심하게 기계적으로 되풀이되는 것처럼 보일 수 있지만, 실제로는 그보다 더 복잡한 의미를 내포하고 있습니다. 어제 한 일이 오늘에 영향을 미치고, 오늘의 선택이 내일의 방향을 결정짓기 때문이죠. 비슷한 행동을 반복하는 것 같아 보여도, 각 반복은 다른 맥락 속에서 이루어지며, 작은 차이들이 쌓여 새로운 결과를 만들어냅니다. 이를 통해 우리는 변화와 발전을 느낄 수 있습니다. 이렇게 보면 우리 삶은 단순한 반복이 아니라 변화와 연결된 순환 과정이라고 할 수 있습니다. 이러한 변화는 외부에서 주어진 것이 아니라, 우리가 매 순간 선택을 통해 만들어낸 결과입니다.


그러나 알고리즘은 이러한 변화를 포착하는 데 한계를 가질 수 있습니다. 알고리즘은 정형화된 규칙과 절차를 따르며, 동일한 입력에 대해 동일한 출력을 생성할 뿐이죠. 일상의 반복 속에서 일어나는 미묘한 차이, 즉 맥락과 선택에서 비롯되는 변화는 알고리즘의 범위를 넘어서는 영역일 수 있습니다. 삶은 계산 가능한 요소들의 집합라기보다, 예측 불가능하고 비정형적인 요소들로 가득 차 있기 때문입니다.



알고리즘으로 철학하기

객체지향프로그래밍과 객체지향 철학

객체는 어떻게 존재하는가?

객체지향 철학과 프로그래밍의 연결

객체지향 철학은 객체지향 존재론(object-oriented ontology)이라고도 불리며, 여기서 말하는 객체는 우리 주변 사물들을 말합니다. 그레이엄 하먼은 이 객체지향 철학을 통해 사물의 독립적 존재와 그들 사이 관계성을 강조합니다. 철학에서의 객체는 인간만을 중심으로 세상을 이해하지 않고, 사물 그 자체의 독립적 실재에 초점을 맞춘다는 거죠.


실체에 대한 이 모든 전통적 특징은 거부되어야 한다. 객체는 자연적인 것이거나 단순한 것이거나 파괴될 수 없는 것일 필요가 없다. 대신 객체는 스스로의 자율적 실재성에 의해서만 규정될 것이다.


하먼은 《쿼드러플 오브젝트》(현실문화연구, 2019)에서 객체의 자율적 실재성을 강조하며, 기존 전통적 실체 개념의 한계를 지적합니다. 객체를 자연적이거나 단순한 실체로 고정할 필요가 없으며, 이를 구성하는 조각이나 외부 관계로 환원되지 않는 독립적이고 고유한 존재로 정의하죠. 객체는 관계를 거부할 수 있는 자율적 특성을 지닌 동시에 자신의 구성 요소를 초월한 전체로서 드러나는 이중성을 갖습니다. 하먼은 인간 중심적 관점에서 벗어나 모든 객체를 평등한 실재로 다루자고 제안합니다. 객체는 상호작용 속에서도 본질이 완전히 소진되지 않는 존재로 이해되며, 이를 통해 객체지향 존재론은 환원 불가능한 독립적 실재를 사유합니다.


객체지향 철학의 핵심은, 사물이 인간의 필요나 관점에서만 정의되지 않고 그 자체로 독립적 존재라는 것입니다. 이 사물들은 상호작용하면서도 그 상호작용이 사물의 본질을 완전히 드러내지는 못합니다. 의자가 있다면, 우리는 그 의자의 기능을 이용해 앉을 수 있지만, 그 의자의 전체적 본질을 알 수 있는 건 아니죠. 이것은 철학적으로 보면 복잡한 시스템에서 핵심 부분만을 드러내고 불필요한 세부 사항은 감추는 개념입니다. 본질적으로 사용자가 알아야 할 중요한 요소에만 집중할 수 있도록 돕는 것이죠.


이 논의는 인간이 사물의 본질을 완전히 이해할 수 없다는 철학적 입장을 반영합니다. 객체지향 존재론에서는 사물 간 관계를 본질적 요소로 간주하지 않고, 인간이든 비인간 사물이든 모든 관계를 단순한 상호작용으로 봅니다. 여기서 핵심은 사물 자체의 독립성으로, 이는 객체지향 프로그래밍에서 객체들이 독립적으로 존재하면서도 메시지를 통해 상호작용하는 방식과 유사합니다. 이러한 접근은 사물을 관계 속에만 묶어두지 않고 그 고유한 존재를 강조하는 데 초점을 맞춥니다. 토마스 네일의 철학은 이런 논의에 새로운 차원을 더합니다. 그는 《존재와 운동》(앨피, 2021)에서 사물을 고정된 존재로 보지 않고 끊임없는 운동 속에서 정의되는 존재로 설명합니다. 사물이 정적인 실체가 아니라 끊임없이 변화하며 관계 속에서 그 의미가 재구성됩니다. 특히 사물이 한낱 독립된 존재임을 넘어, 운동과 변화 속에서 끊임없이 새롭게 드러난다는 점을 강조하죠.


존재는 흐른다. 이것이 최초이자 중심적 테제이며, 이것으로부터 운동 이론 전체가 따라 나온다. 운동 이론의 세 가지 핵심 개념은 흐름, 접힘, 장이다. 즉 존재는 흘러야 한다는 것, 존재는 접혀야 한다는 것, 존재는 장을 통해 순환해야 한다는 것이다. 그러나 존재론적으로 말해서, 이 셋은 공동 일차적이며, 서로와 분리할 수 없다. 운동이 존재하기 위해서는 존재가 흐르고, 접히고, 순환해야 하는 것이 다. 흐름, 접힘, 장은 움직임을 위한 역사적으로 필연적인 조건이다. 이러한 네일의 주장은 사물을 고정된 실체로 보지 않고 운동과 변화의 흐름 속에서 정의되는 동적 존재로 이해하는 독특한 존재론적 관점을 드러냅니다. '흐름, 접힘, 장'이라는 세 가지 핵심 개념은 존재의 조건이자 운동의 필연적 요소로 작용하며, 존재는 이들 세 가지 과정을 통해 지속적으로 새롭게 구성됩니다.


'흐름'은 존재가 닫히거나 정체되지 않고, 환경과의 관계 속에서 지속적으로 움직이며 의미를 생성해 나가는 과정을 말합니다. '접힘'은 이러한 흐름 속에서 다양한 요소들이 상호작용하며 서로 안으로 접히고, 복합적인 구조와 다층적인 의미를 형성하는 과정을 가리킵니다. 사물의 본질과 의미는 단일하게 고정되지 않고, 관계의 차원에서 끊임없이 재구성됩니다. '장'은 이러한 운동과 접힘이 이루어지는 역동적 배경으로, 사물들 간 관계가 변화하며 존재를 새롭게 구성하는 공간을 제공합니다. 네일의 철학에서 존재란 고정된 실체가 아니라, 끊임없이 흐르고 접히며 장 속에서 재구성되는 과정으로 이해됩니다. 사물이 독립적이고 고립된 실체가 아니라, 운동과 상호작용 속에서 의미와 기능을 새롭게 만들어가는 생동감 있는 존재라는 점을 부각합니다.


의자는 고정된 기능을 가진 사물 그 자체가 아닌 그 맥락 속에서 다양한 가능성을 지닌 존재로 나타납니다. 어떤 상황에서는 앉는 도구로, 또 다른 상황에서는 장식물이나 무언가를 지지하는 도구로 활용되듯, 의자의 본질은 고정된 것이 아니라 변화하는 맥락과 관계 속에서 드러나는 것입니다. 이런 관점은 객체지향 철학에서 강조하는 사물의 독립성과도 연결됩니다. 객체지향 철학은 사물이 독립적 실재를 지니면서도 운동과 상호작용을 통해 끊임없이 변화할 수 있음을 보여줍니다.



* * *


본 정보는 도서의 일부 내용으로만 구성되어 있으며, 보다 많은 정보와 지식은 반드시 책을 참조하셔야 합니다.