
프로그래밍은 더 이상 '소수 매니아들만의 영역'이 아닙니다. 사실 처음부터 그랬던 적도 없지만, 요즘은 코딩에 도전하는 사람들이 눈에 띄게 늘었고 일부 초등학교 교육과정에도 코딩이 포함되고 있습니다. 다만 훌륭한 프로그래머가 되기 위해서는 여러 언어를 배우고 이를 자유롭게 활용할 수 있어야 합니다.
다행히도 새로운 언어를 배우기 시작할 때 스스로에게 던질 수 있는 다섯 가지 질문이 있습니다. 이 글에서는 그 질문들에 답하며, 여러분의 무기고에 새로운 화살을 하나 더 추가해 드리겠습니다.
1. 내 프로그램에서 데이터를 어떻게 정의하는가?
프로그래밍 언어의 기초를 익힐 때 모든 답이 중요하지만, 그중에서도 데이터 정의가 첫 번째 질문이 되어야 합니다. 데이터 없는 프로그램은 존재 의미가 없기 때문입니다.
여기서 좋은 팁 하나는 선택한 언어의 '핵심 뿌리'가 무엇인지 살펴보는 것입니다. 예를 들어 Java, Dart, Rust 등 수많은 언어는 C를 기반으로 만들어졌습니다. 그래서 이런 언어들에서는 중괄호({}), 세미콜론(;), 변수 타입 선언을 흔히 볼 수 있습니다.

따라서 한 가지 언어를 이미 알고 있다면 그 지식이 상당 부분 그대로 적용될 수 있습니다. 그럼에도 해당 언어가 '강타입(strongly typed)' 언어인지 반드시 확인해야 합니다. 사용할 수 있는 타입의 종류와 코드에서 타입을 선언하는 방식을 이해해야 하기 때문입니다.
2. 데이터를 어떻게 저장하고 다루는가?
사실 이 질문 앞에는 한 가지 더 물어봐야 할 것이 있습니다. 바로 각 언어가 데이터 집합을 어떤 명칭으로 부르는지입니다. 많은 언어가 '배열(array)'과 '해시 테이블(hash table)'이라는 용어를 쓰지만, Python처럼 좀 더 직관적인 '리스트(list)'와 '딕셔너리(dictionary)'라는 이름을 사용하는 언어도 있습니다.

용어를 파악했다면 이제 배열과 해시 테이블을 만드는 방법을 익힐 차례입니다. 대부분의 언어에서 배열은 대괄호([]), 해시 테이블은 중괄호({})를 사용해 생성합니다. 예를 들어 Python에서 배열(리스트)을 만드는 템플릿은 다음과 같습니다.
my_list = ['item1', 'item2', 'item3']
반면 해시 테이블(Python에서는 딕셔너리라고 부름)을 만들 때는 이렇게 바뀝니다.
my_dict = {'first': 'item1', 'second': 'item2', 'third': 'item3'}JavaScript나 Swift 같은 다른 언어들을 살펴보면 이 형식이 거의 그대로 통용되는 것을 확인할 수 있습니다.
3. 코드를 어떻게 반복 실행하고 로직을 넣는가?
데이터를 정의하고 저장할 수 있게 되었다면, 이제 작업이 끝날 때까지 코드가 계속 실행되도록 만들고 싶어질 것입니다. 간단한 숫자 생성기나, 사용자 이름과 비밀번호가 담긴 해시 테이블을 검사하는 커스텀 필드 체커를 생각해 보세요.
프로그래밍 언어에서 반드시 익혀야 할 반복문은 두 가지입니다.
- for 문. 종료 조건이 명확한 반복문입니다. 보통 반복자(iterator)가 지정된 범위를 모두 순회하면 끝납니다. 배열 등 저장된 데이터를 순회하기에 적합합니다.
- while 문. 제어하기 까다로운 반복문입니다. 잘못 쓰면 프로그램을 망치거나 동일한 출력을 무한히 내놓을 수 있습니다. 게임처럼 계속 돌아가야 하는 프로그램에는 좋지만, 숫자 데이터를 처리하는 용도로는 적합하지 않습니다.
반복문이 어떻게 동작하는지 파악하는 동안 'if' 문이 어떻게 작성되는지도 함께 살펴보는 것이 좋습니다. 논리 처리는 모든 프로그램의 핵심 요소이지만, 변수와 마찬가지로 대개 모체가 된 언어의 형식을 따르는 경향이 있습니다.
4. 재사용 가능한 코드 덩어리는 어떻게 만드는가?
이 시점이면 데이터를 정의·저장하고, 반복 처리하며, 논리를 적용할 수 있게 됩니다. 이 정도면 간단한 스크립트를 만들어 명령줄에서 실행할 수 있습니다. 하지만 함수와 클래스를 활용하면 코드를 체계적으로 정리하고 재사용 가능한 코드 조각을 만들 수 있습니다.
이런 요소들은 언어마다 형식이 제각각입니다. 예를 들어 JavaScript는 무엇을 만드는지 명확하게 표시합니다.
function myFunction(p1, p2) {
return p1 * p2; // The function returns the product of p1 and p2
}반면 Python은 def를 사용합니다.
def my_function(p1, p2):
return p1 * p2
객체지향 프로그래밍(OOP) 역시 주력 언어에서 이미 사용하고 있다면 반드시 이해해야 할 개념입니다. 다만 OOP 개념이 항상 그대로 옮겨지는 것은 아니므로, 그런 경우에는 전문가의 도움을 받는 것이 좋습니다.
5. 막혔을 때 어디서 도움을 받을 수 있는가?
여기까지 오면 필요한 언어로 간단한 프로그램을 작성할 수 있게 되고, 언어의 세부 사항에 대한 조사도 어느 정도 해봤을 것입니다. 하지만 최고의 도움을 받을 수 있는 곳이 어디인지는 잘 모를 수 있습니다.
대부분의 프로그래머가 찾는 곳은 Stack Overflow입니다.

방대한 규모의 사이트 네트워크로 다양한 사용자가 활동하고 있습니다. 다만 초보 프로그래머나 질문을 서툴게 표현하는 사람들에게는 불친절하기로 악명이 높습니다. 따라서 초보 코더가 '뻔한' 질문도 편하게 던질 수 있는 포럼을 찾아두는 것이 좋습니다.
마지막으로 프로그래밍 언어를 빠르게 익히는 데 탁월한 리소스 하나를 소개합니다. 바로 Learn X In Y Minutes입니다.

사실상 현존하는 거의 모든 언어에 대한 '요약 노트'이자 치트 시트입니다. 새로운 언어를 탐험할 때 곁에 두면 큰 도움이 되고, 인쇄해서 볼 수 있다는 점도 장점입니다.
마무리
주류 교육 과정에 코딩이 포함되고 있다는 것은 그만큼 배워 둘 가치가 있는 기술이라는 뜻입니다. 여러 언어를 다룰 줄 아는 '멀티링구얼' 프로그래머가 되면 핵심 역량이 강화될 뿐 아니라 더 나은 취업 기회도 열립니다.
프로그래밍 언어를 무료로 배우는 방법이 궁금하다면, 이전에 다룬 글도 참고해 보세요. 다른 프로그래밍 언어를 배워본 경험이 있으신가요? 어떠셨는지 댓글로 여러분의 이야기를 들려주세요!