<p> C언어의 잘못된 이해</p> <p><br></p> <p><br></p> <p>저는 C언어를 처음에 배웠고, 이후 자바, C++ 등 다른 언어를 배웠습니다.</p> <p>객체를 이해하는데 한 달 정도 걸렸습니다.</p> <p>안드로이드를 개발할 때는, 펌웨어 단(C,C++)에서 프레임웍을 거쳐서 APP단(JAVA) 까지 버그 분석을 한 경험이 있습니다.</p> <p>즉 C, C++, JAVA 3가지 언어를 동시에 보면서 버그를 분석 했습니다.</p> <p><br></p> <p>C언어와 비교하여, 객체지향 언어에서는 '클래스'의 장점을 강조 합니다.</p> <p>필요한 클래스만 수정하면 되어서 편리하며, 이미 작성된 것을 사용하기에 유리하다는 이유입니다.</p> <p>하나의 파일에 하나의 클래스를 사용하는게 좋다고 권장하기도 합니다.</p> <p><br></p> <p>결론부터 말씀드리면, 이것은 객체지향 언어 만의 장점이 아닙니다.</p> <p>C언어에는 헤더파일을 include 하는 기능이 있습니다.</p> <p>기능을 조각내어서, <b>파일</b>로 잘 분리하여 선언과 정의를 해두면, <b>클래스와 유사하게 사용이 가능</b>합니다.</p> <p><b>클래스를 상속하여 가져오는 것</b>과 <b>헤더파일을 include 하는 것</b>은 <b>유사</b>한 기능입니다. </p> <p>include 한 것은 그냥 쓰면 되고, 나머지만 새로 정의 하여 개발하면 됩니다.</p> <p>파일내에서만 사용하는 함수는 내부함수가 되고, 헤더파일에 선언하여 외부에 공개하면 public의 개념이 됩니다.</p> <p>세부적 문법적 차이는 물론 있습니다만, 개념적인것은 동일합니다.</p> <p><br></p> <p>"C언어는 메인함수 하나에 거의 모든 것에 들어간다."라는 것도 멍청한 생각입니다.</p> <p>파일로 나누어서, 여러 헤더파일로 정의 하여, 상속을 받는 것처럼 include 하여 사용하면 됩니다.</p> <p>너무나 당연한 것이며, 실제 복잡한 C프로그램의 대부분은 메인함수에 몇 줄의 코딩 밖에 존재하지 않습니다.</p> <p>부분적으로 코드를 수정할때도 전체 코드를 컴파일 해야한다는 것도, 컴파일러의 문제이지 언어자체의 문제는 절대 아닙니다.</p> <p>컴파일러 좋은 것을 쓰면 되는 문제입니다.</p> <p><br></p> <p>왜 이런 오해들을 하게 되었을까요?</p> <p>저는 원인을 JAVA 홍보를 위해서 C언어와 비교를 하였는데, 그것이 20년 넘게 내려오고 있다고 봅니다.</p> <p>초기 자바 책에서 클래스와 객체지향이라는 우월성을 강조 하고 싶은 <b>'광고'를 보고,</b> 순진하게 믿었던 개발자들의 잘못입니다.</p> <p>자바 책에서는 '<b>잘못 작성한 C코드</b>'와 '<b>훌륭하게 작성한 JAVA코드'</b>를 비교하여 JAVA의 우월성만을 강조 하였습니다.</p> <p>비유하면 한국의 조기축구회와 프리미어리그의 축구를 비교하여, 한국의 수준은 이렇다고 말을 한 겁니다.</p> <p>잘못 작성한 JAVA코드와 훌륭하게 작성한 C코드를 비교하면 어떤 결과가 나올까요?</p> <p>JAVA코드로 하나의 클래스에 모든 기능을 정의하는 초보자는 없는 건가요?</p> <p><br></p> <p>이상의 내용은 오래전 제가 객체를 이해하는 시기에 이해한 것입니다.</p> <p>아래와 같이 세련되게 표현이 가능하다는 것은 이후 알게 되었습니다.</p> <p><br></p> <p><b>"객체지향 언어가 아니라 객체지향 설계이다."</b></p> <p><br></p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.