수학·컴퓨터

다양한 프로그래밍 언어와 그 특징

언어마다 잘하는 일이 다르다. 무엇을 기준으로 나뉘고 어떤 상충이 있는지 정리했다.

편집부 · 2026년 9월 20일 · 읽는 데 2분

프로그래밍 언어는 수천 가지가 있다. 널리 쓰이는 것은 수십 가지 정도다. 이들을 가르는 기준이 몇 가지 있다.

언제 기계어로 바꾸는가

컴퓨터가 직접 실행하는 것은 기계어다. 사람이 쓴 코드를 기계어로 바꾸는 시점에 따라 언어의 성격이 갈린다.

미리 전체를 변환해 두는 방식을 컴파일이라 한다. 실행 속도가 빠르고, 변환 과정에서 오류를 미리 잡을 수 있다. 대신 고칠 때마다 다시 변환해야 한다.

실행하면서 한 줄씩 해석하는 방식을 인터프리트라 한다. 고친 내용을 바로 확인할 수 있어 시험과 수정이 빠르다. 대신 실행 속도가 느리다.

둘을 섞은 방식도 널리 쓰인다. 중간 형태로 변환해 두었다가 실행 중에 자주 쓰이는 부분만 기계어로 바꾸는 방식이다.

자료형을 언제 확인하는가

변수에 담긴 것이 숫자인지 글자인지를 언제 따지느냐도 중요한 구분이다.

실행 전에 확인하는 언어에서는 맞지 않는 사용을 미리 잡아낸다. 큰 프로그램에서 실수를 줄이는 데 도움이 된다. 대신 코드가 길어지고 제약이 많다.

실행 중에 확인하는 언어는 짧고 유연하게 쓸 수 있다. 대신 오류가 실행 중에 드러난다.

최근에는 중간을 택하는 흐름이 있다. 자료형을 적지 않아도 되지만 적으면 검사해 주는 방식, 또는 기존 언어에 자료형 표기를 덧붙이는 방식이다.

메모리를 누가 관리하는가

쓰고 난 메모리를 정리하는 방법도 언어를 가른다.

직접 관리하는 방식은 성능을 세밀하게 조절할 수 있다. 대신 해제를 잊으면 메모리가 새고, 이미 해제한 곳을 다시 쓰면 심각한 오류가 난다.

자동으로 회수하는 방식은 이런 실수를 막는다. 대신 회수 작업이 일어나는 동안 잠깐 멈출 수 있어, 반응 시간이 중요한 프로그램에서는 문제가 된다.

제삼의 방식도 있다. 값의 소유권을 추적해, 쓰임이 끝나는 시점을 컴파일 단계에서 결정하는 방식이다. 실행 중 부담 없이 안전을 확보하려는 접근이다.

무엇을 중심에 두는가

프로그램을 구성하는 방식에도 갈래가 있다.

자료와 그 자료를 다루는 동작을 묶어 다루는 방식이 널리 쓰인다. 상태를 가진 대상을 다루기에 편하다.

입력에서 출력을 만드는 함수의 조합으로 보는 방식도 있다. 상태를 바꾸지 않는 것을 원칙으로 삼아, 병렬 처리에서 예측하기 쉽다는 장점이 있다.

대부분의 현대 언어는 한 가지만 고집하지 않고 여러 방식을 함께 지원한다.

고르는 기준

어떤 언어가 가장 좋은지에 대한 논쟁은 대개 결론이 나지 않는다. 목적이 다르기 때문이다.

실무에서는 다른 기준이 작용한다. 그 분야에 쓸 만한 라이브러리가 있는지, 사람을 구하기 쉬운지, 기존 코드가 무엇으로 쓰여 있는지 같은 것들이다.

언어 자체의 우열보다 주변 생태계가 선택을 좌우하는 경우가 많다.

이어서 읽기