초보자에게 가장 흔한 질문 중 하나가 파이썬이 좋나요, 자바스크립트가 좋나요다. 하지만 실제로 더 먼저 물어야 하는 것은 내가 무엇을 만들고 싶은가다.
첫 언어는 평생의 운명을 결정하는 선택이 아니다. 다만 처음 몇 달의 마찰을 줄여 주는 선택일 수는 있다.
그리고 이 마찰은 문법의 난이도에서 오지 않는다. 대부분은 설치가 잘 되는가, 실행이 한 줄로 되는가, 막혔을 때 검색 결과가 나오는가에서 온다.
목적이 언어보다 먼저다
웹 화면을 빨리 움직여 보고 싶다면 JavaScript가 자연스럽고, 자동화나 데이터 처리에 흥미가 있다면 Python이 편하다. 앱, 백엔드, 시스템처럼 분야가 분명하다면 그 분야의 대표 언어부터 만나는 편이 덜 흔들린다.
반대로 유명해서, 연봉이 높다길래 같은 이유만으로 고르면 초반의 작은 불편에도 쉽게 포기하게 된다. 결과를 보고 싶은 마음이 없는 상태에서는, 에러 하나가 그만둘 이유가 되기 때문이다.
실행까지 걸리는 거리를 비교해 본다
언어를 비교할 때 문법 예제를 나란히 놓는 글이 많지만, 입문자에게 더 중요한 것은 코드를 화면에 띄우기까지 몇 단계가 필요한가다. 아래 두 경우를 보면 차이가 분명해진다.
PYTHON
$ python3 main.py
Hello, world
파일 하나, 명령 하나. 중간에 설정 파일이 없다.
JAVASCRIPT (BROWSER)
<!-- index.html -->
<script src="main.js"></script>
// main.js
document.body.textContent = "Hello, world";
파일이 둘이지만 브라우저만 있으면 되고, 결과가 눈에 바로 보인다.
둘 다 진입이 짧다. 반면 자바나 C++처럼 컴파일과 빌드 도구가 끼는 언어는 첫 화면까지 가는 데 설치와 설정이 더 붙는다. 언어가 나빠서가 아니라, 입문 단계에서 신경 써야 할 것이 하나 더 늘기 때문이다. 그 설정 자체를 배우고 싶은 사람에게는 오히려 좋은 선택이 된다.
설치부터 화면에 글자 하나 띄우기까지 한 시간 안에 도달했다면, 그 언어는 지금의 나에게 마찰이 낮은 언어입니다. 반나절이 걸렸다면 언어가 아니라 환경 문제일 가능성이 크니 그것부터 정리하십시오.
첫 언어를 고를 때 보는 기준
- 내가 만들고 싶은 결과가 무엇인지 한 문장으로 적는다.
- 설치 문서와 입문 자료가 많은지 확인한다.
- 한국어와 영어 검색 결과가 모두 풍부한지 본다.
- 내 컴퓨터 환경에서 큰 마찰 없이 실행되는지 확인한다.
- 결과가 눈에 보이는 형태인지 확인한다.
- 두 언어 중 고민된다면 3일씩만 써 보고 손에 더 붙는 쪽을 고른다.
3일 실험을 실제로 설계하는 법
써 보고 고르라는 말은 자주 하지만, 무엇을 써 볼지 정해 주지 않으면 대개 튜토리얼 앞부분만 두 번 읽고 끝난다. 그러면 비교가 되지 않는다. 두 언어에서 같은 과제를 같은 순서로 해 봐야 차이가 드러난다.
과제는 작을수록 좋다. 텍스트 파일 하나를 읽어서 줄 수를 세고, 결과를 화면에 출력하는 정도면 충분하다. 이 안에 파일 다루기, 반복, 출력, 그리고 무엇보다 실행 환경이 모두 들어 있다. 3일을 이렇게 배분하면 판단할 재료가 남는다.
- 첫째 날: 설치하고 화면에 글자 하나 출력하기
- 둘째 날: 파일을 읽어 줄 수 세기
- 셋째 날: 일부러 오타를 내고 에러 메시지를 읽어 보기
셋째 날이 핵심이다. 언어의 인상은 잘 될 때가 아니라 안 될 때 결정된다. 에러 메시지가 어디가 문제인지 짚어 주는 언어와, 알 수 없는 기호만 잔뜩 뱉는 언어는 초반 학습 속도가 눈에 띄게 다르다. 이 차이는 문법 예제만 봐서는 절대 보이지 않는다.
사흘씩 두 언어를 해 보면 엿새가 든다. 길어 보이지만, 어느 쪽을 고를지 두 주 동안 검색만 하는 것보다는 짧다. 그리고 이 엿새는 어느 쪽을 고르든 버려지지 않는다.
두 번째 언어는 첫 언어와 다르게 고른다
첫 언어를 고르는 기준과 두 번째 언어를 고르는 기준은 같지 않다. 첫 언어는 마찰이 낮은 쪽이 좋지만, 두 번째는 오히려 첫 언어와 성격이 다른 쪽이 남는 것이 많다. 동적 타입으로 시작했다면 정적 타입 쪽을, 스크립트로 시작했다면 컴파일 쪽을 한 번 보는 식이다.
이때 비로소 그동안 당연하게 여겼던 것들이 언어의 선택이었다는 사실이 보인다. 타입을 미리 적는 이유, 메모리를 누가 정리하는지, 에러를 값으로 다룰지 예외로 던질지 같은 것들이다. 같은 주제를 언어별로 나란히 놓고 보고 싶다면 언어 비교가 출발점으로 쓸 만하다.
이 조언이 맞지 않는 경우
고르라는 말이 항상 유효한 것은 아니다. 학교 수업이나 회사 과제가 언어를 지정했다면 고민할 대상이 아니다. 그 언어가 지금 나에게 마찰이 높더라도, 옆에서 물어볼 사람이 있고 채점 기준이 명확하다는 것이 그 마찰을 상쇄한다. 만들고 싶은 대상이 이미 정해진 경우도 마찬가지다. 아이폰 앱을 만들겠다는 사람에게 파이썬이 쉬우니 파이썬부터 하라는 조언은 길을 늘릴 뿐이다.
더 흔한 실패는 다른 쪽이다. 이미 한 달째 파이썬을 하고 있는데 자바스크립트가 취업에 낫다는 글을 보고 갈아타고, 다시 두 달 뒤 다른 글을 보고 또 갈아타는 경우다. 이런 이동은 언어를 세 개 아는 사람을 만들지 않고 입문서 앞부분만 세 번 읽은 사람을 만든다. 이미 시작했고 작은 결과를 하나라도 만들었다면, 언어를 바꾸는 것보다 그 언어로 하나를 끝내는 편이 거의 언제나 낫다.
흥미가 식어서가 아니라, 만들려는 대상이 그 언어로는 구조적으로 어렵다는 것이 확인됐을 때만 바꾸십시오. 지루하다는 느낌은 대개 언어가 아니라 예제의 문제입니다.
좋은 첫 언어는 최고의 언어가 아니라 내가 일주일 안에 작은 결과를 낼 수 있는 언어다.
더 볼 것
후보를 두세 개로 좁혔다면 각 언어의 첫 화면을 직접 비교해 보는 편이 빠릅니다. 파이썬 학습 허브와 자바스크립트 학습 허브에서 기본 문법의 밀도를 보고, Hello World 비교로 실행까지의 거리를 확인해 보십시오.
이 글의 포인트
- 첫 언어는 목적, 자료량, 실행 마찰을 기준으로 고른다.
- 문법 난이도보다 결과를 보기까지의 단계 수가 더 중요하다.
- 고민이 길어지면 짧은 실험으로 좁히는 편이 낫다.
- 이미 시작했다면 바꾸는 것보다 하나를 끝내는 편이 낫다.
- 처음 고른 언어가 평생 고정되는 것은 아니다.