출처 : http://www.bloter.net/archives/176582

프로그래머가 되려면 무엇부터 해야 할까. 학원에 가면 되려나? 그럴 필요까지는 없다. 컴퓨터 1대만 있으면 프로그램을 짜는 언어를 배울 수 있기 때문이다.

프로그래밍 언어를 배우는 과정은 외국어 공부와 비슷하다. 일본어, 중국어, 영어 등 다양한 외국어가 있듯이 프로그래밍 언어도 여러 종류가 있다. 외국어를 가르치는 e러닝 사이트가 있는 것처럼, 프로그래밍도 온라인으로 배울 수 있다.

준비하기

먼저 공부할 프로그래밍 언어를 고르자. 외국어를 배울 때 영어, 중국어, 아랍어 등을 동시에 익히기 어려운 것처럼 일단 어떤 언어를 배울지 생각해야 한다. 개발자가 주로 사용하는 프로그래밍 언어는 C, C#, 오브젝트C, 자바(Java), HTML, PHP, 리눅스, MySQL 등 대략 50여개 정도다. 그 중 어떤 언어를 먼저 시작해야 할까?

C는 공대학생이 필수로 공부하는 언어다. C는 오래전에 생겼지만 그만큼 기본에 충실한 문법구조를 가지고 있다. 라틴어가 영어, 스페인어의 기초가 된 것처럼 C#, 자바, 오프젝트 C 같은 언어들은 C에서 파생됐다. 대부분의 언어는 비슷한 구조를 갖기 때문에 어느 언어든 하나를 제대로 공부해 놓으면 다른 언어를 활용하는데 무리가 없다.

배우기 쉬운 언어는 웹프로그래밍 언어이다. 웹프로그래밍 언어는 웹사이트 제작할 때 필요한 언어로, 많이 사용되는 것은 HTML, CSS, 자바스크립트가 있다.

mooc_logo

초급편 : 문법 배우기

프로그래밍을 배우기 위해서는 컴퓨터가 이해하는 문법을 먼저 배워야 한다. 영어를 배울 때 문장 구조가 주어, 동사, 목적어 순서대로 써야 한다는 규칙을 알아야 하는 것처럼 말이다. 어떤 언어든 문법을 공부하는 건 지루하고 어렵다. 다행히도 그런 걱정을 덜어주는 좋은 웹사이트들이 널렸다.

■ 웹사이트 제작 A부터 Z까지 ‘생활코딩

생활코딩은 웹사이트를 만들때 필요한 프로그래밍 정보를 제공해주는 웹사이트다. 용어를 자세하게 설명해주고 동영상 강의 자료도 풍부하다. 장점은 일단 웹사이트가 한국어로 구성됐다는 점이다. 뒤에 소개될 서비스는 대부분 영문 기반 웹사이트다. 생활코딩은 페이스북 그룹도 운영하고 있어 가입한 사용자끼리 피드백을 주고받으며 학습을 할 수 있다. 생활코딩 설립자 이고잉 님이 비정기적으로 오프라인으로 수업을 해 주기도 한다.

생활코딩 교육과정은 3부문으로 나뉜다. 생활코딩, 효도코딩, 생활표현 정보를 제공한다. 웹사이트 구축을 배우려면 ‘생활코딩’ 부분을 먼저 보면 된다. 처음 시작하는 사람은 첫 번째 챕터인 ‘웹서비스만들기’ 링크를 누르고 왼쪽 메뉴 순서대로 읽으면 된다. 간단한 오리엔테이션을 읽고 웹서비스를 만들기 위한 프로그램을 설치한다. 실습은 웹브라우저 내에서 하지 않고 자신의 컴퓨터에 설치된 프로그램을 통해 한다.

두 번째와 세 번째 챕터인 HTML과 CSS를 배우고 나면 자바스크립트부터는 조금 어려울 수 있다. 이해가 잘 되지 않는다면 일단 강좌가 안내하는대로 따라해 보고 결과화면이 제대로 나오는지만 확인해도 좋다. 초급자에게는 포기하지 않고 꾸준히 따라하는 것이 가장 좋기 때문이다. 현재까지 생활코딩만큼 이해하기 쉽게 만들어 놓은 웹사이트는 없는 것 같다. 생활코딩에서 제공하는 내용만 정확히 알게 되면 이후 다른 프로그래밍에 쉽게 도전할 수 있을 것이다.

생활코딩의 장점은 PHP, MySQL, 리눅스 언어에 대한 교육도 함께 진행되는 점이다. 웹사이트 제작 방법을 알려주는 서비스들은 보통 HTML, CSS, 자바스트립트, 제이쿼리(jQuery)까지만 알려주는 게 대부분이다. 완성한 웹사이트를 어떻게 서버에 올리고, 다른 사람이 접근 할 수 있는 방법과 다양한 데이터를 통합하는 과정은 복잡하고 배워야 할 범위도 굉장히 넓기 때문이다. 웹프로그래밍 외에 데이터베이스나 운영체제에 대해 공부하고 싶은 사람도 이 서비스를 활용할 수 있다. 생활코딩은 iOS용 앱도 제공하고 있어 실습 이외에 내용 설명이나 동영상 시청은 모바일로 할 수 있다.

■ 따라하면서 배우는 웹프로그래밍 ‘코드카데미

코드카데미는 무료로 웹프로그래밍 언어를 배울 수 있는 서비스다. 이 웹사이트의 회원수는 1월 2400만명을 돌파했다. 코드카데미는 긴 설명 대신 쉬운 예제를 직접 따라하면서 프로그래밍을 익힐 수 있도록 도와준다. 문법을 배우기 전에 간단한 예문을 익히는 셈이다. 프로그래밍은 띄어쓰기 한 칸, 콤마 하나를 잘못 찍어 오류가 나기도 한다. 프로그래밍 수업시간에는 한 글자 한 글자 자신이 직접 타이핑하면서 자신이 입력하는 것이 어떤 화면을 나오게 하는지 파악하는 게 중요하다. 그런 의미에서 코드카데미는 핵심적인 기능을 직접 타이핑할 수 있어 좋다.

코드카데미 웹사이트에 들어가서 회원가입을 하고 오른쪽에 있는 ‘Learn’을 클릭하면 배울 수 있는 언어 종류가 나온다. 코드카데미에서 배울 수 있는 언어는 HTML, CSS, 자바스크립트, 제이쿼리, PHP, 파이썬, 루비가 있다. 가장 위에 있는 3개의 탭은 예제이다. 이 예제를 실행하기 위해서는 HTML, CSS, 자바스크립트를 알아야 하므로 웹프로그래밍에 대해 전혀 모르는 사람이라면 중간에 6칸으로 나와 있는 언어배우기로 시작하는 것이 좋다. 왼쪽 처음부터 순서대로 따라하면 된다. 왼쪽 창에 영어로 설명된 코드를 검은색 창에 그대로 따라 치고 ‘Save&Submit Code’를 누른다. 그러면 결과화면이 오른쪽 흰색 창에 나오고 ‘Next Lesson’ 버튼을 눌러 다음 단계로 넘어간다. 코드를 잘못 입력했을 때는 틀린 부분을 알려주므로 그에 맞게 수정하면 된다. 마치 게임하듯 여러 단계를 통과하면 마지막 단계에 가면 코스를 수료했다고 나온다. 코드카데미에 그룹 메뉴에 들어가면 해당 언어를 배우고 있는 다양한 사용자들과 함께 질문하고 토론할 수 있다.

codecademy_01

▲코드카데미 웹사이트

codecademy_02

▲코드카데미  실습 화면

■ 어린이용 코딩에서 아이폰 앱 개발 연습까지 ‘코드닷오아르지

코드닷오아르지(Code.org)는 2012년에 설립된 비영리단체로, 프로그래밍을 연습할 수 있도록 도와준다. 이 단체는 초등학생부터 프로그래밍을 배워야하다는 캠페인을 벌이며 공립학교에 프로그래밍 교과과목을 넣기 위해 대대적인 노력을 하고 있다. 또 여성 컴퓨터 공학도 육성에도 힘쓰면서 다양한 사람이 프로그래밍에 관심을 가질 수 있도록 도와준다. 12월에는 코드닷오아르지 홍보영상에 오바마 미국대통령이 격려 메세지를 보태 화제가 되기도 했다.

이 웹사이트는 프로그래밍 언어 이론을 공부하기보다는 몇 가지 예제를 주고 그대로 따라하는 도구를 제공하고 있다. 무엇보다 어린아이들이 게임을 하면서 프로그래밍 원리를 익힐 수 있도록 도와준다. 클릭과 드래그로 일단 원하는 결과물을 만들게 하고 그 결과물 안에 어떤 소스가 들어있는지 설명해주는 식이다. 성인들을 위한 아이폰 앱, 3D게임, 가상로봇 만들기도 체험할 수 있다. 프로그램을 따로 깔지 않아도 웹브라우저 안에서 바로 프로그래밍을 연습할 수 있어 편리하다 .

중급편 : 예문 익히기

기본적인 문법을 배웠으면 요즘 자주 사용되는 코드가 어떤 건지, 내가 쓴 코드가 무엇이 잘못되었는지 비교해봐야 한다. 영어 단어를 외울 때 자주 쓰는 표현을 같이 외우면 작문이나 회화할 때 도움이 된다. 프로그래밍 언어도 마찬가지다.

개발자는 보통 코드 몇 줄을 검색하고 그와 비슷한 코드와 비교하며 잘못된 점을 찾는다. 몇몇 웹사이트는 아예 자주 쓰는 코드를 모았다.

■ 검색한 코드를 웹에서 테스트한다, ‘런어블’ 

유튜브 동영상을 실시간으로 웹페이지에 업로드하고 싶다. 숙련된 개발자라면 코드를 스스로 짤 수 있을 것이다. 하지만 코드를 검색해서 쓰는 방법도 있다. ‘동영상 자동 받아오기 코드 php’ 라고 구글에서 검색하면 코드를 찾을 수 있다. 문제는 검색한 코드가 오류가 있거나 원하는 코드가 아닐때이다. 이럴 때는 원하는 코드가 나올 때까지 계속 검색하고 프로그래밍툴에 맞추어 수정하는 작업을 반복해야 한다. 다행히도 최근 이런 반복 과정을 없애주는 웹사이트가 나왔다. 이름 그대로 검색한 소스를 바로 ‘실행할 수 있는(Runnable)’ ‘런어블’이다.

런어블은 코드를 검색하고 테스트할 수 있는 웹사이트다. 소스를 검색하고, 검색한 소스를 바로 웹에서 실행할 수 있다. 런어블에서 ‘동영상 자동 받아오기 코드 php’라고 검색하면 완성된 소스가 검색되고, 웹브라우저에서 바로 실행하고 결과화면까지 볼 수 있다. 제공된 소스를 런어블 플랫폼 위에서 수정하면서 테스트할 수도 있다.

runable02

▲런어블 웹사이트

runable03

▲런어블 실습 화면

아마존 개발자였던 야시 쿠머가 개발한 이 웹사이트는 2013년 10월 공개됐다. 현재까지 이 웹사이트에 접속하는 개발자는 15만명이 넘는 것으로 알려져 있다. 명실상부 세계 최대 소스 저장창고로 자리매김한 것이다. 런어블은 특정 기능을 수행하기 위한 함수집합(API), 소프트웨어 개발도구(SDK), 프레임워크에 관련된 코드를 모아 저장하고 이를 사용자들이 검색할 수 있게 도와준다. 사용자는 검색뿐만 아니라 자신의 제작한 코드를 직접 올릴 수 있다. 처음에 1천여개 코드로 시작한 런어블은 올해 말께는 1천만개가 넘는 소스가 저장될 것으로 예상된다. C언어, C++, JAVA도 있다.

■ 코드계의 지식iN ‘스택오버플로우

구글에서 코드를 검색했을 때 가장 자주 뜨는 웹사이트가 하나 있다. 스택오버플로우다. 스택오버플로우는 2008년 만들어진 웹사이트로, 컴퓨터 프로그래밍 관련 다양한 주제에 대한 질문과 답변을 주고받을 수 있다. 네이버 지식iN 서비스와 비슷하지만, 주제가 컴퓨터 프로그래밍에 한정된 게 차이점이다. 전세계 개발자들이 애용하는 이 웹사이트의 회원은 190만명이 넘고, 550만건이 넘는 질문이 등록돼 있다. 스택오버플로우에 올라온 코드는 저작자표시-동일조건변경허락(BY-SA) CCL 조건을 지키면 누구나 가져다 고쳐 쓸 수 있다.

stackoverflow

▲스택오버플로우 웹사이트

고급편 : 실전 연습

중급과정을 넘어섰다면 이제 실전 회화 단계로 들어서야 한다. 인터넷에 많은 자료가 축적돼 있지만 그렇다고 인터넷에서 모든 프로그래밍에 대한 답을 찾을 순 없다. 그럴 땐 자신이 배운 문법과 경험을 활용해 이것저것 새로운 코드를 만들어봐야 할 것이다. 자신이 어떤 실력을 가지고 있는지 테스트할 수도 있고, 이제껏 사용하지 않았던 프로그래밍 언어를 배울 수도 있다.

■ 프로그래밍 실력을 측정해 보자, ‘해커미터

해커미터는 프로그래밍 실력을 테스트할 수 있는 웹사이트이다. 개발자 버전과 고용주 버전으로 가입해 사용할 수 있다. 개발자 버전으로 가입했다면 원하는 언어를 클릭하고 문제를 풀 수 있다. 특정 조건을 지키면서 제시된 결과가 나오도록 프로그래밍하면 된다. 수학문제 푸는 것과 비슷하다. 별도의 프로그램을 설치하지 않고 웹브라우저 위에서 바로 테스트할 수 있다. 테스트할 수 있는 언어로는 C, C++. 자바, 루비, 파이썬이 있다. 고용주로 가입하면 원하는 수준의 개발자들을 추천해주는 e메일을 받을 수 있다.

hackmeter_01

▲해커미터 문제 화면

hackmeter_02

▲해커미터 답안 제출 화면

■ 프로그래밍 전문 온라인 강의, 유다시티 & 코세라

프로그래밍 언어 문법, 사용법을 익히고 나서 더 배우고 싶은 이에게 유다시티와 코세라를 추천한다.

유다시티는 온라인 공개수업(MOOC)운동의 하나로, 유명 대학 강의를 대중에게 무료로 제공하는 서비스다. 2011년 컴퓨터과학 과목 중심으로 온라인 강의를 제공하면서 화제를 모았다. 유다시티가 초창기 개설한 ‘컴퓨터의 원리’는 30만명이 등록했고, 이 숫자는 현재까지 MOOC 중 최고 기록이다. 2012년에는 구글, 엔비디아, 마이크로소프트와 협력해 수업을 구성하기도 했다. 현재는 컴퓨터과학 분야 외에도 디자인, 생물학, 수학, 심리학 등 다양한 분야를 수강할 수 있다. 현재 제공되는 수업은 대부분이 유료다. 대학수업 현장을 찍어 보내는 것이 아닌, 인터넷 강의용으로 따로 제작하고 있다.

코세라도 세계 유명대학 강의를 무료로 제공해주는 교육 서비스다. 코세라는 컴퓨터, 통계학, 의료보건, 경제학, 인문학 등 다양한 분야의 온라인 강의를 제공하는데, 컴퓨터 관련 수업을 가장 많이 제공한다. 전체 560개 강의 중 100여개가 컴퓨터과학 관련 수업이다.

Posted by 앗뜨거워 ( @bok3937 ) 앗뜨거