프로그래밍강의 (2)

지난 시간에는 프로그래밍이란 무엇인지에 대해 간략하게 설명을 해보았습니다.

너무 지루한 이론적인 이야기 보다는 개발자로 개발을 하면서 느낌점을 바탕으로 정의를 내렸었는데

이해하는데 도움이 되었으리라 생각합니다. 

 

이번 시간에는 무작정 따라하기 시간을 가져보겠습니다.

우선 여러분들 컴퓨터에 아래와 같은 것들을 준비해야 합니다.

 

1. JDK (Java Development Kit)

2. 이클립스 IDE (Integrated Development Environment)

 

설치하기 전에 이친구들이 뭔지부터 알고 설치를 해야겠죠? 해킹프로그램이면 큰 일 날 테니까요.

우선, JDK라는 친구는 "자바 개발 툴" 줄여서 "자개툴"이라는 녀석이죠. 자바 언어 사전이라고 생각하시면 됩니다.

이 녀석이 있어야 여러분들이 작성한 자바소스코드를 컴퓨터가 이해하는 언어로 변경이 가능하고,

자바 프로그램을 실행시킬 수가 있습니다. 태생부터 현재까지 무료입니다. (Java 8의 특정 버전 부터는 유료라이센스로 전환되었습니다)

 

다음으로 이클립스라는 친구는 여러분들이 개발을 좀 더 쉽게 할 수 있도록 하기위해

오픈소스로 공개된 무료로 사용가능"통합 개발 환경"을 제공하는 도구입니다.

개발자가 소설작가라면 이클립스 IDE는 워드프로세서와 같은 것입니다.

 

 

자, 그럼 설치를 하러 가볼까요??

 

1. JDK 8 (Java SE Development Kit 8) 설치 -> 다운로드 링크

-> 혹시 다운로드 링크 들어갔는데 cookie 관련 아래와 같은 창이 뜬다면 그냥 I agree 하지마시고 아래처럼 따라해주세요.

1. 주황색 버튼 클릭
2. Required Cookies 만 선택되도록 한뒤 Submit Preferences  선택
3. Close 버튼 선택
4. Accept License Agreement 선택 후 본인 운영체제에 맞는 버전을 다운로드

2. 이클립스(개발툴, IDE) 설치 -> 다운로드 링크

 

1. Download 선택

 

3. 이제 다운로드 받은 JDK 설치 파일을 "더블클릭"해서 설치해주세요.

-> 설치 시 세팅(설치 경로 변경 등)은 하지말고 기본값 그대로 Next, Next 하시면 됩니다.

 

설치가 완료되면 윈도우에서는 cmd창, Mac에서는 터미널창에서 아래와 같이 자바의 버전을 확인하는 명령어를 입력해보세요.

java -version

결과는 아래처럼 나와야 합니다. 물론 버전을 나타내는 숫자는 다를 수 있습니다.

자바 버전 확인

여기서 확인할 것은 세 번 째 줄에 HotSpot이라고 뜨는지가 중요합니다.

(자바는 실행환경만 제공하는 JRE와 개발환경까지 제공하는 JDK가 있습니다.

저희는 JDK를 설치한 것이고 JDK의 버전에는 저렇게 HotSpot Server VM이라는 게 출력됩니다.)

 

여기까지 잘 따라오셨다면 이제 이클립스를 설치해주세요.

이클립스 설치 화면

우리는 이클립스 인스톨러에서 위에서 두 번째 꺼를 선택해서 설치할겁니다. 

설치 위치는 기본적으로 세팅이 되어있습니다. 그냥 INSTALL 버튼을 꾹 눌러주시면 됩니다.

만약 Java 경로가 나오지 않는다면 Java 설치가 제대로 안되었다는 의미이므로 확인을 해보셔야 합니다.

 

설치가 진행되고 있습니다. 

이런 저런 파일들을 인터넷에서 다운로드 받아가면서 설치를 합니다.

 

중간에 이런 라이센스 동의 팝업창이 뜨면 "Remember accepted licenses"에 체크해주고 "Accept"버튼을 눌러줍니다.

여기도 마찬가지입니다. "Remember choice"에 체크해주시고, "Accept" 고고싱~

이 화면은 윈도우 운영체제에서는 안나올 수 있으니, "이런 화면은 왜 안나오지?"하실 필요가 없습니다.

윈도우에서는 그냥 next, next 하시면 될겁니다.

여기서도 체크해주고 "Accept selected" 고고싱~

설치가 완료되면 Launch 버튼이 활성화됩니다.

이클립스 설치 완료 화면

이제 Launch 버튼을 눌러 실행을 시켜보도록 하겠습니다.

workspace 경로 설정창

실행하면 위와 같은 창이 뜨는데 무시하고 그냥 "Launch" 버튼을 클릭합니다. (경로는 다를 수 있습니다.)

welcome 창

welcome 창이 떠있습니다. 이런저런 메뉴가 보이고 바로 프로젝트를 만들어 볼 수 있는 메뉴도 보입니다.

이제 간단한 프로젝트를 하나 만들어 보겠습니다.

바로 "안녕 프로젝트"입니다.

welcome 창의 우측에서 "Tutorials"를 선택합니다.

"Create a Hello World application"을 선택합니다.

뭔가 바둑판처럼 생긴 복잡해보이는 화면이 나왔는데 신경끄고 오른쪽에 보이는 "웰컴창"만 보시면 됩니다.

따라하기처럼 되어있는데 버튼만 누르면 알아서 이것저것 해줍니다.

여기서 중요한 것은 순서입니다.

Hello World 애플리케이션을 만들기 위한 작업 순서를 한번 연습하고

다음에 다른 애플리케이션을 만들 때 동일한 순서로 작업을 진행하면 됩니다.

 

가운데 파란색으로 "Click to Begin"을 클릭해봅시다.

바로 아래쪽에 있는 "Open the Java perspective" 메뉴가 열리면서 이런저런 설명이 또 나옵니다.

설명은 어렵지 않으니 한번 읽어보고, "Click to perform"을 클릭합니다.

Java Perspective가 선택됨

뭔가 실행하는 듯 하더니 이클립스 창 우상단에 선택된 아이콘이 변경되었습니다.

원래 커피콩 모양이 있는 아이콘이 선택되어있었는데, 이제 J라는 글자가 있는 아이콘이 선택되어져 있네요.

그리고 웰컴창에서는 다음 단계인 "Create a Java project" 메뉴가 열렸습니다.

설명을 한번 읽어보고 또 "Click to perform" 을 클릭합니다.

자바 프로젝트 생성창

자바 프로젝트 생성창이 떴는데 여기서 "Project name"만 입력해주고 "Finish"버튼을 클릭합니다.

좌측의 "Project Explorer" 뷰에 입력만 프로젝트명이 보이는지 확인합니다.

생성된 HelloWorld 프로젝트

이제 다음 단계인 "Create your HelloWorld class" 를 진행합니다.

설명에 있는대로 따라하거나 "Click to perform"을 클릭합니다.

HelloWorld 클래스 생성창

클래스 생성창이 뜨는데 여기서는 "Name""HelloWorld" 입력 후 아래쪽에 "public static void main(String[] args)" 옆의 체크박스를 체크하고 "Finish" 합니다.

생성된 HelloWorld 클래스

HelloWorld 클래스가 생성되어 좌측의 Package Explorer 에도 파일이 생성된 것을 확인할 수 있고,

가운데 텅텅 비어있던 창에도 뭔가가 나타났습니다. 

이것이 바로 자바 문법에 기초한 소스코드입니다.

자, 이제 처음으로 소스코드를 작성해볼 차례입니다.

웰컴창의 설명대로 아래처럼 출력문을 하나 작성해 주세요.

Hello world! 출력문 작성

위 처럼 한줄을 추가하고 저장합니다.

이제 마지막으로 우리가 작성한 코드를 실행해보겠습니다.

웰컴창 마지막 단계의 설명을 따라서 실행해봅니다.

HelloWorld 실행하기
HelloWorld 실행 결과

HelloWorld에 작성한 출력문에 따라 그대로 출력되는 것을 확인할 수 있습니다.

여기까지가 HelloWorld 튜토리얼의 끝입니다.

 

우리는 하나만 더 해보죠.

System.out.println("Hello world!");

여기서 "Hello world!""안녕 프로젝트 성공" 으로 바꿔서 출력할겁니다.

아래처럼 변경해주시면 됩니다.

System.out.println("안녕 프로젝트 성공");

이제 다시 실행해보세요. 

아래처럼 결과가 잘 나오면 됩니다. 

 

여기까지 잘 따라 오셨습니다.

여러분은 이제 개발자가 되었습니다. 

 

이번 시간에는 JDK 설치와 이클립스 IDE 설치 그리고 헬로월드 애플리케이션 만들기 까지

무작정 따라해보는 시간을 가졌습니다.

이제 개발을 위한 기본적인 준비는 모두 끝났습니다.

 

다음 시간부터는 자바언어를 이용하여 간단한 애플리케이션을 직접 만들어보는 시간을 가지도록 하겠습니다.

 

 

프로그래밍 소스 코드 일부

서문

나는 이 글을 쓰는 지금 7년차 자바 백엔드 개발자이다.

나는 자바를 제대로 공부하지도 않고 개발자가 되었고, 개발자가 된지 5년이 지나서야 책을 읽어봤다.

수많은 책들이 있었고 그 중 제일 유명한 남궁성님의 책과 윤성우님의  책을 사서 훑어보았다.

책은 너무 두꺼웠고 다시금 까먹고 있던 기초지식을 확인하는 기회가 되었다.

그러다가 한 학생을 가르치게 되었는데 비전공자라 책의 내용을 이해하는데 힘들어했다.

언젠간 나도 책을 내봐야지라는 생각을 가지고 있던터라 이참에 책의 기초가 될만한 강의를 여기서 해볼까 한다.

일반인들, 개발자가 되려는 비전공자들, 그리고 어린 학생들이 읽어도 쉽게 이해할 수 있는 내용으로 강의를 하려 한다.

내 아이가 나중에 커서도 자바가 많이 사용된다면 읽어보도록 추천할 수 있을 정도의 퀄리티를 갖는 내용으로 말이다.

그래서 어떻게 쉽게 전달할 수 있을지 많은 고민을 해야할 것이기에 강의가 빨리 진행되기는 어려울 수 있으나 조금씩 꾸준히 해보려고 한다.

 

 

오늘은 그 1일차로 프로그래밍이란 무엇인지에 대해 얘기를 해보겠습니다.

 

자바란?

세상에는 많은 언어들이 있습니다. 한국어, 중국어, 영어, 일본어, 스페인어, 불어, 독어 등등 말이죠.

한국사람들은 한국어를 사용하고, 일본사람들은 일어를 사용합니다.

어떤 사람들은 3개국어 4개국어를 하기도 합니다.

일본어는 한국어와 문법이 유사해서 쉽고, 영어는 문법이 달라 배우기 어렵다고들 합니다.

언어마다 특정 표현을 할 때 좀더 공감이 가는 문장이 있습니다.

한국어로 직역 또는 의역해도 영어의 특정 문장의 느낌을 그대로 전달하기는 힘들 때가 있는 것처럼 말이죠.

 

프로그래밍 언어에도 그러한 내용이 딱 들어맞습니다.

자바는 수많은 프로그래밍 언어(세계 각국의 언어)들 중 하나입니다. 

자바 개발자(한국인)들은 자바(한국어)로 개발을 합니다.

모국어는 한국어이지만 3개국어, 4개국어를 할 줄 아는 사람들이 있듯이,

자바 개발자들도 자바만 하는것이 아니라 파이썬, 자바스크립트, C# 등의 언어를 제2외국어처럼 하기도 합니다.

자바와 문법이 유사한 언어는 자바개발자들에게는 learning curve가 낮지만, 너무 다른 언어는 적응하기가 힘들죠.

마치 한국어와 일본어, 한국어와 영어의 차이처럼 말이죠.

자바로는 구현하기 쉬운 기능이 다른 언어에서는 구현하기 힘들 수도 있습니다.

 

사람들은 언어를 이용하여 다른 사람들과 소통을 합니다.

어휘력이 좋은 사람이 있고 안좋은 사람도 있죠.

대화의 논리가 확실히 잡혀있는 사람도 있고 논리는 없고 앞뒤없는 대화를 하기도 합니다.

개발자들은 소스코드를 이용하여 소통을 합니다.

자바 언어에서 제공하는 문법을 많이 알고있는 개발자도 있고 기초적인 것만 알고있는 개발자도 있죠.

동일한 문제를 풀때에도 알고리즘이 간결하고 명확한 개발자도 있고, 그렇지 않은 개발자도 있습니다.

즉, 자바라는 언어는 개발자들이 프로그래밍을 할 때 사용하는 제2외국어와 같은 존재입니다.

 

소스코드와 소설

제 와이프는 제가 IDE(개발툴)화면에 코딩을 하는 모습을 보고, "이게 뭐야? 도대체 뭐라고 쓰는건지 하나도 모르겠네. 이런게 이해가 되?" 라고 질문을 합니다. 당연히 그런 반응이 나올 수 밖에 없습니다. 와이프 입장에서는 제가 오지의 인디언이 사용하는 언어로 글을 쓰고있는 것처럼 느껴질 테니까요. 

개발자들은 자신이 사용하는 프로그래밍 언어(제2외국어)를 이용하여 자신들만의 글을 써내려 갑니다. 같은 내용에 대해서 개발을 한다해도 개발자들 성향에 따라 1. 효율성은 조금 떨어지지만 가독성이 좋은 코드를 작성할 수도 있고, 2. 효율성은 극대화했지만 다른 개발자가 이해하기 힘든 코드를 작성할 수도 있습니다. 물론 저는 전자를 지향하고 후배들에게도 전자를 지향하도록 조언합니다.

 

시인, 소설작가, 수필가 등 글을 쓰는 분들이 단어 하나하나에 고심을 하듯 저도 코딩을 할 때 고민을 많이 합니다. 동일한 기능을 하더라도 좀 더 간결하고 명확하게 효율적인 코딩을 하려고 말이죠. 좋은 글을 작성하기위해 첨삭을 받는 것처럼, 개발자들도 코드리뷰 시간을 통해 고급개발자들의 조언을 듣습니다. 그래서 저는 프로그래밍을 이렇게 정의합니다. "프로그래밍이란 개발자들이 써내려가는 글이다"라고 말이죠. 내가 작성한 코드가 짧지만 이해하기 어려운 시가 될 수도 있고, 좀 길어도 술술 읽어내려갈 수 있는 판타지 소설이 될 수도 있습니다. 어떤 글을 작성하느냐는 순전히 개발자들의 몫이죠. 

 

 

Wrap Up

프로그래밍 언어란 개발을 위한 언어로 일어, 중국어, 영어와 같은 제2외국어의 하나다.

프로그래밍 언어에는 여러 언어들이 존재하는데 그 중 하나가 자바(java)다.

 

고급내용 보충

자바는 다른 언어들과는 다르게 JVM(Java Virtual Machine)이라는 가상머신 위에서 실행이 됩니다. 이 때문에 플랫폼(OS, 운영체제)에 의존적이지 않죠. Linux계열에서도 실행이 가능하고, Windows에서도 실행이 가능합니다. 심지어 안드로이드 애플리케이션도 자바로 개발합니다(요즘은 Kotlin이라는 언어도 많이 사용하시더군요). 또한, JVM이 직접 메모리 관리를 해주기 때문에 별도로 개발자가 메모리 관리를 하지 않아도 됩니다. C언어는 개발자가 직접 메모리에 접근을 하여 사용할 수 있기 때문에 관리도 직접 해야하죠.

자바는 웹개발에 많이 사용됩니다. Python(파이썬)은 빅데이터 영역에서 많이 사용되고, C, C++은 임베디드 영역에서 많이 사용되며, C#은 게임개발에서 많이 사용됩니다.