1. C언어 기본 지식

By @kimdy6/28/2017kr

공부를 할때도 그 공부에 대한 배경지식을 쌓듯이 C언어도 기본 개념과 기본지식이 필요하다고 느껴서 포스팅하게됩니다.
C언어를 공부하기전에 누가 이 언어를 개발했는지 모르고 쓰면 개발자가 서운해 하겠죠?
평소에 게임을 할때 적어도 어느회사 게임인지 알고하는것처럼 먼저 개발자가 누군지 살펴봅시다.

개발자 : 미국의 벨연구소 소속에 리치라는 분께서 만들었습니다.

그렇다면 C언어는 어느 분야에 사용될까요?

바로 우리가 컴퓨터를 사용할때 없으면 안 될 존재인 운영체제에 사용됩니다.
운영체제 중에서도 컴퓨터에 관심이 있으신 분들이라면 한번쯤은 들어보셨을
리누스 토발즈가 개발한 운영체제 리눅스역시 C언어 기반 운영체제입니다.
추가로 제가 옛날에 리눅스 마스터2급 자격증을 딸까하면서 공부했을때
리눅스유닉스를 모티브로하여 무료로 만들었다고 합니다.
P.s)리눅스가 유닉스는 가격이 비싸서 유닉스가 싫어서 리눅스를 만들었다는 말이 있습니다.
그러므로 역시 유닉스도 C언어 기반이라는 소리죠.
그리고 가상화폐 역시 C언어의 업그레이드 버전이라 볼수있는 C++,파이썬 등으로 만들어졌습니다.

그렇다면 왜 C언어를 가장 먼저 배울까요?

  1. 많은 다른언어들 중에 C언어로 만들어진 언어들이 있다.
  2. 컴퓨터 보안, 시스템 해킹에 관심이 있으신 분들은 리버싱이라는 역공학기술을 아실것입니다.
    일단 C언어는 컴파일러라는것을 통해 C언어의 소스를 컴파일러컴파일을 해서 컴퓨터가 알아들을 수
    있는 기계어(2진수의 숫자(0,1)) 로 변환해서 컴퓨터에 명령을 하는 것입니다.
    언어에는 저급언어(기계어, 어셈블리어)와 고급언어(C언어 , 자바 , 파이썬 등등) 최고급언어인 사람들의 언어 자연어가 있죠. 여기서 기계어를 공부해서 기계어로 프로그래밍 하는것은 불가능하다고 볼정도로 어려운일입니다. 만약 가능한 사람이 있다면 그 사람은 컴퓨터와 직접 대화가 가능하고, 모든 컴퓨터안의 프로그램을 해킹할수 있을것입니다.
    또, 기계어와 같이 저급언어인 *어셈블리어**는 기계어와 1:1로 대화가 가능하고 어셈블러라는 것을 이용해야 기계어로 변환이 됩니다. 그래서 어셈블리어를 아는것도 아주 강력한데요. 프로그램을 디버거라는 툴을 통해 프로그램을 디버깅하면 어셈블리어로 이루어진 텍스트(?)가 나오는데 이것으로 분석을하여 이 프로그램이 어떻게 코딩되어있는지 알 수있습니다.
    하지만 이때 C언어를 모르면 어셈블리어를 C언어로 바꾸지 못하겠죠
    이건 추가인데 어셈블리어는 하드웨어에대한 구조를 잘 알아야 하지만 C언어는 잘 몰라도 됩니다. 왜냐하면 어셈블리어는 모든것이 컴퓨터에 적합한 진수와 메모리로 이루어져 있기 때문 입니다.

긴 글 읽어주셔서 감사합니다. 이건 그냥 저의 지식이기 때문에 상세히는 다루지 못하였지만 그래도 조금이라도 도움이 되셨으면 하는 마음으로C언어 공부에 대한 첫 포스팅을 마치겠습니다.
혹시 제가 잘못알고있거나 추가로 알고계신 내용있다면 댓글로 지식을 공유합시다 ^^
좋은 하루 보네세요~~

10

comments