프로그래밍 언어, 무엇부터 배워야 할까?

가장 인기있는 프로그래밍 언어

가장 인기있는 프로그래밍 언어는 보통 티오베 지수(TIOBE index)를 통해 알아보는데, 티오베 지수란 네덜란드 소프트웨어 기업인 ‘티오베’에서 정기적으로 자체 계산 방법에 의해 산출한 순위를 말한다.

프로그래밍 언어, 무엇부터 배워야 할까?

지수를 산출하는 기관에 따라 약간의 차이가 있고, 매해 순위도 약간씩 변하지만 상위권에 보이는 언어는 거의 항상 일정하다.

C/C++, Java와 JavaScript, Python은 최근 어느 지표를 보든 아마 거의 상위권에 나오는 언어일 것이다. 특히 Python은 최근 AI 인공지능 관련 수요가 크게 늘며 인기가 더 급상승한 언어이다.

이 중에 어떤 언어가 더 좋냐 나쁘냐, 나는 어떤 언어를 선택해야 하느냐를 말하긴 사실 어렵다. 서로 언어적 특징이 다르고 쓰임새가 다르기 때문인데 사실 이쪽 개발 업계에서 밥먹고 살려면 위에서 나열한 언어는 어느 정도 수준까지는 할 줄 알아야 할 것이다. 조금 더 범위를 좁히고 싶다면 내가 가고자 하는 방향을 정하고 언어를 선택하는 것이 나을 수 있다. 이 주제는 개발자 분야 정하기에서 좀 더 상세히 다루었으니 참고 바란다.

간단히 정리하면 프로그래밍 언어는 크게 컴파일형 언어와 인터프리터형 언어로 나눌 수 있다.
컴파일형 언어는 네이티브 어플리케이션 개발에 스크립트형 언어는 웹 개발에 사용되는 언어라는 정도만 이해해도 될 듯 싶다. 그리고, 위에 언급된 언어 정도만 이해하고 사용할 수 있다면 그 외 다른 언어를 배우는데 크게 어렵지 않을 것이라 확신한다. 여기서는 대표적인 몇개의 프로그래밍 언어의 아주 대략적인 소개만 하도록 하겠다.

프로그래밍 언어의 특징과 장단점

C/C++은 대표적인 컴파일형 언어이다. 컴파일과 링킹이라는 과정을 거쳐 독립적으로 실행 가능한 바이너리 형태의 결과물을 만든다. C++은 C와 문법이 거의 동일하여 같은 언어로 보이지만 객체지향 프로그래밍을 지원하여 프로그래밍 방법론 적으로는 아주 많이 다르다. 성능이 뛰어나 시스템 프로그래밍에 적합하며 배우기가 많이 어렵지만 잘 배워두면 시스템 적인 지식을 많이 얻을 수 있다.

Java는 비슷하지만 약간 다른데 JVM(자바 버추얼 머신)에서 실행 가능한 중간 형태의 결과물을 만든다. JVM만 설치되면 어느 플랫폼에서나 실행 가능하기 때문에 플랫폼 독립성이 강하다고 할 수 있다. 하지만 JVM이라는 가상 환경에서 돌아가야 하기 때문에 C/C++에 비해 상대적으로 성능은 떨어질 수 밖에 없다.

JavaScript와 Python은 인터프리터형 언어로 각각 전용 런타임 환경에서 돌아간다. 컴파일형 언어에 비해 성능은 많이 떨어지지만 다양한 라이브러리가 많아서 초보자에게 추천할 만한 언어이다.

가장 쉬운 프로그래밍 언어

비교적 접근이 쉬운 언어는 아무래도 인터프리터형 언어일 것이다. JavaScript가 대표적인데 웹 개발을 염두해 두고 있다면 필수라고 봐도 무방하다. 최근 엄청나게 쏟아져 나오는 새로운 웹프레임워크의 상당 수가 JavaScript를 베이스로 하고 있다. 하지만 접근이 쉽다고 해서 끝까지 쉬운 것은 아니다. 좀 더 깊이 들어가다 보면 JavaScript도 꽤나 난해하다는 것을 느끼겠지만 개발 방법론 적인 문제이므로 나중에 고민하도록 하자.

프로그래밍 언어, 무엇부터 배워야 할까?

그렇다면 프로그래밍 언어는 무엇부터 배워야 할 것인가?

개인적인 생각으로는 초보자라면 비교적 진입장벽이 낮은 JavaScript를 추천한다. 문법이 쉽고 레퍼런스가 많아서 입문용으로 공부하기 좋은 언어이다. 다만 좀 더 전문적으로 공부해 볼 생각이라면 얼른 맛만 보고 C++을 파보는 것을 강력히 권한다.

JavaScript는 매우 유연하고 관대하다. 변수의 자료형 검사도 엄격하지 않고 심지어 선언을 하지 않고 사용해도 그냥 넘어간다. 개발자의 사소한 실수는 스스로 이해하고 넘어가는 듯하다. 이 때문에 개발 의도와는 동떨어진 엉뚱한 결과를 뱉어내기도 한다. 이런 환경에서의 개발 습관은 좋다고 볼 수 없다.

반면에 C++과 같은 컴파일형 언어의 엄격한 환경에서 객체지향 프로그래밍을 배우다 보면 나중에 다시 JavaScript와 같은 인터프리터형 언어를 다루게 되더라도 이전과는 다른 훨씬 좋은 개발을 할 수 있을 것이다.