새소식

프로그래밍/C | C++

[C] 01 프로그래밍의 개념 - 1.1 프로그래밍이란?

  • -

이 글은 [쉽게 풀어쓴 C언어 Express 개정판]을 읽고 정리한 내용입니다. 상업적 목적이 아닌 단순히 공부한 내용을 정리하려는 생각으로 쓴 것이니 그 점 유의하고 봐주시기 바랍니다.

http://book.naver.com/bookdb/book_detail.nhn?bid=6984786





1.1 프로그래밍이란?


● 프로그램의 중요성

  • 컴퓨터를 사용하여 많은 작업을 할 수 있지만, 컴퓨터 하드웨어만 있다고 할 수 있는게 아닌 프로그램이 설치되어 있어야 한다.
  • 하드웨어 조립이 끝났다고 해서 끝나는게 아니라 '윈도우즈'와 같은 운영체제 프로그램과 응용 프로그램을 설치해야만 비로소 우리가 사용할 수 있다.
  • 가전제품과는 다르게, 컴퓨터는 범용적인 기계이기에 프로그램만 바꾸어주면 다양한 작업을 할 수 있다. ex) 한글 2010, 윈도우 미디어 플레이어 등등 ..
  • 반대로 컴퓨터는 프로그램이 없으면 아무일도 할 수 없다. 근본적으로 미리 작성된 프로그램을 단순히 수행하는 기계이다.

● 컴퓨터와 프로그램
  • 컴퓨터의 기본적인 임무는 숫자 계산을 빠르게 하는 것이다.
  • 현대에 이르러서는 명령어(instruction)[각주:1]들의 리스트에 따라 데이터를 처리하는 기계라고 할 수 있다.
  • 특정한 작업을 수행하도록 설계된 명령들의 리스트가 바로 프로그램(program)이다.
  • 다양한 프로그램을 수행할 수 있는 능력은 컴퓨터를 범용적인 다재다능한 기계로 만들었으며, 이는 계산기와 컴퓨터를 구별하는 특징이 된다.

● 프로그램의 역사
  • 프로그램이 가능한 최초의 기계는 '컴퓨터의 아버지' 찰스 배비지가 만든 '해석 기관(Analytical Engine)'이다. 
  • 범용적인 계산 기계를 만들기 위해 모든 종류의 계산을 하나의 기계에서 할 수 있도록 설계된 최초의 범용 컴퓨터였다.
  • 특별한 점은 해석 기관에서는 프로그램이 작성하는 것이 가능했다. 그러나 해석 기관은 개념과 원리만 완성됐을 뿐 실제로 만들어지지 못했다.
  • 수천 개의 기어, 바퀴, 축, 레버 등으로 구성하여 증기로 작동하는 것으로 설계되었다. 
  • 해석 기관에는 현대 디지털 컴퓨터의 기초적인 하드웨어[각주:2]와 소프트웨어[각주:3]의 원리가 구현돼 있었다. 
  • 해석 기관은 현대 컴퓨터에서도 사용하는 네 가지의 핵심적인 부품(component)이 모두 포함되어 있었다
  • 중앙 처리 장치

     계산을 담당, mill이라고 불림

     기억 장치

     중간 단계에서 임시적으로 숫자를 저장, store라고 불림

     출력 장치

     출력 숫자를 나타내는 다이얼

     입력 장치

     천공 카드[각주:4]

  • 천공 카드 시스템을 이용해 계산에 필요한 숫자들, 수행할 연상까지도 지정할 수 있었다. 천공 카드를 적절히 사용해 계산 장치는 중간 결과를 메모리에 저장할 수 있었고 다음 프로시저가 사용하도록 저장된 숫자를 반환할 수 있었다.
  • 이러한 입력 장치를 사용하여 해석 기관은 매번 서로 다른 계산을 할 수 있었다.

  • 19세기 말까지 실용적인 컴퓨터를 구현할 수 있는 기술이 등장했다. ex) 펀치 카드, 부울 대수[각주:5], 진공관, 텔레타이프 등등 ..
  • 전자 공학의 발전으로 전자 스위치가 부울 대수(Boolean algebra)의 참/거짓을 나타낼 수 있다는 것을 깨닫게 되었다. 
  • 최초의 전자식 컴퓨터는 1943년 ENIAC이다. 산술 연산과 논리 연산을 수행할 수 있었고 변수 개념도 지원하였다. 십진법을 사용해 계산하며 최초의 범용 전자 컴퓨터이다.
  • 탄도 궤적을 계산할 목적으로 개발되었으며 18000개의 진공관과 6000여 개의 스위치로 이루어져 있었다.
  • 결정적인 문제점은 탄도 궤도 표를 계산만을 수행할 수 있었고 다른 연산을 수행시키려면 아주 복잡하였다. ENIAC의 프로그램은 스위치에 의하여 기억되었고 프로그램을 변경할 때마다 그 많은 스위치들을 처음부터 다시 연결하여야 했다고 한다.

  • 이후 1945년 폰노이만이 발표한 프로그램 내장(stored program) 구조[각주:6] 또는 폰 노이만 구조가 등장하면서 훨씬 유연하고 깔끔한 설계를 할 수 있었다.
  • 1948년 최초의 실용적인 프로그램 내장 방식의 컴퓨터인 EDVAC이 제작되었다. 
  • EDVAC은 최초의 메모리를 가지고 있었고 이 메모리 안에 프로그램을 내장하여 수행하였다. 0과 1의 이진 숫자들로 구성된 기계어를 사용하였으며 폰 노이만 구조는 다음과 같은 특징을 가진다.
  •  프로그램과 데이터가 모두 메인 메모리에 저장된다.

    메인 메모리에 저장된 프로그램에서 이진수로 되어 있는 면령어 들을 순차적으로 가져와서 실행한다. 



● 프로그램이 하는 일

  • 프로그램이란 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 하는 것이다.
  • 우리가 원하는 작업을 기록해 둔 작업 지시서라고 보면 된다. 컴퓨터에게 무엇을 어떻게 시킬 지를 기록해놓은 문서가 프로그램이다.


● 컴퓨터가 이해하는 언어

  • 컴퓨터가 알아듣는 언어는 0과 1로 구성되어 있는 이진수 하나이다.
  • 모든 것을 0과 1로 표현하고 0과 1에 의하여 내부 스위치 회로들이 온오프 상태로 변경되면서 작업을 한다. 이와같이 이진수 형태의 언어를 기계어(Machine language)라고 한다.
  • 기계어는 종속성을 가진다. 같은 이진수라도 나타내는 값이 다르다는 특징이 있다.
  • 불편성을 없애기 위해 인간의 언어에 더욱 근접한 프로그래밍 언어를 만들었고 그 언어로 프로그램을 작성하면 컴파일러라고 하는 통역을 담당하는 소프트웨어가 프로그램을 기계어로 바꿔준다.


  1. 명령어는 컴퓨터의 두뇌에 해당하는 프로세서가 수행할 수 있는 하나의 연산을 의미한다. 산술 연산이나 데이터 이동 등이 대표적인 명령어들이다. [본문으로]
  2. 눈이 보이는 부품들. CPU, 메인메모리, 보조기억장치, 입출력장치 [본문으로]
  3. 시스템 소프트웨어: 하드웨어를 제어하는 소프트웨어. OS, 컴파일러 응용 소프트웨어: 시스템 S/W를 통해 특정 작업을 수행하기 위한 소프트웨어. 포토샵, 한글 등등.. [본문으로]
  4. 천공 카드(punched card)란 두터운 종이의 적당한 위치에 구멍을 내어 그 구멍의 위치가 정보를 나타내도록 설계된 것이다. [본문으로]
  5. 1848년 영국의 수학자 부울(Bool)에 의하여 제안된 것으로, 참과 거짓을 나타내는 0과 1만을 가지고 논리 과정을 표현하는 수학의 한 분야이다. [본문으로]
  6. 프로그램 내장 구조란 프로그램을 메모리에 저장하는 방식이다. 컴퓨터가 기계의 메모리에 적재된 프로그램에 의해 작동될 수 있다는 것이다. 프로그램이 저장 장치에 내장되어 반복적으로 메모리에 적재될 수 있고, 프로그램 자체도 다른 데이터와 마찬가지로 수정될 수 있었다. 즉 프로그램을 데이터처럼 취급하는 개념이었다. [본문으로]
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.