프로그램 변환

Program transformation

프로그램 변환은 컴퓨터 프로그램을 사용하여 다른 프로그램을 생성하는 작업입니다.많은 경우에 변환된 프로그램은 특정 형식 의미론과 비교하여 원본과 의미론적으로 동등해야 하며, 소수의 경우 변환은 예측 가능한 [1]방식으로 원본과 의미론적으로 다른 프로그램을 낳는다.

변환은 수동으로 수행할 수 있지만 필요한 변환 사양을 적용하는 프로그램 변환 시스템을 사용하는 것이 더 현실적입니다.프로그램 변환은 프로그램 텍스트를 나타내는 컴파일러 데이터 구조(를 들어 추상 구문 트리)를 수정하는 자동화된 프로시저로서 지정되거나 파라미터화된 소스 코드 fragment를 [2]나타내는 패턴 또는 템플릿을 사용하여 보다 편리하게 지정될 수 있다.

소스 코드 변환 시스템의 실용적인 요건은 프로그래밍 언어로 작성된 프로그램을 효과적으로 처리할 수 있어야 한다는 것입니다.이를 위해서는 보통 소스 코드 해석, 코드 구조의 내부 프로그램 표현 구축, 프로그램 심볼의 의미, 유용한 정적 분석, 변환된 프로그램 표현에서 유효한 소스 코드 재생성 등 관심 프로그래밍 언어에 대한 완전한 프런트 엔드의 통합이 필요합니다.기존 언어(Java, C++, PHP 등)에 적합한 프런트 엔드를 구축하고 통합하는 문제는 이러한 언어의 복잡성 때문에 프로그램 변환 시스템 자체를 구축하는 것과 같은 어려움이 있을 수 있습니다.변환 시스템이 널리 유용하기 위해서는 많은 대상 프로그래밍 언어를 처리할 수 있어야 하며 그러한 프런트 엔드를 지정하는 수단을 제공해야 합니다.

의미적 등가의 일반화는 프로그램 개선의 개념이다.한 프로그램은 원래 프로그램이 종료되는 모든 초기 상태에서 종료되는 경우 다른 프로그램의 개선이며, 그러한 각 상태에 대해 원래 프로그램에 대해 가능한 최종 상태로 종료되는 것이 보증된다.다시 말해, 프로그램의 미세화는 원래 프로그램보다 더 정의되고 더 결정적이다.두 프로그램이 서로 개량된 경우 프로그램은 동일합니다.[clarification needed]

「 」를 참조해 주세요.

레퍼런스

  1. ^ Ward, Martin (1989). Proving Program Refinements and Transformations (DPhil Thesis). Oxford University.
  2. ^ Pawlak, Renaud; Monperrus, Martin; Petitprez, Nicolas; Noguera, Carlos; Seinturier, Lionel (2016). "SPOON: A library for implementing analyses and transformations of Java source code". Software: Practice and Experience. 46 (9): 1155–1179. doi:10.1002/spe.2346.

외부 링크