컴퓨터 과학

위키백과, 우리 모두의 백과사전.
(전산학에서 넘어옴)
이동: 둘러보기, 검색

컴퓨터 과학( - 科學, computer science)은 전산 및 그 응용기술에 대한 과학적이고 실용적인 접근을 의미한다. 전산 이론 및 전산 시스템 설계를 다루는 전문가를 컴퓨터 과학자라 부른다.

컴퓨터 과학의 하위 분야는 컴퓨터의 실행의 실용적인 기술과 컴퓨터 시스템의 응용 그리고 순수하게 이론적인 분야로 나뉠 수 있다. 몇 몇 계산 문제의 기본적인 속성을 공부하는 계산도 복잡도 이론과 같은 것은 매우 추상적이고, 이것과 다른 컴퓨터 그래픽은 현실 세계 응용에 중점을 둔다. 또 다른 하위 분야는 계산 실행에 중점을 둔다. 예를 들어, 프로그래밍 언어 이론은 계산 서술의 접근을 공부하고, 컴퓨터 프로그래밍 학문 그 자체는 프로그래밍 언어와 복잡한 시스템들 사용의 다양한 측면을 조사하고, 인간-컴퓨터 상호작용은 컴퓨터와 계산을 유용하고 인간들에게 보편적으로 접근 용이하게 만드는 데 중점을 둔다.

large capital lambda Plot of a quicksort algorithm
Utah teapot representing computer graphics Microsoft Tastenmaus mouse representing human-computer interaction
컴퓨터 과학은 정보 및 전산의 이론적 기초와 그것의 구현 및 응용을 위한 실용적인 기술을 다룬다

역사[편집]

컴퓨터 과학의 역사는 현대의 디지털 컴퓨터의 역사만을 가리키는 것이 아니다. 주판과 같이 계산을 수행하는 기계는 오래 전부터 있었다. 1623년에는 최초의 계산기계가 만들어졌고, 찰스 배비지는 19세기 초에 차분기관을 만들었다. 1900년대에 들어서 IBM사가 펀치카드 시스템(PCS)를 개발하여 회계에 관련된 일을 하도록 보급하였다. 하지만 이들 모두는 주어진 한 가지의 일만 수행할 수 있었다.

1920년 이전까지 '컴퓨터'(computer)는 계산(compute)을 담당하는 사무관을 일컫는 용어였다. 쿠르트 괴델, 알론조 처치, 앨런 튜링과 같은 컴퓨터 과학 초기의 학자들은 계산 가능성 문제(종이와 연필만을 가진 사무관이 철저하게 어떠한 지시에 따라 행동하여 계산할 수 있는 것들은 어떤 것들인가?)에 흥미를 가졌다. 이러한 흥미는 계산이라고 하는, 지겨울 수도 있고 오류율이 높은 작업을 자동화하고자 하는 욕구로부터 비롯되었다. 그들은 이리하여 한 가지의 종류의 작업만 수행할 수 있었던 기존의 기계들과는 다른, 이론적으로 어떠한 계산도 가능한 기계를 만들고자 했다. 이러한 노력이 현대 컴퓨터 과학의 지평을 열었다.

1940년대에 들어서자 더욱 강력한 기능을 지닌 계산기들이 등장했고, 이때부터 '컴퓨터'는 사람이 아닌 이들 기계를 부르는 용어로 굳어졌다. 컴퓨터가 단순한 숫자 계산보다 더 다양한 기능을 할 수 있는 것들이 알려지면서 컴퓨터 과학이라는 분야가 더욱 넓어지기 시작했다. 1960년대부터 여러 대학에 컴퓨터 과학 학과와 전공 과정이 생기면서 컴퓨터 과학이 학문으로 인정받기 시작하였으며, 학문의 쓰임새에 따라 세분화되었다.

다른 분야와의 관계[편집]

컴퓨터 과학은 오늘날 많은 사람들이 사용하는 컴퓨터라는 기계에 대한 학문으로 한정되지 않는다. 유명한 컴퓨터 과학자 에츠허르 데이크스트라는 "컴퓨터 과학에서 컴퓨터란, 천문학에서 망원경 이상의 것이 아니다."라고 하였다. 일반적으로 컴퓨터 시스템을 디자인하고 보급하는 것은 컴퓨터 과학의 범주내에 포함되지 않는 것으로 알려져있다. 예를 들면 컴퓨터 하드웨어를 연구하는 분야는 컴퓨터 공학으로 불리고, 컴퓨터의 보급과 사용에 관한 연구는 정보 기술 또는 정보 시스템의 분야에 속한다. 하지만, 컴퓨터와 연관된 이러한 분야들은 컴퓨터 과학과의 상호작용을 통해 발전해왔다. 컴퓨터 과학 연구는 인공지능, 인지 과학, 물리학, 그리고 언어학과 같은 학문과 공생한다.

많은 과학 분야와 비슷하게 컴퓨터 과학도 수학과 가장 밀접한 관계를 가지고 있을뿐만 아니라, 수학에 기초를 둔 과학의 한 분야이다. 컴퓨터 과학의 기초에 큰 영향을 미친 수학이 조지 불불 대수이다. 불 대수는 이진법을 기반으로 한 대수학으로, 그 외에 체론환론 또한 중요한 영향을 미쳤다. 초기의 컴퓨터 과학은 쿠르트 괴델앨런 튜링 등의 수학자들이 큰 영향을 끼쳤고, 수리논리학, 범주 이론, 도메인 이론, 대수학과 같은 수학 분류들은 컴퓨터 과학과 함께 발전하고 있다.

스탠 켈리-부틀"과학과 컴퓨터 과학의 관계는 유체동력학과 납공업의 관계와 같다"라고 말하였다. 이는 컴퓨터 과학이 과학의 특성을 충분히 갖지 않는다는 오해에 기인한다. [출처 필요]

컴퓨터 과학과 소프트웨어 공학의 관계에 대해서는 논란이 많다.[출처 필요] 컴퓨터 과학과 소프트웨어 공학의 용어 정의가 많은 사람들에게 다소 모호하게 보이기 때문이다. 소프트웨어 공학은 컴퓨터 과학의 한 분야에 불과하다고 말하는 사람들이 있는 반면, 소프트웨어 공학은 다른 분야에 대한 응용이나 자원을 운용하는 방법 등 실용적인 특징에서 컴퓨터 과학의 다른 분야와 잘 구분된다.

분야[편집]

컴퓨터 과학은 그 이론의 적용법에 따라 여러 분야로 나뉜다. 일반적인 분류는 다음과 같다.

바탕이 되는 이론[편집]

계산 이론[편집]

알고리즘과 자료 구조[편집]

프로그래밍 언어와 컴파일러[편집]

동시·병행·분산 처리[편집]

  • 동시 처리: 다수의 계산을 한꺼번에 처리하는 것과 관련된 연구, 그럴 때의 정보의 보호
  • 병행 처리: 다수의 계산을 여러개의 스레드로 나누어 처리하는 방법
  • 분산 처리: 한 가지 일을 네트워크를 통해 여러 컴퓨터로 분산하여 처리하는 방법

소프트웨어 공학[편집]

  • 소프트웨어 공학: 소프트웨어의 디자인, 개발, 시험, 엔지니어링에 관한 연구
  • 정형화 기법: 소프트웨어 디자인에 대한 수학적 접근
  • 역공학: 임의의 소프트웨어의 디자인을 역으로 알아내는 방법
  • 컴퓨터 프로그래밍: 프로그래밍 언어를 사용하여 알고리즘을 설계하는 방법

컴퓨터 구조[편집]

통신[편집]

인공지능[편집]

  • 인공지능: 인공적인 지능을 만들 수 있는 방법론이나 실현 가능성 등을 연구
  • 자동 추론: 컴퓨터가 일련의 논리적 사고를 행하여 무언가를 추론해내기 하기 위한 연구
  • 로봇학: 로봇의 디자인, 설계, 기능에 관한 연구
  • 컴퓨터 시각: 컴퓨터가 카메라 등의 시각적 센서를 통해 얻은 신호의 의미를 해석하게끔 하는 연구
  • 기계 학습: 기계 또는 컴퓨터가 센서를 통해 새로운 정보와 지식을 얻고, 파악하게 하는 기술

데이터베이스[편집]

  • 데이터베이스: 데이터를 쉽게 접근, 처리, 갱신할 수 있도록 구성한 데이터의 집합체와 그에 관한 연구
  • 데이터 마이닝: 대규모로 저장된 데이터 속에서 특정 패턴을 자동적으로 찾고자 하는 노력

컴퓨터 그래픽스[편집]

유명한 컴퓨터 과학자들[편집]

바깥 고리[편집]