프로그래밍의 역사, JAVA 설치, 이클립스 설치, 클래스만들기, JAVA란?, 코딩 컨벤션, 변수및 연산자, 자료형

<프로그래밍의 역사>

1949

ASM(어셈블리어)

 최근에는 보안 관련으로 사용

 

1972                  1981                         1991                       1995                                         

C                        C++                        Oak                          Java                                          

벨연구소               I→ Obj C                        썬마이크로시스템즈 제임스 고슬링

Dannis Ritche                I→ Swift (iOS개발                              ↓

                          I→ C#                                                 ADK 

                               I→ 유니티    

                                  경쟁 언어 : 언리얼

                                                                                    

2020

Java

→ Native

→ Web

→ Android 

→ Bigdata Hadoop …..





https://tiobe.com/

https://tiobe.com/tiobe-index/

 



이클립스는 포터블 버전으로 설치...

Native는 Java로 설정해줘야함

(Web의 경우는 Java EE엔터프라이즈에디션으로 설정하게됨)



클래스 만들기

 

ctrl  + , ctrl - 로 글자조절가능




이클립스 마켓플레이스 -> 플러그인 다운로드 

 

 

exe -> 문서?

컴퓨터에게 할 명령을 담은 문서 (명령 집합체) -> 프로그램




프로그래밍 언어

저급언어

고급언어

기계어

어셈블리어

절차지향 언어

(C언어)

객체지향 언어

(JAVA)

   

시간의 흐름, 순서중심

원리지향, 효율중심


원리를 다 알아야 만들어짐

단기간 성과 어려움

생산력 중심

빠른 개발

순서 신경X

단위중심,모듈중심

단위별로 만든 다음에 나중에 관계를 설정, 조립



프로그래밍

종이 - 편집기

명령어 작성 

 

소스코드 = 명령어를 기술한 문서(글)

 

>>>> 컴파일(번역)

 

2진수 문서 0101010101101            / 실행파일 ⇒ Java영역에서 

                                                        / 목적파일(Object파일)  ⇒ C언어 영역에서



2진수 문서(실행파일)이 실행되기 위해서는 도구,라이브러리, 환경정보 등이 지정이 되야함



>>>> Link

 

2진수 문서의 앞과 뒤에 내용을 추가하는 것

앞(Header)과 뒤(Footer)에 환경정보, 도구에 대한 것을 붙여줌

 

Link 작업까지 끝난 상태를 C언어에서의 실행파일으로 봄

 

*Link 과정에서 운영체제 종속성이 발현됨

(환경정보에 해당 운영체제에 대한 내용이 기술되기 때문)

윈도우에서 만든건 윈도우에서만 돌아가고, 리눅스에서 만든건 리눅스에서만 돌아감



윈도우에서 만든 프로그램을 리눅스에서 사용하고 싶다면?

운영체제종속성이 발현되기 전 (Link 전)의 소스코드를 갖고 리눅스에서 컴파일,링크를 하여 사용



****자바는 운영체제에 대해서 종속성을 갖지 않음  (운영체제 독립성)



소스코드   ⇒ 컴파일 ⇒ 010101(2진수문서)

소스코드                         실행파일(exe)

 

** 앞뒤로 환경정보 등을 넣는 것이 아니라

JRE가 소스코드를 실행할때 필요한 환경정보,도구에 대해 알려주는 집사역할(Link정보값 셋팅)

 

JRE(Java Runtime Environment/자바실행환경)



도구모음 JRE

문서        JDK



JRE가 있으면 어디서든 실행가능 = JRE 없으면 실행불가

인터넷의 발전으로 운영체제에 대한 독립성을 가진 JAVA가 떠오름

 

자바는 Memory, 자원 사용 후 자원반환에 대한 코드를 작성할 필요가 없다(자바 자체에서 알아서 반환해준다)  

단점 => 개발자가 쓰다가 반환하고 싶을때 반환할 수 없음(최적화X) 반환을 위한 코드가 없음

 

Garbage Collecter(자원 반환을 위해 일하는 집사?)가 반환타이밍이 나쁘면 자원을 낭비하기도 함 ⇒ But 하드웨어가 발전하면서 해결?됨




C++ 언어의 장점은 추려내고 활용도가 떨어지는 부분은 제외시켜 상대적으로 배우기 쉽다.  => 난이도 ↓



50년 전통의 C언어와 비교하여도 부족하지 않은 풍부한 클래스 라이브러리를 가진다.



라이브러리 => 도구



이클립스 = 통합 개발 환경(Integrated Development Environment, IDE)

JDK        = 자바

// 컨벤션(convention) : 관습,관례

// 코드를 짤 때 관습,관례가 있다. 코딩 컨벤션

 

중괄호의 사용

코딩 스타일에는 대표적으로 GNU, K&R, BSD 이렇게 세 가지가 있는데, 이번 절에서는 각각의 코딩 스타일이 중괄호를 어떤 규칙으로 사용하는지 알아보자.

G

N

U

if(...)

    {

        처리();

    }

블록을 if문 아래에 작성한다. 블록이 if에 속한 블럭임을 분명히 표시하여 구조가 잘보인다. 허나 들여쓰기를 많이 해서 처리하기에 수평으로 많은 코드를 작성할 수 없다.

K

&

R

if(...) {

        처리();

}

흔히 C계열 창시자 들이 사용하던 스타일이다. 여는 블록을 if와 같은 행에 배치한다. 코드 줄수를 절약하여 한눈에 많은 코드를 볼수있고 수평으로 많은 코드를 작성할수 있다. Java계열 Eclipse / 구글 C++  자바스크립트 등의 기본 포매팅이다. 

B

S

D

if(...)

{

        처리();

}

GNU의 블럭의 소속을 분명히 한다는 장점과 K&R의 수평으로 많은 코드를 작성할수 있다는 장점을 가져와 결합한 스타일이다. 줄 수는 GNU 스타일만큼 늘어나지만 수평으로는 K&R만큼 빽빽하게 쓸 수 있다. 비주얼 스튜디오에서의 기본 포매팅이다. 



출처: https://hygoni.com/29 [Bonjour, le monde!]







변수 및 연산자



변수란?

일반적인 변수의 뜻 -> 고정되어 있지 않은 수

JAVA 에서 변수의 뜻 -> 데이터 또는 자료저장하기 위한 메모리 공간(RAM의 공간)



CPU - 중앙처리장치 Central Processing Unit

RAM - 주기억장치(Main Memory)

SSD/HDD - 보조기억장치 

 

CPU는 연산할때 RAM만 사용한다 (CPU는 SSD/HDD에 직접 접근이 안된다)




입력 - 기억 - 연산(처리)

 

변수선언

메모리 공간을 이용하기 위해서는 변수 선언을 해야 한다.

 

DataType 변수명 ; 





명명 규칙 (식별자 규칙)

프로그램 내에서 사용하는 변수,함수,상수 등에 부여한 이름

*작성규칙

1. 영문자 대 소문자 , 숫자 , _ (underline) , $ 의 조합으로 구성

2. 숫자의 경우 가장 첫 글자로 쓰여서는 안 된다.

3. 예약어를 사용하면 안 된다.

4. 공백이 있어선 안 된다.

 

*프로그래밍 활용을 위한 TIP

의미를 잘 설명할 수 있는 이름

제약은 없지만 3~10자 내외

변수명은 보통 짧은 영어 단어를 활용



 

자료형

★ 기본형 변수 (Primitive Type)

논리형 : boolean(1)

정수형 : byte (1) / short(2) / char(2) / int(4) / long(8)

실수형 : float(4) / double(8) 

 

★ 참조형 변수 (Reference Type) => 갯수의 제한이 없다?

기본형을 제외한 나머지 자료 형

객체의 주소를 저장한다.

String 등 참조 형 변수는 모두 4 byte

 

bit : 0 또는 1

8 bit -> 1 Byte

 

1 bit = 2  = 2의 1승

2 bit = 4 = 2의 2승

3 bit = 8 = 2의 3승

4 bit= 16  = 2의 4승

.

.

8 bit = 256 = 2의 8승

 

1bype(8bit) 메모리의 범위 : -128~+127 까지 



= : 대입하다