[논문 리뷰] Towards Hybrid Intensional Programming with JLucid, Objective Lucid, and General Imperative Compiler Framework in the GIPSY
이 논문은 GIPSY 시스템 내에서 JLucid, Objective Lucid 및 일반 명령형 컴파일러 프레임워크를 통합한 하이브리드 내재 프로그래밍 프레임워크를 제안한다. 이는 내재 프로그램에서 Java 코드와 객체를 원활하게 사용할 수 있도록 한다. 순차 스레드와 통신 절차를 생성하는 컴파일러를 도입하고, 배열과 객체 지향 구조를 지원하며, C 및 포트란과 같은 명령형 언어를 GIPSY 호환 컴ponent로 컴파일하기 위한 재사용 가능한 인fra를 제공함으로써 분산형, 요구 기반 실행 환경에서의 표현력과 상호운용성을 크게 향상시킨다.
Pure Lucid programs are concurrent with very fine granularity. Sequential Threads (STs) are functions introduced to enlarge the grain size; they are passed from server to workers by Communication Procedures (CPs) in the General Intensional Programming System (GIPSY). A JLucid program combines Java code for the STs with Lucid code for parallel control. Thus first, in this thesis, we describe the way in which the new JLucid compiler generates STs and CPs. JLucid also introduces array support. Further exploration goes through the additional transformations that the Lucid family of languages has undergone to enable the use of Java objects and their members, in the Generic Intensional Programming Language (GIPL), and Indexical Lucid: first, in the form of JLucid allowing the use of pseudo-objects, and then through the specifically-designed the Objective Lucid language. The syntax and semantic definitions of Objective Lucid and the meaning of Java objects within an intensional program are provided with discussions and examples. Finally, there are many useful scientific and utility routines written in many imperative programming languages other than Java, for example in C, C++, Fortran, Perl, etc. Therefore, it is wise to provide a framework to facilitate inclusion of these languages into the GIPSY and their use by Lucid programs. A General Imperative Compiler Framework and its concrete implementation is proposed to address this issue.
연구 동기 및 목표
- 분산 시스템에서 하이브리드 프로그래밍을 가능하게 하기 위해, Lucid 가족의 내재 언어에 Java 코드와 객체에 대한 일등 지원을 통합하는 것.
- 명령형 코드(예: C, C++, 포트란)를 GIPSY 호환 순차 스레드와 통신 절차로 컴파일할 수 있도록 하는 일반 명령형 컴파일러 프레임워크(GICF)를 설계하고 구현하는 것.
- Objective Lucid 및 JLucid 확장 기반으로 내재 프로그램 내에서 배열 조작과 객체 지향 프로그래밍 구조(예: 마침표 표기법, 객체 인스턴스화)를 지원하는 것.
- 기존에 명령형 언어로 작성된 과학적 및 유틸리티 라이브러리를 GIPSY의 내재 프로그래밍 모델에서 재사용할 수 있도록 하는 것.
- 분산형, 요구 기반 실행 환경에서 하이브리드 내재 프로그래밍을 위한 확장 가능하고 안정적이며 보안적인 인fra를 제공하는 것.
제안 방법
- JLucid의 설계 및 구현: Java 메서드를 Lucid 프로그램에 직접 통합하는 언어 확장으로, 프리프로세서와 AST 기반 컴파일링을 통해 순차 스레드(ST)와 통신 절차(CP)를 생성하는 방식.
- Objective Lucid의 정의: JLucid의 초집합으로, 객체 인스턴스화, 마침표 표기법을 통한 메서드 호출, 객체 배열을 포함한 일등 객체 지향 구조를 지원하며, 내재 실행 모델에 의미 체계를 매핑하는 방식.
- 일반 명령형 컴파일러 프레임워크(GICF)의 설계: 명령형 언어 컴파일러를 추상화하여, 공통 인터페이스와 JNI 통합을 통해 C/C++를 포함한 다수의 언어에 대한 플러그인 방식의 지원을 가능하게 하는 방식.
- Java 리플렉션과 JNI를 활용하여, GIPSY 런타임에서 컴파일된 명령형 코드를 동적으로 로드하고 실행할 수 있도록 하며, 일반 교육 엔진(GEE)을 통한 요구 기반 실행을 보장하는 방식.
- GIPSY의 타입 체계와 의미 분석기 통합을 통해 내재 및 명령형 컴ponent 간의 타입 안정성과 정확한 데이터 흐름을 보장하는 방식.
- 하이브리드 프로그램의 상호작용 개발 및 테스트를 지원하기 위한 웹 기반 프론트엔드(WebEditor)와 명령행 인터페이스의 구현.
실험 결과
연구 질문
- RQ1내재 프로그래밍의 선언적이고 요구 기반 실행 모델을 유지하면서 Java 코드를 내재 프로그램에 원활하게 통합할 수 있는 방법은 무엇인가?
- RQ2내재 프로그래밍 모델 내에서 메서드와 필드와 같은 객체 지향 구조를 지원하기 위한 의미론적 및 문법적 요구사항은 무엇인가?
- RQ3GIPSY 생태계 내에서 다수의 명령형 언어(예: C, 포트란)를 지원할 수 있도록 일반 목적의 컴파일러 프레임워크를 설계할 수 있는가?
- RQ4분산 환경에서 내재 로직과 명령형 코드를 조합할 때 타입 안정성과 정확한 데이터 흐름을 보장하기 위한 메커니즘은 무엇인가?
- RQ5기존에 명령형 언어로 작성된 과학 라이브러리를 성능이나 정확성에 손상 없이 내재 프로그래밍 모델에서 재사용할 수 있는가?
주요 결과
- JLucid 컴파일러는 임bed된 Java 코드로부터 실행 가능한 순차 스레드와 통신 절차를 성공적으로 생성하여, GIPSY 시스템 내에서 하이브리드 실행을 가능하게 했다.
- Objective Lucid는 객체 인스턴스화, 마침표 표기법을 통한 메서드 호출, 객체 배열을 포함한 완전한 객체 지향 프로그래밍 구조를 지원하며, 의미 체계가 공식적으로 정의되고 내재 모델에 통합되었다.
- 일반 명령형 컴파일러 프레임워크(GICF)는 명령형 언어를 GIPSY 호환 컴ponent로 플러그인 방식으로 컴파일할 수 있도록 하며, JNI 기반 C용 작동 프로토타입이 존재하지만, 전체적 구현은 향후 작업으로 남아 있다.
- GICF는 JLucid와 Objective Lucid 모두에서 배열 연산을 지원하며, 배열을 일등 내재 값으로 간주하고 네이티브 데이터 구조로 매핑한다.
- 시스템은 JLucid 프로그램에 Java 코드를 임베딩함으로써 기존 라이브러리(예: MARF의 FFT 구현)의 재사용을 가능하게 하였으며, 이는 고속 푸리에 변환 사례 연구를 통해 입증되었다.
- 의미 규칙과 GIPSY 타입 체계의 공식적 검증이 진행 중이며, PVS와 Isabelle에서 초도 작업이 수행되어 공식적 정당성 보장을 향한 길이 마련되었다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.