프로그래밍언어연구회지 제12권 제1호 (1998년)
권두언:
최광무
[.PDF 329KB]
특별기고: 함수언어의 응용
프로그래밍과 언어
튜토리얼
- 다익스트라의 '프로그래밍의 수련(修練)'
[.PDF 368KB]
김도형
워크샵 보고:
도경구
[.PDF 307KB]
열린논단
- 프로그래밍언어 연구회지를 위하여
[.PDF 124KB]
이광근
본문
함수형 프로그램들이 사용된 예 [.PDF 206KB]
- 저자: 이광근
- 요약:
프로그래밍 언어의 인기도는 분명 "성적순"은 아니다. 현재 인기를 누리고
있는 언어들(C, C++, Java등)은 프로그래밍 언어 분야의 중요한
연구성과들을 충실히 구현한 언어들은 아니기 때문이다. 프로그램의
실행(evaluation, dynamic semantics), 기획(type, static semantics),
프로그램 명시와 증명(specification and proof)등에 대해서 수학적으로
모델을 만들고 엄밀하게 찾아낸 해결방안들은 실제의 프로그래밍 언어로
최대한 담아낸 것들이 여럿 있음에도 불구하고 많은 사람들은 알지 못하거나
아직은 실용적이지 않을 것이라고 짐작하고 있다. 사실은 중요한
소프트웨어의 개발에 이러한 튼튼한 기초를 가진 언어들이 그 장점을 살려
이용되고 있는 경향이 점점 빈번해지고 있다. Pill
Wadler(http://cm.bell-labs.com/cm/cs/who/wadler/)는 최근에 함수형
언어(functional language)가 실제 문제에 성공적으로 적용된 여섯가지 예를
정리한 기사를 [ACM SIGPLAN Notice 33(2), 1998]에 실었다. 이 기사의
내용과 다른 예들을 첨가해서 정리해 보았다.
함수 언어 Haskell과 Clean의 상용화 동향 [.PDF 241KB]
- 저자: 변석우, 최광훈
- 요약:
함수형 언어는 견고한 이론을 기반으로 설계 구현되고 있으므로, 다른
부류의 언어들이 갖지 못하는 많은 장점을 가지고 있다. 그러나 함수 언어는
실용적으로 아직 활발하게 사용되지 못하고 있는 실정이다. 함수 언어의
'이론적 장점'과 '비실용성' 사이의 괴리를 해소하기 위해서 극복해야 할
주요 난관은 함수언어 '컴파일러의 저성능'과 'side-effect프로그래밍의
부적합성'의 문제였다. 최근 하드웨어의 빠른 성장과 함수 언어 컴파일러
기법의 발전으로 함수 언어 컴파일러의 저성능의 문제는 많이 완화되었다고
본다. 예를 들어, 함수언어 Clean의 성능은 C와 견줄 수 있을 정도로
빠르다. 함수 언어를 이용한 side-effect 프로그래밍 연구의 핵심은 함수
프로그래밍 고유의 수학적 순수성(예를 들어, equational reasoning과
referential transparency 특성 등)을 유지하면서 입출력 및 인터페이스에
대한 이론적 기반을 정립하고 이것을 구현하는데 있다. 최근 category
이론을 응용한 Monad와 선형 논리의 개념을 응용한 Clean의 Unique 타입의
각각 함수 언어 Haskell과 Clean에서 구현되었다. 이 기능들 덕택으로 함수
프로그래밍에서 side-effect가 쉽게 표현할 수 있게 되었다. 한편, 컴퓨터
및 관련 시스템 환경이 급격히 바꾸고 있다. 하드웨어 가격대비
소프트웨어의 가격이 상승하고 있으며, 인터넷을 이용하는 응용 프로그램이
등장함에 따라 시스템의 안전성 및 보안 등이 중요한 이슈로서 등장하고
있다.이러한 환경의 변화는 함수 프로그래밍 언어의 장점들을 더욱
부각시키고 있으며, 함수 언어 상용화에 대한 관심을 고조시키고 있다. 함수
언어의 상용화가 성공된다며 이것은 컴퓨터 분야에서 '학문'과 '실용'
사이의 거리를 단축시키는 중요한 공헌을 하는 셈이며, 산업과 연구 전반에
걸쳐 큰 영향을 미칠 것으로 예상한다. 함수 언어 상용화에 대한 여러
연구들 중에서, 본 고에서는 함수언어 Haskell을 일반 대중이 사용할 수
있도록 상용화하기 위한 연구와, Clean 의 상품화에 대하여 소개하려
한다. 좀 더 구체적으로 관심이 있는 독자들은 제시된 참고문헌들을
참고하기 바라며, 본 고에서는 기본적인 사항들에 대해서만 언급하기로
한다.
모델링 언어의 표준으로 자리잡는 UML [.PDF 878KB]
- 저자: 심우호, 유원희
- 요약:
문명이 발전됨에 따라 소프트웨어 산업이 보다 전문화되는 것과 동시에
복잡성이 증가하게 되었다. 우리는 소프트웨어 위기(Software Crisis)를
통해 소프트웨어 개발의 어려움을 알게 되었고, 이는 곧 소프트웨어 개발에
있어 프로그래밍 위주의 개발이 아닌 충분한 분석과 설계의 중요성을
알았다. 모델링 언어는 바로 프로그래밍을 위한 언어가 아닌 분석과 설계를
위한 언어인 셈이다. 모델링 언어의 일종인 UML은 일반 프로그램 언어와는
다른 목적을 위해 설계된 언어이다. UML은 소프트웨어 중심의 시스템을
명세화, 구성, 가시화, 그리고 문서화하는 모델링 언어이다. 좀더
확장한다면, 비즈니스 모델과 같은 소프트웨어 시스템이 아닌 것에도 사용
될 수 있는 언어이다. 이는 UML이 마치 큰 빌딩을 세우는데 있어 설계도면이
그려진 청사진에 비유될 수 있다. UML은 객체지향적 분석 및 설계의 대가인
Booch, Rumbaugh[OMT], Jacobson[OOSE]에 의해 기본이 완성되고, 이후 계속
HP, IBM, Microsoft, Oracle의 참여로 현재 UML1.1(97년 11월)이 나왔다.
병렬프로그래밍언어 CC++ [.PDF 354KB]
- 저자: 변석우, 우영춘, 지동해
- 쪽:
- 요약:
향후 다중 프로세서와 공유 메모리 구조를 갖는 고성능 컴퓨터가 점차 널리
사용될 것으로 예상한다. 따라서 병렬 프로그래밍에 대한 요구가 증대될
것이며, 그 적용 대상 또한 수치 계산 분야에 국한되지 않고 널리 확장될
것이라고 보여진다. 이런 상황에서 '제어 병렬성'에 기반한 병렬언어 CC++에
대해서 주목할 필요가 있다고 생각한다. 본 고에서는 CC++의 주요 병렬
구문들에 대해서 소개하고, 병렬 프로그래밍의 향후 전망에 대하여
논의한다.
프로그래밍언어 연구회