쌀국수가 코딩배우며 개발일기 쓰는곳 RSS 태그 관리 글쓰기 방명록
2021-12-07 02:11:00

 

프로그램을 왜 만들까?

→ 자료(Data)를 처리(Process) 해서 정보(Information)를 만들기 위해 (정보화를 하기 위해)

 

정보화

자료(Data) - 세상에 존재하는 모든 것
- 사물은 유형의 데이터이며 본능적인 행동은 직관적인 데이터이다.
처리(Process) - 연산, 수행
정보(Information) - 의사결정에 직접적 또는 간접적으로 영향을 주는 모든 것 (옳고 그름을 따지지 않음)
환원(Feedback) - 정보가 다시 데이터로 돌아가는 것 (정보는 영원하지 않음)
- 시간, 공간, 환경의 영향을 받아서 정보가 다시 데이터로 돌아간다.
✓ 자료의 처리를 더 효율적이고 빠르게 하기 위하여 컴퓨터를 만들었다. (전산화)
✓ 정보화가 전산화보다 더 큰 개념이다.
✓ 데이터가 있는데 모르는 것을 '데이터의 부재'라고 한다.
✓ 컴퓨터를 만들었으나 이진수밖에 하지 못하며 통역이 불가능하자 새로운 언어를 만든 것이 '프로그래밍 언어'이다.

 

원시인 마을과 공룡 이야기는 재밌었다!

 


 

정보화 속 파벌

과거, 정보화의 구조가 생기면서 파벌이 나누어졌다.

 

정보화 파벌
자료처리 (SE, NE, DBA, Security 등) 정보처리 (Programmer 등)

- 자료와 처리를 중요하게 여겼다.
- ex) 요리의 결과가 어떻던 재료가 좋아야 한다.

- 처리와 정보를 중요하게 여겼다.
- ex) 재료가 어떻던 맛있게 하면 된다.
✓ 2000년대 이후 두 파벌의 경계가 모호해지며 하나로 합쳐졌다.
✓ 디자이너와 개발자를 따로 채용하다가 퍼블리셔를 채용하는 개념과 비슷

 


 

체계화

 정보에서 더 발전한 영역을 뭐라 부르나요? 체계화가 맞나요?

 

체계화
사물인터넷(IOT) - 인터넷에 연결되어 IoT 애플리케이션이나 네트워크에 연결된 장치
- 사물이 데이터를 수집한다.
빅데이터(Big data) - 정형, 비정형 등 무수한 데이터들
- 데이터로부터 가치를 추출하고 결과를 분석하는 기술
클라우드(Cloud) - 무수한 데이터들을 수집했으니 저장하자!
지식(Knowledge) - 옳고 그름을 따지며 체계화된 정보를 얻기 위해 빅데이터를 모아 분석하여 나온 정보를 지식이라 한다. (아마도?)
기계학습(인공지능 / AI) - 사람이 가르쳐준 지식을 넘어선 새로운 지식들을 무한하게 만들어내기 위함
- 인공지능 의사 '왓슨(Watson)'이 이에 해당한다.
지혜(Wisdom) - 지식이 아무리 많아도 활용을 못하면 안 되므로 사람의 지혜가 필요하다.
✓ 대표적인 소셜커머스 업체인 쿠팡과 아마존은 빅데이터를 활용하여 엄청난 효율과 이익을 창출해냈다.
✓ 관련 기사 : https://www.ajunews.com/view/20170501000009164

 


 

언어의 정립

 세상에 데이터가 많지만 컴퓨터에게 알려주는 것은 불가능에 가까워 컴퓨터도 알고 있는 '숫자(이진수)'를 바탕으로 정립한다.

 

분류 자료형 타입 부가 설명 
기본 자료형 논리 boolean - True (0을 제외한 모든 수), False (0)
- Java에서는 참은 0000 0001, 거짓은 0000 0000 이다. (즉, 0과 1)
문자 char - ANSI 단체에서 아스키코드(ASCII code)를 정의했다.
- 아스키코드 = 7bit = 2^7 = 0~127 = 총 128개 (하나 남는 숫자는 통신 및 검증용)
- 하지만 서유럽의 문자 수는 127개보다 많기 때문에 ISO에 요청하였고, ISO는 비트를 늘려 서유럽코드(ISO-8859-1)를 정의했다.
- 서유럽코드 = 8bit = 2^8 = 0~255 = 총 256개
- 이후 중국의 천자문과 한국의 팔만대장경으로 인해 2byte로 늘어나며 문자의 표준인 유니코드(Unicode)가 생겼다.
- 유니코드 = 2byte = char = 16bit = 2^16 = 0~65535 = 총 65536개
정수 byte - Java에서 integer는 클래스(Wrapper) 타입이고, int는 원시형 자료이므로 헷갈리지 말자.
short
int
long
실수 float - 소수점 마지막 자리까지의 정밀한 데이터를 얻어내다 보니 자료형의 크기가 커진다.
double
참조 자료형 배열 [] - 동일한 자료형의 데이터들을 묶어놓은 자료 구조
- 구현이 쉽고 성능이 빠르다는 장점이 있다.
- 자료 삽입 및 삭제의 비효율성, 크기의 제약, 자료형의 제약, 메모리 재사용 불가 등의 단점이 있다.
크기의 제약 해결 배열은 생성할 때 지정한 크기를 바꿀 수 없기 때문에 적게 잡으면 공간 부족, 많이 잡으면 공간 낭비의 문제점이 있다.

→ Java의 무한 데이터를 통해서 해결한다. (Java Collection Framework)
→ C의 동적할당자료구조(Stack, Queue, Linked list, ・・・)를 활용한다.
자료형의 제약 해결 서로 다른 자료형을 같이 사용할 수 없다는 문제점이 있다.

→ C의 구조체를 활용한다. (구조체는 메모리를 따로 쓰기에 메모리 관리 문제를 해결할 아래의 방법이 등장한다.)
→ C++의 객체(Object)를 활용한다. (OOP)

- 관념적, 쌀국수가 먹고 싶다. (현재 내 앞에 쌀국수가 없다.) = 객체(Object)
- 쌀국수를 만드는 냄비 = 클래스(Class)
- 주문하여 만들어진 실제 쌀국수 = 개체(객체, Instance)

✓ 자료형과 관련된 내용은 아래 글에서 참고 바란다.

기본자료형의 종류(Primitive Data Types)

기본자료형 & 참조자료형

연산자와 제어문

 


 

저장의 필요성

학생 관리 프로그램을 만들어도 데이터가 저장되지 않으면 컴퓨터를 재부팅할 때마다 데이터가 초기화된다.

 

저장의 필요성
파일 저장(File I.O) - 파일에 데이터를 저장하면 동시 사용이 불가능하다는 단점이 있다.
데이터베이스(Database) - 여러 사람이 공유하며 사용할 목적으로 체계화해 통합 및 관리하는 데이터의 집합이다.
- 한 컴퓨터에 작업과 DB를 함께 두면 CPU와 메모리를 많이 잡아먹는다.
- 작업용 컴퓨터가 아닌 다른 컴퓨터에 DB를 설치하는것이 좋다. (한 여름에 음료 시원하게 마시려고 냉장고 들고다니지 말고 편의점가서 음료 사먹으라는 얘기)
네트워크(Network) - 분산되어 있는 컴퓨터(2대 이상)를 통신망으로 연결한 것.
스레드(Thread) - 컴퓨터는 하나의 작업밖에 처리하지 못하여 네트워크 사용의 어려움을 보완하기 위해 만들어졌다. (요리 하는 사람이 마트를 가면 주방이 비니까 다른 사람을 보내는 얘기)
- 모든 프로세스에는 하나 이상의 스레드가 존재하여 동시에 여러개의 작업을 처리한다.
예외처리(Exception) - 일반적으로 프로그램이 처리되는 동안 특정한 문제가 일어났을 때 처리를 중단하고 다른 처리를 하는 것 (마트로 심부름을 갔으나 재고 부족 등의 문제가 일어났을 때의 해결 방안을 만든다는 얘기)
✓ 연결 구조(? 작업과정 ?) : 파일 저장 → 예외처리 → 스레드 → 네트워크 → 데이터베이스
✓ 그 외 화면 만드는 과정 (잘 안쓰는 것들임) : 파일 → AWT(GUI) → Event → Graphics → Applet → Swing(JFC) → SWT → Java FX