본문 바로가기
컴퓨터공학기초 개념/컴퓨터구조

20. 컴퓨터구조 - 프로그램과 프로그래밍 언어

by devraphy 2021. 8. 17.

0. 시작하기 전에

- 이전 포스팅 까지 CPU의 내부구조에 대해서 다음과 같이 공부했다.

 

▶ CPU의 동작방식(연산 방법) 

▶ CPU의 내부 연산처리에 필요한 요소(여러가지 레지스터, 명령어, 마이크로연산) 

▶ CPU 설계방식 

▶ CPU가 입출력을 처리하는 과정 

 

- 지금까지 HW에 집중했다면,

- 이번 포스팅 부터는 HW를 더욱 잘 활용하기 위한, SW적인 측면에 대해서 알아볼 예정이다.


1. 프로그램이란?

- 컴퓨터는 복잡한 계산(= 산술논리연산)을 하기 위한 목적으로 만들어진 도구다.

- 그러므로 컴퓨터에게 어떤 작업을 시킨다는 것은 어떤 계산을 시킨다는 의미다. 

 

- 사람은 어떤 것을 계산하기 위해 순차적인 연산과정을 거친다. 컴퓨터도 동일하다.

- 이 순차적인 연산과정을 컴퓨터에게도 알려줘야 하는데, 이를 컴퓨터가 이해할 수 있도록 정리한 것이 프로그램이다. 

  

- 프로그램이란, 어떤 계산을 수행하기 위해 필요한 과정을 정리한 것이다. 

- 계산 과정의 순서를 정리한다는 의미는, 컴퓨터가 실행할 명령어의 순서를 정리한 것을 말한다.

- 즉, 프로그램은 순서에 맞게 정리된 명령어의 집합이라고 해석할 수 있다. 


2. SW란 무엇인가?

- SW란, 컴퓨터의 HW를 더욱 잘 활용할 수 있도록 제어하고 지시하는 모든 종류의 프로그램을 의미한다. 

- 조금 더 디테일하게 설명하자면, SW = 프로그램 + 자료구조 + 문서

 

  ▶ 자료구조 - 프로그램 실행에 필요한 컴퓨터 자원(HW)의 활용 계획서

  ▶ 문서 - 프로그램의 사용설명서 또는 메뉴얼 

 

- 비유를 하자면, 프로그램은 햄버거 단품과 같은 것이고, SW는 햄버거 세트와 같은 것이다. 

 

a) SW의 종류 

- SW는 크게 두가지 분류로 나뉘는데, 시스템 SW와 응용 SW로 나뉜다.

클릭하면 확대됩니다.


3. Software Engineering이란?

- 예를 들어, 건축공학을 배운다고 한다고 해보자. 

- 건축공학을 배우면 기초적인 역학, 물리, 수학부터 시작해서 건물을 짓는법까지 배운다. 

- 여기서 한가지를 더 배우게 되는데, 최소비용으로 최대 효율의 건축물을 짓는 법을 배운다. 

- 즉, 건축공학은 안전하게, 빠른시간 내에, 최소비용으로, 최대효율을 내는 건축물을 짓는 방법을 배운다.  

 

- 소프트웨어 공학도 이와 같은 맥락이다.

- 다만 한가지 차이점이 있다면, 최대효율보다 최적화에 집중한다는 것이다. 

- 즉, 소프트웨어 공학은 최소비용으로 최적의 소프트웨어를 만드는 모든 도구와 방법에 대해 연구하는 학문이다. 

 

- 여기서 말하는 도구란, 다음과 같은 의미를 갖는다. 

  ▶ 자동화 도구 - 프로그램 

  ▶ 수동적 도구 - 방법론 

 


4. 프로그램을 만드는 언어 

- 프로그래밍 언어는 다음과 같이 분류할 수 있다.

▶ 1세대 언어

   - 이진법으로 표현된 컴퓨터가 바로 이해하는 언어

   ex) 기계어

 

▶2세대 언어

   - 기계어를 사람이 이해할 수 있도록, 기계어와 대응하는 기호언어(= Mnemonic)

   ex) 어셈블리어

 

▶ 3세대 언어(절차적 언어)

   - 고급언어의 시작

   - 사람의 언어(자연어)에 가까운 형태를 가진 프로그래밍 언어

   - 폰 노이만 구조를 바탕으로 설계된 언어

   - 컴퓨터의 순차적인 동작을 기반하여 실행순서에 중점을 두고 있는 언어(절차적 언어) 

   - 컴파일러 또는 인터프리터를 통해 기계어로 번역되는 언어(기계 독립적 언어)

   ex)  Fortran, Cobol, Basic, C언어, Java

 

▶ 4세대 언어 (비절차적 언어)

   - 문제 해결형 또는 비절차적 언어 

   - 내부 도구를 이용해 코딩을 통한 프로그램 작성이 아닌 그림(visual)을 조합해서 프로그램을 만드는 것이 가능

   - 최종 사용자 또는 비전문 프로그래머도 이전세대 언어보다 상대적으로 쉽게 프로그램을 만들 수 있음 

   - 컴퓨터의 보급속도에 비해 SW의 개발 속도가 느린 상황(= SW 위기)을 극복하고자 도입된 언어 

   ex) PL/SQL, Visual C++, Visual Basic

 

 

b) 프로그램 언어를 처리하는 과정

- 고급 언어는 아래의 사진과 같은 번역 프로세스를 거친다.

- 즉, 프로그래밍 언어는 반드시 기계어로의 번역이 필요하다. 

클릭하면 확대됩니다.

 


[참고자료]

https://youtu.be/AfmhVFelurY

 

댓글