코딩이란 프로그램 개발을 목적으로 컴퓨터 프로그래밍 언어로 코드를 작성하는 것을 말합니다. 여기서 프로그램이란 더하기, 빼기와 같은 간단한 계산기부터 PC나 스마트폰에서 사용하는 각종 앱이나 애플리케이션, 또는 웹사이트의 웹페이지까지 그 대상이나 종류는 매우 많습니다.
그리고 컴퓨터 프로그래밍 언어에는 스크래치나 엔트리 같은 블록 기반 언어 이외에도 하드웨어를 직접 컨트롤할 수 있는 어셈블리 같은 기계어나 C, Java 같은 고급언어, windows나 Linux, Unix 같은같은 운영체제(OS)에서 사용하는 각종 script, 웹페이지 제작에 사용하는 HTML이나 JavaScript, 그리고 데이터 분석을 위한 R, python 등 프로그래밍 언어는 수백 가지가 넘을 정도로 매우 많습니다. 그리고 지금도 필요에 따라 컴퓨터 프로그래밍 언어는 계속 만들어지고 있습니다. 왜냐하면 컴퓨터 프로그래밍 언어도 하나의 프로그램이며, 그래서 누구나 만들 수 있기 때문입니다.
하나의 프로그램은 실행할 수 있는 장소가 특정하게 제한적으로 정해져 있습니다. 대표적인 장소가 windows나 Linux 같은 운영체제나 브라우저들입니다. 직접적으로 설명하면 PC에서 실행되는 프로그램은 PC에서만 잘 실행되고, 스마트폰에서는 제대로 실행이 안 됩니다. 해상도 문제라고 생각할 수 있는데 해상도 문제보다는 프로그램이 실행되는 운영체제가 달라서 실행이 안 되는 것입니다. 그래서 같은 windows용 프로그램이라 하더라도 windows 버전이 달라 프로그램 호환이 안 되는 경우를 종종 볼 수 있습니다.
그럼 프로그램을 실행할 수 있는 장소가 정해진 이유는 무엇일까요?
그것은 바로 프로그램은 형태가 없는 무형이기 때문입니다. 따라서 프로그램과 같은 소프트웨어는 일상생활에서 직접 볼 수 있는 것이 아니라 컴퓨터나 핸드폰 같은 하드웨어를 통해서만 프로그램을 볼 수 있습니다. 즉 무형의 소프트웨어는 유형의 하드웨어를 이용해야만 소프트웨어인 프로그램에 인간의 명령을 전달할 수 있고, 프로그램이 수행한 결과를 하드웨어를 통해서만 인간이 확인할 수 있습니다. 일종에 하드웨어는 인간과 소프트웨어를 연결하는 매개체 같은 역할을 담당하는 것입니다.
따라서 소프트웨어인 프로그램을 만들 때 하드웨어에서 제공하는 기능을 잘 활용하는 것이 하드웨어에서 효율적으로 잘 실행할 수 있는 근본적인 방법입니다. 하지만 모든 소프트웨어가 하드웨어에서 제공하는 기능을 직접 제어(활용)하는 것은 하드웨어 입장에서는 매우 부담되는 일입니다. 그리고 프로그램을 개발하는 개발자 입장에서도 역시 부담이 되는 일입니다.
왜냐하면 프로그래머가 0과 1로 구성된 기계어로 하드웨어를 직접 제어한다는 것은 여간 어려운 일이 아니기 때문입니다. 그리고 설사 제어를 해서 프로그램을 개발했다 하더라도 하나의 컴퓨터(하드웨어)에는 하나의 프로그램(소프트웨어)만 실행되는 것이 아닙니다. 그래서 여러 개의 프로그램들에서 요구하는 자원(CPU, memory 등)들을 적절히 안배하지 않는 한 단 하나의 프로그램도 제대로 실행이 안 될 수 있습니다. 따라서 이러한 문제들을 해결하기 위해서 각 프로그램들을 잘 실행할 수 있도록 관리하는 운영체제(Operating System: OS)가 하드웨어(컴퓨터)에서 실행하고, 각 개별 응용 프로그램들은 운영체제라는 환경에서 실행되는 구조를 갖는 것입니다.
그래서 우리가 PC나 스마트폰에서 많이 사용하는 각종 응용 프로그램이나 앱들은 Windows나 Android, iOS 같은 운영체제에서 실행되고, 운영체제는 노트북이나 PC, 그리고 Samsung Galaxy나 Apple의 iPhone같은 스마트폰 등 하드웨어에서 실행이 됩니다. 즉 응용 프로그램이나 앱은 운영체제에 종속적이며, 운영체제는 하드웨어(PC나 스마트폰 등 디바이스)에 종속적인 것입니다.
그래서 하나의 프로그램을 잘 만들기 위해서는 운영체제와 하드웨어에서 제공하는 기능들을 잘 알아야 합니다. 그리고 대부분의 프로그래밍 언어들은 특정한 환경(운영체제, 하드웨어)에서 실행할 수 있는 프로그램을 쉽게 개발할 목적으로 개발됩니다. 그래서 새로운 프로그래밍 언어가 특정 환경 변화에 따라 또는 더 편리한 기능을 제공하기 위해 속속 등장하는 것입니다. 따라서 프로그램을 만들 때는 실행할 환경과 기능 등을 명확히 파악한 후 프로그래밍 언어를 선택하는 것이 원하는 프로그램을 빨리 개발할 수 있는 방법입니다.
같이 읽으면 좋은 글:
2020/07/15 - [우리의 자세] - 코딩 교육에 임하는 자세
2020/07/16 - [배움의 즐거움] - 산업을 이끄는 주체 하드웨어에서 소프트웨어로 전환되고 있다. 왜?
2020/07/17 - [배움의 즐거움] - 소프트웨어 교육 열풍
2020/07/19 - [배움의 즐거움] - 코딩의 특징에 대해서 알아봅시다.
2020/07/20 - [우리의 자세] - 패턴이나 규칙을 대하는 자세
'IT 이야기' 카테고리의 다른 글
언제 기계학습을 시키고 언제 코딩을 하죠? (0) | 2020.07.24 |
---|---|
코딩의 특징에 대해서 알아봅시다. (0) | 2020.07.19 |
소프트웨어 교육 열풍 (0) | 2020.07.17 |
산업을 이끄는 주체 하드웨어에서 소프트웨어로 전환되고 있다. 왜? (0) | 2020.07.16 |
코딩 교육에 임하는 자세 (0) | 2020.07.15 |
댓글