Design and Implementation of a Network Programming Language

네트워크를 고려한 프로그래밍언어의 설계와 구현

  • Won, Yu-Hun (Dept. of Computer Science, Korea Advanced Institute of Science and Technology) ;
  • Han, Tae-Suk (Dept. of Computer Science, Korea Advanced Institute of Science and Technology)
  • 원유훈 (한국과학기술원 전산학과) ;
  • 한태숙 (한국과학기술원 전산학과)
  • Published : 1999.11.01

Abstract

대규모 네트워크 상에서 동작하는 분산 시스템의 구현을 위해 제시된 방법 중의 하나인 이동 코드 개념은 네트워크 공유 자원에 접근할 수 있는 효과적인 방법을 제시하였고 이 개념을 지원하는 많은 언어들의 개발을 가져왔다. 개발된 언어들이 가지고 있는 이동 코드를 지원하기 위한 언어 구문과 적용하려는 문제 영역의 특성을 반영한 언어 구문은 네트워크 프로그래밍을 하는데 있어서 효율과 문제 중심의 프로그램의 두 가지를 모두 가능하게 하고 있다. 본 논문에서는 현재 분산 컴퓨팅 환경에서 가장 많이 사용되고 있는 클라이언트-서버 모델을 확장하여 서버의 자원에 접근할 수 있는 또 다른 방법을 가진 모델을 제시하고, 이 모델을 표현할 수 있는 언어를 설계하였다. 설계된 언어는 이동 코드의 개념을 지원함으로써 대규모 네트워크에서 수행되는 프로그램의 작성을 가능하게 하고, 분산 범위 규칙을 채택함으로써 이동 코드의 기술을 일반 함수를 기술하듯 명확한 관점에서 할 수 있도록 하였다. 또한 네트워크 관련 자원들을 언어 구문으로 채택하여 네트워크 프로그래밍을 언어 수준에서 할 수 있도록 하였다. 언어의 이론적인 설계에 그치지 않고 설계된 언어를 수행할 수 있는 실행 시간 지원 시스템을 구현하였다. 실행 시간 지원 시스템은 언어를 해석하고 실행하는 코드 해석기와 이동 코드를 지원하는 네트워크 감독으로 구성되며 설계된 언어를 사용하여 실제로 네트워크 응용 프로그램을 작성하고 테스트 해 볼 수 있다.Abstract Some studies bring up a concept of code mobility as an innovative way to access network resources in order to develop distributed systems working on a large scale network. After that, many languages are suggested to support this concept. In these languages, language constructors for their particular application domains and mobile codes provide both problem-oriented views to the programmer and reasonable performance to the system. In this thesis, we extend the client-server model that is the most popular model in developing distributed systems these days. We propose a model to have another method to access server's resources and extend the C language to implement the proposed model for the large scale network. The new language has capability to build a software working on a large scale network by supporting mobile code and gives a consistent network programming view to the programmer by adapting distributed semantics. The language also makes network programming easy by providing network primitives at the language level. We implement a prototype of run-time system to support this language. The run-time system is composed of two major parts: code-interpreter that interprets and executes the language and network-daemon that supports mobile codes.

Keywords