[컴퓨터 구조] 컴퓨터 시스템의 구성
개요
이번 글에서는 컴퓨터 시스템의 구성, 프로그래밍 언어의 변천사/패러다임에 대해 이야기해보려고 한다.
컴퓨터 시스템의 구성
1. 하드웨어와 소프트웨어
- 컴퓨터는 하드웨어와 소프트웨어라는 두 가지 구성 요소를 갖는 시스템이다.
- 여기서 하드웨어는 물리적 장치를 의미한다.
- 소프트웨어는 하드웨어가 움직이도록 만드는 프로그램(명령어)의 집합이다.
2. 하드웨어의 구성
- 중앙 처리 장치(CPU)는 제어 장치, ALU, 레지스터로 구성되어 있다.
- 메인 메모리는 처리 중인 프로그램과 데이터가 일시적으로 저장되는 공간이다.
- 보조 저장 장치는 프로그램과 데이터가 영구적으로 저장되는 공간이다.
- 입력 장치는 프로그램과 데이터를 입력할 때 사용한다. (키보드, 마우스 등)
- 출력 장치는 결과를 표시할 때 사용한다. (모니터, 프린터 등)
- 통신 장치는 여러 컴퓨터를 연결해 컴퓨터 네트워크를 구성하는 데 사용한다.
3. 소프트웨어의 구성
- 소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 구분한다.
- 시스템 소프트웨어(컴퓨터 하드웨어의 리소스를 관리하고 필요한 정보를 처리하는 프로그램으로 구성)로는 운영체제, 시스템 지원 프로그램, 시스템 개발 프로그램이 있다.
- 응용 소프트웨어로는 범용 소프트웨어, 특수 소프트웨어가 있다.
프로그래밍 언어의 변천사
1. 기계어
- 컴퓨터를 위한 프로그램을 만들려면 컴퓨터 언어를 사용해야 한다.
- 오랜 시간 동안 컴퓨터 언어는 기계어에서 기호어로, 그리고 고급 언어로 진화해왔다.
- 컴퓨터가 유일하게 이해할 수 있는 언어는 기계어이다.
2. 기호어(어셈블리어)
- 1950년대 초에 그레이스 호퍼는 인간이 만든 프로그램을 기계어로 변환하는 개념을 최초로 고안했다.
3. 고급 언어
- 각각의 기계어 명령어로 각각의 기계에 맞는 프로그램을 작성하는 일이 쉽지 않았음 -> 프로그래머의 효율을 개선하고자 고급 언어를 만들기 시작함
- 고급 언어는 여러 컴퓨터에 이식할 수 있으므로 프로그래머는 컴퓨터 자체보다는 본질적인 애플리케이션 문제에 집중함
- 고급 언어는 프로그래머가 어셈블리어의 세부적인 내용들을 기억하지 않아도 된다는 강점도 있음
- 처음으로 가장 널리 사용된 고급 언어는 FORTRAN으로 1957년에 존 바커스와 IBM 팀이 개발함
- FORTRAN에 이어서 곧바로 COBOL이 등장하기도 했음
프로그래밍 언어의 패러다임
1. 패러다임이란
- 패러다임은 프로그램이 데이터를 처리하는 방법을 설명하는 모델 즉, 프레임워크
2. 절차형 패러다임
- 절차형(또는 명령형) 패러다임에서 프로그램은 명령어의 순차적 집합으로 구성되어 있다.
3. 객체 지향형 패러다임
- 객체 지향적 패러다임은 절차형 패러다임의 개념에서 더 나아가 특정 형태의 데이터에 적용할 수 있는 프로시저를 하나로 묶었다.
- 객체는 특정 형태의 데이터와 그러한 데이터에 적용할 수 있는 모든 작업을 묶은 것이다.
4. 함수형 패러다임
- 입력을 넣으면 대응되는 출력이 나오는 형태이다.
5. 논리형 패러다임
- 논리형 패러다임은 일련의 사실과 규칙을 기반으로 사용자의 입력인 쿼리에 응답하는 형태이다.
6. C++의 패러다임
- C++은 C언어를 발전시킨 프로그래밍 언어로 절차형 패러다임의 기초이다.
- 하지만 클래스와 객체를 제공하여 객체 지향형 패러다임을 활용할 수도 있다.