어떤 언어로 코딩을 시작할까?
목차
이제 막 코딩을 시작하는 학생이나 개인들은 사실 처음부터 고민이 빠지는 문제가 있습니다. 바로 ‘언어 선택’입니다. 코딩을 배우고 싶고 연습을 하려고 결심은 했지만, 어떤 언어를 선택하여 배워야 할지 누가 조언해 주지 않으면 참 어려운 문제인거 같습니다.
프로그래밍 언어에는 현재 알려진 것만 해도 100여종류에 달합니다. 이 많은 언어중에 코딩을 배우기에 적절한 언어는 어떤 언어가 있을까요? 한번 차근 차근 알아보도록 하겠습니다.
프로그래밍 언어의 개념
복잡하게 생각하지 말고 간단하게 정리해 보겠습니다. 프로그래밍 언어는 인간이 인간끼리 서로 소통하는데, 언어라는걸 통해서 의사를 전달하고 혹은 받는 것처럼 인간이 컴퓨터에게 명령을 내리는 규칙 혹은 규약을 의미합니다.
인간이 정해진 문법으로 프로그래밍 언어를 사용하여 컴퓨터에게 알려주면 컴파일이라는 언어 해석기를 통해 컴퓨터가 이해할 수 있는 기계어(2진수)로 변환하는 행위를 거쳐 컴퓨터가 동작하게끔 명령을 내리는 과정을 거치게 됩니다. 이런 일련의 프로세스가 동작하는 행위를 만드는게 프로그램이라고 보면 되겠습니다.
따라서 프로그램을 만드는 사람이 바로 프로그래머이고 프로그래머는 프로그래밍 언어를 사용하여 프로그램을 개발하게 됩니다.
프로그래밍 언어에는 대표적으로 C/C++/JAVA/Python/JavaScript/PHP 등이 있습니다. 그 외에도 100여종의 프로그래밍 언어가 존재합니다.
전 세계 프로그래밍 언어 사용 순위
자 그럼 전 세계인들이 어떤 프로그래밍 언어를 가장 많이 사용하고 있는지 살펴볼까요? 어떤 언어들을 사용하고 있는지 비율이 궁금해 집니다.
위 통계는 TIOBE라는 곳에서 발표했는데요. 좀더 자세한 내용은 여기에서 확인해보시기 바랍니다.
위에 표를 보면 1~10위 까지를 순서대로 나열해 놓은 것을 볼수 있습니다. 1~4위 까지는 JAVA, C, C++, Python 의 순으로 사용 비율이 높을것을 알수 있습니다. 제가 언급한 언어를 많은 사람들이 사용하고 있는것 같습니다.
인상적인거는 JAVA와 Python 입니다. JAVA는 아무래도 안드로이드 앱으로 인해 사용자가 가장 많은 것으로 추측이 되고, 또한 산업적으로도 JAVA의 수요가 많아서 그런지 대표적인 언어인 C를 제치고 가장 사용량이 많은 언어로 선정이 되었네요. 그리고 Python입니다. 사용비율에서 네번째를 차지한 Python이 놀랍네요. 얼마전까지만 해도 Python은 생소한 언어였지만 최근들어서는 사용비율이 계속 증가하고 대중화 되었다는 의미인거 같습니다.
필자의 코딩 배우기 히스토리
저는 중학교때 부터 프로그래밍에 관심을 가지기 시작했는데요, 그때 처음 알았던 언어가 바로 “C” 였습니다. 당시에는 MS-DOS기반의 게임을 주로 했기 때문에 게임을 하다보면 과연 이걸 어떻게 만들었을까?에대한 궁금증이 늘 있었습니다. 그때 당시에 주로 했던 게임이 페르시아왕자, 황금도끼, 심시티, 1942등이 있었던 것으로 기억합니다.
나름대로 알아본 바로는 그때 당시에는 게임들을 주로 “C”를 사용하여 개발을 했었던거 같습니다. 그래서 시중에서 파는 서적중에 정보문화사에서 나온 “안녕하세요 터보 C” 라는 책을 한권 구입하여 봤지만… 당시 중학생인 저로써는 도저히 이해가 되지 않는 책의 내용에 좌절하고 말았습니다 ㅋ 한동안 C는 제게는 어려운 언어로 기억에 지속이 됩니다.
다시 C를 접하게 된건 대학교 때인데요, 전공이 전자공학이다 보니 전공중에 C언어가 필수였습니다. 그래서 어쩔수 없이 C를 배울수 밖에 없었는데요, 다행이도 전공 점수를 잘 받아서 나름 C에 대한 접근이 수월해졌던거 같습니다. 그러나… 마이크로 컨트롤러로 MP3 player를 제작해볼려다가 C의 한계에 부딛히게 되면서 C에 대한 2차 좌절이 오기 시작했습니다ㅋ 그때 당시만 해도 Hardware 엔지니어를 꿈꾸는 공대인이였기 때문에, SW나 언어에 대하여는 크게 관심이 없었던 시절이었습니다. 그래서 그 이상의 도전은 없었습니다.
하지만…. C와 운명적인 만남은 다시 다가오기 시작했습니다. 바로 대학을 졸업하고 취업을 하게 되면서 C는 제게 소리소문 없이 다가왔습니다. 원래 Hardware(H/W) 엔지니어로 경력을 시작했던 저는 1년이 지나고 나서 부터 회사 간부들로 부터 S/W로 전환을 강제로(?) 요구받게 됩니다. ㅋ H/W 엔지니어는 인원이 많고 S/W 엔지니어는 인원도 적은데 사람은 안뽑히니 니가 나이도 어리고 하니 전환을 하라는 요구였습니다. 당연 전 거부를 했습니다.ㅋ S/W가 체질에 맞지 않다고 생각했었기 때문이죠. 또한 2번의 좌절을 경험한 저로써는 엄두가 나지 않았습니다.
하지만 계속 뻐팅기던 저는 강제적으로 S/W 엔지니어로 전환을 하게 됩니다.ㅋ 회사에서 도저히 상황을 방관하기 어렵다는 이유였습니다. 그리고 나서 C를 속성으로 배우기 시작했습니다. 물론 혼자서…. ㅎㅎ
조금이따가 회사에서 개발중인 장비의 유지보수 대응을 직접 도맡아 하게 됩니다. 아무것도 모르는 초짜 프로그래머가 남이 짜놓은 난해한 C/C++ 코드를 보게 되니 굉장히 난감하더군요. 또한 이해가 되질 않아서 업무 진행이 매우 힘들게 돌아가기 시작했습니다. 그러다 보니… C 에 대하여 눈이 조금씩 떠지기 시작했습니다.
그 이후로 저는 프로그래밍에 대하여 조금씩 흥미를 가지고 되었고, 현재에도 계속 프로그래머 및 S/W 엔지니어로 커리어를 이어가고 있습니다. 아직도 부족하다고 느끼지만, 코딩을 하면서 직장 생활을 이어가는게 나름 보람을 느끼고 있습니다.
언어를 선택하는 기준을 찾아야 한다
제 히스토리를 간단히 소개해봤습니다. 저는 이런 저런 과정을 거쳐 C로 코딩을 하게 되었는데요, 그럼 프로그래밍을 처음 시작하는 학생이나 개인들은 어떤 언어를 선택하여 코딩을 시작해야 될까요? 여기서부터는 저의 주관적인 생각이 들어가 있으니 이런점 참고해서 읽어주셨으면 좋겠습니다.
사실 코딩을 처음 시작하는 학생들 혹은 개인은 어떤 언어로 선택해야 할지 난감합니다. 프로그래밍 언어는 다양한데, 어떤 언어가 좋을지 어떤 언어가 유망할지 또한 어떤 언어가 많이 쓰일지… 다양한 기준으로 어떤 언어로 시작할지에 대한 고민이 들수밖에 없습니다.
범위를 좁혀서 코딩을 처음 시작하는 초/중/고등학생에 입장에서 생각해 보겠습니다. 위에서 언급한 전세계인들의 언어 사용 분포를 보면 JAVA, C, C++, Python 등이 있습니다. 가장 널리 사용되는 언어가 JAVA인데요, 초/중/고등학생이 JAVA로 코딩을 시작하면 어떨까요?
여기서 딜레마가 생기게 됩니다. 바로 언어의 난이도 입니다. 저 같은 경우 중학교때부터 C로 코딩을 배우려고 혼자서 시도를 해봤지만, 그때 당시의 이해의 부족과 수학보다 더 어려운 여러가지 개념으로 인해 좌절을 했던 경험이 있었습니다. JAVA, C++같은 경우는 더 심각합니다.ㅋ 객체지향이라는 개념이 추가가 되기 때문에 초/중/고등학생들이 언어를 이해하고 코딩을 하기가 꽤 어렵다고 느낄것으로 보입니다. 아마 제2의 수학 과목이 늘어났다고 생각하기 딱 좋은 언어들이지요ㅋ
따라서 어린 학생들이 접하는 프로그래밍 언어의 벽은 생각보다 꽤 높을 듯 합니다. 아이들이 수학을 포기하는 수학포기자(수포자)가 생기듯이 코포자(코딩 포기자)가 생길 확률이 높습니다.
그래서 서구에서는 아이들 프로그래밍 교육용으로 ‘스크래치(Scratch)’라는 프로그래밍 언어를 사용하여 교육 및 배포하고 있습니다.
스크래치는 기존 JAVA/C/C++/Python등이 텍스트(문자)로 작성하는 방식이 아닌 블럭을 서로 연결하여 코딩을 하는 방식입니다. 작은 아이콘 같은 블럭으로 보기 때문에 좀더 이해하고 쉽고 코딩의 재미를 느낄수 있게 되어 있습니다. 스크래치는 어린 학생들 외에도 코딩을 공부하기 위한 일반인/대학생 들도 사용을 하고 있다고 하네요.
만약 자신이 코딩에 대한 경험이 전무하고 코딩이 어렵다고 느끼는 분들은 ‘스크래치’로 코딩을 시작해 보는것이 좋을꺼 같습니다. 코딩이란게 꼭 텍스트로 작성하는게 코딩은 아니지 않을까 라는 생각이 들기도 합니다.
그런데 자신은 텍스트로 작성하는 JAVA/C/C++/Python로 코딩을 시작한다면.. 이들 언어중에서 선택을 한다면 어떤 언어가 시작하기에 좋을까요? 아마 사용자의 목표/목적에 따라 달라질 것으로 생각됩니다.
자신이 어린 학생이고, 코딩을 처음 시작한다면 전 바로 Python을 추천드립니다. Python(이하 파이썬)은 최근에 꽤 각광을 받고 있는 언어중에 하나인데요, JAVA/C/C++에 비하여 배우기 쉬운 문법에 객체지향적 요소가 추가된 스크립트 언어입니다. 미국/서구 대학에서는 컴퓨터 관련 학과들의 교육 언어로 파이썬을 채택을 많이 하고 있다고 합니다. 물론 국내 대학에서도 파이썬을 채택했다는 학교들이 있다고 들어본 적이 있습니다.
상대적으로 JAVA/C/C++에 비하여 최근에 나왔고 아무래도 접근하기가 좀더 수월하다보니 학생들이 배우면서 코딩을 시작하기에 꽤 괜찮은 언어라고 저도 판단하고 있습니다. 물론 저도 최근에 파이썬을 배웠고 프로그램을 작성하고 있습니다.
반면에 자신이 취업이나 어떤 목적에 의해 코딩을 시작해야 한다면 얘기는 달라질 것이라 생각됩니다. 예를 들어 안드로이드 앱을 개발한다거나, Windows 기반의 프로그램을 개발하거나 혹은 리눅스 기반의 소프트웨어를 개발한다면 거기에 맞는 언어를 선택하여야 하기 때문입니다.
그럼 한번 예를 들어보겠습니다.
- 안드로이드 기반의 앱 – JAVA
- 아이폰 앱 – Objective-C
- Windows기반의 어플리케이션 – C++ and C, C#, .NET
- Linux 기반의 어플리케이션 – C and C++
- Linux 기반의 임베디드 시스템 – C, Shell Script
- 웹 사이트 및 웹 시스템 구축 – JavaScript, HTML, PHP
- 시스템 내부 펌웨어 프로그램 – C, 어셈블리어
- 오라클 등의 데이터 베이스 – JAVA, SQL
- 통계 및 빅 데이터 – Python
위의 예와 같이 자신이 목표로 한 분야나 목적에 따라 사용하는 언어로 코딩을 시작하는게 좋습니다.
코딩을 시작하는 분들에게…
위의 내용이 어떤 언어로 시작해야 할지 판단에 도움이 되셨나요? 선택이 되셨다면 이제 본인이 선택한 언어로 코딩을 시작하면 됩니다. 그리고 한가지 언어에 대해 잘 다룰수 있을때까지 다른 언어로의 이동이나 전환은 되도록 피하시기 바랍니다. 두 마리 토끼를 다 놓칠수 있습니다.
사실 프로그래밍 언어는 문법에 차이가 그리 크지 않습니다. 종류는 달라도 변수/함수/조건문 등의 문법에는 거의 동일합니다. 즉 한가지 언어를 잘 다룰줄 알면 다른 언어의 이용도 그만큼 수월해집니다. 그때가서 다른 언어를 다뤄보고 사용해봐도 늦지 않습니다.
문제는 언어를 선택하는거보다 코딩을 얼마나 효율적이고 수월하게 하는게 중요하다고 생각됩니다. 특정 기능을 잘 수행하는 잘 짜여진 프로그램을 만드는게 코딩의 목적이니까요ㅋ
저도 프로그래밍을 시작한다고 해서 몇번이나 중간에 좌절했던 적이 있었지만 지금 생각해 보니 언어는 도구일 뿐이거 같습니다. 그 언어를 잘 사용하고 프로그램을 잘 만드는게 언어를 사용하는 궁극적인 목적이지 않을까 생각합니다.
마지막으로 코딩을 시작하는 어린 학생들에게 조언을 드리자면 바로… 중간에 절대 포기하지 말고 인내를 가지고 코딩을 진행하시기 바랍니다. 문제를 해결해가다 보면 코딩은 자연스레 자신에게 다가올테니까요^^