프로그래밍(Programming)이란?

프로그램밍에 대해서 간단히 설명한다.

프로그래밍이란?

간단히 말해, 프로그래밍은 “컴퓨터에 지시를 쓰는 것"을 의미한다.
PC를 이용하여 컴퓨터에 지시하기 위한 「프로그램」이라고 하는 지시서를 작성한다. 그리고, 그 프로그램을 컴퓨터가 읽어서, 지시된 대로 PC상에서 실행한다고 하는 구조로 되어 있다.
프로그래밍의 본질은 인간이 컴퓨터에 컴퓨터가 이해할 수 있는 말로 명령하는 것으로, 인간만으로는 실현이 어려운 것을 가능하게 해준다는 점에 있다.
프로그래밍은 이미 우리의 친밀한 곳에 많이 존재하고 있어 PC나 스마트폰, 전자 레인지, 요금 계산기(POS), 자동차 등 많이 있는데, 모두 프로그램이 작성되어 들어가 있다.

프로그래밍 언어가 생길 때까지의 역사

프로그래밍 언어가 탄생하기 전부터 인류는 작업을 자동화시키는 기술을 만들어 왔다.
우선, 자동화 기술의 원점으로서는 1801년에 자카드기(Jacquard)가 개발되었다.
이것은 펀치 카드라는 구멍을 여는 것으로 순서를 나타낸 두꺼운 종이를 읽어들여 천을 짜는 직기로, 펀치 카드의 구멍의 위치를 ​​바꾸는 것으로 모양을 바꿀 수도 있다.
그 후에도 펀치 카드를 사용한 해석기관이나 터뷰 레이팅 머신이 개발되어 처리도 고도화해 가고, 컴퓨터의 개발에도 영향을 주었다.
그리고, 1945년에 세계 최초의 컴퓨터 “ENIAC"가 개발된 것에 의해, 프로그래밍의 역사가 시작되었다.

애니악
ENIAC - 이미지 출처: 위키

프로그래밍 언어의 종류

기계어

  • 컴퓨터가 이해할 수 있는 언어.
  • 사람이 작성 소스 코드를 컴퓨터가 알기 쉽게 번역하는 것으로 “0"과 “1"로 표현되는 기계어로 번역된다.
  • “0"과 “1"은 2진수로 표현된 코드를 바이너리 코드라고 하며, 기계어도 그 하나이다.

어셈블리 언어

  • 기계 언어를 사람에게도 이해하기 쉽게 개발된 언어로, 숫자 뿐만 아니라 문자열이나 기호가 사용되고 있다만, 기계어에 가깝다.
  • 번역할 기계를 어셈블러라고 한다.
  • 어셈블리 언어는 나중에 등장하는 고수준 언어와 비교하여 저수준 언어라고도 한다.

고수준 언어

  • 어셈블리 언어보다 인간이 이해하기 쉬워진 언어로 C 언어나 Java 등이 대표적이다.

프로그래밍 언어의 역사

  • 1949년에 기계어와 어셈블리 언어가 등장했다. 그러나 이 언어들은 프로그래밍에 대한 고급 기술이 필요했다. 그 후로 바로 “FORTRAN"이라는 세계 최초의 고수준 언어가 등장하여 오랫동안 사용되었다.
  • 1960년대가 되면 “COBOL"이 사무처리용으로 개발되었다. 보다 인간이 이해하기 쉽도록 영어에 전해져 있기 때문에 프로그래밍 자체의 난이도가 낮아졌다. 현재도 금융계 시스템 등에서 사용되고 있다.
  • 1970년대에 많은 프로그래밍 언어의 원이 된 C언어, 1980년대에는 C언어를 개량한 C++나 Objective-C가 등장하였다.
  • 1990년대에 Python이나 PHP, Ruby등의 스크립트 언어가 등장해, 복잡한 처리를 간단하게 쓸 수가 Web 앱 개발 등, 폭넓은 분야에서 활용되고 있다.
  • 2000년 이후에는 Google사, Apple사, Facebook 등 대기업 IT기업이 새로운 언어를 개발하는 등 용도에 맞게 많은 프로그래밍 언어가 탄생하였다.

프로그래밍 언어가 많이 있는 이유

프로그래밍 언어는 현재 200종류 이상 있는데, 왜 이렇게 많냐면, 프로그래밍 언어도 인간과 같이 진화하기 때문이다.
반드시 새로운 언어가 낡은 언어보다 뛰어나다고 하는 것은 아니지만, 새로운 언어 쪽이 설계가 스마트하게 되어 있는 것이 많아, 코딩하기가 점점 쉬워지고 있는 것이다.

프로그래밍으로 할 수 있는 일

프로그래밍을 배우면 어떤 것을 만들 수 있을까? 구체적으로는 다음과 같은 것이 있다.

웹 앱 개발

웹 앱이란 웹상에서 움직이는 애플리케이션을 가리키며 대표적인 것으로 말하면 Amazon이나 YouTube, Twitter, 쿡 패드 등이 있다. 앱을 다운로드하지 않고도 검색 엔진에서 서비스 웹 페이지를 열면 사용할 수 있다는 것이 큰 특징이다.

웹사이트 제작

홈페이지나 블로그 등도 만들 수 있다. 웹 앱과 혼동되기 쉽고 명확한 정의도 없지만, HTML이나 CSS만으로 간단한 웹 페이지를 만들 수 있는 것이 “웹 사이트"이다.
데이터의 교환이 활발하게 행해지는 복잡한 구조로 되어 있어, 사용자가 능동적으로 조작하는 것은 “웹 앱"이라고 생각하면 알기 쉬울 것이다.

웹 서비스 개발에는 웹 앱 개발에는 Ruby 및 인터넷의 대부분의 웹 사이트에 사용되는 서버 사이드 언어인 PHP 등이 있다. 또한 웹사이트에 동작하게 하는 JavaScript도 필수 언어라고 할 수 있다.

스마트 폰 앱 개발

스마트 폰 단말기에 다운로드하여 사용하는 앱이다. 카카오톡, LINE, Twitter, Instagram 등도 그 중 하나이다.
Apple사가 개발하고 Apple 제품의 개발에는 Swift나 Android 앱의 공식적으로 채용된 개발 언어로도 되어 있는 Kotlin이 대표적이다. 또, Java도 범용성이 높고, 많은 개발로 이용되고 있다.

AI(인공지능) 개발

AI란, 스스로 생각해 움직임으로써, 인간에 가까운 판단이나 분석을 실시하는 컴퓨터로, Siri나 Face ID도 그 하나이다.
데이터 분석을 잘 하는 Python은 AI(인공지능) 분야에서도 인기가 있다.

게임 개발

게임 개발이라고 해도 스마트 폰이나 PC 게임, 가정용 게임 등, 여러가지 단말이 있는데, 그로 인해 사용하는 언어나 필요한 스킬도 달라서, 사전에 조사할 필요가 있다.
예를 들어, Windows에서 플레이하는 게임에는 Microsoft사가 개발한 C#이 많이 사용되고 있다.

시스템 개발

시스템 개발은 가전제품이나 통신기기 등의 전자기기를 제어하는 ​​시스템이나 은행에 있어서의 돈의 관리나 부동산에 있어서의 물건의 관리 등의 업무 시스템의 구조를 가리킨다.

위의 것을 만들려면 프로그래밍 언어를 사용하여 프로그램을 작성해야 하지만, 프로그래밍 언어라고 해도 200종류 이상 존재하고 각각 개발할 수 있는 것에 차이가 있다.

프로그래밍을 배웠을 때의 이점

고수입을 목표로 할 수 있다.

최근에 개발자의 대우와 처우는 예전에 비해 많아 좋아졌다. 일반 직종보다 높다는 점에서도 큰 메리트가 되었다. 경험이나 스킬에 따라 보상도 크게 바뀌기 때문에 개발자로서의 스킬을 연마해 나가면 더 많은 수입을 얻을 수 있을 것이다.
또, 개발자의 구인에 대해서는 개발 업무에 계속 늘어나는 있지만, IT 업계의 인력 부족이 심각해 지고 있어, 앞으로도 점점 엔지니어의 수요는 높아질 것으로 예상된다. 일이 없어지는 사태에는 우선하지 않을 것이다.

자유롭게 업무을 할 수 있다.

개발자는 다른 직종보다 자유를 경우로운 경향이 있다. 리모트 워크를 하거나 프리랜서가 되거나 일하는 장소나 일하는 방법 등도 스스로 선택할 수 있다는 점에서는 매력적이다.

로지컬 싱킹을 익힐 수 있다.

로지컬 싱킹(logical thinking)은 사물을 체계적으로 정리함으로써 근도를 세우고 결론을 도출하는 사고법을 말한다.
로지컬 싱킹을 익히면 비즈니스에서 두어도 물건을 냉정하게 파악해 최적해나 문제 해결을 재빨리 실시할 수 있는 등 업무 효율을 들 수 있다. 이 로지컬 싱킹은 비즈니스 이외에서도 사람에게 설명할 때나 상대가 안고 있는 문제를 이해해 해결할 때 등에 모든 경우에서 도움이 된다.
왜 프로그래밍을 배우는 것으로 로지컬 싱킹이 익힐 수 있게 되냐면, PC는 인간과 달리 무엇이든 이해해 주지 않는다. 개발을 할 때는 프로그래밍 언어를 사용하여 로지컬에게 지시하지 않으면 전달되지 않기에, 그 과정에서 로지컬 싱킹을 익힐 수 있다.

컴파일러(Complier)와 인터프리터(Interpreter)

컴파일러

  • 고급 언어로 쓰여진 프로그램이 컴퓨터에서 수행되기 위해서는 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주어야 한다.
  • 이러한 수행을 하는 프로그램을 컴파일러라고 한다.
  • 번역과 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 산이 오래 거린다.
  • 한번 번역을 한 후에는 다시 번역을 하지 않아 프로그램 구동 속도가 빠르다.

인터프리터

  • 소스 프로그램을 한번 기계어로 변환시키는 컴파일러와는 달리 프로그램을 한 라인씩 기계어로 해석해서 실행하는 언어 처리 프로그램이다.
  • 라인 단위로 번역하여 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다.
  • 한 단계씩 테스트와 수정을 하면서 진행시켜 나가는 대화형 언어에 적합하다.
  • 실행 시간이 길어 속도가 느리다는 단점이 있다.
  • 프로그램이 직접 실행되므로 목적 프로그램(Object Program)이 생성되지 않는다.



최종 수정 : 2022-12-03