트렌드

코딩 입문자, 어떤 언어부터 배워야 할까

2014.06.20

프로그래밍을 처음 배우려는 사람들이 마주하는 첫 번째 ‘난관’이 있다. 공부할 프로그래밍 언어를 고르는 일이다. 외국어를 배울 때 영어, 중국어, 아랍어 등을 동시에 익히기 어려운 것처럼 일단 어떤 언어를 배울 지 생각해야 하기 때문이다. 개발자가 주로 사용하는 프로그래밍 언어는 C, C#, 오브젝티브C, 자바(Java), HTML, PHP, 리눅스, MySQL 등 대략 50여개 정도다. 그 중 어떤 언어를 먼저 시작하면 좋을까. 결론부터 말하면, 아쉽게도 정.답.은.없.었.다. 전문가들 대부분이 사람마다 취향이나 상황이 제각각이기 때문에 어느 한 언어를 추천하기 쉽지 않다는 의견을 줬다. 그래도 프로그래밍을 이제 막 배우고자 하는 입문자에게  조언이 될 만한 몇 가지 고려 사항과 제안할 점을 정리해 봤다.

4369776892_6ecb259d7a_o

Δ사진 : https://flic.kr/p/7E9fqU. CC BY.

코딩을 배우려는 이유는 뭔가요?

생활코딩’이라는 프로그래밍 교육 프로그램을 운영하는 개발자 이고잉은 “자신이 하고자 하는 일이 무엇인가에 달렸다”라고 말한다. 기본기가 쌓고 싶은 건지, 당장 유용한 결과물을 만들어 내고 싶은지, 결과물을 만들고 싶다면 어떤 종류의 결과물을 원하는지에 따라 배워야 할 언어가 다 다르기 때문이다.

또 하나 고려할 사항이 있다면, 취미로 배우는 코딩이 나중에 내가 직업을 갖는 데 도움을 줄 수 있는지 여부다. 다음은 ‘Dev/Code/Hack’이 직종에 따라 필요한 언어를 분류한 내용이다.

  • 뒷단(Back-end)/서버 쪽(Server-side) 프로그래머 : 파이썬, 루비, PHP, 자바, .Net + 데이터베이스에 대한 지식
  • 앞단(Front-end)/클라이언트 쪽(Client-side) 프로그래머 : HTML, CSS, 자바 스크립트 + 디자인 감각
  • 모바일 프로그래머 : 오브젝트C, 자바(안드로이드). 모바일 웹 사이트를 위한 HTML / CSS. + 서버 쪽 지식
  • 3D 프로그래머 / 게임 프로그래머 : C/C++, OpenGL, 애니메이션 + 예술적 감각
  • 고급 프로그래머(High-Performance Programmer) : C/C++, 자바 + 수학과 양적 연구의 배경 지식

HTML에서 스크래치까지

입문자들에게 추천되는 언어들을 찾다 보니 자주 추천되고 겹치는 언어들이 보였지만, 어느 하나 정답으로 내세우긴 어려웠다. 몇 가지 공통점은 있었다. ‘프로그래밍이즈테러블’은 처음 배우면 좋을 언어로 “반나절이면 유용한 결과를 낼 수 있어 재미를 찾을 수 있을 만큼 배우기 수월하고 설치하기 쉬우며 너무 많은 학습도구가 필요하지 않는 언어”를 꼽았다.

 HTML

3899114449_84dd8a5c4e_o

Δ사진 : https://flic.kr/p/6WxYTc. CC BY.

HTML은 웹페이지를 만드는 언어다. 이고잉은 “웹에 국한하자면, ‘HTML이 기본이고 여기에 CSS나 자바스크립트라는 살을 붙이는 것이 기본적인 교육 방향”이라고 말했다. 그는 “교육을 할 때 웹의 역사를 중요하게 다룬다”라고 말했다.

“처음 웹의 모습은 단순했지만, 세월이 지나면 점점 심각한 역할을 맡게 됐고 더 큰 규모의 업무를 처리하게 됐습니다. 이러한 역할을 수용하는 과정에서 웹은 예전에 비해 파워풀해졌지만, 배우는 입장에서는 복잡성이 기하급수적으로 증가했습니다. 배울 게 많아진 만큼 길을 잃기 쉬워진 거죠. 길을 잃지 않기 위해서 웹의 역사적인 맥락을 살펴볼 필요가 있습니다. 웹의 시작은 어떠했고 왜 시작됐는지를 살펴보면 웹의 본질을 파악하는 데 도움이 됩니다.”(이고잉)

그는 또한 “CSS나 자바스크립트와 같은 언어가 왜 등장했는지를 역사적인 맥락에서 살펴보면 학습 효과도 좋고 더욱 재미있게 공부할 수 있다”라고 밝혔다. HTML이라는 코어 위에 붙일 수 있는 살로는 CSS와 자바스크립트를 들 수 있다. 이고잉은“HTML은 정보를 담는 언어”라며 “하지만 정보만으로는 사람의 심미적인 욕구를 충족시킬 수 없는데, 이를 위해서 고안된 언어가 CSS이다”라고 설명했다. CSS는 웹을 꾸며주는 역할을 한다. 그는 여기에 자바스크립트도 함께 소개했다. 그는 “문서로 고안된 웹을 마치 응용프로그램(앱)처럼 구현하기 위해서는 HTML을 제어하기 위한 언어가 필요했는데, 이를 위해서 도입된 언어가 자바스크립트”라며 “정보의 HTML, 디자인의 CSS, 제어의 자바스크립트가 어우러져서 우리 눈에 보이는 웹을 이루게 된다”라고 설명했다.

■ 자바스크립트(JavaScript)

js

이동산 페이게이트 기술이사(CTO)는 ‘자바스크립트’를 추천했다. 이동산 CTO는 자신도 “초등학교 6학년인 자녀에게 HTML5와 자바스크립트를 가르치고 있다”라고 말했다. 그는 “클라이언트 언어이고, 초보가 하기엔 테스팅 환경이 좋으며 특별한 개발도구가 필요하지 않다”라고 자바스크립트를 추천하는 이유를 밝혔다.

■  파이썬(Python)

python._2

파이썬은 웹사이트와 모바일 앱을 위한 서버 쪽 언어다. 객체 지향적, 동적 타이핑(dynamic typing) 대화형 언어다. 메셔블은 ‘2014년 배워야 할 프로그래밍 언어’ 기사에서 “파이썬은 입문자가 읽기 쉽고 적은 코드를 가능한 간단하게 쓸 수 있다”라고 설명했다. 파이썬은 인스타그램이나 핀터레스트처럼 요즘 뜨는 웹사이트들이 쓰는 언어이기도 하다.

파수닷컴 PA 개발팀장인 정영범 박사는 “뭘 하고 싶은지가 중요하겠지만, 입문자라면 쉬운 언어부터 학습하는 게 낫다”라며 “쉬운 언어 가운데 하나가 파이썬”이라며 파이썬을 추천했다. NHN NEXT 학교의 박재성 교수도 “사람마다 다르기 때문에 확답은 어렵지만, 동적인 언어인 파이썬부터 접근하는 게 좋지 않을까 생각한다”라고 말했다.

■  C

c

C는 시스템 언어로, 전통적으로 공대학생이라면 공부하는 언어이기도 하다. C는 오래전에 생겼지만 그만큼 기본에 충실한 문법 구조를 가지고 있다. 라틴어가 영어, 스페인어의 기초가 된 것처럼 C#, 자바, 오프젝티브C 같은 언어들은 C에서 파생됐다. 하지만 입문자가 C부터 공부하기엔 부담스러울 수 있다는 의견도 들을 수 있었다. 창병모 숙명여대 교수(IT 학부)는 “C는 초보자용은 아니다”라며 “처음 프로그래밍을 접하는 이들에게 진입장벽이 될 수 있지만, 마땅한 대안은 없다”라고 말했다. 이동산 CTO는 “나도 C를 하긴 했지만, 최근 10년간 C를 써본 일이 없다”라며 “당장 쓸 일이 많이 없어 별로 권장하진 않는다”라고 말했다.

이고잉은 “프로그래밍은 결국 문제를 해결하는 방법”이라며 “해결해야 하는 문제가 컴퓨터 자체, 시스템 자체에 있으면 C를 공부해야 하지만 해결해야 하는 문제가 현실에 있으면 C보다는 파이썬이나 자바, PHP를 하는 게 낫다”라고 말했다.

■ 스크래치

scratch

‘스크래치’는 한마디로 ‘비주얼 프로그래밍 플랫폼’이다. 프로그래밍 언어를 모르는 아이들도 즐겁고 신나게 프로그램을 제작하고 서로 공유할 수 있도록 돕는다. 아이들은 마치 레고 블록을 조립하듯 스크래치를 이용해 원하는 아이템과 기능을 붙여 프로그램을 완성할 수 있다. 아이들만 쓸 수 있는 건 아니다. 프로그래밍을 이제 막 해보려는 입문자에게도 좋은 진입점이 될 수 있다. 송상수 소프트웨어교육연구소장은 “프로그래밍에서 제일 먼저 배우는 게 순차적 실행”이라며 “스크래치로 코딩에 관한 법칙들을 배울 수 있다”라고 설명했다. NHN이 운영하는초등학교 방과후 프로그램 ‘소프트웨어야 놀자’도 수업도구로 스크래치를 쓰고 있다.

scratch_1

Δ 레고 블록을 조립하듯 스크래치를 이용해 원하는 아이템과 기능을 붙여 프로그램을 완성할 수 있다. 

‘무엇을 모르는지 모르는 상태’라면?

입문자의 가장 큰 고충은 ‘무엇을 모르는지 모르는 상태’일 겁니다. […] 생활코딩 실습 시리즈인 ‘웹서비스 만들기’는 웹기반 서비스를 만드는 최소한의 절차를 배경지식 없이 무작정 따라하는 코스입니다. 이 코스를 완주하면 웹서비스가 어떤 맥락에서 시작되고, 어떤 과정을 통해서 현실화 되는지에 대한 전체적인 인상을 갖게 될 것입니다. – 생활코딩

☞ 생활코딩 소개 동영상 보기 

생활코딩은 일반인들에게 프로그래밍을 알려주는 것을 목적으로 한 비영리 프로젝트다. 동영상 강의 자료가 많고 웹사이트가 한국어로 돼 있어 접근하기 쉽다. 현재까지 생활코딩만큼 이해하기 쉽게 만들어 놓은 웹사이트는 없어 보인다. 무엇을 모르는지 모르는 상태라는 생각이 들면, 생활코딩 ‘웹서비스 만들기’ 수업을 들어보자. 프로그래밍을 처음 시작하는 이들을 위한 수업이고, 무엇을 모르는지를 알려주려는 게 목적이다. 이 수업은 웹서비스를 지탱하는 기술들과 그 기술들이 어떻게 상호작용하면서 하나의 서비스를 유지하는가를 보여준다.

결론 : 프로그래밍 공부를 시작하는 하나의 방법은 없다.

6928172860_f75316136c_o

Δ사진 : https://flic.kr/p/bydGqd. CC BY-SA.

처음으로 배울 프로그램 언어는 아마 굉장히 어려울 것입니다. 거기서 조그만 재밌는 몇 가지를 골라내어 공부한다면 아마 훨씬 쉽고 재밌을 겁니다. 계속해서 코드를 쓰고 읽고 공부한다면 어디서 공부하건 크게 상관없습니다. 한 가지 언어를 익혀서 즐거우면 다른 언어를 배우는 것도 쉬울 것이고 새로울 기술도 쉽게 늘어갈 것입니다. – ‘프로그래밍이즈테러블

hyeming@bloter.net

기술을 아는 기자, 언론을 아는 기술자가 되고 싶습니다. e메일 : hyeming@bloter.net