티스토리 뷰
요즘 공부하고 있는 c언어에 대해 복습하는 겸 배운 부분을 글로 정리해 보려고 합니다. (전공자 아님)
1. 프로그래밍 언어란 무엇일까?
기계어를 사용하는 컴퓨터와 자연어(우리가 평소에 말할 때 쓰는 말)를 사용하는 사람 간 의사소통이 가능하게 해 주는 것.
컴퓨터는 사람이 쓰는 말을 바로 알아들을 수 없기 때문에 사람이 컴퓨터에게 내리고 싶은 명령을 프로그래밍 언어를 사용해서 컴퓨터가 알아들을 수 있는 말로 번역해주는 것이라고 생각하면 됩니다.
마찬가지로 사람 또한 기계어를 알아볼 수 없기 때문에 사람이 알아볼 수 있게 기계어를 프로그래밍 언어로 표현하는 것입니다.
2. 프로그래밍 언어의 종류
프로그래밍 언어에는 저수준 언어와 고수준 언어가 있는데 저수준으로 갈수록 기계어에 가깝고 고수준으로 갈수록 자연어에 가까운 형태입니다.
그래서 저수준일수록 사람이 알아보기 어렵지만 컴퓨터가 알아듣기 쉬워서 처리속도가 빨라지고 고수준으로 갈수록 사람이 알아보기 쉽지만 컴퓨터가 알아듣기 어려워서 처리속도가 느려집니다.
저수준과 고수준이라고 해서 저수준은 수준이 떨어지고 무조건 고수준이 좋은 것이 아니라 프로그래밍 언어의 형태가 단순히 기계어에 가깝냐 자연어에 가깝냐로 나눈 것이기 때문에 진행하는 프로젝트에 맞게 적절한 언어를 사용하는 것이 더 중요합니다.
만약 빠른 처리속도가 중요한 프로젝트라면 컴퓨터가 빨리 알아들어야 하니까 저수준 언어를 사용하는 것이 퀄리티를 높이는 데 도움이 되겠지만 사람이 알아듣기 어려운 만큼 개발 기간이 늘어날 것입니다.
반대로 컴퓨터의 처리속도보다는 개발 기간을 단축시키는 것이 중요하다면 고수준 언어를 사용하는 것이 유리할 것입니다.
그 중 c언어는 저수준 언어와 고수준 언어의 특징을 모두 가지고 있는 중립적인 언어라고 볼 수 있습니다.
3. C언어의 역사
초기 컴퓨터는 CPU 제조사별로 다른 프로그래밍 언어를 사용했기 때문에 컴퓨터를 다른 회사 제품으로 바꾸면 새로운 프로그래밍 언어를 익혀야 하는 등 통일되지 않은 프로그래밍 언어 사용 때문에 불편한 점이 많았습니다.
1972년 미국 벨(Bell) 연구소에서 개발자 켄 톰슨과 데니스 리치가 유닉스 시스템을 개발하던 중 한계점이 드러나기 시작하자 개발자 데니스 리치가 이를 보완하여 만들게 된 것이 C언어였습니다.
그리고 현재까지 여러 프로그래밍 언어들에 영향을 주게 됩니다.
4. C언어의 특징
- 저수준 언어와 고수준 언어의 중간쯤에 위치하고 있는 언어라 그들의 특징을 함께 이해할 수 있습니다.
- 프로그래밍에 입문하기에 조금 더 쉬운 절차지향적 특징을 가집니다.
코드를 작성하면 위에서부터 순서대로 실행이 됩니다.
- 현재 주로 사용하는 프로그래밍 언어들의 기반이 되는 언어입니다.
C++, C#, Java, Python
- 포인터의 사용으로 메모리에 대한 이해도를 올리기 쉽습니다.
5. C 프로그래밍 단계
소스파일 : 프로그래밍 언어로 작성한 소스코드를 담은 파일 (예 : xxx.c)
컴파일 : 작성된 소스코드를 컴퓨터가 알아들을 수 있게 기계어로 번역하여 오브젝트 파일(예 : xxx.obj)을 생성하는 과정
링크 : 생성된 오브젝트 파일들을 모아 실행파일을 만드는 과정
실행파일 : 최종적으로 실행이 가능한 파일
빌드 : 컴파일부터 링커까지의 모든 동작을 통틀어 지칭하는 단어
다음 글
2020/12/19 - [코딩 공부] - C언어 기초 : C언어 프로그래밍 시작하기
'코딩 공부 > C 언어' 카테고리의 다른 글
C언어 기초 : 변수 (0) | 2021.01.24 |
---|---|
C 언어 기초 : 2진수, 8진수, 16진수 등등... 진법 (0) | 2021.01.17 |
C언어 기초 : 서식 문자(제어 문자) (0) | 2020.12.20 |
C언어 기초 : Escape 문자 (0) | 2020.12.20 |
C언어 기초 : C언어 프로그래밍 시작하기 (2) | 2020.12.19 |
- Total
- Today
- Yesterday
- 아이패드
- c언어
- 다이나믹프로그래밍
- 문제풀이
- 깊이우선탐색
- DFS
- 캐나다
- 영어공부
- 너비우선탐색
- dp
- 프로그래머스
- 해커랭크
- 알고리즘
- 백준
- greedy
- 하드웨어
- 그리디
- c++
- 스위프트플레이그라운드
- 애플
- hackerrank
- 컴퓨터공부
- 컴퓨터
- 코딩공부
- 기초
- 컴퓨터사이언스
- BFS
- 캐나다생활
- 프로그래밍
- C언어기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |