안녕하세요 보글리아입니다.
이전 시간에 프로그래밍 언어란 무엇인지 알아봤는데요 ㅎㅎ
오늘은 그 프로그래밍 언어 중 사용자가 많고
현대 프로그래밍 언어의 시초(?)라고 할 수 있는 C언어가 무엇인지 알아보겠습니다~~
C언어 탄생
1960년대 운영체제(OS)라는 것이 있었습니다, 일단
이 운영체제는 일종의 통역가?라고 보시면 됩니다. 사람과 컴퓨터 사이의 통역을 해주는 주체입니다.
여러분들이 컴퓨터나 노트북을 사시고 전원을 켜시면 검은 화면이 나옵니다.
이는 그 기기에서 사용할 운영체제가 없기 때문입니다. 이 운영체제로는 윈도우 아시죠?? 이러한 윈도우나 리눅스 등의 운영체제를 설치하셔야 비로서 기기를 사용하실 수 있습니다. 운영체제 안에는 그 운영체제마다 개발된 프로그램이 있습니다. 예를 들어 칼리 리눅스라는 운영체제가 있는데 이 운영체제는 해킹을 목적으로 만들어진 운영체제라 그 내부 프로그램에서 해킹과 관련한 프로그램과 도구가 설치되어 있습니다.
추가적인 운영체제의 역할은 다음과 같습니다.
- 하드웨어(컴퓨터를 구성하는 기계 장치로 컴퓨터 본체가 이에 해당한다) 제어
- 컴퓨터 자원 관리
- 응용 프로그램 수행 지
- 사용자와 하드웨어 사이의 매개체
아무튼 다시 돌아와서 1960년대 운영체제들은 하드웨어 종속의 언어를 사용해서 개발했습니다.
따라서 이 당시에는 하드웨어가 바뀌면 운영체제 내 프로그램을 싹 다 갈아야 했습니다.
그렇기에 이러한 불편함을 해결하고자 많은 노력을 했습니다.
하단 이미지를 보시면 하드웨어 안에 운영체제가 있고 이 운영체제 내에는 많은 응용 프로그램이 설치되어 있습니다.
1960년 대 운영체제는 그 당시에 하드웨어에 맞게 개발됐기 때문에 하드웨어가 바뀌면 운영체제 내 프로그램을 싹 다 갈아야 했습니다.
이를 해결하기 위해 만들어진 게 C언어입니다.
C언어는 하드웨어의 세밀한 부분까지 제어할 수 있어, 하드웨어와 독립된 형태로 프로그램을 개발할 수 있게 되었습니다.
C언어를 사용해 유닉스라는 운영체제가 만들어졌고 이 유닉스 운영체제는 다양한 하드웨어에서 동작할 수 있습니다.
C언어의 특징
1) C언어는 구조화된 언어
C언어가 프로그래밍 언어의 시초는 아닙니다. 이 이전에도 프로그래밍 언어가 있었습니다.
이전에 쓰인 프로그래밍 언어로 작성해 작업한 내용을 가진 프로그램이 있고, 만약 향후 새로운 프로그램을 만든다고 했을 때, 이 새로운 프로그램에는 이전에 만든 프로그램이 가진 작업한 내용을 재사용하기 힘들었습니다.
하지만 C언어는 기존 프로그램에서 자신이 작업한 내용을 필요한 부분만 일부 가져와
새로운 프로그램 개발에 재사용할 수 있는 구조화된 특징을 가집니다.
2) C언어는 이식성이 높다
C언어로 프로그램을 만들면, 이 프로그램은 다른 하드웨어나 운영체제에서도 잘 작동합니다.
즉 하드웨어의 변화가 발생해도 C언어는 아무런 영향도 받지 않고 외부에서 가져다 사용할 수 있습니다.
3) C언어는 확장성과 표현법이 좋다
C언어는 다른 언어에 비해 많은 표현법이 있어 프로그래머가 개발 상황에 맞춰 문법구조나 표현법을 자유롭게 사용할 수 있습니다. 자율성이 높다는 말은 상대적으로 C언어가 어렵다고 생각하실 수 있지만, 다양한 표현법을 익히고 나면 다른 언어에서 사용할 수 없는 C언어 만의 강력한 표현을 사용할 수 있어, 입문자들이 배우기 좋습니다.
4) C언어는 생산성이 높다
C언어는 다양한 명령 그룹이나 함수 등을 구축해 프로그램 개발 속도가 점차 빨라집니다. 물론 초기에는 다른 고급 언어들이 C언어보다 쉽게 프로그램을 개발할 수 있어 C언어가 생산성이 떨어져 보이겠지만, C언어는 경력이 쌓일수록 실력이 늘어 프로그램의 완성도와 만족도가 더 높아집니다.
오늘은 제가 현업에서 사용하는 C언어의 역사와 특징을 알아봤습니다.
C언어는 프로그래밍 언어의 기초이자 C언어를 배우면 다른 언어에 접근하기가 좋습니다.
쉽게 말해 미국 영어를 배운다면 영국식 영어나 호주식 영어를 배우기 더 쉬운 것과 같습니다.
그렇기에 여러분들이 프로그래밍 언어를 배우신다면 자신있게 C언어를 추천합니다.
긴 글 읽으시느라 고생 많으셨습니다~~
'IT 이야기' 카테고리의 다른 글
13가지의 구글링 검색 방법 (0) | 2023.09.02 |
---|---|
언리얼 엔진 VS 유니티 엔진 (0) | 2023.03.28 |
프로그래밍 언어란? (0) | 2023.02.23 |
프로그래밍에서 오류와 버그란? (0) | 2023.02.07 |
댓글