컴퓨팅

[섬네일|오른쪽|alt=초기 진공관 튜링 완전 컴퓨터|최초의 프로그래밍 가능한 범용 전자 디지털 컴퓨터인 [에니악|ENIAC]]
[섬네일|오른쪽|alt=컴퓨터 시뮬레이션|[데이터 시각화와 컴퓨터 시뮬레이션은 중요한 컴퓨팅 응용 분야다. 이것은 생물학적 신경망 시뮬레이션의 3D 시각화다.]]

**컴퓨팅**(computing)은 컴퓨팅 기계를 필요로 하거나, 그로부터 이익을 얻거나, 혹은 이를 만들어내는 모든 목표 지향적 활동을 의미한다. 여기에는 알고리즘 프로세스에 대한 연구 및 실험과 하드웨어 및 소프트웨어의 개발이 포함된다. 컴퓨팅은 과학적, 공학적, 수학적, 기술적, 사회적 측면을 포괄한다. 주요 컴퓨팅 학문으로는 컴퓨터 공학, 컴퓨터 과학, 사이버 보안, 데이터 사이언스, 정보 시스템, 정보기술, 소프트웨어 공학 등이 있다.

컴퓨팅이라는 용어는 셈 및 계산과도 동의어로 쓰인다. 과거에는 기계식 컴퓨터에 의해 수행되는 동작을 지칭했으며, 그보다 더 이전에는 인간 컴퓨터를 가리키는 말이었다.

## 역사

컴퓨팅의 역사는 컴퓨터 하드웨어의 역사보다 앞서며, 표의 도움을 받거나 받지 않고 펜과 종이(또는 분필과 석판)를 위해 고안된 방법의 역사를 포함한다. 컴퓨팅은 숫자의 표현과 밀접하게 연관되어 있지만, 컴퓨팅에 필요한 수학적 개념은 기수법이 등장하기 전부터 존재했다. 계산에 사용된 것으로 알려진 최초의 도구는 주판이며, 기원전 2700년에서 2300년 사이 바빌론에서 발명된 것으로 추정된다. 보다 현대적인 디자인의 주판은 오늘날에도 여전히 계산 도구로 사용되고 있다.

컴퓨팅에서 디지털 전자 공학을 사용하자는 최초의 기록된 제안은 1931년 C. E. 윈-윌리엄스가 발표한 논문 "물리적 현상의 고속 자동 계수를 위한 사이라트론의 사용"이었다. 그 후 클로드 섀넌의 1938년 논문 "계전기와 스위칭 회로의 기호 분석"을 통해 불 논리 연산에 전자 공학을 사용하는 아이디어가 소개되었다.

장효과 트랜지스터의 개념은 1925년 율리우스 에드가 릴리엔펠트에 의해 제안되었다. 벨 연구소에서 위험 쇼클리 밑에서 일하던 존 바딘과 월터 하우저 브래튼은 1947년에 최초의 작동하는 트랜지스터인 점접촉 트랜지스터를 제작했다. 1953년 맨체스터 대학교는 최초의 트랜지스터 컴퓨터인 맨체스터 베이비를 제작했다. 그러나 초기 접합 트랜지스터는 상대적으로 부피가 크고 대량 생산이 어려워 소수의 특수 분야에만 제한적으로 사용되었다.

1957년 프로슈와 데릭은 벨 연구소에서 최초의 이산화 규소 장효과 트랜지스터를 제조하는 데 성공했으며, 이는 소스와 드레인이 표면에서 인접한 최초의 트랜지스터였다. 이후 한 팀이 1960년 벨 연구소에서 작동하는 MOSFET을 시연했다. MOSFET은 고밀도 집적 회로를 구축하는 것을 가능하게 했으며, 이는 컴퓨터 혁명 또는 마이크로컴퓨터 혁명으로 이어졌다.

## 컴퓨터

컴퓨터는 컴퓨터 프로그램이라고 불리는 지침 세트에 따라 데이터를 조작하는 기계다. 프로그램은 컴퓨터가 지침을 실행하기 위해 직접 사용할 수 있는 실행 가능한 형태를 갖는다. 인간이 읽을 수 있는 소스 코드 형태의 동일한 프로그램은 프로그래머가 알고리즘으로 알려진 일련의 단계를 연구하고 개발할 수 있게 한다. 지침은 서로 다른 유형의 컴퓨터에서 수행될 수 있기 때문에, 하나의 소스 지침 세트는 CPU 유형에 따라 기계어 지침으로 변환된다.

실행 프로세스는 컴퓨터 프로그램의 지침을 수행한다. 지침은 컴퓨터에 의해 수행되는 계산을 표현하며, 실행 기계에서 일련의 단순한 동작을 유발한다. 이러한 동작은 지침의 의미론에 따라 효과를 생성한다.

### 컴퓨터 하드웨어

컴퓨터 하드웨어는 중앙 처리 장치, 메모리, 입출력을 포함하는 컴퓨터의 물리적 부품을 포함한다. 계산 논리와 컴퓨터 구조는 컴퓨터 하드웨어 분야의 핵심 주제다.

### 컴퓨터 소프트웨어

컴퓨터 소프트웨어, 또는 간단히 소프트웨어는 컴퓨터에 지침을 제공하는 컴퓨터 프로그램과 관련 데이터의 모음이다. 소프트웨어는 컴퓨터의 저장 장치에 보관된 하나 이상의 컴퓨터 프로그램 및 데이터를 의미한다. 이는 데이터 처리 시스템의 운영과 관련된 프로그램, 절차, 알고리즘 및 관련 문서의 집합이다. 프로그램 소프트웨어는 컴퓨터 하드웨어에 직접 지침을 제공하거나 다른 소프트웨어 조각의 입력 역할을 함으로써 구현하는 프로그램의 기능을 수행한다. 이 용어는 기존의 하드웨어(물리적 장치를 의미함)와 대비하기 위해 만들어졌다. 하드웨어와 달리 소프트웨어는 무형이다.

소프트웨어는 때때로 응용 소프트웨어만을 의미하는 더 좁은 의미로 사용되기도 한다.

#### 시스템 소프트웨어

시스템 소프트웨어는 컴퓨터 하드웨어를 작동 및 제어하고 응용 소프트웨어를 실행하기 위한 플랫폼을 제공하도록 설계된 컴퓨터 소프트웨어다. 시스템 소프트웨어에는 운영체제, 유틸리티 소프트웨어, 장치 드라이버, 윈도 시스템, 펌웨어 등이 포함된다. 컴파일러, 링커, 디버거와 같이 자주 사용되는 개발 도구들도 시스템 소프트웨어로 분류된다. 시스템 소프트웨어와 미들웨어는 컴퓨터의 기능을 관리하고 통합하지만, 응용 소프트웨어와 달리 일반적으로 사용자에게 이익을 주는 작업을 수행하는 데 직접 적용되지는 않는다.

#### 응용 소프트웨어

어플리케이션 또는 앱으로도 알려진 응용 소프트웨어는 사용자가 특정 작업을 수행하는 것을 돕기 위해 설계된 컴퓨터 소프트웨어다. 예시로는 전사적 소프트웨어, 회계용 소프트웨어, 오피스 스위트, 그래픽 소프트웨어, 미디어 플레이어 등이 있다. 많은 응용 프로그램은 주로 문서를 다룬다. 앱은 컴퓨터 및 시스템 소프트웨어와 함께 번들로 제공되거나 별도로 출시될 수 있다. 일부 사용자들은 번들로 제공되는 앱에 만족하여 추가적인 응용 프로그램을 설치할 필요를 느끼지 못한다. 시스템 소프트웨어는 하드웨어를 관리하고 응용 프로그램을 지원하며, 응용 프로그램은 다시 사용자를 지원한다.

응용 소프트웨어는 특정 컴퓨팅 플랫폼이나 시스템 소프트웨어의 성능을 특정 목적에 적용한다. 마이크로소프트 오피스와 같은 일부 앱은 여러 다양한 플랫폼을 위해 여러 버전으로 개발되며, 다른 앱들은 더 좁은 요구 사항을 가져 일반적으로 실행되는 플랫폼에 의해 지칭된다. 예를 들어, 윈도우용 지리 정보 시스템 응용 프로그램이나 교육용 소프트웨어를 위한 안드로이드 응용 프로그램, 혹은 리눅스 게임 등이 있다. 특정 플랫폼에서만 실행되면서 그 응용 프로그램의 인기로 인해 해당 플랫폼의 수요를 증가시키는 응용 프로그램을 킬러 애플리케이션이라고 한다.

### 컴퓨터 네트워크

컴퓨터 네트워크 또는 간단히 네트워크는 자원과 정보를 공유할 수 있도록 통신 채널로 상호 연결된 하드웨어 구성 요소와 컴퓨터의 모임이다. 한 장치의 적어도 하나의 프로세스가 원격 장치에 상주하는 적어도 하나의 프로세스와 데이터를 주고받을 수 있을 때, 두 장치는 네트워크에 있다고 말한다. 네트워크는 데이터를 운반하는 데 사용되는 매체, 사용된 통신 프로토콜, 규모, 토폴로지 및 조직적 범위와 같은 다양한 특성에 따라 분류될 수 있다.

통신 프로토콜은 컴퓨터 네트워크에서 정보를 교환하기 위한 규칙과 데이터 형식을 정의하며, 네트워크 프로그래밍의 기초를 제공한다. 잘 알려진 통신 프로토콜 중 하나는 근거리 통신망에서 유비쿼터스하게 사용되는 하드웨어 및 링크 계층 표준인 이더넷이다. 또 다른 일반적인 프로토콜은 인터넷 프로토콜 스위트로, 이는 인터네트워킹, 즉 여러 네트워크 간의 데이터 전송, 호스트 간 데이터 전송 및 응용 프로그램별 데이터 전송 형식을 위한 프로토콜 세트를 정의한다.

컴퓨터 네트워킹은 이러한 학문들의 이론적 및 실제적 응용에 의존하기 때문에 때때로 전기공학, 통신, 컴퓨터 과학, 정보기술 또는 컴퓨터 공학의 하위 학문으로 간주되기도 한다.

#### 인터넷

인터넷은 수십억 명의 사용자에게 서비스를 제공하기 위해 표준 인터넷 프로토콜 스위트(TCP/IP)를 사용하는 상호 연결된 컴퓨터 네트워크의 글로벌 시스템이다. 여기에는 수백만 개의 사설, 공공, 학술, 비즈니스 및 정부 네트워크가 포함되며, 그 범위는 지역에서 글로벌에 이른다. 이러한 네트워크는 광범위한 전자, 무선 및 광학 네트워킹 기술로 연결되어 있다. 인터넷은 월드 와이드 웹의 상호 연결된 하이퍼텍스트 문서 및 이메일을 지원하기 위한 인프라와 같은 광범위한 정보 자원과 서비스를 운반한다.

### 컴퓨터 프로그래밍

컴퓨터 프로그래밍은 컴퓨터 프로그램의 소스 코드와 문서를 작성, 테스트, 디버깅 및 유지 관리하는 프로세스다. 이 소스 코드는 프로그래밍 언어로 작성되는데, 이는 자연어보다 더 제한적이지만 컴퓨터에 의해 쉽게 번역될 수 있는 인공 언어다. 프로그래밍은 기계로부터 원하는 동작(커스터마이징)을 이끌어내기 위해 사용된다.

고품질 소스 코드를 작성하려면 컴퓨터 과학 영역과 응용 프로그램이 사용될 영역 모두에 대한 지식이 필요하다. 따라서 최고 품질의 소프트웨어는 종종 각 개발 분야의 전문가들로 구성된 도메인 전문가 팀에 의해 개발된다. 그러나 프로그래머라는 용어는 해커부터 오픈 소스 기여자, 전문가에 이르기까지 다양한 수준의 프로그램 품질에 적용될 수 있다. 또한 단일 프로그래머가 새로운 킬러 애플리케이션을 출시하기 위한 개념 증명을 생성하는 데 필요한 컴퓨터 프로그래밍의 대부분 또는 전부를 수행하는 것도 가능하다.

#### 컴퓨터 프로그래머

프로그래머, 컴퓨터 프로그래머 또는 코더는 컴퓨터 소프트웨어를 작성하는 사람이다. 컴퓨터 프로그래머라는 용어는 컴퓨터 프로그래밍의 한 분야의 전문가를 의미하거나 다양한 종류의 소프트웨어를 위한 코드를 작성하는 제너럴리스트를 의미할 수 있다. 프로그래밍에 정형화된 접근 방식을 실천하거나 공언하는 사람은 프로그래머 분석가로도 알려질 수 있다. 프로그래머의 주요 컴퓨터 언어(C, C++, 자바, 리스프, 파이썬 등)가 종종 위 직함 앞에 붙으며, 웹 환경에서 일하는 사람들은 종종 직함 앞에 '웹'을 붙인다. 프로그래머라는 용어는 소프트웨어 개발자, 소프트웨어 공학자, 컴퓨터 과학자 또는 소프트웨어 분석가를 지칭하는 데 사용될 수 있다. 그러나 이러한 전문직 종사자들은 일반적으로 프로그래밍을 넘어서는 다른 소프트웨어 공학 기술을 보유하고 있다.

### 컴퓨터 산업

컴퓨터 산업은 컴퓨터 소프트웨어 개발, 컴퓨터 하드웨어 및 컴퓨터 네트워킹 인프라 설계, 컴퓨터 부품 제조, 그리고 시스템 관리 및 유지보수를 포함한 정보기술 서비스 제공과 관련된 기업들로 구성된다.

소프트웨어 산업은 소프트웨어의 개발, 유지보수 및 출판에 종사하는 비즈니스를 포함한다. 이 산업에는 훈련, 문서화 및 컨설팅과 같은 소프트웨어 서비스도 포함된다.

## 컴퓨팅의 하위 학문

### 컴퓨터 공학

컴퓨터 공학은 컴퓨터 하드웨어와 소프트웨어를 개발하는 데 필요한 전기공학과 컴퓨터 과학의 여러 분야를 통합하는 학문이다. 컴퓨터 공학자는 보통 소프트웨어 공학이나 전자공학뿐만 아니라 전자공학(또는 전기공학), 소프트웨어 설계, 하드웨어-소프트웨어 통합에 대한 교육을 받는다. 컴퓨터 공학자는 개별 마이크로프로세서, 개인용 컴퓨터, 슈퍼컴퓨터의 설계부터 회로 설계에 이르기까지 컴퓨팅의 많은 하드웨어 및 소프트웨어 측면에 관여한다. 이 공학 분야에는 자체 영역 내의 하드웨어 설계뿐만 아니라 하드웨어와 그것이 작동하는 맥락 사이의 상호 작용도 포함된다.

### 소프트웨어 공학

소프트웨어 공학은 소프트웨어의 설계, 개발, 운영 및 유지보수에 체계적이고 규율 있으며 정량화 가능한 접근 방식을 적용하는 것과 이러한 접근 방식에 대한 연구를 의미한다. 즉, 소프트웨어에 공학을 적용하는 것이다. 이는 문제에 대한 해결책을 구상, 모델링 및 확장하기 위해 통찰력을 사용하는 행위다. 이 용어의 첫 번째 언급은 1968년 NATO 소프트웨어 공학 컨퍼런스였으며, 당시 인지된 소프트웨어 위기에 관한 사고를 자극하기 위한 의도였다. 널리 사용되는 보다 일반적인 용어인 소프트웨어 개발은 반드시 공학적 패러다임을 포함하는 것은 아니다. 공학 분야로서의 소프트웨어 공학에 대해 일반적으로 받아들여지는 개념은 소프트웨어 공학 지식 체계(SWEBOK) 가이드에 명시되어 있다. SWEBOK은 ISO/IEC TR 19759:2015에서 국제적으로 공인된 표준이 되었다.

### 컴퓨터 과학

컴퓨터 과학(CS)은 컴퓨테이션과 그 응용에 대한 과학적이고 실제적인 접근 방식이다. 컴퓨터 과학자는 계산 이론과 계산 시스템의 설계를 전문으로 한다.

그 하위 분야는 컴퓨터 시스템에서의 구현 및 적용을 위한 실제적인 기술과 순수하게 이론적인 영역으로 나눌 수 있다. 계산 문제의 근본적인 속성을 연구하는 계산 복잡도 이론과 같이 매우 추상적인 분야도 있고, 컴퓨터 그래픽스와 같이 실제 응용을 강조하는 분야도 있다. 다른 분야는 계산을 구현하는 데 있어서의 과제에 집중한다. 예를 들어, 프로그래밍 언어 이론은 계산의 기술에 대한 접근 방식을 연구하며, 컴퓨터 프로그래밍 연구는 프로그래밍 언어 및 복잡한 시스템의 사용을 조사한다. 인간-컴퓨터 상호 작용 분야는 컴퓨터와 계산을 인간에게 유용하고 사용 가능하며 보편적으로 접근 가능하게 만드는 데 있어서의 과제에 초점을 맞춘다.

### 사이버 보안

사이버 보안 분야는 컴퓨터 시스템과 네트워크의 보호와 관련이 있다. 여기에는 정보 및 데이터 프라이버시, IT 서비스의 중단 방지, 하드웨어, 소프트웨어 및 데이터의 도난 및 손상 방지가 포함된다.

### 데이터 사이언스

데이터 사이언스는 데이터의 양과 가용성이 증가함에 따라 데이터에서 정보와 통찰력을 추출하기 위해 과학적 및 컴퓨팅 도구를 사용하는 분야다. 데이터 마이닝, 빅 데이터, 통계학, 기계 학습 및 딥 러닝은 모두 데이터 사이언스와 얽혀 있다.

### 정보 시스템

정보 시스템(IS)은 사람과 조직이 데이터를 수집, 필터링, 처리, 생성 및 배포하기 위해 사용하는 하드웨어와 소프트웨어의 보완적 네트워크(정보기술 참조)에 대한 연구다. ACM의 컴퓨팅 커리어는 IS를 다음과 같이 설명한다.

IS 연구는 컴퓨터 과학 학문 내에서 다양한 비즈니스 모델과 관련 알고리즘 프로세스를 연구하기 위해 정보 및 컴퓨테이션의 이론적 기초를 사용하여 비즈니스와 컴퓨터 과학을 연결한다. 컴퓨터 정보 시스템(CIS) 분야는 그 원리, 소프트웨어 및 하드웨어 설계, 응용 프로그램 및 사회에 미치는 영향을 포함하여 컴퓨터와 알고리즘 프로세스를 연구하는 반면, IS는 설계보다는 기능성을 강조한다.

### 정보기술

정보기술(IT)은 종종 비즈니스나 다른 기업의 맥락에서 데이터를 저장, 검색, 전송 및 조작하기 위해 컴퓨터와 전기 통신 장비를 적용하는 것이다. 이 용어는 일반적으로 컴퓨터와 컴퓨터 네트워크의 동의어로 사용되지만, 텔레비전이나 전화와 같은 다른 정보 유통 기술도 포함한다. 컴퓨터 하드웨어, 소프트웨어, 일렉트로닉스, 반도체, 인터넷, 통신 장비, 전자 상거래 및 컴퓨터 서비스를 포함한 여러 산업이 정보기술과 연관되어 있다.

## 연구 및 신기술

DNA 컴퓨팅과 양자 컴퓨팅은 양자 알고리즘 개발과 같은 컴퓨팅 하드웨어 및 소프트웨어 모두에 대한 활발한 연구 분야다. 미래 기술을 위한 잠재적 인프라에는 포토리소그래피를 이용한 DNA 오리가미 및 이온 트랩 간 정보 전송을 위한 양자 안테나 등이 포함된다. 2011년까지 연구자들은 14개의 큐비트를 얽히게 하는 데 성공했다. 조셉슨 접합 및 단일 자속 양자(RSFQ) 기술에 기반한 회로를 포함한 고속 디지털 회로는 나노규모 초전도체의 발견과 함께 점차 실현 가능해지고 있다.

이미 장거리 데이터 전송에 사용되고 있는 광섬유 및 포토닉(광학) 장치는 CPU 및 반도체 메모리 구성 요소와 함께 데이터 센터에서 사용되기 시작했다. 이를 통해 광학 상호 연결을 통해 RAM을 CPU에서 분리할 수 있다. IBM은 단일 칩에서 전자 및 광학 정보 처리를 모두 수행하는 집적 회로를 만들었다. 이는 CMOS 통합 나노포토닉스(CINP)로 명명된다. 광학 상호 연결의 한 가지 이점은 이전에는 특정 종류의 시스템 온 칩(SoC)이 필요했던 마더보드가 이제는 이전에 전용되었던 메모리와 네트워크 컨트롤러를 마더보드 밖으로 옮겨 랙 전체에 분산시킬 수 있다는 것이다. 이를 통해 여러 유형의 SoC에 대해 백플레인 상호 연결과 마더보드를 표준화할 수 있어 CPU를 보다 시기적절하게 업그레이드할 수 있게 된다.

연구의 또 다른 분야는 스핀트로닉스다. 스핀트로닉스는 열 발생 없이 컴퓨팅 성능과 저장 공간을 제공할 수 있다. 광자학과 스핀트로닉스를 결합한 하이브리드 칩에 대한 일부 연구가 진행 중이다. 플라스몬학, 광자학 및 전자공학을 결합하는 연구도 진행 중이다.

### 클라우드 컴퓨팅
클라우드 컴퓨팅은 자원 소유자와 최종 사용자 간의 상호 작용 없이도 서버나 응용 프로그램과 같은 컴퓨팅 자원을 사용할 수 있게 해주는 모델이다. 일반적으로 서비스로 제공되며, 제공되는 기능에 따라 서비스형 소프트웨어, 서비스형 플랫폼, 서비스형 인프라스트럭처의 예가 된다. 주요 특징으로는 주문형 접속, 광범위한 네트워크 접속 및 신속한 확장 능력이 포함된다. 이는 개별 사용자나 소규모 비즈니스가 규모의 경제의 혜택을 누릴 수 있게 한다.

이 분야의 한 가지 관심 영역은 에너지 효율성을 지원할 수 있는 잠재력이다. 수천 개의 개별 기계 대신 단일 기계에서 수천 개의 컴퓨팅 인스턴스가 발생하도록 허용하면 에너지를 절약하는 데 도움이 될 수 있다. 또한 수백만 개의 가정과 사무실이 아닌 하나의 서버 팜에 재생 에너지를 공급하는 것으로 충분하므로 재생 에너지원으로의 전환을 용이하게 할 수 있다.

그러나 이러한 중앙 집중식 컴퓨팅 모델은 특히 보안과 프라이버시 면에서 여러 과제를 안겨준다. 현재의 법률은 기업 서버에 있는 데이터를 기업이 잘못 취급하는 것으로부터 사용자를 충분히 보호하지 못한다. 이는 클라우드 컴퓨팅 및 기술 기업에 대한 추가적인 입법 규제의 잠재력을 시사한다.

### 양자 컴퓨팅
양자 컴퓨팅은 컴퓨터 과학, 정보 이론, 양자 물리학 분야를 결합한 연구 영역이다. 물리학의 일부로서 정보라는 아이디어는 비교적 새로운 것이지만, 정보 이론과 양자 역학 사이에는 강한 유대 관계가 있는 것으로 보인다. 전통적인 컴퓨팅이 1과 0의 이진법 시스템으로 작동하는 반면, 양자 컴퓨팅은 큐비트를 사용한다. 큐비트는 1과 0의 두 상태에 동시에 존재하는 중첩 상태가 가능하다. 따라서 큐비트의 값은 1과 0 사이가 아니라 측정 시점에 따라 달라진다. 큐비트의 이러한 특성은 양자 얽힘으로 알려져 있으며, 양자 컴퓨터가 대규모 계산을 수행할 수 있게 하는 양자 컴퓨팅의 핵심 아이디어다. 양자 컴퓨팅은 전통적인 컴퓨터가 필요한 계산을 수행할 컴퓨팅 성능을 갖추지 못한 경우, 예를 들어 분자 모델링과 같은 과학 연구에 종종 사용된다. 큰 분자와 그 반응은 전통적인 컴퓨터가 계산하기에는 너무 복잡하지만, 양자 컴퓨터의 계산 능력은 그러한 계산을 수행할 수 있는 도구를 제공할 수 있다.

## 같이 보기
* 그린 컴퓨팅
* 자율 컴퓨팅
* 온 디멘드 컴퓨팅

## 각주

## 외부 링크
*  Free on-line dictionary of computing