1970년대 초 'Bell Laboratories'의 'Dennis Ritchie'가 Unix Operating System 을 개발
개발 도중 크기가 작고 빠르게 실행되는 Program을 작성할 수 있고
Hardware를 효율적으로 제어할 수 있는 간결한 언어가 필요로 하였음.당시 언어는 low-level language인 Assembly language만 존재함.
Ritchie는 low-level language의 효율성과 Hardware 접근 능력
high-level language의 일반성과 이식성이 결합된 C 를 창시
Laboratories | 연구소
Low-level language | 저수준 언어
Assembly language | 어셈블리어
High-level language | 고수준 언어
Computer 의 Resource를 관리하고
Uesr 와 Computer 를 연결해주는 Program
기계어에 가까운 언어로 효율성과
Hardware 접근 능력이 높지만 이식성이 낮은 언어
특정 Hardware 에 종속되지 않고 문제해결 방식에 주안점을 두어
여러종류의 Compiler를 사용하여 특정 Computer 에 맞는
내부적인 기계어로 바꾸기 때문에 이식성이 높은 언어
Procedual 이란 것은 Data 보다 Algorithm 에 더 치중한다는 것으로
Procedual Programming 이란 Computer 가 수행해야할 동작들을
명확히 구분해 그 구분된 동작들을 Programming Language 로 구현
Procedual | 절차적
Data [ Program이 사용하고 처리하는 정보 ]
Algorithm [ Program이 Data를 처리하는 방법 ]
Branch가 어지럽게 엉켜있어 전체적인 윤곽을
쉽게 파악할 수 없는 프로그램
Branch | 분기
정형화된 조건을 통해 Branch를 사용하도록 제한하고
top-down 설계로 이루어져 개별적인 작업을 function 단위로 개발하여
수행해야할 여러가지 동작들로 Program 을 구성하는 Programming
Structured Programming | 구조적 프로그래밍
Top-Down | 상향식
규모가 큰 Program을 작고 다루기 쉬운 작업들로 쪼개어 설계하는 것