최근에 C를 배우며 느낀 점들
어떻게 어떻게 하다보니 아이폰개발쪽으로 공부하게 되었다. 학원 커리큘럼상 C를 한달 수강하고 Objective-C를 수강하게 되어있어서 지금은 C 수업을 열심히 듣는 중. 이제 2주 정도 C를 배웠는데 아직은 어렵지 않다. 처음이라 그런지 프로그래밍의 기초부분만 설명하고 있는데 문법만 약간 다를뿐 기초개념상으로는 액션스크립트와 맥락을 같이하는 부분이 대부분이다.
여튼 느끼는건… C는 참 재미없다. 플래시는 태생적으로 그래픽적인 면을 강조했었기에 뭔가를 조금만 작업해도 화면이 확 변하고 예쁘고 아름답게 뭔가가 눈에 들어온다는 점이 좋았다. 그런데 C는 아무리 열심히 짜도 화면에 텍스트로만 출력되니 너무 답답하다. 뭔가 코드를 짜도 화면상에 변화가 적으니… 역시 옛날 언어라는 생각이 든다. 나온지 수십년이 지났으니 너무 당연하겠지만 편한 환경에서 코드를 짜던 내 입장에서는 이건 뭐 원시 시대로 돌아간 느낌. 컴파일러 수준에서 당연히 해줘야할 부분들… 예를 들면, 변수 선언시 자동초기화 같은 것들이 안되어 있으니 일일히 수동으로 다 해줘야된다. PHP, 자바스크립트도 좀 해봤는데 이러한 언어들도 지원하는 기능을 C가 지원하지 않는다니… 좀 놀라웠다.
게다가 학원에서는 Visual C 6.0으로 하는데 정말 컴퓨터 부셔버리고 싶을만큼 답답하다. 플래시 IDE의 에디터에서도 코드힌트 같은 어느정도의 편리성은 제공하는데 이건 뭐 에디터상으로 지원되는 기능이 너무 없다. Flash Builder(= 이클립스IDE)에서 지원되는 코드힌트, 자동완성, Code Snippet 같은게 있다면 얼마나 좋을까 싶다. 특정 메서드를 쓰면 관련 클래스파일을 자동임포트 해주는 것처럼 헤더파일을 자동입력해주면 좋겠는데 이런 기능도 없다. 최근에 나오는 Visual C는 어느정도 편의기능을 제공하는지 모르겠지만 여튼 Visual C 6.0은 정말 답답하다.
메모리의 접근이라는 새로운 화두가 던져지니 신기하기도 하고 불편하기도하고 그렇다. 이 역시 플래시에서는 컴파일러 차원에서 해결해주던 것을 심각하게 고민하며 코드를 짜야된다. 지금이야 커맨드라인에서 돌아가는 프로그램을 짜니 메모리에 대해 그럭저럭 잘 이해하는데 GUI 환경에서는 메모리에 대해 어떻게 관리하고 접근하는지 너무 궁금하다. 포인터라는 개념이 정말 어렵고 이에 대해 공부하다 포기하는 사람도 많다고해서 얼마나 어려운지 궁금했는데 들어보니 초기개념상으로는 생각보다 어렵지 않다. 일반 변수/함수는 ‘직접 참조’이고 포인터는 ‘간접 참조’라는 개념인데 이 대상이 ‘메모리 영역’이라는 점일뿐. 직간접 참조에 대한 이해와 사용은 그동안 코드에서도 써오던 개념들인데 그 대상이 눈에 안보이는 메모리 영역이라는 것이어서 좀더 생각을 해야하는 것 같다.
아직은 쉬운 코드만 보고 있어서 그런지 포인터의 효율성에 대해 이해가 잘 안된다. 좀더 복잡한 프로그램을 보며 그때 이해해야할 것 같다. 여튼 얼마간 C를 배워보니 다른 언어의 세계도 재미있고 생각만큼 그리 어렵게 생각할 필요도 없다는걸 알았다. 앞으로 더 재미있는 코드를 많이 연습해봐야될 것 같다.