IT's Fun2015.01.06 06:30

새해초가 되면 많은 사람들이 한해동안 이루고자 하는 많은 계획들을 세웁니다. 작년부터 진행되오고 있던 공부나 과제라면 그 연장선상에서 쉽게 올해 해야 하는 것들을 정의할 수 있지만 뭔가 새로운 것을 시작하고자 한다면 다소 뭉뚱그려진 계획이 나오기 마련입니다. 이럴때는 전문가의 조언을 받거나 다른 사람들이 어떤 선택을 하고 있는지를 보는게 중요한데요, 최근 많은 관심을 받고 있는 "생활코딩" 역시 그런 아이템들 중 하나가 아닐까 싶습니다.


컴퓨터의 세계에는 정말 많은 언어들이 존재하고 각 언어별로 장단점이 각기 다를 뿐만 아니라 적용할 수 있는 분야들도 정말 많고 난이도 역시 천차만별입니다. 최근 생활코딩이라는 일상에서의 프로그램 만드는 행위가 널리 퍼지기 시작하면서 꼭 상업적이고 대단한 과제를 하기 위해서가 아닌 재미와 취미로 일상 생활에서 즐거움을 찾으려는 분들이 많이 늘고 있습니다. 하지만 주변을 보면 잘못된 첫 단추(언어의 선택!)로 인해 프로그래밍에 흥미를 잃게 되는 경우도 종종 보곤 합니다.



출처 : CarlCheo.com (http://carlcheo.com/startcoding)



소프트웨어와 개발 도구에 관한 좋은 글들이 많이 올라오는 기술 블로그 CarlCheo.com 에서 프로그래밍을 하고자 하는 목적에 따라 적절한 언어를 선택할 수 있도록 재미있는 인포그래픽을 내놓았는데요, 조금 의도된 것 같기도 하지만 여러가지 관점에서 볼 때 파이썬(Python)이 좋은 선택이 될 것 같습니다. 파이썬은 특유의 간단한 문법체계와 쉬운 구현방법으로 프로그래밍을 처음 접하는 사람들에게도 좋은 선택이라는 평을 많이 받아온 언어입니다.


수년전만 하더라도 자바와 닷넷의 진영논리(?)에 따른 싸움이 한참 있기도 했었습니다만 이후 춘추전국시대처럼 플랫폼이 다양해지고 프로그램이 구동되는 환경도 복잡해지면서 자바스크립트를 비롯하여 Objective-C 와 같은 신진세력들이 주요한 자리들을 많이 차지하고 있는 요즈음입니다. 오랜 역사를 가진 언어의 경우 생각보다 진입장벽이 높은 경우들도 많기 때문에 편하게 코딩할 수 있는 언어들이 최근에 많은 사랑을 받고 있는 것 같기도 하네요.


프로그래밍을 처음 시작한다면 어디서 뭘 공부하면 좋을까? [바로가기]



저작자 표시 비영리
신고
Posted by 노피디
Daily NoPD/rEvieW2013.08.04 12:34
HTML5 에 대한 이야기가 나온지 참 오래된 것 같습니다. HTML5 라는 이름으로 표준을 확정지으려던 초기의 방침은 현재는 일부 변경되어 지속적으로 개선, 발전되는 HTML5 로 방향을 잡고 새로운 구현들이 이어지고 있습니다. 더 이상 HTML5 가 표준이 확정되지 않았으니 기다려야 한다는 이야기는 설득력을 갖지 못하는 상황이 된 것이지요.

그렇다면 HTML5 를 어떻게 배우는 것이 좋을까요? 그동안 시중에 나온 많은 책들이 HTML5 와 기존 HTML 4.x 의 차이를 분석하고 CSS3 와의 내용이 밍글되거나 스펙(Specification)을 중심으로 요소들을 나열하다 보니 HTML5 를 처음 접하는 독자 입장에서는 새로운 것을 배우고 공부하기 부담스러웠던 것이 사실입니다.



[ 처음 시작하는 사람을 위한 친절한 구성 ]

오늘 소개해 드리는 "HTML5 웹 프로그래밍 입문" (한빛아카데미/윤인성, 2013) 은 그런 관점에서 초보자들을 위해 추천해 드리고 싶은 책입니다. 책은 HTML 의 기본적인 내용을 집으면서 HTML5 중심으로 페이지를 구성하고 만들어가는 방법을 단계별로 설명해 주고 있습니다. 저자 특유의 대화형(?) 문체는 읽는 사람이 부담 없이 저자와 이야기 하듯 HTML5 와 CSS3, 그리고 JavaScript 를 이용하여 멋진 웹 페이지 제작을 할 수 있도록 도와줍니다.

스펙을 중심으로 풀어낸 기존 HTML5 책들은 너무 많은 스펙과 스펙의 다양한 옵션 등에 독자를 질리게 했습니다. 윤인성 저자는 이 책에서 그런 부분을 과감하게 생략(?)하면서 필요할 때 스펙을 찾아서 확인하는 방식으로 학습을 진행할 것을 권장하고 있습니다. 글 서두에 이야기 한 것처럼 HTML5 가 제공하는 다양한 기능들은 지금 이 순간에도 지속적으로 바뀌고 추가되고 있습니다. 즉, 지금 시점에 스펙을 암기하고 외우는 것은 의미도 없을 뿐더러 외운 것이 자칫 바뀔 수도 있기 때문에 불필요한 일이 될 수도 있습니다.

[ 친절한 저자의 강조, "중요한 것은 꼭 외워둡시다" ]

그럼에도 불구하고 저자는 책의 주요한 부분에선 꼭 암기할 것을 강요(?)하고 있습니다. 스펙에 대한 것이나 다양한 옵션은 굳이 외울 필요가 없으니 과감히 생략하면서도 특정한 단락에서 암기할 것을 강요하는 이유는 무엇일까요? 사람의 기억력은 한계가 있고 세상의 모든 것을 다 기억할 수는 없습니다. 그래서 꼭 기억 해야만 하는 것을 골라낼 필요가 있습니다.

방대한 HTML5 와 CSS3 의 다양한 이야기들 중에서 꼭 기억해야 하는 것들은 사실 경험이 많이 쌓이면 자연스럽게 익힐 수 있는 부분입니다. 그렇지만 처음 입문하는 사람들이나 제대로 기초를 잡지 못한채로 업무에 치이는 사람들에게는 경험치가 존재하기 힘듭니다. 친절하게도 저자는 꼭 기억해야 하는 부분들을 두 번, 세 번 강조해서 이야기 해주고 있습니다. 책의 241 페이지 하단에 나온 내용이 대표적인 예입니다.

(241p 상단 인용)

One True 레이아웃의 핵심은 각각의 행을 독립적으로 구성한다는 것입니다. 이를 구현하기 위해 다음과 같은 규칙을 적용하여 스타일 시트를 작성합니다.

1. 자손에 float 속성을 적용한다.
2. 부모의 overflow 속성에 hidden을 적용한다

width 속성과 height 속성을 지정하지 않고 overflow 속성에 hidden을 적용하면 부유하는 영역을 감쌉니다. 만약 [코드 7-]에서 overflow 속성을 지정하지 않으면 [그림 7-6]처럼 float 속성을 적용한 자손이 있는 행을 다른 행이 침범합니다. 두 가지 공식을 기억하고 있으면 어떠한 레이아웃이든 개발할 수 있습니다. 정말 중요한 내용이므로 기억하기 바랍니다.


[ 이 책 한권만 있으면 되는걸까? ]

" HTML5 웹 프로그래밍 입문 " 책은 초보자들이 쉽게 HTML5, CSS3, JavaScript 를 이해하고 감을 잡을 수 있도록 해주는 좋은 입문서입니다. 그러나 말 그대로 입문서이기 때문에 이 책 한권으로 모든 것을 소화할 수는 없습니다. 이 책을 통해 감을 잡고 기초 공사를 어느정도 했다는 생각이 들면 조금 더 깊은 내용을 다루는 책들을 통해 많은 것을 학습하는 단계적 접근이 필요합니다.

HTML5 나 CSS3, JavaScript 는 각각 한권 이상의 책으로 설명될 정도로 방대한 내용을 가지고 있습니다. 책 한권으로 모든 것을 마스터 할 수 있다면 좋겠지만 그건 너무 큰 욕심입니다 :-) 검색도 충분히 활용하되 늘 곁에 끼고 볼 수 있는 책들을 각 영역별로 준비해 놓고 늘 보면서 코드 한줄을 입력하고 이해하는 것이 중요합니다. 이 책을 통해 아무쪼록 웹 프로그래밍의 재미를 느끼고 새로운 바다에 푹~ 빠질 수 있길 바래봅니다. 

[ 윤인성 저자의 웹 프로그래밍 관련 서적 추천 ]
  



- NoPD -
저작자 표시
신고
Posted by 노피디
IT's Fun2012.10.11 06:37
새로운 컴퓨터 언어를 공부하실 때 어떤 방법을 사용하시나요? 공부하는 스타일에 따라 다르겠지만 책을 사서 보시는 분도 계실거고 해당 언어를 제공하는 공식 웹 사이트나 커뮤니티가 제공하는 학습 가이드를 따라하시는 분도 있을 겁니다. 물론 컴퓨터 언어에 초천재적인 감각을 가지고 계셔서 제공되는 개발 도움말만 가지고도 훌륭하게 언어를 습득하는 분도 더러 있습니다.

무언가 모르는 것을 배울 때 가장 좋은 것은 지속적인 학습입니다. 그렇지만 학생이 아닌이상 (학생도!?) 먹고 살기 바빠서 매일 한~두시간씩 시간을 내어 공부를 한다는 것은 무척 힘듭니다. 요행히 새롭게 참여한 프로젝트가 새로운 언어를 이용한다고 하면 아주 나이스한 경우이겠지만 그게 아니라면 사실 수박 겉핥기 식으로 구글신의 힘을 빌리는 것이 대부분일 겁니다.

Codeacademy, 웹 기반 콘솔로 배우는 인터렉티브한 강의

Codeacademy (http://www.codeacademy.com) 는 이런 현실적인 불편함과 어려움을 해소시켜줄 수 있는 양방향 인터렉티브 강의 플랫폼입니다. HTML5 기반으로 만들어진 콘솔 도구와 실행 도구, 간단한 웹 기반 Repository 까지 제공하고 있어 말 그대로 웹 브라우저만 있으면 강의를 만들수도 있고 만들어져 제공되는 강의를 단계별로 학습할 수도 있는 플랫폼입니다.


 
Codeacademy 는 친구들과 함께 경쟁하며 공부할 수 있는 환경을 제공합니다. 학습에 있어서 그 무엇보다 좋은 효과를 볼 수 있는 방법은 경쟁이지요. 같은 코스를 들으면서 누가 더 많은 진도를 나갔느냐 하는 경쟁은 마치 최근에 열풍을 일으키고 있는 애니팡과 같은 효과(과연...;;;)를 낼 수 있을거라는 생각을 해봅니다.

아직까지 Codeacademy 가 제공하고 있는 언어와 과정은 그리 많지는 않습니다. 하지만 플랫폼 자체가 오픈되어 있고 무료로 강의를 올리고 올라온 강의를 수강할 수 있는 구조이기 때문에 앞으로 얼마나 많은 전문가들이 합류하여 재능 기부를 하느냐에 따라 그 규모는 상상할 수 없을 정도로 커질 수 도 있을 것 같습니다. 현재는 Javascript 와 Python, Ruby, Web Fundamentals, jQuery 등이 제공되고 있는 상태입니다.

 
이런 플랫폼이 줄 수 있는 강점은 최근 클라우드 개발 환경이 이슈가 되면서 Cloud9 (http://www.cloud9.com) 과 같은 웹 IDE 가 급속하게 보급되고 있는 것과 같은 선상에 있다는 점입니다. 처음 Cloud9 IDE 를 접하면 뭔가 어렵고 어색하다는 느낌을 받지만 조금만 익숙해지면 언제 어디서든 웹에 접속만 할 수 있으면 내 소스코드, 내 런타임 환경을 쓸 수 있다는 메리트에 푹 빠질 수 밖에 없습니다. Codeacademy 의 모든 인터렉티브 환경은 웹 기반으로 이루어져 있어 그 편리함이 무척 뛰어납니다.

 
책으로 API 스펙을 보고 샘플 코드를 눈으로 본 다음 개발 환경으로 이동해서 입력해 보는 것이 아니라 Codeacademy 는 다양한 Exercises 를 중심으로 강의를 구성하여 제공하는 형태를 취합니다. 개별 Exercise 들은 단순한 예제를 직접 입력하고 Step by step 으로 점진적으로 구체화해 나가는 방법을 가이드하고 있습니다. 강의가 얼마나 알차게 구성되었냐의 이슈이겠지만 그런 형태의 강의 구성이 가능하도록 Teach 기능요소가 준비되어 있다는 것으로 이해해도 될 것 같습니다.

 
자신의 학습 진도표를 확인할 수 있는 Summary 페이지는 학습 의욕을 불러 일으킬 것 같습니다. 재미있는 것은 Badge 시스템이 있다는 점입니다. 포스퀘어 류의 체크인 앱을 쓰시는 분들은 Badge 의 개념이 생소하지 않을 겁니다. 마치 보이스카우트, 걸스카우트 활동을 하면서 어떤 액티비티에 참여하면 그에 대한 증표로 주던 Badge 처럼, 학습의 특정 조건을 만족시키는 Badge 를 획득해 나갈 수 있는 스스로에 대한 리워드 시스템을 갖추고 있다고 보면 적절할 것 같습니다

 

실제 Exercise 에 들어가면 위와 같은 인터렉티브한 환경을 경험할 수 있습니다. 왼쪽에 나온 설명을 읽고 필요한 기능 요소와 요구 조건을 만족시키는 코드를 간단하게 우측 영영긔 웹 IDE 에서 입력하고 실행하면 되는 구조입니다. 저장 기능이 제공되고 있어 언제든 필요한 버전의 코드를 다시 불러와서 Exercise 완수에 활용할 수 있다는 점도 눈에 띄는 기능입니다.

언제 어디서든 공부하자

언어를 습득하는 가장 좋은 방법은 앞서 이야기 한 것처럼 반복입니다. 특히 컴퓨터 언어의 경우는 눈으로만 보는 것은 한계가 있습니다. 반드시 손으로 코드를 입력하고 실행을 해보는 노력이 필요합니다. 뭔가 배우기 위해 개발환경을 만드는데 시간을 쏟고 지쳐버리기 보다 쉽게 웹사이트에 접근해서 코드 한줄 더 입력해 보는 것이 더 좋을 것이라는 것은 너무나 자명한 사실입니다. 지치기 전에 코드 한줄 더 입력하세요. Codeacademy 에서 말이죠~


- NoPD - 
저작자 표시
신고
Posted by 노피디

티스토리 툴바