프로그래밍웹 교과서
이 페이지의 목차
1단원 · 3차시

용도에 맞는 언어 고르기

개발 분야용도언어 선택 기준생태계와 라이브러리

학습 목표

  • 개발 분야별로 주로 쓰이는 프로그래밍 언어를 조사한다.
  • 주어진 개발 상황에 알맞은 언어를 근거를 들어 선택한다.

관련 성취기준

  • 프그01-01

    각종 프로그래밍 언어의 종류와 특징을 이해하고, 개발 분야와 용도에 따라 적절한 프로그래밍 언어를 선택할 수 있다.

생각 열기 — 공구함에서 무엇을 꺼낼까

벽에 못을 박아야 한다. 공구함에는 망치, 드라이버, 렌치, 톱이 있다. 무엇을 꺼내겠는가. 이 질문에는 답이 있다. 그런데 “가장 좋은 공구는 무엇인가”라는 질문에는 답이 없다.

좋은 언어가 아니라 알맞은 언어

“어떤 언어가 가장 좋은가”는 잘못된 질문이다. 언어마다 잘 하도록 설계된 일이 다르기 때문이다. C는 하드웨어를 세밀하게 다루도록 만들어졌고, Python은 사람이 빠르게 적고 읽도록 만들어졌다. 이 둘을 한 줄로 세워 순위를 매길 수 없다.

올바른 질문은 **“이 일에 알맞은 언어는 무엇인가”**다. 그리고 이 질문에는 대체로 답이 있다. 답을 찾는 순서가 있기 때문이다.

1. 실행 환경이 언어를 정해 주는가?예정해진 언어를 쓴다.브라우저 → JavaScript · iOS 앱 → Swift아니오2. 하드웨어를 직접 다루거나 속도가 핵심인가?예C, C++, Rust 같은 언어를 쓴다.운영체제 · 장치 드라이버 · 임베디드아니오3. 이미 만들어진 라이브러리가 결정적인가?예그 라이브러리가 있는 언어를 쓴다.데이터 분석 · 인공지능 → Python아니오함께 일하는 사람들이 잘 아는언어를 쓴다.여기까지 오면 선택의 폭이 넓다.유지 보수가 기준이 된다.
언어를 고를 때 따져 보는 순서. 위쪽 질문이 아래쪽 질문보다 강하게 답을 정한다.자체 제작

첫째 기준 — 실행 환경이 언어를 정해 준다

가장 강한 제약은 프로그램이 실행될 자리다. 이 조건은 선택을 아예 없애 버리는 경우가 많다.

웹 브라우저 안에서 화면을 움직이는 프로그램은 JavaScript로 쓴다. 다른 언어가 더 마음에 들어도 소용이 없다. 브라우저가 직접 실행하는 언어가 JavaScript뿐이기 때문이다. iOS 앱은 Swift, 안드로이드 앱은 주로 Kotlin으로 만든다. 각 회사가 제공하는 개발 도구와 규칙이 그 언어를 중심으로 짜여 있다.

둘째 기준 — 성능과 하드웨어 제어

실행 환경이 언어를 정해 주지 않으면 다음으로 성능을 따진다. 여기서 성능은 막연한 “빠름”이 아니라 두 가지 구체적인 요구다.

첫째는 하드웨어를 직접 다뤄야 하는 경우다. 운영체제, 장치 드라이버, 센서를 붙인 소형 기기의 프로그램이 여기 든다. 메모리의 몇 번째 자리에 어떤 값을 넣을지까지 지시해야 하므로 C나 C++처럼 그것을 허용하는 언어가 필요하다.

둘째는 정해진 시간 안에 반드시 끝나야 하는 경우다. 자동차 제어 장치나 실시간 영상 처리가 그렇다. 실행 중에 번역까지 하는 인터프리터 방식은 이런 일에 불리하다.

셋째 기준 — 라이브러리와 생태계

성능이 발목을 잡지 않는다면, 그다음은 이미 만들어져 있는 것을 본다.

라이브러리(library) — 자주 쓰는 기능을 미리 만들어 모아 둔 코드 묶음는 남이 만들어 둔 기능을 가져다 쓰는 장치다. 표를 읽고 통계를 내는 일, 사진의 크기를 바꾸는 일, 인공지능 모형을 학습시키는 일은 이미 잘 만들어진 라이브러리가 있다. 그것을 쓰면 몇 줄로 끝나는 일을 처음부터 만들면 몇 달이 걸린다.

라이브러리는 언어에 딸려 있다. 그래서 쓰고 싶은 라이브러리가 언어를 결정한다. 데이터 분석과 인공지능 분야에서 Python이 널리 쓰이는 이유가 여기 있다. Python이 계산을 특히 빠르게 하는 언어여서가 아니라, 그 분야의 라이브러리가 Python을 중심으로 쌓였기 때문이다.

라이브러리, 개발 도구, 문서, 물어볼 수 있는 사람까지 한데 모인 것을 그 언어의 생태계라 부른다. 언어를 고르는 일은 사실 생태계를 고르는 일에 가깝다.

넷째 기준 — 함께 일하는 사람과 나중에 고칠 사람

앞의 세 기준을 통과하면 선택의 폭이 넓어진다. 이때 남는 기준은 사람이다.

프로그램은 한 번 만들고 끝나지 않는다. 고치고 기능을 더하며 오래 쓰인다. 그 일을 다른 사람이, 몇 년 뒤에 하게 된다. 팀에서 아무도 모르는 언어를 혼자 골라 쓰면 그 코드는 고칠 사람이 없어 버려진다. 반대로 조금 불편한 언어라도 모두가 읽을 수 있으면 오래 살아남는다.

  • 질문 1

    어디서 실행되는가

    브라우저·휴대전화·서버·소형 기기. 실행 환경이 언어를 정해 주는 경우가 가장 많다.

  • 질문 2

    얼마나 빨라야 하는가

    하드웨어를 직접 다루거나 시간 제한이 엄격하면 C 계열이 필요하다.

  • 질문 3

    무엇을 가져다 쓸 수 있는가

    쓰려는 라이브러리가 있는 언어를 고른다. 처음부터 만들 일을 줄인다.

  • 질문 4

    누가 나중에 고치는가

    함께 일하는 사람이 읽을 수 있는 언어여야 프로그램이 오래 쓰인다.

빈칸 채우기언어를 고르는 네 기준

가장 먼저 따지는 것은 프로그램이 돌아갈 1이다. 이 조건이 느슨하면 그다음으로 2과 하드웨어 제어, 이미 만들어져 있는 3와 생태계, 마지막으로 함께 일하고 나중에 고칠 4을 본다.

정답 보기
  1. 실행 환경
  2. 성능
  3. 라이브러리
  4. 사람

분야별로 주로 쓰이는 언어

아래는 분야마다 흔히 쓰이는 언어를 정리한 것이다. “그 언어만 쓴다”는 뜻이 아니다. 그 분야의 생태계가 두껍게 쌓인 쪽을 적었다.

개발 분야와 주로 쓰이는 언어
개발 분야주로 쓰이는 언어그 언어가 쓰이는 이유
웹 화면(프런트엔드)JavaScript, TypeScript브라우저가 직접 실행하는 언어다
웹 서버(백엔드)Java, Python, JavaScript, Go선택의 폭이 넓다. 팀과 라이브러리가 기준이 된다
안드로이드 앱Kotlin, Java개발 도구와 공식 문서가 이 언어를 중심으로 갖춰져 있다
iOS 앱Swift같은 이유로 사실상 정해져 있다
운영체제 · 장치 드라이버C, C++, Rust메모리와 하드웨어를 직접 다룰 수 있다
소형 기기 · 임베디드C, C++메모리가 아주 적은 환경에서도 돌아간다
게임C++, C#성능이 중요하고, 게임 개발 도구가 이 언어를 쓴다
데이터 분석 · 인공지능Python, R분석과 학습에 쓰는 라이브러리가 여기 쌓여 있다
업무 자동화 · 시험 스크립트Python적는 양이 적고 결과를 바로 확인할 수 있다

상황에 맞는 언어 고르기

분류하기이 상황에서는 어느 쪽이 알맞은가

카드를 누른 뒤, 넣을 통을 누른다. 통 안의 카드를 누르면 다시 나온다.

C 계열

Python

활동

토의

세 과제에 알맞은 언어와 그 근거 대기

약 20분

모둠별로 아래 세 과제를 읽고, 각각 어떤 언어로 만들 것인지와 그 근거를 정한다. 근거에는 앞의 네 가지 질문 중 무엇을 적용했는지 반드시 밝힌다.

  1. 과제 A — 학교 누리집에 접속하면 화면에서 급식 메뉴가 요일에 따라 바뀌어 보이게 한다.
  2. 과제 B — 교실 온도를 센서로 5분마다 재서, 28도를 넘으면 선풍기를 켜는 소형 기기를 만든다.
  3. 과제 C — 지난 3년간 우리 반 체육 기록 표를 읽어 종목별 평균과 추세 그래프를 낸다.

정리 형식은 다음과 같이 한다.

과제 고른 언어 적용한 질문 근거 한 문장
A

모둠별 발표 뒤, 다른 언어를 고른 모둠이 있으면 어느 쪽이 틀렸는지 따지지 않는다. 대신 두 답이 각각 어떤 조건을 더 무겁게 봤는지 확인한다. 언어 선택에는 하나의 정답만 있는 것이 아니라, 밝힐 수 있는 근거가 있을 뿐이다.

개념 확인 문제

보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.

웹 브라우저 화면에서 직접 동작하는 프로그램을 JavaScript로 만드는 가장 직접적인 이유는?프그01-01

센서로 온도를 재서 값에 따라 장치를 켜고 끄는 소형 기기의 프로그램에 C가 흔히 쓰이는 이유로 알맞은 것은?프그01-01

데이터 분석 분야에서 Python이 널리 쓰이는 이유를 가장 정확하게 설명한 것은?프그01-01

[OX] 어떤 프로그램이 느릴 때 가장 먼저 검토해야 할 것은 더 빠른 프로그래밍 언어로 바꾸는 일이다.프그01-01

팀에서 아무도 모르는 언어를 혼자 골라 프로그램을 만들면 생기는 가장 큰 문제는?프그01-01

더 알아보기

심화한 프로그램에 여러 언어를 함께 쓴다

실제 개발에서는 언어를 하나만 고르지 않는 일이 많다. 예를 들어 데이터 분석 프로그램의 겉은 Python으로 쓰고, 그 안에서 가장 무거운 계산만 C로 만든 부분을 불러 쓴다. 널리 쓰이는 Python 수치 계산 라이브러리들이 실제로 이런 구조다. 적기 편한 언어와 빠른 언어를 한 프로그램 안에서 나눠 쓰는 것이다. 그래서 “Python은 느리다”는 말도, “C로 다시 써야 한다”는 말도 늘 맞지는 않다.

진로언어를 몇 개나 알아야 하는가

직업으로 프로그램을 만드는 사람들도 모든 언어를 알지는 않는다. 대신 하나를 깊게 익힌 뒤 필요할 때 다른 언어로 옮겨 간다. 변수·조건·반복·함수처럼 언어를 넘어 같은 개념이 2단원의 내용이고, 그것을 한 언어로 확실히 익히면 다른 언어는 문법 차이만 익히는 일이 된다. 이 웹 교과서가 Python과 C를 나란히 보여 주는 이유도 같은 개념이 표기만 달리 나타나는 것을 확인하게 하려는 것이다.

역사70년 넘게 쓰이는 언어도 있다

1959년에 만들어진 COBOL은 은행과 행정 기관의 업무 처리 프로그램에 쓰였다. 지금도 일부 금융 전산 시스템이 이 언어로 만든 프로그램을 돌린다. 더 나은 언어가 없어서가 아니라, 수십 년간 문제없이 돌아가는 프로그램을 다시 만드는 일이 위험하고 비싸기 때문이다. 언어 선택은 몇십 년짜리 결정이 될 수 있다는 사실을 보여 주는 예다.

이어지는 학습

이 차시를 이해하려면 다음을 먼저 알아야 한다.

  • 2차시의 번역 방식별 특징 — 프로그래밍 프그01-01

교과서에서 찾기

교과서해당 위치쪽수
성림출판(Python)프로그래밍의 개요 › 01 프로그래밍 언어의 종류와 특징12쪽
씨마스커뮤니케이션(Python)프로그래밍 개요 › 1 프로그래밍 언어의 종류와 특징14쪽
삼양미디어(Python)프로그래밍의 개요 › 01 프로그래밍 언어12쪽
삼양미디어(C)프로그래밍의 개요 › 01 프로그래밍 언어12쪽
씨마스(C)프로그래밍의 개요 › 1 프로그래밍 언어의 종류와 특징12쪽
웅보출판사(C)프로그래밍의 개요 › Chapter 01 프로그래밍 언어의 종류와 특징11쪽