게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어의 잘못된 이해
게시물ID : it_7253짧은주소 복사하기
작성자 : iT개발자
추천 : 2
조회수 : 2244회
댓글수 : 4개
등록시간 : 2021/04/23 14:38:57
옵션
  • 창작글

   C언어의 잘못된 이해



저는 C언어를 처음에 배웠고, 이후 자바, C++ 등 다른 언어를 배웠습니다.

객체를 이해하는데 한 달 정도 걸렸습니다.

안드로이드를 개발할 때는, 펌웨어 단(C,C++)에서 프레임웍을 거쳐서 APP단(JAVA) 까지 버그 분석을 한 경험이 있습니다.

즉 C, C++, JAVA 3가지 언어를 동시에 보면서 버그를 분석 했습니다.


C언어와 비교하여, 객체지향 언어에서는 '클래스'의 장점을 강조 합니다.

필요한 클래스만 수정하면 되어서 편리하며, 이미 작성된 것을 사용하기에 유리하다는 이유입니다.

하나의 파일에 하나의 클래스를 사용하는게 좋다고 권장하기도 합니다.


결론부터 말씀드리면, 이것은 객체지향 언어 만의 장점이 아닙니다.

C언어에는 헤더파일을 include 하는 기능이 있습니다.

기능을 조각내어서, 파일로 잘 분리하여 선언과 정의를 해두면, 클래스와 유사하게 사용이 가능합니다.

클래스를 상속하여 가져오는 것헤더파일을 include 하는 것유사한 기능입니다.

include 한 것은 그냥 쓰면 되고, 나머지만 새로 정의 하여 개발하면 됩니다.

파일내에서만 사용하는 함수는 내부함수가 되고, 헤더파일에 선언하여 외부에 공개하면 public의 개념이 됩니다.

세부적 문법적 차이는 물론 있습니다만, 개념적인것은 동일합니다.


"C언어는 메인함수 하나에 거의 모든 것에 들어간다."라는 것도 멍청한 생각입니다.

파일로 나누어서, 여러 헤더파일로 정의 하여, 상속을 받는 것처럼 include 하여 사용하면 됩니다.

너무나 당연한 것이며, 실제 복잡한 C프로그램의 대부분은 메인함수에 몇 줄의 코딩 밖에 존재하지 않습니다.

부분적으로 코드를 수정할때도 전체 코드를 컴파일 해야한다는 것도, 컴파일러의 문제이지 언어자체의 문제는 절대 아닙니다.

컴파일러 좋은 것을 쓰면 되는 문제입니다.


왜 이런 오해들을 하게 되었을까요?

저는 원인을 JAVA 홍보를 위해서 C언어와 비교를 하였는데, 그것이 20년 넘게 내려오고 있다고 봅니다.

초기 자바 책에서 클래스와 객체지향이라는 우월성을 강조 하고 싶은 '광고'를 보고, 순진하게 믿었던 개발자들의 잘못입니다.

자바 책에서는 '잘못 작성한 C코드'와 '훌륭하게 작성한 JAVA코드'를 비교하여 JAVA의 우월성만을 강조 하였습니다.

비유하면 한국의 조기축구회와 프리미어리그의 축구를 비교하여, 한국의 수준은 이렇다고 말을 한 겁니다.

잘못 작성한 JAVA코드와 훌륭하게 작성한 C코드를 비교하면 어떤 결과가 나올까요?

JAVA코드로 하나의 클래스에 모든 기능을 정의하는 초보자는 없는 건가요?


이상의 내용은 오래전 제가 객체를 이해하는 시기에 이해한 것입니다.

아래와 같이 세련되게 표현이 가능하다는 것은 이후 알게 되었습니다.


"객체지향 언어가 아니라 객체지향 설계이다."


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호