- 원시 코드 - 프로그래머에 의해 작성된 프로그램 문장들 (컴퓨터는 이해 못함) - ex) test.c
컴파일(Compile)
- 원시 코드를 목적 코드로 변환하는 작업 - Compiler = 변환 프로그램
오브젝트 코드(Object Code)
- 목적 코드 - 소스 코드를 컴파일한 파일 (컴퓨터가 알아 볼 수 있음) - ex) test.obj
어셈블리어(assembly language)
- 컴퓨터와 일대일 대응이 가능한 언어 - 컴파일 된 파일을 어셈블리어 과정을 통해 기계어로 변환한다.
링크(Link(ing))
- 실행 가능한 형태인 모듈을 만들어내는 작업 - Linkage Editor = 처리 프로그램
로드 모듈(Load module)
- 파티션에 저장된 실행 가능한 형태 - ex) test.exe - Loader = 실행 파일을 메모리에 적재하여 CPU가 처리할 수 있도록 이동시켜주는 역할
대표 언어별 컴파일 과정
언어
컴파일 과정
C
- 조상격 언어, 컴파일(compile) 언어 - 운영체제끼리 호환이 되지 않아서 프로그램을 각 운영체제에 맞춰 짜야한다는 문제점이 있었다. - 타 언어에 비해 어려운 편이지만 코드를 한 번에 번역하여 전달하는 구조라 속도가 빠르다. - 시스템 프로그래밍에 잘 어울리는 언어이다. - 그 외 참고자료
Python
- 인터프리터(Interpreter) 언어 - 중간 과정을 생략하고 인터프리터를 통해 소스코드를 한 줄씩 읽고 해석하며 실행한다. - 코드가 간결하여 사용하기 쉽다. - 그 외 참고자료
Java
- 객체 지향 언어 - 자바 가상 머신(JVM)을 사용하여 어느 운영체제에서도 같은 형태로 사용 가능 - Write Once, Run Anywhere - 자바 컴파일러(javac)를 이용하여 컴파일 후 목적 코드를 만든다. (Test.class = byte code (반 기계어)) - JVM을 거쳐야 하는 문제로 C언어에 비해서 속도가 느리다. - 그 외 참고자료
→ 자료(Data)를 처리(Process) 해서 정보(Information)를 만들기 위해 (정보화를 하기 위해)
정보화
자료(Data)
- 세상에 존재하는 모든 것 - 사물은 유형의 데이터이며 본능적인 행동은 직관적인 데이터이다.
처리(Process)
- 연산, 수행
정보(Information)
- 의사결정에 직접적 또는 간접적으로 영향을 주는 모든 것 (옳고 그름을 따지지 않음)
환원(Feedback)
- 정보가 다시 데이터로 돌아가는 것 (정보는 영원하지 않음) - 시간, 공간, 환경의 영향을 받아서 정보가 다시 데이터로 돌아간다.
✓ 자료의 처리를 더 효율적이고 빠르게 하기 위하여 컴퓨터를 만들었다. (전산화) ✓ 정보화가 전산화보다 더 큰 개념이다. ✓ 데이터가 있는데 모르는 것을 '데이터의 부재'라고 한다. ✓ 컴퓨터를 만들었으나 이진수밖에 하지 못하며 통역이 불가능하자 새로운 언어를 만든 것이 '프로그래밍 언어'이다.
원시인 마을과 공룡 이야기는 재밌었다!
정보화 속 파벌
→ 과거, 정보화의 구조가 생기면서 파벌이 나누어졌다.
정보화 파벌
자료처리 (SE, NE, DBA, Security 등)
정보처리 (Programmer 등)
- 자료와 처리를 중요하게 여겼다. - ex) 요리의 결과가 어떻던 재료가 좋아야 한다.
- 처리와 정보를 중요하게 여겼다. - ex) 재료가 어떻던 맛있게 하면 된다.
✓ 2000년대 이후 두 파벌의 경계가 모호해지며 하나로 합쳐졌다. ✓ 디자이너와 개발자를 따로 채용하다가 퍼블리셔를 채용하는 개념과 비슷
체계화
→정보에서 더 발전한 영역을 뭐라 부르나요? 체계화가 맞나요?
체계화
사물인터넷(IOT)
- 인터넷에 연결되어 IoT 애플리케이션이나 네트워크에 연결된 장치 - 사물이 데이터를 수집한다.
빅데이터(Big data)
- 정형, 비정형 등 무수한 데이터들 - 데이터로부터 가치를 추출하고 결과를 분석하는 기술
클라우드(Cloud)
- 무수한 데이터들을 수집했으니 저장하자!
지식(Knowledge)
- 옳고 그름을 따지며 체계화된 정보를 얻기 위해 빅데이터를 모아 분석하여 나온 정보를 지식이라 한다. (아마도?)
기계학습(인공지능 / AI)
- 사람이 가르쳐준 지식을 넘어선 새로운 지식들을 무한하게 만들어내기 위함 - 인공지능 의사 '왓슨(Watson)'이 이에 해당한다.
→세상에 데이터가 많지만 컴퓨터에게 알려주는 것은 불가능에 가까워 컴퓨터도 알고 있는 '숫자(이진수)'를 바탕으로 정립한다.
분류
자료형
타입
부가 설명
기본 자료형
논리
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개
→ 학생 관리 프로그램을 만들어도 데이터가 저장되지 않으면 컴퓨터를 재부팅할 때마다 데이터가 초기화된다.
저장의 필요성
파일 저장(File I.O)
- 파일에 데이터를 저장하면 동시 사용이 불가능하다는 단점이 있다.
데이터베이스(Database)
- 여러 사람이 공유하며 사용할 목적으로 체계화해 통합 및 관리하는 데이터의 집합이다. - 한 컴퓨터에 작업과 DB를 함께 두면 CPU와 메모리를 많이 잡아먹는다. - 작업용 컴퓨터가 아닌 다른 컴퓨터에 DB를 설치하는것이 좋다. (한 여름에 음료 시원하게 마시려고 냉장고 들고다니지 말고 편의점가서 음료 사먹으라는 얘기)
네트워크(Network)
- 분산되어 있는 컴퓨터(2대 이상)를 통신망으로 연결한 것.
스레드(Thread)
- 컴퓨터는 하나의 작업밖에 처리하지 못하여 네트워크 사용의 어려움을 보완하기 위해 만들어졌다. (요리 하는 사람이 마트를 가면 주방이 비니까 다른 사람을 보내는 얘기) - 모든 프로세스에는 하나 이상의 스레드가 존재하여 동시에 여러개의 작업을 처리한다.
예외처리(Exception)
- 일반적으로 프로그램이 처리되는 동안 특정한 문제가 일어났을 때 처리를 중단하고 다른 처리를 하는 것 (마트로 심부름을 갔으나 재고 부족 등의 문제가 일어났을 때의 해결 방안을 만든다는 얘기)
✓ 연결 구조(? 작업과정 ?) : 파일 저장 → 예외처리 → 스레드 → 네트워크 → 데이터베이스 ✓ 그 외 화면 만드는 과정 (잘 안쓰는 것들임) : 파일 → AWT(GUI) → Event → Graphics → Applet → Swing(JFC) → SWT → Java FX