Day 2. 자바 국비 커리큘럼

ho_c·2022년 2월 20일
0

국비교육

목록 보기
2/71
post-custom-banner

이제부터 꾸준히 매번 수업 필기를 블로그로 정리하고자 한다.
오늘 수업 내용은 어제 OT의 연장선으로 다음과 같다.

📝 목차

  1. 교육과정 소개
  2. 전반적인 로드맵
  3. 프로그래밍이란?
  4. Java!
  5. Eclipse : Hello World!

1. 교육과정 소개

본 과정은 전공자 대상이 아닌 '모두가 한 번도 배워본 적이 없다'라는 전제를 깐다.
그래서 초반부는 어느 정도 공부를 한 사람에겐 지루하겠지만, 그것도 잠깐인 것 같다. 왜냐면 전반적인 진행 속도가 굉장히 빠르기 때문에...
과정은 다음과 같다.

자바 기초 프로그래밍 2주

중급 문법 2주 (라이브러리, 채팅 프로그램)

DB 2주

웹 퍼블리싱 4주

웹 Backend 6주

Semi Project 2주

Framework 4주

Final Project 4주

6개월 되는 기간인데, 저 속도의 목적은 소프트웨어 구현으로 가는 최단기 코스이다. 분명 놓치는 것도 많을 거 같다.
그래서 '역시 바로 취업하는 건 속단이다'라는 생각이 들었다. 게다가 과정 중에 NCS 평가를 계속해서 봐야한다.

보라면 봐야지 어쩌겠니


2. 전반적인 로드맵

이후로는 AGOL 언어부터 자바까지의 전반적인 로드맵을 들었다.
역시 뭔가를 아는 건 재밌어
장정 2시간을 요약했다.

C언어는 알골계 언어의 단점을 극복한 언어로 현대 프로그래밍 언어의 뿌리이다.
그래서 개발자로 일하게 되면 이해도를 높이기 위해 C언어를 공부할 수밖에 없을 것이다.
이런 C의 생산력을 높이기 위해 C++이 객체지향을 도입했지만 진입장벽이 높았고 1991년 제임스 고슬링이 Oak를 내놓고, 이후 96년 Java를 정식 출시한다.
Java는 운영체제로부터의 독립성, 그리고 객체지향은 높은 생산력을 추구하였고 시장은 이에 열광하며 Java를 적극 도입하였다.
이로 인해 Java는 다른 언어들보다 뛰어난 시장력을 가지고 있다.

물론 30년이 된 언어라 Python3와 같은 신세대 언어들한테는 기능적으로 밀리는 경우도 있다.
그럼에도 한국에선 Java가 건재하다.
언제 변할지 모르겠지만 그래도 내가 커리어를 쌓아 다른 분야로 넘어갈 때까지는 버텨줬으면 좋겠다.


3. 프로그래밍이란?

모든 프로그래밍의 시작은 '프로그래밍이란 무엇인가?'이다.
사실 하도 많이 들어서 감각적으로 알 뿐이지, 기술적으로 완벽한 선을 그어서 정의는 못했다.
그러나 수업을 통해서 다음과 같이 정리되었다.

program : 하드웨어에게 명령을 전달하는 수단, 명령의 집합체

programing language : 프로그램을 작성하는 언어 = 컴퓨터에 명령을 전달하는 언어

여기서 프로그램은 하나의 '문서'이다.
흔히 우리는 문서를 엑셀이나 한글 문서와 같이 인간의 언어로 작성된 글의 집합체로 생각한다. 즉, (인간-인간)의 관계에서만 보는 것이다.
따라서 프로그램은 (인간 - 컴퓨터)의 관계의 '문서'가 된다. 이런 프로그램은 정확히는 다음의 단계로 구분된다.

인간의 입장 : 소스코드 ↔ 컴퓨터의 입장 : 프로그램

진짜 프로그램은 소스코드가 컴파일러에 의해 컴파일되어 컴퓨터가 실행할 수 있는 기계어 문서를 의미한다. 여기서 기계어를 흔히 0과 1로 구성된 이진법으로 표현하지만 실제 기계는 단순한 전기 신호를 통해 작동한다.
결과적으로 프로그래밍이란 바로 컴퓨터에게 전달될 명령서인 소스코드를 작성하는 것이다.


4. Java!

프로그램은 바로 프로그래밍이라는 언어로 작성이 되고, 이는 고수준 언어와 저수준 언어로 구분된다.
이 구분은 성능을 얘기하는 것이 아닌 인간에 가까운지, 컴퓨터에 가까운지의 정도를 의미한다.

먼저 하드웨어가 발달하기 이전...

고수준 언어가 컴퓨터에 전달되기 위해선 '컴파일'이라는 번역 과정이 필요했다.
하지만 이 과정 중에서 불필요한 데이터가 붙어버리거나, 데이터가 손실되는 일들이 발생했다.
때문에 개발된 프로그램의 성능이 낮았다는 단점이 있지만, 그에 비해 진입장벽이 인간에게 낮았기 때문에 생산력이 좋았다.
반대로 고수준은 인간에 가깝기에, 컴퓨터에겐 거리감있다. 즉, 최적화가 잘 안된다.

이와 달리 저수준 언어는 작성 자체의 난이도가 굉장히 높았다. 그래서 생산성이 현저히 떨어져 지금도 특정 분야에 쏠려있거나, 종종 고수준 언어 사이에 끼어서 사용되기도 한다.
하지만 지난 몇 십년 사이 하드웨어의 성능이 미친 듯이 발전했다.
그 결과, 인간의 입장에선 고수준과 저수준의 차이를 인지하기 어려워졌다.

우리는 고수준 언어를 쓰는데, 이 고수준 안에서도 절차, 객체, 함수 이렇게 세 파트로 나뉜다.

일단 최적화로 본다면 절차가 기본 원리에 충실하기 때문에 좋다. 하지만 절차형은 필요한 것을 직접 정하고 만들어 사용해야되기 때문에 코드의 유지보수, 재사용 등 프로그램을 유지하는 면에 있어서 성능이 떨어진다.

반면 객체지향은 내가 모르는 것이라도 사용법만 안다면 만들어진 코드를 불러다 쓸 수 있다.
또 이미 만들어진 코드를 수정하여 새로운 코드를 만들 수도 있고.
이런 객체지향은 프로그래밍 언어에 '객체지향'이라는 개념을 도입한 것이다.

그럼 Java가 뭐가 좋은 것인가?

앞서 얘기한 것처럼 '시장성'에 있어서 Java는 압도적이다. 그리고 이는 단순히 객체지향이라서 좋은 것이 아니라 Java 자체가 지닌 '운영체제'로부터의 독립성때문에 있다.
이는 C언어의 link처럼 header, footer에 운영체제에 따른 환경 정보를 직접 넣는 과정을 없앤것이다. Java에선 Class파일이 만들어져 실행되면 JDK 플랫폼에 포함되는 JRE 내부의 JVM과 API가 운영체제에 따라서 환경 정보를 넣어준다.

* JDK(개발플랫폼) ⊃ JRE(실행플랫폼)


5. Eclipse : Hello World!

우리가 자바를 사용하기 위해 설치한 JDK는 자바를 개발하는 측에서 제공해주는 도구이다. 하지만 그대로 사용하기에는 투박하다.

컴파일 하려면 Javac, 실행하려면 Java.exeCMD에서 실행해야 되니, 이런 면에선 python이 진짜 편하다.

이런 투박한 도구를 쉽게 사용하도록 해준 것이 바로 통합개발환경 IDE이다.
자바 개발에는 유명한게 2가지 정도 있는데, 그게 EclipseIntelliJ IDEA이다.
원래 IntelliJ IDEA가 더 성능이 좋은데, 유료라서 Eclipse를 사용한다.

그리고 한 가지 알아둬야할게 Eclipse 설치할 때, SE버전 하면 웹 개발이 지원되지 않으니 EE 버전을 설치해야 한다. 그리고 깔았으면 프로젝트 만들어주고 "Hello world!"를 출력해주자.

public class Hello_World {
	public static void main(String[] args) {
    	System.out.println("Hello World");
    }
}

모든 프로그래밍의 첫 시작을 환영한다. 물론 나는 중고 시작이지만 😊
자세한 내용은 추후에 얘기하겠지만 오늘 입력한 코드에 대해서 수업 내용은 다음과 같았다.

프로그램을 작성할 때, 기본문법이 존재한다.

JDK가 실행 전 실행 가능한지 확인하는 문법
public class 클래스명 : 이 파일은 실행 가능한 Java 소스파일이다.
public static void main() : 해당 프로그램의 시작은 여기서부터이다.
{} (블록) : 범위 지정자로 각 메서드, 클래스, 제어문 등의 실행 범위를 나타낸다.

이때, 관습(Convention)이 존재하는데, 블록을 표기할 때는 K&R 스타일을 사용하는 게 좋다.

profile
기록을 쌓아갑니다.
post-custom-banner

0개의 댓글