프로그래밍 언어
프로그래밍 언어: 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어
컴파일러: 프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록
기계어로 번역하는 역할을 함. 이를 컴파일(compile)한다고 함.
프로그래밍 언어의 필요성:
- 사람과 컴퓨터가 서로 의사교환을 하기 위해서
- 사람이 컴퓨터에게 지시할 명령어를 프로그래밍 언어로 기술
기계어와 어셈블리어
기계어: 0과 1로 구성되는 언어체계. 컴퓨터가 이해할 수 있는 유일한 언어이다.
어셈블리어: 기계어의 연산코드와 피연산자를 기호형태로 일대일 대응시킨다.
프로그래머가 기계어 보단 더 이해하기 쉽다.
필자: ??????
순서 | 기계어 | 어셈블리어 | 의미 |
명령어1 | 0101 000000000100 | LDA A | 메모리 A의 내용을 누산 레지스터(AC)에 저장 |
명령어2 | 0111 000000000110 | ADD B | 메모리 B의 내용과 누산 레지스터(AC)의 값을 더하여 누산 레지스터 (AC)에 다시 저장 |
명령어3 | 0100 000000000111 | STA C | 누산 레지스터(AC)의 값을 메모리 C에 저장 |
명령어4 | 0011 000000000000 | HLT | 프로그램 종료 |
두 정수의 합을 위한 명령어 집합 (C = A + B)
저급 언어와 고급 언어
고급언어(HLL: High Level Language)
- 사람이 이해하기 쉬운 언어
- C, C++, Java, C#, ...
저급언어(LLL: Low Level Language)
- 컴퓨터가 이해하기 쉬운 언어
- 기계어, 어셈블리어, ...
저급언어라고 질이 낮은 언어가 아니다. 각각의 언어가 지닌 장단점이 다르기 때문에 고급언어가
저급언어보다 좋다고 판단하는 것은 옳지않다.
C
- B언어에서 발전된 언어
- 1972년, UNIX 운영체제 작성을 위한 시스템 프로그래밍 언어로 설계됨
- AT&T의 벨 연구소의 Dennis Ritchie가 개발
- 컴파일러나 많은 소프트웨어 도구들도 C언어로 개발
- 다른 고급언어에 비해 하드웨어에 대한 보다 확실한 통제 가능
- 프로그램의 이식성이 높음(CPU 종류, 운영체제 차이 덜 민감)
C++
- 객체지향 프로그래밍 지원
- C언어가 지닌 절차지향적 특성 또한 그대로 계승하면서 객체의 상속성(inheritance) 등의
개념을 추가
- C언어가 지닌 절차지향적 특성 또한 그대로 계승하면서 객체의 상속성(inheritance) 등의
- C언어의 확장(기존 C언어로 개발된 모든 프로그램들을 수정 없이 그대로 사용 가능
통합 개발 환경
- Integrated Development Environments
- 프로그램 개발에 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경
프로그램 개발 과정
링커(linker)
- 여러 개의 목적 파일들을 라이브러리 함수와 연결해서 하나의 파일인 실행파일을 생성
로더(loader)
- 실행파일을 컴퓨터의 주기억장치에 로드해서 프로그램을 실행 가능하게 함
디버깅(debugging)
- 프로그램 개발과정에서 컴파일 에러나 실행 에러를 수정하는 과정
무한 츠쿠요미
* 참고하는 서적과 강의자료는 모두 Visual C++를 기준으로 설명하지만, 필자는 편리함을 위해
Dev C++을 사용함을 알림.
'공부 > C언어' 카테고리의 다른 글
(C) 비트 연산자 (0) | 2020.06.14 |
---|---|
(C) 8진수 16진수를 이용한 데이터 표현 (0) | 2020.06.13 |
(C 예제) 사람의 명 수를 입력받고 자동차 종류를 결정 (0) | 2020.06.13 |
(C 예제) 정수를 입력받아 1부터 정수까지의 합, 짝수합, 홀수합, 팩토리얼을 계산하는 프로그램 (0) | 2020.06.08 |
(C) C언어에 대한 기본적인 지식 1 (0) | 2020.01.24 |