1. C언어 기본 지식

in #kr7 years ago (edited)

공부를 할때도 그 공부에 대한 배경지식을 쌓듯이 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언어 공부에 대한 첫 포스팅을 마치겠습니다.
혹시 제가 잘못알고있거나 추가로 알고계신 내용있다면 댓글로 지식을 공유합시다 ^^
좋은 하루 보네세요~~

Sort:  

제가 하나 말씀드리지 못했는데 다른 포스팅하면서 중간중간 추가 지식을 포스팅 하겠습니다. 궁금하신것있으면 제가 아는선에서 설명해드리겠습니다. 댓글에 언제든지 물아보십시오 : )

친절한 설명에 관심없는 분들도 흥미를 가질것 같네요:)

ㅎㅎ 과찬이십니다~~

Dennis Ritchie 는 UNIX 를 위해서 C 언어를 만들었고, The C Programming Language 라는 C 의 고전을 저술하였습니다. (Brian Kernighan 공저) 이 책은 얇은 듯 해서 쉽게 접근할 수 있을 것 같지만, 고급 수준의 프로그래밍과 UNIX 에 대한 이해가 필요합니다. 대개 책장 전시용으로 하나씩 소장되고 있습니다.

이 때 C를 K&R C 라고 하며, 이 후 ANSI C 로 표준,통합 작업이 진행되었습니다.

모든 언어는 Language Specification 이 있는데, C 의 경우는 표준화된 연도에 따라서 C89, C90, C95, C99, C11(2011) 의 순으로 스펙이 발전해 가고 있습니다.

가장 대표적인 C 컴파일러는 GCC (GNU C Compiler) 가 있으며, MS C 컴파일러도 사용됩니다. 운영체제에 따라서 소스코드를 변경해야 하는 불편함이 존재합니다.
C 언어로 배포된 소스를 컴파일 하기란 쉬운일이 아닙니다.
Make, ar 등의 도구에 대해서 잘 이해하고 있어야 하며, 라이브러리의 관계에 대해서도 알아야 하므로 꽤나 어려운 언어라 할 수 있습니다.

Dannis Ritchie 는 안타깝게도 2011년에 작고하였습니다.

kdj님 댓글과 블로그를 보니까 정말 깊이있게 공부하신 전문가 포스가 느껴지시네요. 덕분에 새로운 지식을얻어갑니다. 좋은하루되세요 :)

ㅎㅎ 좋은정보 감사드려요~

조금이나마 도움이 되서 기쁘네요 긴 글읽으시느라 수고하셨습니다 : )

C언어를 배우고 다른언어들을 배우면서 느끼는 점인데 C라고 하는 언어는 파고들수록 그 진가와 그매력이 확 와닫게 느껴지는거 같네요ㅎ
좋은정보감사합니다!
보팅과 팔로우 하고 가겠습니다ㅎ
앞으로도 좋은 정보들 올려주시면 감사하겠습니다ㅎ

그러게요 c를 더 팔려고 win32 api라는것을 알게되고 soeb이라는 사이트에서 공부를 해보려하는데 c언어는 정말 끝이 없는것같아요 저도 geunwoong0624님 포스팅에서 유용한글 기대합니다^^