• Title/Summary/Keyword: 함수형 언어

Search Result 88, Processing Time 0.024 seconds

Real-Time Functional Reactive Program Translator for Embedded Systems (임베디드 시스템을 위한 실시간 함수형 반응적 프로그램 변환기)

  • Lee, Dong-Ju;Woo, Gyun
    • The KIPS Transactions:PartA
    • /
    • v.13A no.6 s.103
    • /
    • pp.481-488
    • /
    • 2006
  • FRP(Functional Reactive Programming) is a kind of embedded language in Haskell, it declaratively program reactive system based on two essential high-order types named behavior and events. This Paper design and implementation RT-FRP(Real-time Functional Reactive Programming) translator for using FRP in embedded systems with many constraints. The RT-FRP translator generates a C Program from an RT-FRP program according to the operational semantics of the RT-FRP language. To show the effectiveness of the RT-FRP translator, we loaded and executed the test program generated by the translator onto a real embedded system, LEGO Mindstorm. According to the experimental result, the reactive system software can be programmed more concisely using RT-FRP than using an imperative counter part although the size of the binary code is rather increased.

Unfolding Nested Loops of Functional Languages for Multithreaded Architectures (다중스레드 구조를 위한 함수형 언어의 중첩루프 펼침)

  • 하상호
    • Journal of KIISE:Software and Applications
    • /
    • v.29 no.11
    • /
    • pp.826-836
    • /
    • 2002
  • We need an enormous amount of memories for name spaces as well as additional processors if we are to effectively exploit a massively parallelism in nested loops of functional languages such as Id. If there is no sufficient amount of memories enough to exploit that parallelism, the execution of programs can be aborted during the unfolding of loops. Additionally, if loops are overunfolded, compared with the number of processors available, the system performance can be degraded severely due to the overhead of loop unfolding. This paper suggests and analyzes an algorithm which can be used to effectively unfold nested loops of functional languages on multithreaded architectures. This algorithm has a feature to unfold a given nested loop safely and near optimally, considering the system resources of processors and memories available when the loop is to be unfolded.

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

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

  • PDF

Implementation of SOAP Client in U Programming Environment (nML 프로그래밍 환경에서 SOAP 클라이언트 구현)

  • 권오경;한태숙
    • Journal of KIISE:Software and Applications
    • /
    • v.30 no.1_2
    • /
    • pp.164-172
    • /
    • 2003
  • Web service implementations are now rapidly growing. Web services are easily achieved by XML messaging for most programming languages. Applications usually utilize web services through APIs tied to a specific implementation of SOAP. nML is a dialect of SML and OCaml made in ROPAS. The soaptype type in nML is defined for the value of SOAP encoding. SOAP encoding specification defines rules for serialization of a graph of typed objects using XML Schema. XML Schema validates XML SOAP value. The soaptype type is encoded to XML and decoded from XML. It is necessary to guarantee safe encoding and decoding. So, the definitions for element and type definition in XML Schema are specified by element type and typeinfo type, which include the part of the definitions of XML Schema specification.

Type based Control Flow Analysis of Multi-Staged Program (다단계 프로그램을 위한 타입 기반의 실행흐름 분석)

  • Jin, Min-Sik;Yi, Kwang-Keun
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2007.06c
    • /
    • pp.516-520
    • /
    • 2007
  • 이 논문에서는 다단계 프로그램의 실행흐름을 타입을 기반으로 분석하는 방법을 제시하고 있다. 다단계 프로그램이란 실행 중 코드를 만들고 실행할 수 있는 언어를 말한다. 본 논문에서는 기존의 고차 함수형 언어의 실행흐름을 분석하는 방법을 다단계 언어를 위해서 확장한 방법을 제시하고 있다. 이 분석은 한 수식이 평가될 때 호출될 수 있는 함수들의 집합을 정적으로 분석하여 다단계 프로그램의 실행흐름 정보를 제공한다.

  • PDF

An Efficient Intel Assembler Tool Design (효율적인 인텔 어셈블러 도구 설계)

  • Jung, Seungil;Ryou, Jae-Cheol
    • Proceedings of the Korean Society of Computer Information Conference
    • /
    • 2020.07a
    • /
    • pp.119-122
    • /
    • 2020
  • 소스 코드가 없는 악성코드를 분석하거나 소프트웨어 취약점 분석을 위해 바이너리 분석이 요구된다. 바이너리 분석을 위한 도구 중 어셈블러는 사용자의 입력 없이 컴파일러 내부에서 수행되기 때문에 사용자 관점의 연구는 많지 않다. 그러나 바이너리 분석 과정 중 역어셈블과 중간언어(Intermediate Representation)의 정확성을 검증하기 위해 사용자가 어셈블리어를 입력하여 결과를 확인할 수 있는 어셈블러가 요구된다. 본 논문에서는 어셈블리어를 바이너리 코드로 변환하는 어셈블러 도구를 함수형 언어인 F#으로 구현하여 어셈블리 과정을 효율적으로 설계한 어셈블러 도구를 제안한다. F#의 강력한 패턴 매칭 기능을 사용하여 수백개의 명령어를 일괄적이고 직관적으로 처리하는 과정을 설계하고 구현하였다.

  • PDF

Parallelization of a Purely Functional Bisimulation Algorithm

  • Ahn, Ki Yung
    • Journal of the Korea Society of Computer and Information
    • /
    • v.26 no.1
    • /
    • pp.11-17
    • /
    • 2021
  • In this paper, we demonstrate a performance boost by parallelizing a purely functional bisimulation algorithm on a multicore processor machine. The key idea of this parallelization is exploiting the referential transparency of purely functional programs to minimize refactoring of the original implementation without any parallel constructs. Both original and parallel implementations are written in Haskell, a purely functional programming language. The change from the original program to the parallel program is minuscule, maintaining almost original structure of the program. Through benchmark, we show that the proposed parallelization doubles the performance of the bisimulation test compared to the original non-parallel implementation. We also shaw that similar performance boost is also possible for a memoized version of the bisimulation implementation.

Development of an Assembly Language Interpreter Using Monad (모나드를 이용한 어셈블리 언어 인터프리터 개발)

  • Byun, Sug-Woo
    • Journal of KIISE:Software and Applications
    • /
    • v.37 no.5
    • /
    • pp.403-410
    • /
    • 2010
  • Monad in Haskell allows one to do imperative-style programming as well as pure functional programming. In this work, we characterize monadic abstraction and its programming technique by restructuring an assembly language interpreter coded in pure functional style into the one by the monadic style. Monad programming consists of two phases; the State monad is applied to a stack and a symbol table, and then a State Monad Transformer integrating these two monads is constructed. As a result, we can see that the program code by monad programming is much clearer and more intuitive than one written in the pure functional style.

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

  • 장학상;권기항
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2004.10a
    • /
    • pp.760-762
    • /
    • 2004
  • 순수 함수형 프로그래밍 언어 Haskell에서의 데이터 추상은 대수 데이터형과 관련 함수로 묶어진 모듈의 인터페이스만을 노출함으로써 이루어진다. 이러한 데이터 추상에 대한 제한된 용법은 프로그램 설계에 있어 유용하게 사용되는 패턴 매칭을 제약하고, 파일 단위의 추상을 요구함으로써 데이터 구조 단위의 데이터 추상을 불가능하게 한다. 본 논문은 Haskell의 제한된 데이터 추상 문제를 해결하기 위한 방법으로 패키지 데이터형을 제안한다. 패키지 데이터형은 더 작은 단위로 데이터 추상을 가능하게 하고 패턴 매칭을 제악하지 않고 자유롭게 사용할 수 있게 한다.

  • PDF

Enhancement Method of the Procedural Thinking Ability through Universal Programming Language Utilizing Entry (엔트리를 이용한 보편적 프로그래밍 언어 개발로 절차적 사고력 향상 방안)

  • Kim, Dong-Man;Lee, Tae-Wuk
    • Proceedings of The KACE
    • /
    • 2017.08a
    • /
    • pp.131-134
    • /
    • 2017
  • 이 연구에서 엔트리 명령 블록을 이용하여 보편적 프로그래밍 언어를 개발하고 검증하였다. 그래서 이 연구를 통해 블록형 프로그래밍 언어의 접근 수월성을 이용하여 절차적 사고력 향상을 위한 아이디어를 제공하고자 하였다. 새로운 프로그래밍 언어를 만들어 알고리즘을 적용하여 함수화된 사칙연산 프로그램을 만들면서, 다양한 알고리즘을 적용하면 엔트리에서 제시하는 모든 명령 블록을 만들 수 있음을 증명하였다. 이 연구를 통해 1)프로그래밍 언어에 포함된 다양한 기능의 명령어들도 함수화되어 있음을 증명하고 재생산 가능함을 경험할 수 있는 아이디어를 제공하고, 2)초보 프로그래머들이 프로그래밍 언어 개발에 대한 흥미와 관심을 갖게 되는 방안을 제시하며, 3)알고리즘을 경험하면서 절차적 사고력을 향상시킬 수 있는 다른 방향의 SW 교수 학습 방법과, 4)프로그래밍 언어를 미시적으로 탐구하면서 SW 교육 관점을 다양화하는 방법을 제시하였다. 이 연구에서 제시한 방안으로 학생들이 절차적 사고력 향상과 프로그래밍 언어의 다양성 인식, 프로그램을 심층적으로 분석하는 태도 등의 SW 교육에 대한 긍정적 변화를 기대한다.

  • PDF