본문 바로가기
잡동사니/프로그래밍 언어론 7급

[국가직] 프로그래밍언어론(봉)

by 2KB 2016. 3. 28.

언어별 비교 ( 참조 : 나무위키 - 프로그래밍 언어 )

- 해석방식의 차이

 컴파일(Compile)

 소스코드를 미리 기계어로 변환하여 실행

 ex. C언어, 델파이

 인터프리터(Interpreter)

 소스코드를 한줄한줄 읽어 바로 번역하여 수행

 ex. 파이썬, 자바스크립트

 바이트코드(Bytecode)

 소스코드를 컴파일하여 바이트코드로 변환, 

 이를 인터프리터(JVM,닷넷 프레임워크)에서 한줄 한줄 해석하여 수행.

 ex. 자바, C#

- 정적타입, 동적타입

 정적 타입

 자료형이 고정되어 있는 언어. 묵시적 형변환이 엄격함. ( C언어, 자바 )

 ex. C, C++, 자바

 동적 타입

 자료형이 동적으로 변환될 수 있는 언어. 묵시적 형변환이 비교적 허용.

 ex. 파이썬,루비 _ 인터프리터 언어

- 계산모델에 따른 분류

 절차(명령)형 언어 

  단계단계 문제를 해결해 가는 언어, 절차적인 해결과정(알고리즘)

 C언어

 객체지향 언어

 추상화, 캡슐화, 상속성, 다형성의 특징. 각 구성요소(변수,메서드)의 객체화

 C++, Java

 선언(논리)형 언어

 무엇을 표현할지만 명시하는 언어

 HTML, SQL

 함수형 언어

 함수개념에 기반을 둔 언어. 변수가 존재하지 않는다.

 


2번 문제. 

C++과 JAVA 비교

- Java는 C++ 보다 객체 지향에 충실한 언어이며 프로그램의 중심단위가 C++ 은 함수(function)단위, Java는 클래스(Class) 단위이다.

- C++은 다중상속 지원. Java는 다중상속을 지원하지 않고, 인터페이스를 통해 대체 가능하다.

- C++은 컴파일 언어이며, Java는 바이트코드 언어로서 실행속도에서는 C++이 더 빠르다.


4번 문제.

Syntax analysis

파싱의 종류

 Top-Down(하향식)

 Left Parse(좌파스) - 루트노드부터 시작하여 단말노드, 확장의 개념

 Bottom-Up(상향식)

 Right Parse(우파스) - 단말노드부터 시작하여 루트노드, 축약의 개념

- 파스트리에서 해석에 불필요한 부분을 제외한 것이 추상 구문트리 로서, 추상 구문트리는 파스트리에 비해 기억 공간이 효율적이다.

- 추후 추가


8번 문제.

레이스 컨디션 & 데드락

 경쟁조건(Race Condition)

 

 교착상태(Deadlock)

 둘 이상의 프로세스가 서로가 가진 한정된 자원을 요청하는 경우 발생하는 것

  프로세스가 진전되지 못하고 모든 프로세스가 대기 상태가 된다.


9번 문제.

l-값 r-값



10번 문제.



14번 문제.

바인딩

 바인딩

 프로그래밍시 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것.

 정적 바인딩

 컴파일 및 링크시에 확정되는 바인딩, 실행 효율이 높다.

 동적 바인딩

 프로그램의 실행과정에서 바인딩, 융통성이 있다.


17번 문제.

정적 영역규칙 & 동적 영역규칙

 정적 영역규칙

 1. 자신의 블록 확인 -> 2. 외부 상위 블록 확인( 대부분의 경우 main ) 

 동적 영역규칙 

 1. 자신의 블록 확인 -> 2. 호출한 블록 확인