본문 바로가기

토론(지식 엿보기)/프로그래밍

프로그래밍 언어 선택

저는 절차적 언어의 프로그래머이었던 사람이지만, 지금은 프로그래밍을 하지 않습니다만 제가 프로그래밍 언어를 공부하면서 느낀 점 특히 프로그래밍 언어로 어떤 것을 쓰면서 배워야할지 저의 의견이 있어 밝혀드리려 합니다.


저는 로보트를 만들기 위해 그것을 만드는 도구로 사용하기 위해 컴퓨터를 사용했기에 하드웨어와 소프트웨어의 관계를 잘 이해한다고 생각합니다. 그래서인지 기계어, 어셈블리어, 베이직, 포트란, 파스칼 그리고 C 언어를 쓸 수 있었지만 사정이 있어 사용한지 오래되어 거의 기억하지 못 하지만 조금만 보면 쉽게 재기억되리라 믿습니다.


그런데 어떻게 해서 6개의 언어를 약 2년 사이에 습득할 수 있었을까요? 그것은 프로그래밍이 무엇인지 즉 어떻게 해야 짤 수 있는지 그 원리를 알게 되니 언어의 문법 배우는 것은 큰 문제가 되지 않았기 때문입니다. 물론 언어마다 고유 특징이 있어서 표현할 수 있는 범위에 한계가 언어마다 있습니다. 저는 처음에 포트란부터 배웠는데, 그것이 무엇을 말하는 것인지 아무 것도 몰랐었습니다. 그래서 무엇이 문제인지 생각해 보았으나 초보이다보니 무엇이 문제인지 파악을 못 했습니다. 그래서 더 쉬운 언어를 찾다보니 베이직이라는 언어가 있어 그것을 공부하기로 결정하고 책을 구입해서 공부하고 문법적인 공부가 끝나갈 무렵(베이직 문법 공부는 약 1.5달 정도 걸린거 같음.) 공부한 베이직으로 멤버 관리 프로그램을 짠다는 계획을 세우고 그 프로그램을 짜기 시작했습니다. 이제 프로그램을 짜는 놈이 단계를 너무 높여 짜게 되었다는 것을 그 프로그램을 짜고 난 뒤 알았지만 오히려 더 많은 경험과 알고리즘 공부 그리고 더 깊은 생각을 하게 되어 저에게 프로그래머로서 큰 도움을 준 계획이었습니다. 이제 처음 프로그램을 짜는 놈이 자료를 입력하고 그것을 파일에 저장하고 이름/나이/주소 순으로 각각 정렬하고 그것을 파일로 저장하는 제법 형태를 가진 프로그램이었습니다. 저는 지방에서 생활했기에 프로그래밍을 하는 아는 선배도 없었고 컴퓨터 통신도 없었던 때라 물어볼 곳 같은 도움받을 데가 없었기에 오로지 책방에 있던 베이직 책 외엔 도움받은 것이 없었다 기억합니다. 그래도 베이직 프로그램으로 프로그래밍을 할 수 있었던 이유는 무엇이었을까요? 아무리 도움받을 곳이 없다하더라도 먼저 쉬운 언어를 사용했다는 것 그리고 쉬운 언어였기 때문에 참고할 서적이 그래도 다른 언어보다 많은 편이었기에 그 자료들을 참고하여 프로그램을 완성할 수 있었다는 점입니다.


그렇게 프로그램을 하나 완성하고 보니 프로그래밍 언어 문법을 배우는 것은 문제가 되지 않는다는 생각이 들어 문법 책 보면서 어떤 명령들이 있는지 그리고 어떻게 사용하는지 익혀만 두고 실제로 프로그램 짤 때 공부했던 문법 책을 보며 확실한 사용법을 익히고 하니 포트란과 파스칼은 쉽게 배웠던 것으로 생각합니다. 그런데 기계어와 어셈블리어는 하드웨어와 아주 밀접한 언어이기에 하드웨어를 알아야 짤 수 있는 언어여서 고전한 언어였습니다. 그래도 로보트를 만들기 위해선 꼭 알아야 하는 언어들이었기에 이를 악물고 공부했었습니다. 아마도 8-10개월 정도 공부하니 그제사야 무엇인지 이해한 언어였습니다. 그리고 나서 C를 공부했는데 이 언어는 고급언어와 저급언어의 특징을 모두 갖고 있는 언어였기에(그렇기에 많은 부분을 다룰 수 있는 언어여서 좋은 프로그래밍 언어라는 소문이 많이 있었던 것으로 보임.) 이것도 배우기가 보통 힘든 것이 아니었습니다. 특히 포인터/구조체 를 보면서 어찌나 어렵게 설명되어 있던지 보는 자료마다 서로 다른 관점에서 설명하다보니 어려워서 그것을 보는 학습자는 무슨 얘기인지 도통 알 수 없는 경우가 많았습니다. 그래도 배울 수 있었던 이유는 기계어와 어셈블리를 공부했기에 그 어려움도 이겨내며 공부했던 것으로 보입니다.


결론은 무엇입니까? 나중에 집중적으로 사용할 프로그래밍 언어를 처음부터 배운다면 그만큼 좋은 것은 없을 것으로 생각되기야 하지만, 프로그래밍 언어로 C언어가 좋다는 자료 또는 소문만 믿고 그것을 공부하기 위해 바로 뚜어드는 것은 프로그래밍을 포기하게 만드는 지름길일 수 있다는 것입니다. 쉬운 언어로 프로그래밍을 배우면 여러가지로 도움받기가 쉬워 그 어렵다고 얘기되는 프로그래밍의 맛을 다른 언어보다 쉽게 느낄 수 있어 프로그래밍을 쉽게 배울 수 있고 따라서 다른 언어를 배울 수 있는 밑거름이 되어 보다 쉽게 배울 수 있다는 것입니다. 저에겐 그 언어가 베이직이었기에 다른 분들에게 처음하는 언어로 추천드리는 것이 베이직입니다.


베이직으로 프로그래밍의 눈을 떴다는 느낌이 들면 그때부터 다른 언어를 도전해보고 컴퓨터에 대한 이러저러한 상식이 많아졌을 때 C 언어에 도전해 보살 것을 권해드립니다. 그렇게 하신다면 프로그래밍을 포기하실 확률이 확실히 적어지리라 생각됩니다.


아! 저는 OOP(Object Oriented Programming. 객체지향적 프로그래밍.)는 모르기 때문에 C++/Java/Object C 둥과 같은 언어를 시작하는 방법과는 분명 다를 것입니다. 이곳의 제안은 절차적 언어에 대한 것입니다.