2015년 5월 29일 금요일

전공자에게 프로그래밍 가르쳐 주기

Preface

 C&JAVA, 정확한 명칭은 C & C++&JAVA 가되겠습니다. C++ 의 창시자인 Bjarne Stroustrup 이 가장 먼저 만든 것은 C++을 C로 번역해 주는 툴이었습니다. 이렇듯 객체지향 언어라고 불리는 C++은 C와 긴밀하게 연결되어 있습니다. OpenJDK 소스를 받아보면 C파일과 헤더가 있습니다. 많은 프로그래밍 언어들, 그리고 프레임웍이 C/C++로 만들어집니다. 스마트폰의 보급으로 프로그래머를 꿈꾸지 않는 일반인들도 아는 ‘안드로이드’의 초기 버전은 리눅스 커널과 JVM(Java Virtual Machine)의 변형인 Dalvik으로 만들어졌었습니다. 리눅스 커널은 기술 진입 장벽이 높아서 구글이 대체하지 못했지만 dalvik의 경우 어느 정도 기술 수준이 쌓이자 ART로 바꾸었습니다. 리눅스 커널은 C로 만들어집니다. 필자가 안드로이드 프레임웍의 보안 모듈을 개발할 때는  C++을 이용했었습니다. C, C++, JAVA의 개념을 차치하고 말을 한다면, 모두 코드로 이어져 있다고 할 수 있습니다. 그리고 명백한 사실입니다. C와C++의 개념상 차이는 이미 많은 책에서 중요하게 다루고 있습니다.C 책에서는 포인터, 함수, 구조체, 공용체, 연산자, 제어문등을 배웁니다. C++책에서는 C의 개념들이 그대로 담겨져있습니다. 추가로 함수와 연산자의 다중정의, 참조자, 클래스 등을 배웁니다. 1980년에 C++이 처음 나올 때는 C with classes 란 이름으로 나왔습니다. 이런 연유로 C/C++란 통합 용어로 많이 씁니다. 그러나 표준을 제정하는 입장에서, 혹은 리누스 토발즈와 같이 저명인사가보는 C와 C++은 명백히 다릅니다. C와 C++조차 연결시킬 수 없습니다. 그럼에도 C/C++/JAVA를 연결시키려는 이유는 무엇일까요?
실무 프로젝트를하다보면 C, C++, JAVA 뿐 아니라 C#, Python,Perl, Objective-C 등 많은 프로그래밍 언어를 다루어야 합니다. 그 때마다우수한 개발자들이 많은 스트레스를 받는 것을 보았습니다. 공통되는 개념을 잠깐 설명해 주었을 때 그때서야 이해를 합니다. 이렇듯 도움이 되었지만 통상 개발자들이 이론적으로 받아들이지 않으며 언어적으로다른 개념들로 이해해야 한다는 아집이 묻은 피드백으로 항상 돌아 옵니다. 이에, 기념비적인 C&JAVA 책을 집필하니 이제 막 배우려는 분들, 혹은 여러 언어를 공부하기 어려워하는 개발자들이 더 이상 헤매거나 스트레스 받지 않기를 바랍니다. 혹은, 이미 알고 계셨던 개발자 분들이 후배들에게 가르쳐 줄 때느끼는 피곤함을 조금이나마 덜었으면 하는 바램입니다. 다른 사람과의 소통을 위해 목적으로 언어를 배우듯, 데니스 리치는 UNIX 개발의 목적을 위해 C프로그래밍 언어를 창시했습니다. 무언가를 만들기를 원하는 프로그래머를꿈꾼다면  프로그래밍 언어를 만들었던창시자의 철학을 잘 이해하여 프로그래밍 언어 자체만 이야기하는 도그마에 빠지지 말았으면 합니다. 

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...