논리란 무엇인가
'논리' 는 일상에서도 참 많이 쓰는 말입니다. 특히 컴퓨터를 이해함에 있어서 논리는 빼놓을 수 없는 요소이지요.
얼마 전 면접장에서 '한 과목을 정해 그것이 왜 논리적인지 설명하라' 는 질문을 받은 적이 있습니다. 물론 저는 당황한 나머지 제대로 답변을 하지 못하고 횡설수설하고 말았습니다. 말로는 논리, 논리 하는데 논리라는게 정말 뭘까? 왜 컴퓨터는 논리적인 도구인가?
표준국어대사전에서는 논리를 "말이나 글에서 사고나 추리 따위를 이치에 맞게 이끌어 가는 과정이나 원리." 라고 정의합니다.
유명한 삼단논법을 예로 들 수 있습니다.
① B이면 C이다.
② A는 B이다.
③ 따라서 A는 C이다.
A는 C라는 결론을 도출하기 위해 세 단계의 과정을 거쳤습니다. 앞선 두 가지 판단이 사실이라면 결론 역시 참이 됩니다.
꼭 삼단논법이 아니라도 이런 식으로 말을 하고 글을 쓰는 것을 보고 우리는 '너는 참 논리적이구나!' 라고 합니다.
컴퓨터는 논리적인 도구입니다.
컴퓨터는 생각보다 멍청한 녀석입니다. 갓 태어난 아기도 선선한 가을바람과 따사로운 햇살을 맞으면서 '날씨가 참 좋구나!' 하고 방긋 웃을 수 있지만, 컴퓨터는 날씨가 좋다 라는 판단을 혼자서는 내릴 수가 없습니다.
컴퓨터가 날씨를 이해하기 위해서는 현재의 기온과 습도 풍량 등의 모든 정보를 가지고 날씨를 분류하고,
인간들이 sns에 올린 글들을 수집해서 특정 날짜에 보인 반응을 분석한 다음,
이 둘을 연결하여 합리적인 추론을 완성하는 복잡한 과정을 거쳐야 합니다. 그리고 이 과정에서 요구되는 것이 컴퓨터가 알아먹을 수 있는 논리, 바로 알고리즘입니다.
논리가 있어야 컴퓨터와 대화가 가능합니다.
기본적으로 컴퓨터가 세상을 이해하는 방식이 0과 1이라는 것은 다들 알고 계실 겁니다. 사람의 얼굴이나 지금 날씨 같은 인간 세상의 모든 정보는 컴퓨터의 눈으로 보면 10010000 00101111 과 같은 2진수의 나열일 뿐이지요.
그렇기 때문에 컴퓨터에게 무심코 "오늘 날씨가 참 좋지?" 라는 말을 던진다면 컴퓨터는
"오늘 날씨는 11110000 010101010 110010000 010101110입니다만!!" 이라고 대답을 할 겁니다.
컴퓨터가 '날씨가 (너희 인간들이 생각하기에) 참 좋다' 라는 결론을 내리려면
(대다수) 인간은 너무 춥거나 너무 더운 것을 좋아하지 않는다.
(예외도 있지만) 인간은 습하고 비가 오는 것을 좋아하지 않는다.
(뱀파이어가 아닌) 인간은 햇빛을 좋아한다.
오늘의 기온은 -20도 이므로 너무 추운 날씨에 해당된다.
오늘의 습도는 20%로 높지 않은 수준이나, 일조량이 얼마얼마이므로 구름이 많아 햇빛이 보이지 않는 상태이다.
따라서 오늘 날씨는 좋지 않다.
와 같은 논리적인 판단과 이를 위한 데이터가 필요합니다.
이런 논리를 구성하는 것이 개발자들이 해야할 일입니다.
논리적인 과목은 또 뭐가 있을까?
저는 논리의 학문이라고 불리는 법을 예로 들어 설명하려고 시도해보았지만 면접관을 설득하는 것에는 처참하게 실패하고 말았습니다.
법이 논리적인 이유는 사법 제도의 핵심이 '공정성' 이기 때문입니다.
어떤 법안이 통과되기 위해서는 충분한 논거가 뒷받침되어야 하고, 각계각층의 국민을 대표하는 사람들에 의해서 토론과 검증, 투표가 이루어집니다. 그리고 통과된 법안은 만인에게 평등하게 적용되어야 합니다.
이런 이상적인 원칙들이 현실화되려면 절차를 강조할 필요가 있습니다. 개개인의 지위나 특성을 배제하고 오로지 법리와 객관적인 사실만이 판결을 내리기 위한 재료가 되어야 합니다.
다시 말해서 입법부터 집행까지의 모든 과정이 모든 사람이 납득할 수 있을만큼 논리적이어야 합니다. 컴퓨터나 동료 개발자들을 설득하기 위해서 논리가 필요한 것처럼요.
예를 들어, 장 모씨가 빵 하나를 훔쳤다고 합시다.
제가 형법을 몰라서 절도죄를 저지른 사람은 물품의 가액에 비례해서 징역을 살게 된다고 가정합니다.
빵의 가격은 만원입니다.
다만 장 씨가 빵을 되팔아 금전적인 이득을 취하려 한 것이 아니고 배가 너무 고파서 생존 본능에 의해 빵을 훔친 것이라면ㅡ법률에 이런 사유를 참작할 수 있는 여지가 존재한다는 전제 하에ㅡ참작할 수 있습니다.
따라서 법원은 장 씨에게 징역 1년, 집행유예 2년을 선고합니다. 장 씨는 주인에게 빵 값을 물어주고 자유의 몸이 됩니다.
법원이 판결을 내리는 과정을 알고리즘으로 나타내면 다음과 같습니다.
이런 판결 절차는 장 씨와 개인적인 인연이 있다거나 장 씨가 집안의 원수라는 이유로 달라지지 않습니다.
컴퓨터가 개발자에 의해 if와 else로 나뉘어진 갈림길을 통과하여 목적지에 다다르는 것처럼,
판사 역시 사회적 합의와 선배들에 의해 확립된 절차에 따라서 최종 결론에 도달하게 됩니다.
'ETC' 카테고리의 다른 글
[블로그 만들기] Github page에 Gitbook 장착하기 (0) | 2022.08.07 |
---|---|
Git 원격 저장소 만들기 (0) | 2022.07.19 |
COM surrogate 사살하기 (8) | 2021.11.02 |
Eclipse와 github 연동하기 - 새 프로젝트 (0) | 2021.10.28 |
Git / Github (0) | 2021.05.17 |
댓글