마이크로 프로세서는 집적회로 기술이 발전함에 따라 보다 더 다양하고 복합적인 프로세서를 단일 칩으로 제조할 수 있게 되었습니다. 이는 데이터 객체의 크기가 커지게 되면서 자연스럽게 생긴 현상입니다. 칩에서 더 많은 트랜지스터를 허용함으로써 워드 크기가 4비트 및 8비트 워드부터 시작해, 현재는 64비트 워드까지 증가할 수 있게 되었습니다. 프로세서의 아키텍처에 추가 기능이 지속적으로 추가되고 있으며, 보다 더 많은 온칩 형태의 레지스터가 프로그램을 가속화하고 복잡한 명령을 사용함에 있어 보다 더 작은 프로그램을 구동할 수 있게 되었습니다.

 

예를 들어 보겠습니다. 부동의 소수점 산술은 종종 8 비트 마이크로 프로세서에서는 사용할 수 없는 형태의 알고리즘 형태를 나타내고 있었습니다만, 이와 같은 연산을 처리하기 위해서는 소프트웨어의 구동이 필수적이었습니다. 이를 부동 소수점 단위의 통합과 별도의 집적 회로를 사용하고 마찬가지로 이와 동일한 마이크로 프로세서 칩의 일부를 적용하여 부동 소수점 계산을 가속화 할 수 있었습니다.

 

경우에 따라서, 실무자들은 집적 회로의 물리적 한계로 인한 비트 슬라이스 방식이 필요하기도 하였습니다. 비트 슬라이싱 (Bit Slicing)으로 불리는 이 기술은 워드의 길이를 증가시키기 위해 작은 비트 폭의 프로세서 모듈로부터 프로세서를 구성하는 기술을 뜻합니다. 이론적으로 비트 슬라이싱은 임의의 n 비트 CPU를 만들게 됩니다. 이러한 각 구성 요소의 모듈은 하나의 비트 필드 또는 피연산자의 '슬라이스'를 처리하게 됩니다. 그룹화 된 프로세싱 컴포넌트는 특정 소프트웨어 설계의 선택된 전체 워드의 길이를 처리하는 능력을 가지게 됩니다. 최근에는 가장 상위 단계의 ALU에 사용된 양자 시스템 및 소프트웨어 기술로서 사용되어 지고 있습니다.

 

이와 같은 방식으로 비트 슬라이싱을 적용하여 하나의 집적 회로에서 모든 종류의 긴 워드를 일괄적으로 처리하는 대신, 각 데이터 워드의 병렬 처리 된 서브 세트로 여러 회로를 각각 처리할 수 있게 되었습니다. 예를 들어 보겠습니다. 각 슬라이스 내에서 캐리 및 오버플로우를 처리하기 위해 추가적인 논의가 필요한 경우가 많았습니다. 하지만 이를 결과적으로는 각각의 4 비트 용량에 달하는 집적 회로를 사용하는 것으로 32비트를 워드 처리할 수 있는 시스템이 탄생하게 된 것입니다. 이와 같이 하나의 칩에 많은 숫자의 트랜지스터를 배치 할 수 있게 됨으로 인해서 프로세서와 동일한 규격의 메모리를 통합할 수 있게 되었습니다. 

 

이러한 CPU의 캐시 메모리는 Off 칩 메모리보다 월등히 빠른 연산 처리 속도의 빠른 엑세스라는 이점이 있었으며, 다수의 많은 응용 프로그램에서 시스템의 처리 속도를 높여주는 계기를 마련해 주었습니다. 프로세서의 클럭 주파수는 외부 메모리 속도보다 빠르게 증가하게되므로 이러한 프로세서가 느린 속도의 외부 메모리로 지연되지 않게 되면서 일정 수준의 캐시 메모리가 필요해 지게 되었습니다.

 

마이크로 프로세서는 워드의 크기를 기준으로 하여 다양한 형태의 애플리케이션에 대해 고난이도의 연산을 효율적으로 처리할 수 있으며 이는 다양한 형태의 연산을 복잡성을 기준으로 한 측정 기준에 의해 동시 다발적으로 처리할 수 있게 될 것입니다. 워드의 크기가 길어질수록 프로세서의 각 클록 사이클에서 더 많은 계산을 수행할 수 있지만, 대기 및 작동 전력 소비가 높아지는 현상으로 이에 걸맞게 물리적으로 큰 집적 회로 역시 필요하게 되었습니다.

 

4 비트 혹은 8 비트, 그리고 12 비트의 프로세서는 임베디드 시스템을 운영하는 마이크로 컨트롤러에 널리 통합되어 사용되어지게 되었습니다. 시스템에서 대량의 데이터를 처리하거나 보다 유연한 사용자 인터페이스가 필요하게 되는 경우, 16 비트 혹은 32비트, 그리고 64 비트 프로세서가 사용되어 지게 됩니다. 초 저전력 전자 장치가 필요한 칩 또는 마이크로 컨트롤러 애플리케이션의 시스템을 위해 실무자는 32 비트 프로세서에서부터 8 비트 또는 16 비트 프로세서를 선택할 수 있게 되었습니다. 

 

전통적으로, 컴퓨터와 관련되지 않은 수천 개의 항목에는 마이크로 프로세서가 폼되어지게 됩니다. 여기에는 크고 작은 가전 제품을 포함하여 자동차 및 자동차의 액세서리와 장비, 혹은 전자적 구조를 가지고 있는 도구 및 테스트 장비, 전기 회로 장치 등의 구성 요소가 모두 포함되어 지게 됩니다. 이와 같이 프로그래밍이 필요한 전자적 제어 장치의 필요로 인하여 마이크로 프로세서로 가능한 결과를 달성하기 위해 복잡한 난이도의 연산을 보다 효율적으로 처리하기 위한 알고리즘 구현이 필요해 지게 된것입니다.

 

 

 

마이크로 프로세서는 컴퓨터 프로세서가 하나 또는 그 이상의 중앙 처리 장치 기능을 포함하는 집적 회로의 MOSFET구조를 나타내고 있으며, 마이크로 프로세서는 저장 장치의 이전 데이터를 입력으로 받아들이고 메모리에 저장된 연산 및 제어된 명령에 따라 결과를 이진수 형식으로 출력하여 제공하는 다목적 클록 구동 레지스터 기반 디지털 집적 회로를 의미합니다. 마이크로 프로세서에는 조합 논리 (Combinational logic)와 순차 디지털 논리 (Sequential logic)가 모두 포함되게 됩니다. 여기서 마이크로 프로세서는 이진수 시스템으로 표현 된 숫자와 기호에서 작동하게 됩니다.

 

집적 회로 프로세서는 고도로 자동화 된 MOS (Metal Oxide Semiconductor) 제조 공정에 의해 대량으로 생산되어 단가가 낮아지게 됩니다. 단일 칩 프로세서는 실패할 수 있는 전기 설계 공정이 훨씬 적기 때문에 안정성을 높일 수 있게 되는 것입니다. 마이크로 프로세서 설계가 개선됨에 따라, 칩을 제조하는 전반적인 비용은 일반적으로 동일하게 유지되어 지고 있습니다. 이는 같은 크기의 반도체 칩에 더 작은 크기의 부품이 내장되는 설계에 의한 혁신에서 시작된 결과입니다. 이는 무어의 제 2법칙 (Moore's second law) 에 의한 과정과도 같습니다.

 

무어의 제 2법칙은 Gordon Moore와 Arthur Rock의 이름을 딴 경험적 예측으로서, 마이크로 칩의 밀도, 즉 성능이 24개월마다 2배씩 증가한다는 예측을 의미합니다. 록의 법칙은 무어의 법칙에 대한 경제적 편향으로 볼 수 있을 것입니다. 밀도가 높은 집적 회로의 트랜지스터 수는 2년 마다 두배가 됩니다. 후자는 자본 집약적 반도체 산업의 지속적인 성장의 직접적인 결과에 의한 것으로서, 혁신적이고 인기있는 마이크로 프로세서 제품은 제조 비용이 지속적으로 하락 수준에 있는 반도체 산업에 있어 더 많은 자본의 투입과 더 혁신적인 제품으로의 개발이 가능하다는 것을 의미하게 됩니다.

 

마이크로 프로세서 및 반도체 산업의 제조 비용은 항상 자본 집약적인 산업 구조의 특성상, 시장 가격이 지속적으로 하락할 수 밖에 없는 한계를 내포하고 있습니다. 따라서, 업계의 성장에 대한 궁극적인 한계는 신제품에 투자할 수 있는 최대 자본의 총량을 제한하는 것에 있을 것입니다. 그리고 이러한 과정에 있어, 록의 법칙과 무어의 제 2법칙은 사상적인 충돌을 피할 수 없을 것으로 예측되어 집니다.

 

VLSI (Very Large Scale Intergration)를 사용하여 전체 CPU를 단일 /도는 몇 개의 집적 회로에 통합하게 되면 처리 전력의 비용이 크게 절감되는 효과가 있습니다. 이는 마이크로 프로세서, 즉 모든 종류의 집적 회로 프로세서에 고도로 자동화된 MOS (Metal Oxide Semiconductor) 제조 공정에 의해 대량으로 제품을 생산하여 단가가 낮아지는 효과를 기대할 수 있게되는 것입니다. 특히, 단일 형태의 마이크로 칩 프로세서는 실패할 가능성이 있는 전기 연결 설계가 극히 적기 때문에 연산 작용 및 데이터 처리 속도의 안정성을 높이는데 크게 기여할 수 있었습니다.

 

마이크로 프로세서의 이전에는 소형 퍼스널 컴퓨터의 형태로 회로 기판을 중간규모로 설계한 형태의 전산 장치가 주로 사용되어져 왔습니다. 이는 일반적으로 트랜지스터 유형의 (TTL : Transistor Transitor Logic) 설계 방식이었습니다. 마이크로 프로세서는 이것을 또 하나의 새로운 형태로 대규모 IC의 결합을 통해 완성되어진 장치입니다. 역사적으로 기록된 인류의 첫 마이크로 프로세서는 Intel의 4004 마이크로 프로세서 입니다. 

 

마이크로 프로세서에 적용되는 집적 회로의 복잡한 설계 구조는 하나의 칩에 넣을 수 있는 트렌지스터 수, 즉 프로세서를 시스템의 다른 부분에 연결할 수 있는 패키지 터미네이션 수, 상호 연결수에 대한 물리적 제한으로 인해 태생적인 한계를 지니게 됩니다. 칩과 칩이 방출할 수 있는 열에 의한 최첨단 기술은 보다 복잡하고 강력한 집을 제조할 수 있게 되는 기반이 되어 주었습니다.

 

최소 단위의 가상 마이크로 프로세서에는 산술 논리 장치 (ALU) 및 제어 논리 섹션만 포함될 수 있습니다. ALU는 덧셈과 뺄셈, 혹은 AND와 OR과 같은 연산을 순차적으로 수행하게 됩니다. ALU의 각 조작은 상태 레지스터에서 하나 이상의 플래그를 설정하며, 이는 마지막 조작의 결과를 표시하게 됩니다. 이 결과값은 제로값, 오버 플로우, 음수 등을 나타내게 됩니다. 마이크로 프로세서의 제어 로직은 메모리에서 명령 코드를 검색하고 ALU가 명령을 수행하는 데 필요한 작업 순서를 시작하게 됩니다. 단일 작업 코드는 많은 개별 데이터 경로, 레지스터 및 프로세서의 다른 요소에 영향을 줄 수 있는 부분입니다.

알고리즘의 개념에 대해서 이해하는 시간을 가져보려 합니다. 알고리즘의 비공식적인 정의는 '연산 순서를 정의하는 규칙 세트' 일 수 있으며, 수치 계산을 수행하지 않는 프로그램을 포함하여 모든 컴퓨터 프로그램과 일정한 규칙에 의해 연산되는 절차를 포괄적으로 포함하고 있습니다. 일반적으로 소프트웨어의 충돌은 대다수가 알고리즘에 의한 트러블일 가능성이 높습니다. 

 

알고리즘의 프로토 타입에 대한 예제는 다음과 같습니다. 두 개 정수의 최대 공약수를 결정하는데 사용되는 유클리드 알고리즘을 예로 들어 보겠습니다. '유클리드 알고리즘 (Euclidean Algorithm)' 이는 컴퓨팅을 하기 위한 최적의 연산 방법이라고 표현할 수 있겠습니다. 최대 공약수, 혹은 최대 수는 두 정수 (숫자)의 합에 분한 둘과 그의 나머지를 의미 합니다. 유클리드 알고리즘은 고대 그리스의 수학자인 유클리드 (Euclid)의 이름을 따서 명명된 것으로 전해지고 있으며, 유클리드는 기원전 300여년 경에 이미 최대 공통 제수를 찾는 방법에 대한 해결책을 제시하게 되었습니다.

 

유클리드 알고리즘은 큰 숫자를 작은 숫자와의 차이로 대체하면 두 숫자의 최대 공약수가 변하지 않는다는 원리를 기반으로 작동하게 됩니다. 예를 들어, 21은 252와 105의 GCD (정수) (252 = 21 x 12와 105 = 21 x 5)이며 같은 숫자 21도 GCD와 105, 그리고 252 - 105 = 147 이라는 결과를 도출할 수 있습니다. 이 과정을 반복하게 되면 두 숫자가 같아 질 때까지 작은 숫자의 쌍이 연속적으로 나타나는 것을 확인할 수 있습니다.

 

이는 두 양의 정수, 그리고 두 다항식의 최대공약수를 구할수 있는 획기적 방법으로서 인류 최초의 알고리즘으로서 그 의미가 남다르다고 할 수 있습니다. 이를 활용하면 나머지가 0이 될 때 까지 연속해서 사용할 수 있다는 것을 알수 있을 것입니다. 다만, 유클리드 알고리즘이 최적의 알고리즘이라고 단정 지을 수 는 없으며, 보다 더 큰 정수의 경우에는 다른 형태의 준 선형적 알고리즘들을 사용해야만 합니다. 다행인 것은, 숫자가 2만자리 정도 이상으로 넘어가는 정말 큰 수가 아닌 이상에는 유클리드 알고리즘 정도로도 충분히 알고리즘을 수행할 수 있다는 사실입니다.

 

알고리즘의 개념은 결정성에 대한 개념과 일련의 작은 공식과 규칙에서 연산을 시작하는 방법을 설명하는 중심적 개념을 정의하는 것에 사용되어진다고 볼 수 있겠습니다. 수식적 논리가 분명한 관습 물리적 크기와 정 반대되는 알고리즘을 완료하는데 필요한 시간은 측정할 수 없다는 모순 또한 존재합니다. 진행중인 작업을 특정 짓는 규정되어진 불확실성으로부터, 구체적으로 용어의 추상적인 사용법에 적합한 알고리즘의 정의는 그 가용 범위에 대한 적정선을 찾기가 어려울 정도입니다.

 

그럼에도 불구하고 알고리즘은 컴퓨터의 데이터 연산 처리에 있어 단연 필수적인 항목이라고 할 수 있습니다. 예를 들어, 반복적인 작업을 대량으로 수행해야 하는 경우, 컴퓨터에 입력된 순서에 의해서 특정 작업을 입력된 명령에 따라 자세히 설명하는 알고리즘이 포함되어지게 됩니다. 즉, 알고리즘은 터닝 컴플리트 (Turing Complete) 시스템에 의해 시뮬레이션 될 수 있는 임의의 동작 시퀸스 인 것으로 간주될 수 있는 것입니다. 

 

전형적으로, 알고리즘이 정보 처리와 관련 될 때, 데이터는 입력 소스로부터 판독 될 수 있고, 출력 장치에 기록되며 추가 처리를 위해 카트리지에 별도로 저장되어 질 수 있습니다. 저장된 데이터는 알고리즘을 수행하는 NTT 내부 상태의 일부로 간주되어 지게 됩니다. 이는 실제로 하나 이상의 데이터 구조에 의해 저장되어지고 있습니다.

 

지금까지의 알고리즘에 대한 공식적인 논의는 명령형 프로그래밍 (imperative programming)의 전제에 의한 가정이었다고 볼 수 있습니다. 이것은 지극히 일반적인 개념으로서, 연산 작업을 별개의 기계적 수단의 일부로서 묘사하기 위한 시도라고 할 수 있겠습니다. 공식화된 알고리즘의 이러한 개념에 고유한 변수의 값을 설정하는 것은 대입 연산으로 정의할 수 있습니다.

 

지금까지 알고리즘을 구성하는 것에 대한 기초 개념에 대해서 알아보았습니다.

 

 

컴퓨터 과학과 컴퓨터 공학은 비슷한 듯 보여도 전혀 다르게 분류되고 있는 분야입니다. 컴퓨터 과학 (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