본문 바로가기

ETC Programmings

Hello World, Java로 비교하는 C의 소스코드 분석

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
사용자 삽입 이미지 사용자 삽입 이미지
이 현란한 웨스턴 스타일의 소스코드를 보세요.. -ㅅ-;; (뻥입니다;; 그런거 없습니다), 음.. 우선 자바의 소스코드를 살펴보도록 하겠습니다.


사용자 삽입 이미지
일단 패키지명이 보이는군요.. helloWorld 라는 패키지에 속해 있는 클래스이구, 세번째 줄에 있는건 클래스를 선언해주는겁니다. public은 접근제어자이구요.. 누구나 다 접근이 가능한 클래스이다.. 라고 볼 수 있겠죠. 다음으로 메소드가 출현합니다. static 메소드이고.. 반환값은 없고.. String 매개변수를 갖고 메소드 명은 main 이고.. 마찬가지로 public.. System 클래스의 out이라는 객체의 println 이라는 메소드를 호출한다는 의미를 가지고 있습니다.


사용자 삽입 이미지
그럼 이 C 소스코드는 뭘까요!! 둘다 실행결과는 똑같이 Hello World! 출력해주는건데 말이죠..

일단, main 이라는 메소드? 를 발견할 수 있는데요.. 누가 봐도 이건 Hello World! 를 출력하기 위한 명령어 입니다. 우선 용어 부터 고쳐야 겠군요.. 자바에서의 메소드라고 불리우는것이 C에서는 함수라고 불리워 집니다. 함수라는 것은 "C 언어는 함수에서 시작해서 함수로 끝이 난다." 라고 할 정도로 중요하고 C 언어의 기본 단위가 된다고 합니다.

int main(void) 라는 것은 무엇일까요?

int는 출력의 형태, void는 입력의 형태를 의미한다고 합니다. main은 함수의 이름이구요.. 리던값과 매개변수의 형식이라고 한다면 자바의 규칙과 동일합니다. 이건 그렇다고 치죠 -ㅅ-;; 하지만..

문제는 #include <stdio.h> 라는 놈입니다 ㅠㅠ 전혀 짐작도 안가는 녀석입니다. package?? 라고 하기에는 폴더 이름과 전혀 관계 없고.. import라고 하기엔???????

책에서는 "표준 라이브러리 함수의 사용을 위해서는 헤더 파일을 포함해야 한다." 라고 나와있습니다.

printf라는 함수를 살펴보면... 그렇군요.. -_-; printf 라는 녀석은 도대체 어서 오는거냔 말이죠.. 실제로 HelloWorld.c 라는 소스코드 내부에는 printf라는 것이 없습니다. 따라서 표준 라이브러리 함수라는 이야기라는 겁니다. printf 라는 놈은 말이죠..

printf 라는 녀석은 확장자가 .h인 헤더파일에 들어있는데.. stdio.h 파일에 들어있는 표준 라이브러리 함수라고 합니다. 그래서 #include <stdio.h> 를 사용하여 헤더파일을 포함하겠다는 선언을 해주는 겁니다. 자바에서 import를 사용하여 다른 클래스에 있는 메소드를 사용하는 경우가 있는데.. 그렇다고 보면 되겠군요.. ㅎㅎ 이 헤더 파일의 선언은 import 처럼 소스코드의 전반부에 등장을 해야한다고 합니다.

프로그래밍 언어는 생각보다 비슷한 부분이 많습니다. 물론 더 파고 들어가면 전혀 다른 부분들도 발견이 되겠지만.. 서로 비교해 보면서 배운다는게 참 이해가 잘 가는것 같습니다.. 더불어 이렇게 블로그를 통해서 남기는 작업은 나중에도 더 도움이 될거라고 생각이 드네요 ^^