# 자바 프로그래밍이란?
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://www.youtube.com/embed/c2SaqgdfW1g" frameborder="0" allowfullscreen></iframe>
</div>
## 들어가며
---
다들 **프로그래밍**이 *무엇*인지 알고계신가요? 덧붙여서, 프로그래밍은 *왜* 배우시려 하시나요? 잘 몰라도 괜찮습니다! 어떠한 이유이든 상관없습니다! 우리는 잘 모르기에 배우는 것이고. 배우면서 새로운 이유를 만들어 나갈 수 있기 때문입니다.
프로그래밍이란 무엇일까요? 자기만의 생각으로 각자 머릿속에 대답을 그려봅시다.

## 프로그래밍이란
---
저는 이렇게 정의하겠습니다. 프로그래밍(programming)이란, *컴퓨터에게 어떠한 일을 수행*시키기 위해, **프로그램**을 만드는 것입니다. 어떻습니까? 느낌이 오시나요? (여러분의 정의 또한 궁금하네요)

그런데 왜 프로그램을 만들어야 할까요? 그냥 내가 일하면 안 되나요?
## 왜 필요할까
---
*컴퓨터는 빠르고, 지치지 않습니다*. 이와 반면 우리는, 상대적으로 느리고 또 반복적인 일을 싫어하죠. 어떻습니까? 프로그래밍을 배워야겠다는 마음이 생기지 않습니까?

## 어떻게 일을 시킬까
---
그렇다면 어떻게 컴퓨터에게 일을 시킬 수 있을까요? 다시 말해, 어떻게 프로그래밍을 할 수 있을까요? 그냥 컴퓨터한테 ‘맛집을 찾아줘’ 라고 말하면 컴퓨터가 이를 듣고 이해해서 맛집을 찾아줍니까? 그렇지 않죠? 사람과 컴퓨터는 사용하는 *언어가 달라, 직접적인 명령을 할 수 없습니다*.

> 컴퓨터는 `0`과 `1`만으로 구성된 **바이너리**(binary) 언어를 사용합니다.
## 자바의 등장
---
다시 돌아와서, 그럼 어떻게 컴퓨터에게 일을 시킬 수 있을까요? 이를 고민하던 개발자들은 *자바를 통해 문제를 해결*합니다.

자바는, 컴퓨터에게 시킬 명령들을 컴퓨터가 *이해할 수 있게 하고, 또 수행할 수 있게* 도와줍니다. 이렇게 자바 언어로 컴퓨터에게 일을 시키는 과정, 이를 자바 프로그래밍이라고 합니다.
## 자바 프로그래밍의 과정
---
그럼 계속해서 자바 프로그래밍의 과정에 대해서 조금 더 이야기해 볼까요?

먼저 개발자(developer)는 컴퓨터에게 시킬 일들을 자바로 작성합니다. 이렇게 작성된 코드를 **소스코드**(source code)라고 하는데, 소스코드는 **컴파일러**(compiler)라는 번역기를 통해 **기계어**로 번역됩니다. 이렇게번역된 기계어는 비로소 컴퓨터에게 이해될 수 있고, 또 수행될 수 있게 됩니다. 이러한 일련의 과정을 자바 프로그래밍이라고 하는데요.
> 특별히 자바 코드가 기계어로 번역되는 과정, 이를 **컴파일링** 이라고 합니다.
## 요약
---
1. 프로그래밍이란, 프로그램을 만들어 컴퓨터에게 일을 시키는 것이다.
2. 바이너리 언어란, 0과 1만으로 이루어진 언어이다.
3. 자바를 통해 프로그램을 만들 수 있다.
4. 컴파일링이란, 소스코드가 기계어로 번역되는 작업이다.
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5ca340194364fb001479952b" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5ca340194364fb001479952b/q/1?method=iframe"></iframe></div></div>