자바를 위한 심볼릭 스크립트 프로그래밍
초록
이 논문은 JSR‑223 기반 스크립트 엔진을 활용해 자바 컴퓨터 대수 라이브러리에 자연스러운 수학 표기법을 제공하는 인터페이스를 제안한다. ‘심볼릭 프로그래밍’이라는 개념을 정의하고, 심볼릭 객체·타입·컨테이너의 특성을 분석한 뒤, 다항식과 다항식 링에 대한 프로토타입 구현을 통해 실용성을 입증한다.
상세 분석
논문은 먼저 자바가 고성능 수학 연산에 강점을 가지지만, 사용자 인터페이스가 부족해 산업적 활용이 제한된다는 문제점을 제시한다. 이를 해결하기 위해 JSR‑223 표준에 정의된 스크립트 엔진(Jython, Groovy, Scala 등)을 활용해 자바 객체를 스크립트 언어에서 직접 다룰 수 있는 방법을 모색한다. 핵심 아이디어는 ‘심볼릭 프로그래밍(symbolic programming)’이다. 저자는 ‘재구성 가능한 표현식(reconstructing expression)’을 정의하고, 표현식이 입력 형태와 출력 형태가 문자열 수준에서 동일할 때 이를 심볼릭이라고 규정한다. 이 개념을 바탕으로 ‘심볼릭 객체’, ‘심볼릭 타입’, ‘심볼릭 컨테이너 타입’ 등을 차례로 정의하고, 자바 기본형(int, long 등)과 스칼라의 List, Symbol 등 실제 언어 사례를 통해 구체화한다.
특히, 컨테이너 타입이 심볼릭이 되려면 내부 원소가 모두 심볼릭이어야 함을 보이며, 이를 통해 배열·리스트·튜플 등 복합 자료구조의 심볼릭성을 판단한다. 이어서 ‘타입 변이(type mutation)’와 ‘타입 보존(type preservation)’ 개념을 도입한다. 예를 들어, Java의 BigInteger는 출력 시 “new BigInt(…)” 형태로 변환되지 않으면 유효한 자바 표현식이 아니므로 심볼릭 클래스로 재정의해야 한다. 유리수 표현에서도 연산자 오버로드와 컨텍스트 정의를 통해 “frac(1,2)”와 같은 자연스러운 표기를 가능하게 한다.
다항식 부분에서는 다항식이 기반 링과 자체가 모두 링이라는 이중 구조를 강조한다. JAS와 ScAS라는 두 라이브러리를 기반으로, 다항식 계수를 제네릭 Ring
마지막으로 구현 사례를 제시한다. Jython 인터페이스에서 Ring 클래스를 정의하고, str 메서드가 Java 객체의 toString 결과를 그대로 반환하도록 함으로써 출력이 재구성 가능한 형태가 된다. 또한 lift 함수로 다항식 계수를 다른 링으로 승격시키는 메커니즘을 제공한다. 전체적으로 논문은 심볼릭 프로그래밍 개념을 이론적으로 정립하고, 실제 자바 기반 대수 시스템에 적용 가능한 프로토타입을 구현함으로써, 스크립트 언어와 정적 타입 언어의 장점을 조화시키는 방법을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기