본 수업은 웹 애플리케이션 만들기 수업으로 대체 되었고, 2015년 6월 이후에 폐지됩니다. 개편된 수업에서 뵙겠습니다.http://opentutorials.org/course/1688
클라이언트 측 기술이란?
클라이언트 측 기술(client side technologies)를 이해하기 위해서는 먼저 클라이언트(client)와 서버(server)의 관계를 이해해야 한다. 식당을 생각해보자. '서빙' 한다는 말은 음식을 클라이언트(손님)에게 제공한다는 뜻이다. 즉. 제공하는 쪽이 서버고 제공 받는 쪽이 클라이언트가 되는 것이다.
웹에서의 서버 - 클라이언트 관계
웹에서 클라이언트란 정보를 요청하는 쪽을 의미하는데 http://opentutorials.org를 주소 입력창에 입력하고 엔터를 치면 브라우저는 그 주소에 해당하는 컴퓨터를 찾아간다. 여기서 브라우저는 클라이언트 측의 소프트웨어가 되고, 브라우저가 설치된 컴퓨터는 클라이언트 측의 머신(Machine)이 되는 것이다. 그 URL에 해당하는 컴퓨터는 클라이언트가 요청한 정보를 제공하게 되는데, 정보를 제공하는 측의 컴퓨터를 서버 머신이라고 하고, 이 서버 머신 위에서 동작하는 소프트웨어를 서버 측 소프트웨어라고 부른다. 서버 구축 시간에 설치한 apache, mysql, php가 여기에 해당한다.
HTML, CSS, JavaScript
우리가 배울 것은 클라이언트 측 소프트웨어인 웹브라우저에서 동작하는 언어인 HTML, CSS, JavaScript이다. 이 언어들은 웹브라우저라는 환경 위에서 구동되는데, HTML이 웹페이지를 만드는 언어라면 CSS는 웹페이지를 디자인적으로 아름답게 꾸며주는 언어다. 그리고 JavaScript는 HTML이라는 언어가 가진 한계를 확장해서 웹페이지를 단순한 문서에서 복잡한 작업을 수행할 수 있는 프로그램으로 끌어올려 주는 언어라고 할 수 있다. 이 관계를 이렇게 짧은 지면에서 다 설명하는 것은 무리수다. 하위 수업들을 통해서 각각의 쓰임을 좀 더 구체적으로 이해할 수 있을 것이다. 또 각각의 기술마다 생활코딩에서 제공하는 수업에 대한 링크를 마련했다. 실습을 완주한 후에 각각의 수업을 보면 '무엇을 모르는지 모르는 상태'에서 금방 벗어날 수 있을 것이다.
사족. 프로그래밍을 하기 위해서는 수학을 잘해야 하나?
그럴 수도 있고 아닐수도 있습니다. 무엇을 프로그래밍하느냐에 달린 문제입니다. 컴퓨터는 분명히 숫자로 이루어진 시스템이기 때문에 최초의 컴퓨터 과학자들은 대체로 수학자거나 수학에 탁월한 사람들이었습니다. 하지만 컴퓨팅 환경이 고도화될수록 수학은 시스템 깊은 곳에 숨겨집니다. 대신에 더 인간 친화적인 환경으로 진화합니다. 마치 20년 전의 컴퓨터가 소수의 공학자만이 다룰 수 있는 시스템이었던 것에 비해서 요즘은 터치만으로도 컴퓨터를 제어하는 데 부족함이 없는 것처럼요. 이것과 똑같은 일이 프로그래밍의 세계에서도 진행되고 있습니다. 고백 하자면 필자는 중학교 1학년 1학기 때 수학을 단념했습니다. 열심히 하지 않은 것도 아닌데, 필자의 하드웨어는 이해력이 느리고 암기력이 짧기 때문에 선두권에 맞춰서 밀어붙이는 진도의 폭력성을 감당할 수가 없었던 것 같습니다. 그런 필자 같은 사람도 프로그래밍으로 먹고 사는데 큰 지장이 없습니다. 프로그래밍의 세계는 광활합니다. 그렇기 때문에 수학 없이 무엇인가를 도모할 수 있는 분야는 차고 넘칩니다. 최소한 웹개발을 하는데는 사칙연산만 알고 있으면 됩니다. 무엇보다 우리는 수학을 못하는 사람이 아니라, 앞으로 잘 할 사람이 아닌가요?