나의 즐겨찾기 | 블로그홈 | 바로가기 바로가기 | 로그인
힘들다고 느낀다면 이제 시작할때야
블로그  |  사진갤러리  |  동영상갤러리 방명록  |   즐겨찾기 추가
전체 글보기(120)
It's my life
Robot FSR
전공관련 관심거리
재테크관련
취업준비
잡동사니
좋은글들
주변얘기
AVR 명령어
AVR딴짓하기
시계만들기[AVR]
RC서보모터
공작놀이
AVR LIB FUNCTION REFERENCE
C 문법
전자공학기초
Wireless
엠프 제작 기초
엠프제작
전자부품살곳
2009 11월
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
최근 댓글 전체보기
또한 번 들러 봅니다...
설이 얼마 남지 않았습..
Thank you! ..
Thank you! ..
Nice site! ..
최근 참조글 전체보기
Buy ambien c..
Buy domain o..
Soma.
Viscital val..
Free rape mo..
다녀간 블로거 더보기
- 뽀빠이
- 가리통빼
- 명원산업
- 허석원
- 사랑과기쁨을주는joo
 즐겨찾기
 즐겨찾기 글모음
최근 글
성열이 결혼식
나를 표현하는 창..
이공대생 취업 선호기업..
영어·전문성·팀워크, ..
여행
 인기도 :
 이 블로그 점수주기
개설일 : 2006/02/01
 

C언어 란?

1969년에......, AT&T 연구소의 Ken Thompson은 연구소의
한쪽 구석에 방치되어 있던 작은 컴퓨터를 보고 운영체제
'UNIX'의 개발을 시작했습니다. 이 작업에 가담하고 있었던
Dennis Ritchie 라는 사람이 'C' 라고 하는 언어를 만들었고.
결국 UNIX 는 C 언어로 다시 프로그래밍 되었습니다.

그런데, 왜 이름이 'C' 일까요?
원래 'CPL(Combined Programming Language)' 이라는 언어가
있었는데, 그 언어에서 'BCPL(Basic CPL)' 이라는 언어가
파생되었고, 다시 그 언어에서 파생한 언어를 BCPL의 선두
문자를 따서 'B' 라고 이름을 붙였습니다. C 언어는 다시 그
B 언어에서 파생되었기 때문에 BCPL의 2번째 문자를 따서
(혹은 B의 다음 알파벳을 따서) 'C' 라고 지어졌다고 합니다.

요약하자면 C언어는 Unix 운영체제 하에서 시스템 프로그래밍을
하기 위해 개발된 아주 강력한 기능을 가진 프로그래밍 언어입니다.

C언어는 구조화 프로그래밍을 지향하는 언어이고 정말로 가장
쓸모있는 언어라고 할수 있습니다.
이유는 C언어에서는 못하는게 없기 때문이죠.
좀 과장된 표현 같기도 하지만 다른 언어들과 비교해 볼때
못하는거란 없습니다.
그리고 C언어로 만든 프로그램의 속도는 어셈블리어 만큼이나
빠른 속도를 내기 때문에 빠른 속도를 요구하는 프로그램에도
적합하죠.
단 게임과 같은 곳에서는 C언어의 속도조차도 느리기 때문에..
어셈블리가 요구되는 곳이 있지만, 요즘 C언어 컴파일러들은
인라인 어셈블러라는 것을 지원해서 C소스 내에 어셈블리 코드를
추가할수 있습니다. 이런 점으로 볼때 C로는 못하는게 없다고
봐도 되겠죠?

그래도 실감이 나지 않으시면 C언어로 만들어진 대표적인
프로그램을 예로 들어 볼까요?
그런데 그럴려면 한가지 문제가 있네요.
이 문제가 뭐냐 하면.. C언어로 만들어진 유명한 프로그램이
너무나도 많다는 것이죠. 그래도 몇가지 예를 들어 보죠.
우선 OS에서는 Unix의 커널의 일부분을 제외한 모든 부분이
C로 만들어졌습니다.
정말 굉장하죠..?
그리고 Windows 95도 커널의 일부분과 *.VxD만 빼면 모두
C로 만들어졌습니다. 그것두 우리가 잘 알고 있는 Visual C++의
버전 2.1로 만들어졌죠.

또하나 굉장한 사실이 있는데..
Windows NT는 커널 부분까지 C로 만들어졌다는 것이죠.
C언어로 만들어진 프로그램에는 게임도 많은데, 대부분의
게임은 C언어로 만들어졌다고 보면 됩니다.
게임을 시작할때

DOS/4GW Protected Mode Run-time Version 1.97
Copyright (c) Rational Systems Inc. ............
 .
 .

이런 것을 많이 보셨을 겁니다. 유명한 게임을 시작할땐 다
이게 나오는데, 이게 나오는건 C언어도 만들어진 것 입니다.
Watcom C++라는 개발 툴로 만들어진 것이죠.
또 한가지 놀라운 사실이 있는데, C언어 컴파일러도 C언어로
만든다는 것이죠.
이정도면 C언어로 못하는게 없다는 말이 이해가 되시겠죠?

그럼 이제 그 C언어의 세계로 들어가 보도록 하죠.

C언어에는 어떤 종류가..

'C언어에는 어떤 종류가..'라는 제목을 보고 글이 자꾸 읽고
싶어 지신다면 그 분은 분명 C언어 초보자 입니다.
하지만 이 제목을 보고선 무언가 이상하다고 느끼시면
진정한 전문가라고 할수 있죠.

이유가 궁금하시죠? 이유는 C언어에는 종류가 없기 때문이죠.
종류가 없는데 제목이 저러니 당연히 이상할수 밖에요.
C를 처음 하시는 분들이 많이 질문하시는 것들 중 하나가
'C와 Visual C의 차이점이 무엇인가요?' 입니다.
제가 이 질문을 받았다면 이렇게 답해 드리고 싶군요.
'C는 언어이고 Visual C는 언어가 아닙니다.' 라구요.
여기서 Visual C라는 건 Microsoft라는 회사에서 만든
C언어로 프로그래밍할때 필요한 도구를 말합니다.
즉 언어가 아니라는 것이죠.
단지 C언어로 프로그래밍을 할때 필요한 도구에 지나지
않습니다. 언어는 바로 C이죠.

그러므로 Visual C와 Borland C등은 문법에선 차이가
있을 수 없습니다.

정리하면 C는 언어이고, Visual C, Borland C등은 언어가
아니라 C언어를 사용해 프로그램을 제작하기 위한 도구이며,
모두 C언어 프로그램을 제작하기 위한 도구이므로 기본 문법의
차이는 있을수 없다는 것을 꼭 기억하시기 바랍니다.
그리고 여기서 한가지 말씀드릴것이 있는데, 위에 Visual C라고
썼지만 실제는 이게 아니고 Visual C++입니다.

그럼 또 한가지 의문이 생기실건데 Visual C++에서 C++가 아닌
C언어 프로그램을 작성할수 있는지 말입니다.

이 의문의 답은 Yes!입니다.

C++라는 언어는 C언어를 객체 지향 프로그래밍이란 것을 할수
있도록 확장시킨 언어이죠.
그래서 C++언어는 C언어를 포함한다고 할수 있죠.
그러므로 Visual C++에서 아무리 C++라고 쓰여져 있어도
C 프로그래밍은 가능합니다.

C언어는 어떻게..

이제 C언어 프로그램이 어떻게 실행되어 지는가를 알아봅시다.
C언어로 프로그램을 만들면 실행파일(.EXE)을 만들 수가 있습니다.
실행파일이 만들어질때는 다음과 같은 과정을 거칩니다.

    (1)소스 코드 -------------> (2)소스 파일 ---------->
                 텍스트 에디터               선행처리기


    (3)선행처리기 지시어가 번역된 소스 파일 --------->
                                            컴파일러

                 라이브러리
    (4)목적 파일 -----------> (5)실행파일
                    링커

(1) 소스 코드 (Source)

프로그램의 내용 자체를 소스 코드라고 합니다.

(2) 소스 파일 (Source file)

소스 코드를 텍스트 파일에 기술하여 만들어진 파일을
소스 파일이라고 합니다.
C언어의 소스 파일은 확장자가 .C입니다.
C언어 프로그램 만드는 가장 첫번째 과정이라고 할 수 있죠.

(3) 선행처리기 지시어가 번역된 소스 파일

C언어 프로그램 내에는 여러가지 지시어 들이 있는데
이건 C언어 문법과는 별개이고 번역도 컴파일러가 하지
않습니다.
이걸 번역하는 프로그램을 선행처리기라고 합니다.

(4) 목적 파일 (Object file)

지시어가 번역된 소스 파일은 다음으로 컴파일러라는 프로그램에
의해 기계어로 번역됩니다.
이 번역된 파일을 목적 파일이라고 하고, 확장자는 .OBJ가 됩니다.
그러데 여기서 이상한 점이 있죠?
기계어로 번역하면 실행할수 있을 건데 왜???????? 실행파일을
만들지 않고 목적파일이라는 만들까요?
하지만 기계어로 번역되었다고 해서 실행할수는 없습니다.
실행파일이 되기 위해선 런타임 라이브러리라는 것이 목적 파일과
합쳐져야 하기 때문이죠. 이 런타임 라이브러리가 무엇인지는
나중에 설명하기로 하고 그냥 런타임 라이브러리라는 것이
합쳐져야 한다는 것만 알아두세요.

(5) 실행 파일 (Executable file)

목적파일은 위에서 말한 런타임 라이브러리와 합쳐져서
실행파일이 되는데,이때 합쳐주는 프로그램을 링커라고 합니다.
링커에 의해 목적 파일은 실행파일이 되죠.
그럼 실행할수가 있게 됩니다.

댓글쓰기

댓글쓰기 입력폼

포스트 목록 닫기

목록보기