본문 바로가기
개발/C, C++

[C언어] 프로그래밍 개론/C언어 개론

by candosh 2023. 6. 23.

'프로그래밍1 및 실습' 계절학기 전공기초 내용을 기반으로 작성합니다.


프로그램, 프로그래밍, 프로그래밍 언어

  • 프로그램: 컴퓨터를 이용해 문제를 해결할 때 컴퓨터에 내리는 명령어들의 집합
  • 프로그래밍: 컴퓨터가 이해할 수 있는 언어로 실행 프로그램을 만드는 것
  • 프로그래밍 언어: 컴퓨터를 구동시키는 프로그램을 작성하기 위한 형식 언어

 

저급 언어와 고급 언어

 

저급 언어: 하드웨어 지향의 컴퓨터 내부 표현에 가까운 언어. 기계어와 어셈블리어로 구분됨

  • 기계어: 2진수 형태의 0과 1로 작성하며 컴퓨터가 직접 이해할 수 있는 언어
  • 어셈블리어: 기계어 명령을 간단한 기호로 표현한 언어

고급 언어: 사람이 이해하기 쉬운 일상 언어와 기호를 사용해 프로그램을 작성할 수 있으며, 저급 언어보다 이식성이 높음

  • 대표적인 고급 언어: C, C++, 자바, 파이썬, 포트란, 코볼, 파스칼 등

 

프로그래밍 언어의 번역

고급 프로그래밍 언어의 소스코드를 기계어로 번역하는 것으로, 컴파일러 방식과 인터프리터 방식으로 나뉨

 

컴파일러와 인터프리터

 

  • 컴파일러: 프로그램 전체 소스코드를 기계어로 한 번에 번역해 실행 파일을 만든 뒤 프로그램을 실행하는 방식으로, C, 자바 등이 컴파일러 방식을 사용함
  • 컴파일: 소스 전체를 개체 파일로 번역하는 과정
  • 인터프리터: 소스코드를 한 행씩 읽어 가며 번역과 실행을 동시에 수행하는 방식으로, 프로그램이 실행 중일 때 고급 언어로 작성된 소스코드 명령어를 하나씩 번역하는 것
  • 컴파일러를 이용한 방식보다 속도가 느리지만, 즉각적인 피드백이 가능

 

프로그래밍 실행 과정

 

프로그래밍 언어의 분류

  • 절차 지향 언어: 프로그램을 작성할 때 실행 순서를 중심으로 설계하는 프로그램 작성 언어로, C, C++, 포트란, 베이직, 코볼 등이 있음
  • 논리형 언어: 논리학의 관계식 형태로 프로램을 기술한 언어로, 프롤로그가 대표적임. 논리식을 바탕으로 객체 간의 관계에 대한 문제를 해결할 때 주로 사용
  • 객체 지향 언어: 프로그램을 독립된 단위인 '객체'들의 집합으로 파악하는 언어로, 자바, 파이썬, C++, C#등이 있음
  • 함수형 언어: 데이터에 대한 함수 적용을 바탕으로 처리하는 과정을 기술하는 언어로, 대표적인 언어로는 리스프, 스킴 등이 있음

절차지향 언어와 객체지향 언어의 차이

  • 절차 지향 언어: 데이터와 기능을 별도로 관리해 기능을 호출한 뒤 데이터에 접근해 일을 처리 -> C, C++ 공통
  • 객체 지향 언어: 기능과 데이터를 하나로 묶어 캡슐화한 후 메세지를 전달해 일을 처리 -> C++

 

C언어 특징

  • 절차 지향 언어: 함수 중심으로 구현되는 절차지향 언어
  • 간결하고 효율적인 언어: 다양한 연산과 이미 개발된 다양한 시스템 라이브러리를 제공(비트연산, 증감연산, 축약대입연산 등)
  • 이식성이 좋은 언어: 다양한 CPU와 플랫폼의 컴파일러를 지원