1. 컴퓨터 프로그래밍#

1.1. 컴퓨터 프로그램#

컴퓨터 프로그램computer program은 주어진 문제를 해결하기 위해 컴퓨터가 수행해야 할 작업 목록을 특정 프로그래밍 언어로 작성한 명령문들의 목록이다. 소프트웨어software는 일반적으로 컴퓨터 프로그램을 가리킨다.

컴퓨터 프로그램의 핵심은 명령문 구성방식을 결정하는 알고리즘algorithm이며, 사용되는 알고리즘에 따라 결과는 같지만 내부적으로는 다르게 작동하는 프로그램이 구현된다. 또한 동일한 알고리즘이더라도 사용하는 프로그래밍 언어에 따라 다르게 기본적으로 다르게 구현해야 한다.

컴퓨터 프로그래밍computer programming은 주어진 과제를 해결하는 알고리즘을 컴퓨터 프로그램으로 구현하는 과정을 가리킨다. 일상적으로 프로그래밍 또는 코딩coding이라 불린다. 다만 프로그래밍은 전문 프로그래머programmer의 직업과 관련된 개념으로, 코딩은 “코드를 작성한다”라는 일의 의미로 구분해서 사용하기도 한다.

소프트웨어, 프로그램, 소스 코드, 코드, 명령문

소프트웨어, 프로그램, 소스 코드(원시 코드), 코드, 명령문 등이 특별한 구분 없이 사용되곤 한다. 언급된 다섯 개념을 엄밀히 구분하는 기준은 없지만 일반적인 용도를 살펴 보았을 때 다음과 같이 구분할 수 있다.

  • 소프트웨어: 컴퓨터 프로그램을 일반적으로 가리키는 표현

  • 프로그램: 특정 문제를 해결하는 하나의 컴퓨터 프로그램.

  • 소스 코드: 컴퓨터 프로그램 구현에 사용된 명령문 목록 또는 명령문 목록이 저장된 텍스트 파일

  • 코드: 소스 코드의 일부 또는 전체.

  • 명령문: 소스 코드의 구성 요소 또는 일부.

1.2. 프로그래밍 언어#

프로그래밍 언어programming language는 컴퓨터 프로그램을 구현할 때 사용하는 언어이다. 다양한 프로그래밍 언어가 있으며, 일반적으로 저수준 언어와 고수준 언어로 나눈다. 저수준 언어는 기계어machine language, 어셈블리어assembly language 등 컴퓨터가 이해하기 쉬운, 하지만 사람은 이해하기 어려운 명령문을 사용하는 프로그래밍 언어를 가리킨다. 반면에 고수준 언어high-level language는 사람이 이해하기 쉬운 명령문을 사용하는 프로그래밍 언어다. 파이썬python, C, C++, C#, 자바Java, 자바스크립트Javascript 등 잘 알려진 대부분의 프로그래밍 언어가 고수준 언어다. 고수준 언어로 만들어진 프로그램은 번역기 또는 실행기를 통해 기계어로 변환되어야만 컴퓨터에서 실행될 수 있다.

보통 컴파일러compiler로 불리는 번역기는 특정 프로그래밍 언어를 다른 프로그래밍 언어로 변환하는 언어 번역 프로그램을 말한다. 변환 과정을 컴파일compilation이라 하며, 주로 고수준 언어를 컴퓨터가 이해할 수 있는 기계어로 변역하는 데에 사용된다. C, C++, C#, 자바 등이 번역기를 사용하는 대표적인 프로그래밍 언어이며, 해당 언어로 구현된 프로그램은 먼저 소스코드 전체가 기계어로 변역된 후에야 컴퓨터로 실행될 수 있다.

번역기와 달리 실행기interpreter(인터프리터)는 소스코드를 한 줄씩 해석하여 컴퓨터에 의해 바로 실행되도록 하는 소프트웨어다. 파이썬, 루비, 자바스크립트, R 등이 실행기를 사용하는 고수준 언어이며, 코드를 한 줄씩 실행한다는 의미에서 대화식 프로그래밍interactive programming을 지원한다.

1.3. 파이썬#

파이썬Python은 실행기를 사용하는 고수준 프로그래밍 언어다. 분야와 영역에 상관없이 활용될 수 있는 범용 프로그래밍 언어general-purpose programming language로 1991년 귀도 반 로섬Guido van Rossum에 의해 소개되었다. 대표적으로 데이터 분석, 머신러닝, 데이터베이스, 웹 프레임워크, 게임 프로그래밍 등에서 유용하게 활용되는 다양한 라이브러리를 제공한다. 프로그래밍 언어의 라이브러리는 필요에 따라 언제든 활용할 수 있는 코드들의 모음집이다. 파이썬이 제공하는 강력한 라이브러리는 더 적은 코드로 더 많은 프로그램을 효율적으로 구현할 수 있도록 도와준다.

  • 데이터 분석: SciPy, Numpy, Pandas, Matplotlib

  • 머신러닝: Scikit-learn, TensorFlow, Keras, PyTorch

  • 데이터베이스: PyMySQL, mysql-connector-python

  • 웹 프레임워크: Django, Flask, Pylongs, Pyramid, web2py

  • 게임 프로그래밍: Turtle, PyGame

도메인 특화 언어

범용 프로그래밍 언어와는 다르게 특정 영역(도메인)의 문제 해결에만 사용되는 프로그래밍 언어를 도메인 특화 언어domain-specific language라 부른다. 웹페이지 구현에 사용되는 HTML, CSS 등이 대표적인 도메인 특화 언어다.

파이썬은 영어 문장과 매우 유사하며, 간결한 문법을 사용한다. 예를 들어, 아래 파이썬 코드는 10과 19 사이의 숫자 중에서 13을 입력하면 '맞았습니다'를, 아니면 '틀렸습니다'를 출력하는 숫자맞히기 게임을 구현한다.

print("숫자맞히기 게임에 환영합니다.")

secret = '13'
guess = input("10부터 19 사이의 숫자 하나를 입력하세요: ")

if guess == secret:
    print("맞았습니다!")
else:
    print("틀렸습니다!")

위 파이썬 코드의 의미를 프로그래밍에 대한 경험이 전혀 없는 사람도 대략적으로 유추할 수 있다. 이렇듯 파이썬 언어는 영어와 유사하여 입문자 교육용으로도 많이 사용된다.

파이썬은 OOP, 즉 객체 지향 프로그래밍Object-Oriented Programming을 지원한다. OOP는 객체들 사이의 유기적 관계를 중시하는 프로그래밍 기법이다. 파이썬이 다루는 모든 대상은 객체로 설계되어 있어서 OOP를 쉽게 적용할 수 있다. 이런 이유로 데이터 분석, 머신러닝, 데이터베이스, 웹 프레임워크, 게임 등 다양한 분야에서 유용하게 활용된다. 파이썬 이외에 C++, C#, 자바, 자바스크립트 등도 OOP를 지원한다.

절차형 프로그래밍

OOP와 대비하여 보통 문제 해결과정의 순차적 묘사를 중시하는 절차형 프로그래밍procedural programming을 언급한다. 대표적인 절차형 프로그래밍 언어로 C와 HTML이 있다.

지금까지 살펴본 파이썬의 특징으로 인해 파이썬의 인기는 날이 갈수록 높아지고 있다. 프로그래밍 언어들의 인기도를 측정하는 TIOBE 인덱스에 따르면, 2024년 2월 기준 가장 인기있는 프로그래밍 언어는 파이썬이다.