• 제목/요약/키워드: Haskell

검색결과 34건 처리시간 0.024초

중간언어 L-코드를 이용한 Haskell-Java 언어 번역기 구현 (Compiling Haskell to Java via an Intermediate Code L)

  • 최광훈;한태숙
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제28권12호
    • /
    • pp.955-965
    • /
    • 2001
  • 본 논문에서는 함수형 언어 Haskell 을 Java언어로 변환하여 Java Virtual Machine 에 수행하는 컴파일 방법을 제안한다. 이 컴파일 방법은 추상 기계 Spineless Tageless G-machine(STGM)을 수행 모델로 삼는다 L-code로 명명한 중간 언어를 도입하여 추상기계의 각각의 세부 동작을 이 언어의 명령어로 표현하고, 일견의 세부 동작들을 이 언어의 바인딩을 통해 표현한다. 각 명령어는 Java의 문장으로 변환하기 쉽도록 정의하였다. Java에서의 표현 방법을 결정하고. STS 프로그램의 L-code 프로그램으로의 컴파일 규칙과 Java 프로그램으로의 컴파일 규칙을 세안한다. 실험을 통해 제안한 컴파일러에 의해 Haskell 프로그램으로부터 생성된 Java 프로그램의 수행 성능은 Glasgow Haskell 컴파일러의 최적화 변환을 적용했을 때 기존의 Haskell 인터프리터인 Hugs와 대등함을 보인다

  • PDF

코드 최적화 DNA-Haskell을 도입한 DNA 컴퓨팅에 의한 배낭 문제 해결 (Solution for Knapsack Problem using DNA Computing with Code Optimized DNA-Haskell)

  • 김은경;이상용
    • 한국지능시스템학회:학술대회논문집
    • /
    • 한국퍼지및지능시스템학회 2004년도 추계학술대회 학술발표 논문집 제14권 제2호
    • /
    • pp.539-542
    • /
    • 2004
  • 배낭 문제는 조합 최적화 문제로서, 다항 시간(polynomial time)에 풀리지 않는 NP-hard 문제이다 이 문제를 해결하기 위해 기존에는 DNA 컴퓨팅 기법과 GA 등을 사용하여 해결하였다. 하지만 기존의 방법들은 DNA의 정확한 특성을 고려하지 않아, 실제 실험과의 결과 차이가 발생하고 있다. 본 논문에서는 DNA 컴퓨팅 실험 과정에서 발생하는 DNA 조작 오류를 최소화하고, 보다 정확한 예측을 위해 함수 언어인 Haskell을 이용한 코드 최적화 DNA-Haskell을 제안한다. 코드 최적화 DNA-Haskell은 배낭 문제 중 (0,1)-배낭 문제에 적용하였고, 그 결과 기존의 DNA 컴퓨팅 방법보다 실험적 오류를 최소화하였으며, 또한 적합한 해를 빠른 시간 내에 찾을 수 있었다.

  • PDF

Haskell Eval 모나드와 Cloud Haskell 간의 성능 비교 (Performance Comparison between Haskell Eval Monad and Cloud Haskell)

  • 김연어;안형준;변석우;우균
    • 정보과학회 논문지
    • /
    • 제44권8호
    • /
    • pp.791-802
    • /
    • 2017
  • 최근 CPU 시장은 단일 코어의 속도 상승에서 코어의 수를 늘려가는 방향으로 변하고 있다. 이러한 상황에서 매니코어 프로세서의 자원을 최대한 사용할 수 있는 병렬 프로그래밍에 관한 관심이 높아지고 있다. 이 논문에서는 병렬 프로그래밍에 적합한 Haskell을 이용하여 매니코어 환경에 적합한 병렬 프로그래밍 모델을 확인하고자 한다. 이를 위해 이 논문에서는 Eval 모나드와 Cloud Haskell을 이용하여 표절 검사 병렬 프로그램과 K-평균 병렬 프로그램을 개발하였다. 그리고 개발된 프로그램을 대상으로 32코어 환경, 120코어 환경에서 성능을 측정하였다. 측정 결과 적은 코어 수에서는 Eval 모나드가 유리한 것으로 나타났다. 하지만 코어 수가 늘어남에 따라 Cloud Haskell이 실행 시간 기준으로 37%, 확장성 기준으로 134% 더 우수한 것으로 나타났다.

GC-Tune을 이용한 Haskell 병렬 프로그램의 성능 조정 (Tuning the Performance of Haskell Parallel Programs Using GC-Tune)

  • 김화목;안형준;변석우;우균
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제23권8호
    • /
    • pp.459-465
    • /
    • 2017
  • 매니코어 기술에 힘입어 컴퓨터 하드웨어의 성능이 향상되고 있지만 그에 비례한 소프트웨어 성능 증가는 다소 미미한 실정이다. 함수형 언어는 병렬 프로그램의 성능을 향상시키는 대안 중 하나이다. 이러한 언어는 부수효과가 없는 순수한 수식을 통해 내재된 병렬성을 지원하기 때문이다. 함수형 언어인 Haskell은 모나드를 기반으로 하는 다양하고 쉬운 병렬 구조를 제공하기 때문에 병렬 프로그래밍에서 널리 사용된다. 하지만 Haskell로 작성된 병렬 프로그램의 성능 확장성은 코어 수가 증가함에 따라 변동이 큰 경향이 있다. 이는 프로그램 실행에 있어 가비지 컬렉션이 공간과 시간에 모두 영향을 미치는데 Haskell은 이러한 가비지 컬렉션을 사용하는 가상머신 위에서 실행되기 때문이라고 추정된다. 따라서 본 논문에서는 GC-Tune이라는 메모리 튜닝 도구를 사용하여 이 추정이 맞는지 검증하고 Haskell 병렬 프로그램의 성능 확장성을 높이는 방법을 모색한다. 병렬 Haskell 표절 검사 프로그램을 대상으로 실험한 결과 성능 확장성이 향상되었다. 특히 메모리 튜닝을 하지 않은 프로그램에 비해 속도 향상의 변동 범위가 39% 감소하였다.

Haskell에서의 패키지 데이터 형 (Package Data Type in Haskell)

  • 장학상;권기항
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 가을 학술발표논문집 Vol.31 No.2 (1)
    • /
    • pp.760-762
    • /
    • 2004
  • 순수 함수형 프로그래밍 언어 Haskell에서의 데이터 추상은 대수 데이터형과 관련 함수로 묶어진 모듈의 인터페이스만을 노출함으로써 이루어진다. 이러한 데이터 추상에 대한 제한된 용법은 프로그램 설계에 있어 유용하게 사용되는 패턴 매칭을 제약하고, 파일 단위의 추상을 요구함으로써 데이터 구조 단위의 데이터 추상을 불가능하게 한다. 본 논문은 Haskell의 제한된 데이터 추상 문제를 해결하기 위한 방법으로 패키지 데이터형을 제안한다. 패키지 데이터형은 더 작은 단위로 데이터 추상을 가능하게 하고 패턴 매칭을 제악하지 않고 자유롭게 사용할 수 있게 한다.

  • PDF

분할 정복법을 이용한 Haskell GC 조정 시간 개선 (Improving Haskell GC-Tuning Time Using Divide and Conquer)

  • 안형준;변석우;우균
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 춘계학술발표대회
    • /
    • pp.83-86
    • /
    • 2017
  • 단일 코어 프로세스의 성능 향상은 전력 소모, 발열 등의 이유로 한계에 달했다. 이에 대한 대안으로 멀티 코어가 등장했으며 매니 코어 기술에 대한 연구가 활발히 진행 중에 있다. 이렇듯 멀티 코어 환경이 보편화됨에 따라 병렬 프로그래밍의 중요성이 더욱 커졌다. 한편, 순수 함수형 언어 Haskell은 부수효과가 없고 다양한 병렬화 도구를 지원함으로써 다가오는 병렬 프로그래밍 시대에 적합한 언어라 할 수 있다. 이때 Haskell 병렬 프로그램의 성능은 메모리 재사용(Garbage Collection) 시간에 큰 영향을 받는다. 그래서 Haskell 병렬 프로그램의 성능 향상, 분석을 위한 메모리 프로파일링 도구가 필요하다. 이미 Haskell이 제공하는 메모리 프로파일링 도구로 ghc-gc-tune이 있지만 실행 속도 측면에서 개선이 필요하다. 본 연구에서는 분할 정복법을 이용해서 매 단계마다 탐색 영역을 4분의 1로 줄이도록 ghc-gc-tune을 개선했다. 개선된 ghc-gc-tune을 극대 독립 집합 프로그램과 K-means 프로그램에 적용한 결과, 평균 98%의 정확도로 실행 시간을 평균 7.78배 단축했다.

게임 프로그래밍을 위한 순수 함수형 언어의 활용 (Apply A Pure Functional Language for Game Programming)

  • 이동주;변석우;우균
    • 한국콘텐츠학회:학술대회논문집
    • /
    • 한국콘텐츠학회 2005년도 춘계 종합학술대회 논문집
    • /
    • pp.464-469
    • /
    • 2005
  • 일반적으로 게임 프로그램을 구현할 때 C언어와 같은 명령형 프로그래밍 언어가 주로 사용된다. 하지만 복잡하고 다양한 그림의 모습 및 동작을 표현하기에는 프로그래머의 많은 노력이 요구된다. 복잡한 게임 프로그램을 보다 간결하고 명확하게 표현하는 방법으로 순수 함수형 언어인 Haskell을 이용하는 방법을 시도한다. Haksell과 같은 순수 함수형 프로그래밍은 기술적인 우수성을 가지고 있으며, 현재 많은 분야에서 특화된 언어로 되고 있다. 본 논문에서는 동일한 게임을 Haskell과 C로 직접 구현함으로서, 게임 개발 측면에서 두 언어의 차이점과 장단점에 대해서 논의한다. 또한 향후 Haskell의 실용화 가능성에 대해서도 논의한다.

  • PDF

모나드를 이용한 비결정적 컴파일러 구현 (Implementation of Nondeterministic Compiler Using Monad)

  • 변석우
    • 한국컴퓨터정보학회논문지
    • /
    • 제19권2호
    • /
    • pp.151-159
    • /
    • 2014
  • 본 연구에서는 Haskell의 모나드 기법을 이용한 명령형 언어의 컴파일러 구현에 대해 논의한다. 이 컴파일러는 한 생성 룰이 입력 스트링의 파싱을 실패할 때 다른 생성 룰로써 파싱하는 backtracking 기능의 비 결정적 Recursive Descent Parser를 포함한다. Haskell은 파싱에 필요한 우수한 기능들을 가지고 있다. Haskell의 대수적 타입은 추상구문트리를 자연스럽게 표현할 수 있으며, 모나드 파싱을 적용한 프로그램 코드는 매우 간결하여 가독성이 좋고, 타 언어에 의해 구현된 것에 비해 코드의 양이 획기적으로 감소된다. 이 컴파일러의 목적 코드는 스택 머신을 기반으로 한 Stack-Assembly 언어로서 이것을 위한 코드 생성과 어셈블러 실행 환경에 대해서도 논의한다.

분할 정복법을 이용한 Haskell GC 조정 시간 개선 (Improving Haskell GC-Tuning Time Using Divide-and-Conquer)

  • 안형준;김화목;류샤오;김연어;변석우;우균
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제6권9호
    • /
    • pp.377-384
    • /
    • 2017
  • 발열 때문에 더이상 회로 집적도를 높일 수 없기 때문에 단일 코어 프로세서의 성능 향상은 한계에 달했다. 그래서 코어를 여러 개 사용하는 멀티 코어, 매니 코어 형태의 프로세서가 등장했으며 병렬 프로그래밍이 중요해졌다. 이러한 상황에서 병렬 프로그래밍에 여러 장점이 있는 순수 함수형 언어 Haskell이 주목받고 있다. Haskell은 식 계산 방식에서 이미 병렬성이 내재되어 있으며 병렬 구조를 지원하는 모나드 도구를 제공한다. 그런데 Haskell 병렬 프로그램의 성능은 메모리 재사용 시스템을 포함한 실행시간 시스템에 큰 영향을 받는다. 이미 Haskell이 제공하는 메모리 프로파일링 도구로 GC-tune이 있지만, GC-tune은 가능한 모든 GC 옵션에 대해 프로그램 실행 시간을 반복 측정하기 때문에 GC 조정 시간이 너무 오래 걸린다. 그래서 본 연구에서는 기본적인 분할 정복법을 이용해서 GC-tune의 탐색 영역을 매 단계마다 4분의 1로 줄이는 방법을 제안한다. 제안하는 방법을 두 가지 병렬 프로그램(극대 독립 집합 프로그램과 K-평균 프로그램)에 적용한 결과, 평균 98%의 정확도로 실행 시간을 평균 7.78배 단축시켰다.

매니코어 시대를 대비하는 Haskell 병렬 프로그래밍 동향 (Technology Trends of Haskell Parallel Programming in the Manycore Era)

  • 김진미;변석우;김강호;정진환;고광원;차승준;정성인
    • 전자통신동향분석
    • /
    • 제29권5호
    • /
    • pp.167-175
    • /
    • 2014
  • 매니코어 구조의 고성능 컴퓨팅 시대가 시작되고 있다. 매니코어의 성능을 활용하기 위해서는 병렬 프로그래밍이 필수적인데, 이 방식은 기존 프로그래밍에 비해 훨씬 더 복잡하고 어렵다. 또한 컴퓨터의 성능이 높아짐에 따라 소프트웨어의 규모와 복잡도 또한 증가하게 되며, 소프트웨어를 에러 없이 안전하게 개발하는 것은 매우 어려운 문제가 되고 있다. 이 문제해결에 도움을 줄 수 있는 한 방법으로 기존의 명령형 프로그래밍 언어 대신 Haskell과 같은 순수 함수형 언어의 이용을 고려한다. Haskell은 지난 수십 년 동안 람다 계산법, 타입 이론, 의미론 등의 강력한 이론적 배경하에 최신 기술을 수용하면서 발전하고 있는 순수 함수형 언어이다. 함수의 순수성은 결정적(deterministic) 병렬 프로그래밍을 표현하는데 매우 유리하다. 최근 이와 관련된 매우 고무적인 연구결과가 발표되고 있으며 여러 응용프로그램들이 개발되고 있다. Haskell은 여러 강력한 이론 덕택으로 병렬 프로그래밍뿐만 아니라 소프트웨어의 생산성 및 안정성과 관련된 많은 문제에 도움을 줄 수 있는 다목적 언어로써 주목 받고 있다.

  • PDF