저급언어
- 기계 중심의 언어로 배우기 어렵다
- 기계가 이해할 수 있도록 만들어진 언어이다
- 호환성이 떨어진다
- 기계어, 어셈블리어 등의 언어는 저급 언어이다
고급언어
- 사람 중심의 언어로, 배우기 쉽다
- 개발자가 원시 프로그램을 작성할 때 쉽게 이해할 수 있도록 작성된 언어이다
- 호환성이 좋다
- C,C++,Java,COBAL,FORTRAN 등이 해당된다
- 기계어로 번역이 필요하다
기계어
- 2진수 0과 1만 사용하여 명령어와 데이터를 나타낸다
- 언어 번역 과정이 필요없다
- 호환성이 없다
- 유지보수가 어렵다
원시 프로그램 : 기계어로 번역되기 전 프로그래머에 의해서 작성된 프로그램 파일
목적 프로그램 : 기계어로 번역된 프로그램 파일 (0과1로 구성)
■ 언어 번역 프로그램
어셈블러 : 저급언어를 기계어로 변환시킴 (어셈블리어)
컴파일러 : 고급언어를 기계어로 변환시킴 (C, C++, PASCAL, FORTRAN)
*기계어 = 목적 프로그램*
- 빠르다, 번역시 장소를 확보
인터프리터 : 원시 프로그램을 입력으로 받아 기계어로 변환하지 않고 직접 실행
(BASIC, PROLOG, LISP, PYTHON)
- 반복문 사용시 컴파일러에 비해 불리함, 실행시 장소를 확보
- 대화식 프로그램일 경우 컴파일러에 비해 유리함
=> 컴파일러와 인터프리터의 가장 큰 차이점은 목적 프로그램의 생성 유무
프리프로세서 : 고급 언어를 또 다른 고급 언어로 번역하는 고급 언어 번역기
크로스 컴파일러 : 컴퓨터 기종이 다른 경우에 사용되는 컴파일러
매크로 프로세서 : 어셈블리어를 사용하기 쉽도록 명령어들을 매크로(문자)로 치환하여 확장시킴
■ 프로그램 수행 순서
원시 프로그램 -> 컴파일러 -> 목적 프로그램 -> 링커 -> 로더 -> 실행
링커 : 여러개의 목적 파일을 하나의 프로그램으로 연결한다
로더 : 프로그램이 실행될 수 있는 환경을 설정하고 프로그램을 주기억 장치에 적재한다
[절대로더 : 할당(프로그래머) -> 연결(프로그래머) -> 재배치(어셈블러) -> 적재(로더)]
실행 : CPU에 의해서 프로그램이 실행된다
컴파일러 단계
어휘분석 -> 구문분석 -> 의미분석 -> 중간 코드 생성 -> 코드 최적화 -> 코드 생성
■ 자료 객체
예약어 : 용도가 정해져있는 단어 (for, while, if 등)
변수 : 기억 장치의 한 장소를 추상화한 것으로 프로그램이 동작하는 동안 값이 수시로 변할 수 있음
+ 어떤 값을 주기억 장치에 기억하기 위해 사용하는 공간
상수 : 수명 시간 동안 고정된 하나의 값과 이름을 가진 자료로써, 프로그램이 동작하는 동안 값이 절대로 바뀌지 않는 것을 의미함
식별자 : 프로그램의 구성 요소를 구별하기 위한 기준, 변수명이 식별자에 속함
선언 : 변수 이름을 나열하고 속성을 부여하는 것 (상수 값에 의해 속성이 부여되기도 함)
할당 : 변수에 메모리 공간을 바인딩하는 작업
배열
- 같은 크기와 타입의 자료를 연속적인 기억 장치에 저장하여 처리하는 구조
- 고정 크기의 메모리 공간을 사용
- 연속적인 기억장치를 사용 (논리적, 물리적 순서 동일)
- 중간에 삽입, 삭제가 어려움
- C언어의 선언 : int A[2][5];
- Java의 선언 : int[][]A = new int[2][5];
포인터
- 변수명에는 실제 기억 장소의 위치인 절대 번지가 존재하는데, 이를 주소 상수라고 하거나 포인터 상수라고 함
- 변수 a의 포인터 상수는 &a로 사용하면 된다
- 커다란 배열에 원소를 효율적으로 저장하고자 할 때 이용함
바인딩 : 변수의 명칭, 메모리 주소, 데이터형 또는 실제 값을 연결하는 것을 의미함 (변수들이 갖는 속성 결정)
=> 정적 바인딩은 프로그램 실행 시간 전, 동적 바인딩은 프로그램 실행 시작 후의 속성을 연결하는 것
'자격증' 카테고리의 다른 글
컴활 1급 필기 독학하기 2주만에 성공! (인강x) (0) | 2021.04.19 |
---|---|
[정보처리기사 필기] 프로그래밍 언어 활용(3) (0) | 2021.04.19 |
[정보처리기사 필기] 프로그래밍 언어 활용(2) (0) | 2021.04.19 |