프로그래밍 언어를 처음 공부하게되면 대부분 많은 어려움을 겪는다. 나 역시도
인문학을 전공한 비전공자로써 컴퓨터를 공부하면서 수 많은 시행착오를 겪었다.
정말 개발의 개짜도 모르는 사람들이 프로그래밍 언어를 배우기 위해 알아두면 좋은
개념들을 정리해보겠다. 깊고 어려운 내용이 아니니 마음 편하게 보도록하자.
우리는 운전을 하면서 옆사람과 대화를 하고, 동시에 차에서 흘러나오는 음악을 들으며, 흥얼거린다. 이렇게 인간은 소위 '멀티태스킹'을 할 수 있다. 하지만 기본적으로 프로그램은
한번에 단 하나의 명령만 처리할 수 있다.(비동기처리나 멀티쓰레드와 같은 개념은 생략한다) 하지만 이런 의문을 가질 수 있다. 컴퓨터에서 나는 유튜브로 음악도 틀어놓고, 동시에 게임도 플레이하면서 여러가지 앱을 동시에 틀어놓을 수 있다. 이런 것을 보면 컴퓨터도
멀티태스킹이 가능한 것 처럼 보인다. 사실은 멀티태스킹이 가능한 것이 아니라 일 처리하는 속도가 너무 빨라서 마치 여러가지 일을 동시에 처리하는 것 처럼 보인다. 한번에 하나의 일을 처리한다는 개념을 이해하면, 프로그램에서는 특정 시점이라는 것이 반드시 존재한다. 이 개념이 나중에 브레이킹포인트나 디버깅에 도움이 될 수 있다.
앞서 말한 한번에 하나만 처리하는 컴퓨터의 특성상. 모든 프로그램의 로직은 순서대로 실행된다. 따라서 프로그래밍을 할 때 순서가 매우 중요하다는 점을 기억하자. 초보자들이 자주 저지르는 에러는 바로 이 순서에서 비롯된다.
# 코드 1
명령1> 변수 name에 '홍길동' 저장
명령2> 변수 age에 '21' 저장
명령3> "안녕하세요. 저의 이름은 (name)이고, (age)살 입니다." 출력
# 코드 2
명령1> 변수 name에 '홍길동' 저장
명령2> "안녕하세요. 저의 이름은 (name)이고, (age)살 입니다." 출력
명령3> 변수 age에 '21' 저장
인간적인 관점에서보면 코드1과 코드2 모두 "안녕하세요. 저의 이름은 홍길동이고, 21살 입니다." 라는 결과를 예상할 수 있다. 하지만 컴퓨터는 코드2를 실행하면 에러를 발생시킨다. 코드2는 동작 순서에 의해 명령1에서 name이란 변수에 홍길동을 먼저 저장하고, 명령2에 의해서 문장을 출력한다. 하지만 명령2의 시점에서 age란 변수에는 아무런 값이 없으므로 명령2를 올바르게 수행하지 못한다. 항상 순서에 의한 실행을 염두에 두고 코드를 이해하는 습관을 들여보자.