어떤 프로그래밍 언어를 배우는 것이 좋을지 ?
많은 종류의 프로그래밍 언어가 있습니다.
- C , C++
- Java
- Python
- JavaScript
- Rust
- Swift
- Kotlin
- Dart
- Go 등등
이중 어떤 언어를 배우는 것이 좋을까요?
프로그래밍 언어는 인간의 언어와는 달리 , 사람이 어떤 목적에 의해서 만든 언어입니다.
앞의 글에서 적었듯이, 컴퓨터는 숫자로만 동작하고, 어떤 일을 시키는 것도 숫자로만 할 수 있습니다.
아래의 이미지는 맥용 Power Point 실행 프로그램 파일의 내용입니다.
PPT 파일을 열은 것이 아니고, Power Point 실행 프로그램의 내용입니다.
그림에 나와 있는 것과 같이 사람으로서는 알아볼 수 없는 숫자들로 이루어져 있습니다.
아주 초기에는 컴퓨터 프로그래밍을 이렇게 컴퓨터가 실행해야 할 일들을 이렇게 "숫자들"로 컴퓨터에 주어서 일을 시켰습니다.
컴퓨터가 해야 할 일을 이렇게 숫자들로만 적는다는 것은 보통 어려운 일이 아닙니다.
"어떤 숫자는 어떤 명령이다"를 일일이 기억해서 적는 식으로 프로그램을 만들었습니다.
이런 방식의 언어를 기계어(Machine Language)라고 합니다. 아주 예전에는 컴퓨터를 많은 사람들이 사용하지도 않았으니 아주 소수의 사람들만 특별한 목적으로 이런 기계어로 프로그래밍을 했습니다.
이런 어려운 일을 좀 더 사람이 하기 쉽도록 하려는 노력으로 만들어진 것이 프로그래밍 언어입니다.
사람이 글을 적는 것과 좀 더 비슷하게 사람의 관점에서 좀 더 익숙하고 편한 방식으로 프로그래밍을 할 수 있게 만들게 된 것입니다. 사람들이 사용하는 것과 비슷한 단어로 프로그래밍을 할 수 있도록 좀 더 쉽게 프로그래밍을 하게 만든 것입니다.
사람에게 익숙한 단어들로 글을 쓰는 식과 같이 프로그램 코드를 작성하면, 이를 컴파일러라는 프로그램이 컴퓨터가 알 수 있는 숫자들로 변환하는 방식입니다. 그래서 컴파일러는 프로그램을 만드는 프로그램이라고 할 수 있습니다.
다른 언어의 조상이라고 하는 언어는 "C 언어"입니다. C 언에 이전에 다른 언어도 있지만, 가장 널리 보편적으로 쓰이게 된 언어가 "C 언어 "입니다.
Windows, MacOS , iOS, Android와 같은 OS (운영체제 - 다른 프로그램들을 실행시켜 주는 터전을 만들어주는 프로그램이라 생각하면 됩니다. 그래서 컴퓨터를 사고 OS를 설치해야만 다른 프로그램들을 실행할 수 있습니다.)와 대부분의 다른 프로그래밍 언어들도 "C 언어"로 만들었습니다.
그럼. "C 언어"가 있는데, 왜 다른 언어들을 만들었는지 생각해 봅시다. "C 언어"는 좀 배우기가 어렵습니다. 아주 예전에 만들어졌고, 사람보다는 컴퓨터 쪽에 더 가까운 언어이기에 OS와 연관된 세밀한 처리를 할 수도 있고, 실행 속도도 빠르지만, 배우기가 어렵기도 하고 실수를 해서 프로그램에 오류가 발생할 가능성도 높습니다.
자동차로 따지만, 수동 기어 자동차에 가깝다고 생각할 수 있습니다.
컴퓨터가 가격이 싸지고, 점점 많은 곳에 사용되다 보니 다양한 분야에서 컴퓨터 프로그램 개발에 대한 요구가 생기게 되면서,
좀 더 아주 세밀한 OS에 대한 조정은 안 해도 되지만, 좀 더 배우기 쉽고 편하게 프로그램을 만들 수 있는 언어에 대한 요구가 생기게 되었습니다.
자동차로 따지만, 자동 기어 자동차에 해당한다 할 수 있겠습니다.
그러다 보니, 각 분야의 목적에 맞는 다양한 특성을 가진 언어들을 만들게 된 것입니다.
예로, JavaScript 는 초기에는 웹 브라우저에서 실행될 수 있는 작고 가벼운 언어를 만드는 것을 목표로 만들어졌고, Java 언어는 Windows 건 MacOS 건 Linux 건 다양한 OS에서 실행될 수 있는 프로그램을 하나의 소스코드로 만드는 것을 목표로 만들어진 언어입니다. Python 은 초등학생들도 쉽게 배워서 사용할 수 있는 언어로 만들어졌습니다.
공학적으로는 장점만 있는 물건을 만들기는 어렵습니다.
차를 예로 들면, 트럭처럼 짐을 많이 실을 수 있으며, 스포츠카처럼 빠른 차를 만들긴 매우 어렵습니다.
프로그래밍 언어도 마찬가지입니다. 어떤 장점이 있으면, 다른 언어에 비해 단점도 있게 마련입니다.
"C 언어"로 만든 프로그램을 OS의 세밀한 처리도 가능하고 실행속도도 빠르지만, 배우기가 어렵고 자칫 잘못하면 프로그램에서 오류가 날 수 있습니다. Python 은 배우기는 쉽지만 다른 언어에 비해 만들어진 프로그램의 실행 속도가 느립니다.
그래서 모든 분야에 만능인 언어는 없으며, 어떤 언어를 배우는 게 좋은 지는 어떤 목적을 가지고 있냐에 따라 달라지게 됩니다.
하지만, 세상의 모든 프로그래밍 언어는 공통적으로 가지는 기능이 있고,
사실 이 공통적 기능에 대한 개념을 알고 한 언어를 배우고 나면, 다른 언어는 쉽게 배울 수 있습니다.
그래서, 앞의 글들과 앞으로의 글들은 되도록 특정 언어에 설명을 적기보다는 프로그래밍 언어의 배우는데 필요한 개념을 적는 것을 목표로 하고 있습니다.
어떤 프로그램을 개발한다는 것은 프로그래밍 언어만을 알아서는 되지 않습니다.
프로그래밍 언어는 배우는 것은 가장 기본적인 컴퓨터에게 일을 시키는 방법을 배우는 것입니다.
가장 기본적인 연장을 다루는 방법을 배우는 것에 해당합니다.
예를 든다면, 드라이버와 드릴 같은 연장을 사용할 줄 안다고 해서 차를 고칠 수 있는 아닌 것과 같고,
영어를 할 줄 안다고 무역업을 할 수 있는 것은 아닌 것과 같습니다. 다양한 연장을 다룰 수 있어서 자동차에 구조에 대해 알아야 차를 고칠 수 있고, 영어를 할 줄 알아도 무역에 대한 공부를 해야 무역업무를 할 수 있는 것과 같습니다.
프로그래밍 언어는 프로그램을 개발하기 위한 가장 기본적인 기술입니다.
웹 서버를 만들고자 하면 , Java 나 JavaScript 같은 언어를 배우고, 웹 서버에 대한 공부를 하고 , 각 언어별로 웹 서버를 만들 수 있는 Framework(기능들의 모임 정도로 생각해도 됩니다.)를 배워야 합니다.
프로그램 언어 그 자체는 컴퓨터에 명령을 내리는 가장 기본적인 수단입니다.
그래서, 프로그램 언어는 되도록 이면 빠른 시간에 배우는 것이 좋습니다.
요즘에는 Chat GPT 등과 같은 AI의 도움을 받을 수 있으니, 프로그램 언어의 모든 사항을 암기하거나 문법을 모두 외우는 등의 노력은 불필요합니다. 컴퓨터 분야는 암기를 해야 하는 분야가 아니며, 창의성을 발휘해야 하는 분야입니다.
모든 프로그램언어에는 공통되는 개념이 있습니다.
이 공통되는 개념을 가지고 나면 목적에 부합되는 다양한 언어를 쉽게 배울 수 있습니다.
공통되는 개념을 알고 난 후에는 각 언어만이 가진 특징들을 알고 Chat GPT 등의 도움을 받으면 프로그램의 개발을 쉽게 시작할 수 있습니다. 프로그램 언어를 배우는 시간은 최소한으로 하고, 만들고자 하는 프로그램에 필요한 기술(예로 웹서버, Graphic UI 등의 세부 기술)과 Framework에 더 많은 시간을 들이는 것이 훨씬 효과적입니다.
이 블로그에서는 위의 이유로, 특정 언어에 대한 설명이 아닌,
프로그래밍 언어를 배우고, 어떤 프로그램을 개발할 때 알아야 하는 공통 개념에 대한 내용을 담겠습니다.