프로그램을 실행하는 장치. 프로그램 실행 시, 컴퓨터의 메인 메모리(RAM)에 저장. (딱히 명령어만 저장하는 것 아님) 이때 해당 위치를 표현하는 주소값이 할당됨.
*CPU가 명령을 하거나 프로그램에 접근하고자 할 때:
해당 정보의 주소를 메모리에 신호로 보냄 > 메모리 주소를 확인하고 값을 포함하여 응답
이 과정을 추출 및 실행 주기라 함
프로그램
컴퓨터가 따르도록 의도된 명령어들의 목록.
명령어
이 명령어를 기계 언어라고 부름. 각 유형의 컴퓨터들은 고유의 명령어를 가지고 있음.
비동기 이벤트
예측할 수 없는 시간에 발생하는 이벤트. 순차적으로 일어나지 않는다.
인터럽트(interrupt)라는 신호는 CPU가 현재 하는 일이 무엇이든 이를 제쳐놓고 이에 응답하게 한다. 이 인터럽트를 통해 비동기 이벤트가 실현된다.
모든 인터럽트 처리를 하고, 사용자와 하드웨어 장치와의 통신을 처리하며, 어떤 스레드가 실행될 수 있는가를 제어하는 소프트웨어를 운영체제라고 칭함.
고급 언어
자바, 파이썬, C++ 등 기계 언어로 번역이 필요한 언어.
컴파일러, 인터프리터
컴파일러: 고급 언어를 기계 언어로 번역하는 데에 필요한 프로그램. 각 컴퓨터는 각각의 기계 언어가 있기에 한 종류의 컴퓨터에서만 실행 가능. 프로그램을 한꺼번에 번역함.
인터프리터: 필요에 따라 명령별로 번역함. CPU와 유사한 역할을 하며, 추출 및 실행 주기를 가짐. (동시통역가에 가까운듯?)
변수(variable)
쉽게 이용 가능하도록 이름이 부여된 메모리 위치. 일종의 상자.
자바에서는 어떤 종류의 데이터를 저장할 수 있는지를 나타내는 자료형을 가지고 있음.
제어 구조(control structures)
제어 흐름을 변경할 수 있는 특별한 명령.
1.
루프
일련의 지시를 계속해서 반복
2.
분기
발생하는 조건들을 판단하여 컴퓨터가 하나를 결정할 수 있도록 하는 것.
서브루틴(subroutine)
하나의 단위로 그룹화, 이름이 부여됨, 일부 작업을 수행하기 위한 명령어들로 구성.
변수, 자료형, 루프, 분기 및 서브루틴은 "전통적 프로그래밍"의 기본. 프로그램이 커질 수록 복잡성에 대처하기 좋은 추가적인 구조가 필요.
구조화된 프로그래밍/하향식 프로그래밍
큰 문제를 해결하기 위해 큰 문제를 더 작은 조각으로 쪼개서 따로 작업하기. 자주 사용되지만, 불완전함. 하향식 프로그래밍은 프로그램이 조작하는 데이터를 충분히 고려하지 않음.
또한, 다른 프로젝트에서 수행된 작업을 재사용하는 것을 어렵게 만듦. (그 문제에 고유한 디자인을 만들어내는 경향이 있음.)
상향식 설계
해결 방법을 이미 알고 있는 문제와 함께 시작하는 것.
재사용 가능한 구성요소는 가능한 모듈형이어야 함. 모듈이란 시스템의 간단한 방식으로 상호작용하는 더 큰 시스템의 구성요소. 모듈화를 사용하면 정보 은닉이 용이해짐.
객체 지향 프로그래밍(OOP)
이러한 개념을 보다 발전 시킨 형태. 데이터, 서브루틴을 포함하는 모듈의 일종.
클래스
동일한 유형의 데이터를 포함하고 동일한 방식으로 동일한 메시지에 응답하는 객체들은 동일한 클래스에 속함. (가족적 유사성을 가지고 있다고 표현)
그림 프로그램의 예시.
DrawableObject와 MultipointObject, TwoPointObject 는 프로그램의 클레스가 됨. MultipointObject, TwoPointObject 는 DrawableObject의 하위 클래스.(subclass) 하위 클래스는 해당 클래스의 속성을 상속함. 추가 및 덮어쓰기 가능.
클래스는 궁극적으로 재사용 가능한 구성요소.
기타 자바의 특성
네트워킹, 암호화, 데이터 압축, 사운드 처리, 3차원 그래픽과 같은 많은 기술에 대한 지원.