컴퓨터 과학과 컴퓨터 공학은 비슷한 듯 보여도 전혀 다르게 분류되고 있는 분야입니다. 컴퓨터 과학 (Computer Science)은 자동 연산장치에 의한 계산 및 정보의 연구와 관련한 학문을 분류한 학문입니다. 컴퓨터 과학은 연산, 알고리즘, 컴퓨터 시스템 하드웨어, 소프트웨어 및 응용프로그램의 설계 이론을 연구하게 됩니다. 그리고 통신과 제어, 인지 능력과 데이터 베이스의 학습 등 인간이 만들어낸 자연정보 및 프로세스 일체를 취급하게 되는데, 특히 인간이 만들어낸 컴퓨팅 시스템에 의하여 지속적으로 연구를 이어왔던 분야가 바로 컴퓨터 과학인 것입니다.

 

컴퓨터 과학의 이러한 정의에 대하여 미국의 유명 컴퓨터 과학 연구가 피터 제임스데닝 (Peter J. Denning 1942~)에 의하면 컴퓨터 과학의 근본적인 질문은 인간이 취급하고 있는 모든 종류의 데이터를 자동화의 영역에서 취급하는 것인지에 대한 의문에서 부터 시작하게 된다는 것을 알 수 있습니다. 피터 제임스 데닝은 이와 같은 컴퓨터 과학에 대한 근본적인 존재 가치의 질문에 있어 컴퓨터의 메모리 프로세스를 구축하는것에서 그 해답을 찾고자 하였습니다. 그는 컴퓨터의 운영 체제와 스래싱 (Thrashing)을 해결하고 모든 종류의 메모리 관리 기준이 된 프로그램 동작과 관련, 연관되는 작업 집합 모델을 발명하는데 있어 가상 메모리 분야의 가장 선구적인 컴퓨터 과학 연구가로 알려져 있습니다.

 

 

컴퓨터 과학은 다시 세부적으로 들어가서 실용적인 부분과 이론적인 부분으로 카테고리를 나눌 수 있습니다. 컴퓨터 그래픽과 계산 형상은 실제 응용 프로그램을 강조하는 반면, 계산 복잡성 이론 (Computational Complexity Theory)은 매우 추상적인 영역에 속해 있습니다. 컴퓨터의 알고리즘은 컴퓨터 과학의 핵심적인 부분이라고 할 수 있을 것입니다. 프로그래밍 언어 이론은 계산 프로세스에 대한 설명과 관련하여 자동화 된 다양한 접근 방식을 고려하게 되고, 소프트웨어 엔지니어링에는 프로그래밍 언어와 복잡한 시스템의 사용이 포함되어지게 됩니다. 컴퓨터의 아키텍처 및 컴퓨터 엔지니어링은 컴퓨터의 구성 요소 및 컴퓨터 제어 장비와 사용자와의 상호 작용에 의해 이루어 지게 됩니다. 이와 같은 상호 작용은 컴퓨터의 활용 범위를 다양하게 확장하는것에 도움을 줄 수 있으며 이와 관련한 액세스 환경의 변화는 컴퓨터 과학과 컴퓨터 공학의 발전에 중요한 이바지를 했다고 할 수 있습니다. 

 

컴퓨터 과학에 의해 지속적인 발전을 거듭해 온 인공 지능의 영역에서는 인간과 동물에게서 발견되는 의사 결정과 관련된 문제의 해결, 환경의 적응, 다양한 데이터 베이스의 학습 및 커뮤니케이션과 같은 목표 지향적인 프로세스를 구조적이고 자동화 된 연산에 의해 최적의 결과를 도출하는 것을 목표로 하게 됩니다.

 

컴퓨터 과학에 대한 개념이 정립되기 시작한 초창기에는 현대의 디지털 컴퓨터의 개념과는 사뭇 다른 형태의 컴퓨터가 존재하였습니다. 상공업의 발달로 주판과 같은 고정된 숫자 계싼 작업을 위한 기계의 필요성이 대두되기 시작하였는데, 이는 고대의 역사에서 부터 존재하기 시작하여 곱셉 및 분할과 같은 수학적 계산을 지원하기 시작하였습니다. 즉, 정교한 컴퓨터 하드웨어가 개발되기 훨씬 이전의 역사에서 부터 계산을 수행하기 위한 알고리즘이 존재하였다는 것을 우리는 알 수 있습니다.

 

컴퓨터 과학의 방대한 역사를 하나의 포스팅에 모두 담기는 매우 어려운 것이 사실입니다. 컴퓨터의 역사는 하드웨어의 발전과 소프트웨어의 역사, 컴퓨터 과학과 현대적 컴퓨터의 영역에 대한 기록이 서로 상호작용하는 부분이 있기 때문에 이러한 부분을 조금 씩 구분지어서 포스팅을 이어나가고자 합니다. 

 

컴퓨터 과학은 컴퓨터의 응용 분야에 대한 계산적 활동 범위에 대한 이해와 실용적인 컴퓨터의 알고리즘 및 기술의 이론적 기초를 다루게 됨으로서 컴퓨터에 의한 계산 및 정보의 처리 과정을 이해하는 과정을 나타내게 됩니다. 인간이 만든 자연정보에 대한 프로세스의 이해를 돕기 위해서 컴퓨터 과학의 역사를 이해하는 것은 물론, 컴퓨터 과학과 컴퓨터 공학의 차이점을 이해 하는 것 또한 중요한 부분이라고 할 수 있을 것입니다.

컴퓨텨 공학의 이론적 접근은 일반적인 컴퓨터 과학가 수학의 공통분모에 대한 하위 집합 이론으로서, 기존의 컴퓨터 공학에 비하여 조금 더 수학적인 접근과 논리적 연산의 주체에 대한 컴퓨팅 주체에 초점을 맞추고 있는 학문이며 이는 연산 이론을 포함하고 있습니다. 컴퓨터 공학의 이론적 영역을 정확하게 판단하고 카테고리를 나눈다는것은 대단히 어려운 난제에 가깝습니다. 하지만 우리는 이를 알고리즘의 형태와 SIGACT 이론에 대한 정의에 의해 구분지을 수 있을 것입니다. 이는 다음과 같이 설명할 수 있습니다.

 

TCS는 컴퓨터 프로그래밍의 배타적 알고리즘, 데이터 구조, 계산적 복합성을 띄게 되며 이는 병렬 및 분산형 연산, 확률론적 연산, 양자 연산, 자동 데이터 이론, 정보화 이론, 암호구조, 프로그램 의미개론과 알고리즘 검증절차, 기계적 학습, 계산 생물학, 계산 경제학, 마지막으로 컴퓨터 그 자체를 포함한 다양한 주제를 폭넓게 아우르고 있습니다. 

 

과거 이론 컴퓨터 공학의 정의와 관련하여 논리적 추론과 수학적 증명이 역사를 거듭하면서 존재해 왔습니다. 하지만 1931년 미국의 논리학자인 커트 괴델 (Kurt Godel)은 불완전한 정리로 어떤 진술이 증명되거나 반증될 수 있다는 것에 근본적인 한계가 존재할 수 있다는 것을 증명하게 되었습니다. 이는 공리적인 방식으로만 수학의 체계를 확립할 수 있다는 정의에 반기를 든 역사적인 사건으로서 이를 '괴델의 불완전성 정리' 라고 명명 하게 됩니다.

 

이러한 발전은 논리와 계산 가능성에 대한 현대의 지속적인 연구와 실제로 이론적인 컴퓨터 공학의 전체적인 분야로 이어지게 됩니다. 정보 이론은 미국의 응용수학학자이자 컴퓨터과학자인 클로드 섀넌 (Claude Shannon)에 의해 1948년 수학적인 의사 소통 이론으로 그 분야에 추가 되게 되었습니다. 같은 해, 향후 10년 동안 연구 성과를 발표하게 되며 학계의 주목을 이끌어낸 신경 심리학 분야의 대가 캐나다 출신의 도널드 헤브 (Donald O. Hebb)는 뇌에서 학습하는 수학적 모델을 발견하게 됩니다. 이 가설을 뒷받침하는 생물학적 데이터를 탑재하게 됨으로서, 신경 네트워크 분야와 평행하게 분포된 처리가 확립되었다는 것이 학계의 정설로 굳혀지고 있습니다. 

 

1971년 스티븐 쿡 (Stephen Cook)과 독립적으로 작업한 레오니드 레빈 (Leond Leong Levin)은 실제로 관련된 문제가 존재한다는 것을 이론 컴퓨터 공학의 구축으로 증명해 내었습니다. 이는 계산적 복잡성 이론 (Computational Complexity Theory)의 획기적인 발견이라고 할 수 있습니다. 계산적 복잡성 이론은 연산 문제를 그 본질적인 연산의 난이도에 따라 자동으로 분류하게 되고, 이러한 알고리즘을 서로 연관시켜 그 방정식을 풀어나가는 것에 초점을 맞추고 있는 이론입니다. 이러한 논리적 연산에 의한 계산 문제는 알고리즘과 같은 수학적 단계를 컴퓨터를 활용한 기계적 적용으로 인해 해결할 수 있게 되었습니다.

 

사용되는 알고리즘에 관계 없이 솔루션에 상당한 리소스가 필요한 경우, 문제는 본질적으로 어려운 것으로 간주되어 지게 됩니다. 계산적 복잡성 이론은 이러한 문제를 연구하기 위해 연산의 수학적 모델을 도입하고 계산적 복잡성, 즉 시간과 스토리지와 같은 문제를 해결하기 위해 필요한 자원의 양을 수량화함으로써 이러한 직관을 공식화하는데 성공하게 됩니다. 이는 통신의 양, 회로의 게이트 수, 프로세스 수 등과 같은 다양한 복잡성의 척도로 사용되어 지고 있습니다.

 

20세기 초에 이르러 양자 역학의 발전과 함께 수학적인 작동은 전체 입자 파장에 대해 수행될 수 있다는 개념이 학계에 등장하게 되었습니다. 즉, 동시에 여러 상태에서 알고리즘 연산 수식을 계산할 수 있게 된 것입니다. 이것은 1990년대 후반에 시작된 양자 컴퓨터의 개념으로 이어지게 되며, 이에 대한 증명은 MIT의 응용 수학 교수로 활동하고 있던 미국 출신의 피터 쇼르 교수 (Peter Williston Shor) 교수에 의해 진행되게 되었습니다. 그는 특히 고전적인 컴퓨터의 역할에서 실행되어 왔던 당시 최고 수준의 알고리즘보다 훨씬 더 높은 수준의 기하 급수적으로 빠른 알고리즘 요소를 도출하기 위한 알고리즘인 Shor의 알고리즘을 고안 해 내게 되었습니다.

컴퓨터 공학의 역사는 1843년부터 다시 이어지게 됩니다. 1843년, 애널리틱 엔진에 대한 프랑스 매거진의 발표가 이어진 이후, 1815년 영국 출생의 에이다 러브레이스 (Ada Lovelace)는 그녀가 직접 작성한 수많은 노트 중에서 베르누이 방정식 (Bernoulli)을 계산하는 알고리즘을 기록하게 됩니다. 이는 훗날 컴퓨터를 실행하기 위해 특별히 설계되어진 최초의 공개된 컴퓨터의 알고리즘으로 인정받게 됩니다. 에이다 러브레이스는 이를 계기로 훗날 세계 최초의 컴퓨터 프로그래머로서 역사에 이름을 남기게 됩니다.

 

1885년 독일 출신의 허먼 홀러리스 (Herman Hollerit)는 타블라터를 발명하게 됩니다. 타블라터는 통계 정보를 정확히 처리하기 위해 자카르 직조기라고 불리는 섬유 직조기에서 힌트를 얻어 천공계산기를 발명하게 되는데, 이를 계기로 성장을 이어오던 허먼 홀러리스의 회사는 훗날 IBM의 전신이 되는 결과를 맞이하게 됩니다.

 

 

IBM은 온갖 종류의 컴퓨터 하드웨어 장비를 개발하기 시작하였고 공학용 계산기 사업에도 뛰어들게 되어 컴퓨터에 사용되는 하드웨어 카드와 중앙 컴퓨터 장치를 비롯한 배비지의 해석 엔진을 기반으로 하는 프로그램을 개발하게 됩니다. 이 프로그램을 연상 가능하도록 하는 계산기는 당시의 기술로는 실로 어마어마한 물리적 크기의 컴퓨터로 구현될 수 밖에 없었는데 이것이 바로 그 유명한 하버드 마크 1 (Harvard Mark 1) 입니다. 하버드 마크1은 1944년 미국의 유명 수학자인 에이컨 (H.H Aiken)과 IBM사가 공동 개발하여 제작하게 된 세계 최초의 전자동 계산기로 역사에 기록되어 있습니다. 정확한 명칭은 자동 순서적 제어 계산장치 (ASCC : Automatic Sequence Control Calculator)이라고 합니다.

 

1940년대에 들어서면서 Atanasoff-Berry 컴퓨터와 애니악 (ENIAC)와 같은 새롭고 더 강력한 자동식 계산기가 개발되기 시작합니다. 이 시기부터 컴퓨터라는 용어는 인류가 여지껏 알고 있었던 거대 연산장치가 아닌 보다 더 간편하고 막강한 성능을 자랑하는 계산장치를 가르키게 됩니다. 이 시기의 컴퓨터는 순전히 수학적인 계산을 위해 사용될 수 있다는 것이 기정 사실로 받아들여지게 되면서, 컴퓨터 공학의 분야는 일반적인 수학적 계산을 공부하기 위한 수단으로서 확대되어 지게 되었습니다. 1945년, IBM은 뉴욕의 콜롬비아 대학에 왓슨 과학 컴퓨터 연구소 (Thomas J. Watson Research Center)를 설립하게 됩니다. 왓슨 과학 컴퓨터 연구소라고 불리는 미국 맨해튼 웨스트 사이드에 위치한 재단 법인의 클럽 하우스는 순수한 의도로 컴퓨터 과학을 전문적으로 연구하는 IBM최초의 컴퓨터 공학 연구소로 현재까지 역사를 이어오고 있습니다. 이 연구소는 현대에 이르러 전 세계에서 연구 시설을 운영하고 있는 IBM연구부서의 전신과 같은 성격을 띄고 있습니다.

 

이와 같이 꾸준한 기술의 발전과 인류의 도전으로 인하여 컴퓨터 공학은 1950년대에 이르러 하나의 학문으로서 그 분야와 입지를 확고히 다지게 됩니다. 특히 IBM과 대학 연구소와의 긴밀한 관계는 새로운 과학 분야의 출현에 중요한 역할을 했다고 평가할 수 있겠습니다. 이 시기에 세계 최초의 컴퓨터 과학 학위 프로그램인 컴퓨터 사이언스의 케임브리지 디플로마가 시작되게 되는데, 이는 1953년 캠브리지 대학 컴퓨터 연구소에서 부터 시작되게 됩니다. 이후, 미국 최초의 컴퓨터 공학과는 1962년 미국의 퍼듀 대학에서 만들어지게 됩니다. 지속적인 발전을 거듭해 온 컴퓨터 공학은 실용적인 컴퓨터들의 연구 개발로 인하여 많은 컴퓨터 응용 분야들의 기술적 발전을 이루어 내게 되었고 연구자들에 의해 개별적 연구 분야로서 지속적인 기술적 발전을 거듭해 오고 있습니다.

 

이번 포스팅에서는 이전 포스팅에 이어 컴퓨터 공학의 역사와 기원에 대해 간단히 알아보았습니다.

컴퓨터 공학. 특히 컴퓨터에 관련된 학문은 대부분 컴퓨터를 활용한 계산과 정보의 처리 방식에 대한 학문이라고 정의할 수 있습니다. 컴퓨터 과학은 연산이론과 알고리즘, 연산 문제, 혹은 컴퓨터에 내장되어 있는 시스템 하드웨어, 소프트웨어 및 어플리케이션의 설계를 통틀어서 이야기 하는 학문입니다. 

 

컴퓨터 공학은 인류의 과학이 만들어낸 가공된 정보와 그렇지 않은 정보의 모든 범위를 아울러서 컴퓨터 시스템과 기계적 연산에 의해 이를 계산하는 과정을 거치게 됩니다. 여기서 우리는 근본적인 질문에 다다르게 됩니다. 컴퓨터 공학의 근본적인 질문의 시작은 이 세상의 모든 것이 자동화 될 수 있는가에 대한 의문입니다.

 

컴퓨터 공학은 이론의 부분과 실물 공학의 분야로 나뉠 수 있습니다. 컴퓨터 그래픽과 컴퓨터 기하학의 영역은 실제의 연산 응용 분야를 강조하는 반면, 계산이 필요한 복잡성 이론은 그 범위가 매우 넓고 가늠하기 어려울 정도로 추상적인 영역에 해당되기 때문입니다. 여기서 알고리즘이란, 컴퓨터 공학의 핵심으로 불리우고 있습니다. 프로그래밍 언어 이론 역시 중요합니다. 프로그래밍 언어 이론은 컴퓨터 공학에 있어 연산의 과정이 아닌 컴퓨터의 구조적 연산 처리 과정의 설명에 대한 접근법을 고려하는 반면, 소프트웨어 공학은 프로그래밍 언어와 복잡한 컴퓨터 공학 시스템의 사용적 절차를 내포하게 됩니다. 인간은 컴퓨터의 상호 작용을 통해 컴퓨터의 활용 범위와 그 가능성을 유용하게 되고, 사용 가능한 범위를 확장하여 범용적인 영역에서 컴퓨터 공학이 활용될 수 있도록 끝없는 발전을 요구받게 될것입니다.

 

-컴퓨터 공학의 역사

컴퓨터 공학에 대한 개념이 확립되기 전, 그 기원은 컴퓨터의 발명보다 시대를 훨씬 앞서가고 있습니다. 주판과 같은 숫자 계산기는 고대의 역사가 발견될 당시부터 꾸준하게 사용되어 왔었고, 곱셈과 나눗셈 같은 계산을 하기 위한 도구의 사용은 인류에게 있어 필수 불가결의 요소였습니다. 이와 같이 복잡한 계산을 수행하기 위한 공학적 알고리즘은 과거부터 꾸준히 존재해 왔으며 이는 빠르고 정교한 컴퓨터 장비의 개발에 대한 갈증으로 이어지게 되었습니다.

 

컴퓨터 공학의 역사에 있어서 빠질 수 없는 인물이 바로 빌헬름 쉬카드 (Whilhelm Schickard) 입니다. 빌헬름 쉬카드는 1623년에 세계 최초로 작동하는 기계식 계산기를 자신의 힘으로 직접 디자인하고 만들어 내기에 이릅니다. 그는 인류 최초의 컴퓨터 과학자이자 정보 기술자로 기록되고 잇습니다만, 빌헬름 쉬카드가 컴퓨터 공학의 역사에서 대단히 중요한 인물인 이유는 바로 이진법을 발명하고 연산 작업에 적용했다는 것에 그 의의가 있습니다. 이진법은 컴퓨터 공학의 연산 원리에 가장 기초되는 개념으로서 이는 다른 포스팅에서 조금 더 자세히 설명하도록 하겠습니다. 

 

1820년 무렵, 토마스 데 콜마 (Thomas de Colmar)는 자신의 사무실 환경에서 매일 사용하여도 고장나지 않을 정도로 강력하고 연산의 결과를 신뢰할 수 있는 최초의 계산기인 단순화된 산술 계산기를 발명하였습니다. 이때의 발명을 시작으로 토마스 데 콜마는 기계 계산기 사업을 시작하게 됩니다. 

 

찰스 배비지 (Charles Babbage)는 1822년에 최초의 자동 기계식 계산기의 제작을 고안하기 시작했는데, 이러한 시도는 결국 인류 최초의 자동화 프로그래밍이 가능한 기계식 계산기인 분석용 컴퓨터 알고리즘 엔진을 고안해 내기에 이르릅니다. 그는 1834년에 이 기계를 개발하기 시작했습니다. 이러한 시도는 2년 이내에 현대의 컴퓨터에서 볼수 있는 많은 특징들을 동 시대에 구현해 내게되는 시발점이 되었습니다. 결정적인 시도는 무한대로 프로그래밍을 설계할 수 있는 펀치 카드 시스템을 분석용 컴퓨터 알고리즘 엔진에 적용하고자 하는 것이였습니다. 이를 계기로 프로그래밍 연산의 범위가 한 차원 더 확장되는 단계로 도약하게 됩니다.

 

이번 포스팅에서는 컴퓨터 공학의 역사에 대해서 간단하게 살펴보았습니다. 하지만 컴퓨터 공학의 역사는 이와 같은 짧은 설명으로 모두 대체할 수 없기 때문에 계속해서 컴퓨터 공학의 역사에 대해 살펴보도록 하겠습니다.

+ Recent posts