프로그래밍 언어

이동: 둘러보기, 검색

컴퓨터에게 명령을 내리기 위해 사용하는 언어.기본적으로 프로그래머들이라면 접할 수 밖에 없는 언어이다.한편 이공계 학생이라면 C언어는 배우고 들어가는게 대세라 카더라.

목록[편집]

알아두면 좋은 개념[편집]

절차 지향[편집]

객체 지향[편집]

프로세스/쓰레드[편집]

작성된 프로그램이 메모리에 적재가 되고 실행중인 상태가 되었을때를 프로세스라 한다. 현대의 범용 운영체제에서 각 프로세스는 별도의 메모리 영역을 가지며 최소 한개의 쓰레드를 가지고 동작한다. 코드가 실행되는 하나의 흐름을 쓰레드라고 정의하고 한 개의 프로세스 내에서 각 쓰레드 별로 별도의 스택을 가지지만 데이터는 공유할 수 있다.[2] 서로 다른 프로세스간의 통신은 IPC라고 하여 별도로 취급한다.

동적 메모리 할당[편집]

정적 메모리 할당과 대비되는 개념으로 코드를 작성할때 메모리를 얼마나 할당해야 할 지 예측 할 수 없는 경우에 선택의 여지가 없다. 예를 들면 키보드로 문장을 입력받아 텍스트 파일로 저장하는 프로그램이라면 문장을 제한 없이 계속 입력받게 하려면 동적으로 메모리를 할당하는 것 외에는 방법이 없다. 그런데 동적으로 할당한 메모리를 언제 해제(운영체제로 반환) 하느냐가 골칫거리가 된다. 이것을 해결하기 위한 방법이 바로 가비지컬렉터, 레퍼런스 카운팅이다.

입출력[편집]

일반적으로 산술 연산이나 메모리에 데이터를 읽고 쓰는것보다 입출력 장치(플래시 메모리, 하드 디스크, 랜 카드나 블루투스등의 무선 장치, 키보드나 마우스등)에 접근하는건 수천배 이상 느리다. 이것을 어떻게 우아하게 처리하냐 하는것도 일반적으로 발생하는 문제.

함께 보기[편집]


  1. 난해한 프로그래밍 언어참고.
  2. 이 부분은 아주 민감한 부분으로 2개 이상의 쓰레드가 동시에 공유자원에 접근하면 문제가 생기기 때문에 공유자원에 접근하는 부분을 임계영역이라 정의하고 별도의 처리를 한다.