맨위로가기

Curses

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

curses는 텍스트 기반 터미널에서 사용자 인터페이스를 생성하기 위한 프로그래밍 라이브러리이다. 켄 아놀드가 BSD UNIX와 함께 curses를 처음 개발했으며, "커서 최적화"의 의미를 담고 있다. curses는 vi 편집기의 커서 이동 코드를 참고하여 만들어졌으며, termcap 라이브러리를 사용하여 구현되었다. AT&T는 terminfo를 사용한 curses 버전을 개발했고, BSD와 AT&T 버전은 라이선스 문제로 독립적으로 개발되었다. 1990년대 중반 X/Open Curses가 정의되면서 AT&T의 curses 개발은 중단되었고, ncurses와 PDCurses가 파생되어 개발되었다. curses는 리눅스, FreeBSD 등 유닉스 계열 운영체제에서 널리 사용되며, 텍스트 기반 환경에서 GUI와 유사한 기능을 제공한다.

2. 역사

curses API는 여러 터미널의 기능을 기술하는 데이터베이스를 이용하며, 일부 구현체는 특별한 장치 드라이버를 사용한다. 대부분의 구현체는 terminfo를 이용하고, 일부는 termcap을 이용한다. curses는 텍스트 기반 응용 프로그램 개발에 유용하며, 비트맵 그래픽이나 여러 글꼴이 필요 없는 경우 X 툴킷보다 단순하고 빠르다.[31]

프로그래머들은 curses를 이용하여 특정 터미널에 종속되지 않는 텍스트 기반 응용 프로그램을 작성할 수 있다. curses 라이브러리는 실행 중인 터미널 형태에 따라 적절한 제어 문자를 전송한다.

최초의 curses 라이브러리는 켄 아놀드에 의해 작성되었으며, 원래 BSD UNIX와 함께 출시되었다.[4][5][6] 1990년대에 "4.4BSD" curses로 BSD 라이브러리에 몇 가지 개선이 이루어졌지만, 널리 사용되지는 않았다.

"curses"라는 이름은 ''커서 최적화''(cursor optimization)에서 유래한 말장난이다.[7] curses가 vi 편집기에서 사용되었다고 잘못 알려진 경우가 있지만, 실제로는 vi의 커서 이동 코드가 curses 개발에 영향을 주었다.[5]

켄 아놀드의 초기 curses 구현은 termcap 라이브러리의 기능을 재사용하고 확장하는 방식으로 시작되었다.[8] 이후 메리 앤 호턴이 AT&T Corporation에서 terminfo를 사용하는 다른 버전을 개발하여 UNIX System III 및 UNIX System V에 포함되었다. 라이선스 제한으로 인해 BSD와 AT&T 버전의 라이브러리는 독립적으로 개발되었다. AT&T 버전에서는 termcap/terminfo 개선 외에도 다음과 같은 개선이 이루어졌다.


  • 비디오 강조 표시 (굵게, 밑줄): BSD 버전은 ''standout''만 지원했다.
  • 선 그리기: BSD 버전은 거의 지원하지 않았다.
  • 색상: BSD 버전에서는 지원되지 않았다.


AT&T curses 개발은 X/Open Curses가 정의된 1990년대 중반에 중단된 것으로 보인다.[9] 1995년, BSD 유지보수 담당자 키스 보스틱은 ncurses를 선호하여 curses 라이브러리를 공식적으로 폐기했다.[10] ncurses 및 PDCurses의 개발은 계속되고 있다. BSD curses 버전은 NetBSD 운영 체제에서 계속 유지 관리되고 있으며, 와이드 문자 지원, termcap에서 terminfo로의 마이그레이션 등이 이루어지고 있다.

2. 1. 초기 개발 (BSD)

켄 아놀드는 BSD UNIX와 함께 curses를 처음 개발했으며, 특히 ''Rogue'' 게임에서 사용되었다.[4][5][6] "curses"라는 이름은 ''커서 최적화''(cursor optimization)에서 유래되었으며,[7] vi 편집기의 커서 이동 코드를 참고하여 작성되었다.[5]

초기 curses는 termcap 라이브러리를 기반으로 구현되었다.[8] 몇 년 후, 메리 앤 호턴이 termcap을 개선하고 terminfo를 사용한 다른 버전을 만들어 UNIX System III 및 UNIX System V에 채용되도록 하였다. 라이선스 문제로 인해 BSD와 AT&T 버전은 독립적으로 개발되었다.

2. 2. AT&T의 발전과 X/Open 표준

메리 앤 호턴은 AT&T Corporation에서 terminfo를 사용한 다른 버전을 만들었는데, 이것이 UNIX System III 및 UNIX System V의 일부가 되었다.[31] termcap/terminfo 개선 외에도 AT&T 버전에서는 다음과 같은 개선이 이루어졌다.

항목BSD 버전AT&T 버전
비디오 강조 표시 (굵게, 밑줄)standout만 지원굵게, 밑줄 등 여러 유형 지원
선 그리기거의 지원하지 않음지원
색상지원하지 않음지원



AT&T curses 개발은 X/Open Curses가 정의된 1990년대 중반에 중단된 것으로 보인다.[9]

2. 3. 파생 라이브러리 (pcurses, PDCurses, ncurses)

AT&T curses를 모방하여 여러 파생 라이브러리가 개발되었다. 파벨 커티스가 개발한 '''pcurses'''(1982년 시작), 마크 헤슬링이 편집기 THE와 렉스/Curses를 지원하기 위해 개발한 '''PDCurses'''(Public Domain curses, 1987년 시작),[11] 비욘 라르손이 1990년 이전에 파벨 커티스의 라이브러리에서 영감을 받아 개발한 '''PC curses'''(버전 1.4 및 이전 버전)[12][13] 등이 있다.

'''ncurses'''(new curses)는 pcurses에서 파생되어 1993년 말에 ncurses 1.8.1로 재발행되었다.[14] ncurses는 curses의 가장 널리 알려진 구현체이며, NetBSD 프로젝트의 BSD curses와 같은 다른 변형의 추가 개발을 촉진했다.[15][16]

ncurses는 curses를 대체하기 위해 GNU 프로젝트에서 리눅스, OpenBSD, FreeBSD, NetBSD용으로 만든 라이브러리이며, 이후 POSIX 준수 UNIX로 이식되었다. PDCurses는 UNIX 외의 DOS, 윈도우, OS/2 등을 위해 만들어진 curses와 거의 같은 기능을 제공하는 라이브러리이다. 크로스 플랫폼 게임 등에서 리눅스에서는 ncurses, 윈도우에서는 PDCurses를 사용하는 경우가 있다.

1990년대에는 4.4BSD에서 BSD판 curses에 하이라이트 표시 방법을 복수 지원하는 등의 개선을 실시했지만 널리 보급되지는 않았다. 이와는 별도로 AT&T판을 모방한 다른 버전의 개발이 시작되었는데, 여기에는 pcurses(1982년 시작)와 PDCurses(1987년 시작) 등 최소 두 가지 구현이 있다.

'''ncurses'''(new curses, 새로운 curses)는 pcurses에서 파생된 것으로, 1993년에 버전 1.8.1부터 시작되었다.[26] ncurses는 현재 가장 널리 사용되는 구현이며, NetBSD 프로젝트에서 BSD판 curses의 개발 등이 진행되었다.[27][28]

2. 4. 한국에서의 curses

한국에서는 주로 리눅스, FreeBSD 등 유닉스 계열 운영체제에서 ncurses 라이브러리가 널리 사용되고 있다. 크로스 플랫폼 개발 시, 리눅스에서는 ncurses, 윈도우에서는 PDCurses를 사용하는 경우가 있다.

3. 이식성

ncurses 라이브러리는 처음에는 리눅스, OpenBSD, FreeBSD, NetBSD에서 개발되었지만, 이후 주로 Thomas Dickey에 의해 다른 많은 ANSI/POSIX UNIX 시스템으로 이식되었다.[17] PDCurses는 ncurses와 완전히 동일하지는 않지만, 유사한 함수 호출을 제공하며 DOS, Win32, OS/2는 물론 X11용 콘솔 윈도우와 같은 다른 장치에서도 동작한다.[17] 이 두 라이브러리 간의 이식은 비교적 용이한 편이다. 예를 들어 로그라이크 게임 ''ADOM''은 리눅스 환경에서 ncurses를 사용하여 작성되었지만, 나중에 DOS 환경에서 PDCurses를 사용하여 이식되었다.[17][18][29]

4. 응용 프로그램

Curses는 콘솔 모드 PC, 하드웨어 ANSI 터미널, 텔넷 또는 SSH 클라이언트와 같은 텍스트 전용 장치에서 GUI와 유사한 기능을 제공하도록 설계되었다.

Curses 기반 프로그램은 텍스트 상자 및 스크롤 가능한 목록과 같은 '위젯'을 사용하여 기존 그래픽 사용자 인터페이스와 유사한 사용자 인터페이스를 갖는 경우가 많다. 이는 텍스트 전용 장치에서 일반적으로 사용되는 명령줄 인터페이스(CLI) 기반 프로그램보다 사용자 친화적이며, 텍스트 전용 장치에서도 실행할 수 있다. 또한 Curses 기반 소프트웨어는 GUI 기반 소프트웨어보다 리소스 사용량이 적고 더 광범위한 시스템에서 작동할 수 있다.

Curses는 유닉스 계열 운영 체제와 가장 일반적으로 관련되어 있지만, 마이크로소프트 윈도우용 구현도 존재한다.

Tin(뉴스 리더). curses를 사용하여 컬러 표시를 하고 있다.


Jack(CD 리퍼). curses를 사용


Curses를 사용하면 프로그래머는 특정 터미널 유형에 직접 작성하지 않고도 텍스트 기반 애플리케이션을 작성할 수 있다. 실행 시스템의 curses 라이브러리는 터미널 유형에 따라 올바른 제어 문자를 보낸다. 이 라이브러리는 터미널 화면에 매핑되는 하나 이상의 창의 추상화를 제공한다. 각 창은 문자 행렬로 표현된다. 프로그래머는 각 창의 원하는 모양을 설정한 다음 curses 패키지에 화면 업데이트를 지시한다. 라이브러리는 디스플레이를 업데이트하는 데 필요한 최소 변경 사항 집합을 결정한 다음 터미널의 특정 기능과 제어 시퀀스를 사용하여 이러한 변경 사항을 실행한다.[3]

SVR4에서는 curses를 이용한 언어 FMLI를 도입하여, 이를 사용한 텍스트 기반 사용자 인터페이스 FACE를 구현했다. FACE는 시스템 관리용 인터페이스에 사용되었다. FMLI는 Solaris에서도 사용되었다.

curses를 사용한 소프트웨어가 반드시 GUI 스타일의 텍스트 사용자 인터페이스를 채택하는 것은 아니다. 예를 들어, vi 편집기는 TUI/GUI적인 인터페이스가 아니다.

5. 스크린샷



참조

[1] 웹사이트 Procedural Dungeons of Doom: The Making of Rogue – Chapter 3 https://episodiccont[...] 2016-06-17
[2] 웹사이트 NCURSES - Frequently Asked Questions http://invisible-isl[...]
[3] 서적 Programming with curses O'Reilly
[4] 웹사이트 The history of Unix is as much about collaboration as it is about technology http://landley.net/h[...] Byte 1994-10
[5] 간행물 Screen Updating and Cursor Movement Optimization: A Library Package. University of California, Berkeley
[6] 웹사이트 Screen Updating and Cursor Movement Optimization: A Library Package http://www.mirbsd.or[...] 1992-12
[7] 웹사이트 NCURSES - Frequently Asked Questions http://invisible-isl[...]
[8] 서적 UNIX Curses Explained Prentice Hall
[9] 웹사이트 X/Open Curses, Issue 4 Version 2, Reference Pages http://www.opengroup[...] The Open Group
[10] 웹사이트 ncurses: Portable Screen-Handling for Linux https://www.linuxjou[...] Linux Journal 1995-09-01
[11] 웹사이트 Rexx/Curses http://rexxcurses.so[...] SourceForge 2014-02-10
[12] 웹사이트 CURSES.NEW in pccurses.zip http://purl.net/xyzz[...] 1993-07-26
[13] 웹사이트 README.NOW in pccurs14.zip http://read.pudn.com[...] 1990-01-14
[14] 웹사이트 NCURSES - New Curses http://invisible-isl[...] 1996-12
[15] 웹사이트 CURSES_SCREEN(3), NetBSD Library Functions Manual http://www.daemon-sy[...] 2004-02
[16] 웹사이트 NetBSD-SoC: Wide Character Support in NetBSD curses Library http://netbsd-soc.so[...] 2005-09
[17] 웹사이트 ADOM - The Past http://www.adom.de/a[...] 1994–2007
[18] 뉴스 New Game: ADOM (MS-DOS, MS-Windows, and Linux only) https://groups.googl[...] 1996-03-15
[19] 웹사이트 NCURSES - Frequently Asked Questions http://invisible-isl[...] 2012-04-06
[20] 서적 Programming with curses O'Reilly
[21] 웹사이트 The history of Unix is as much about collaboration as it is about technology http://landley.net/h[...] Byte 2012-04-06
[22] 간행물 Screen Updating and Cursor Movement Optimization: A Library Package. University of California, Berkeley
[23] 웹사이트 Screen Updating and Cursor Movement Optimization: A Library Package http://www.mirbsd.or[...] 2012-04-06
[24] 웹사이트 NCURSES - Frequently Asked Questions http://invisible-isl[...] 2012-04-06
[25] 웹사이트 X/Open Curses, Issue 4 Version 2, Reference Pages http://www.opengroup[...] The Open Group 2012-04-06
[26] 웹사이트 NCURSES - New Curses http://invisible-isl[...] 2012-04-06
[27] 웹사이트 CURSES_SCREEN(3), NetBSD Library Functions Manual http://www.daemon-sy[...] 2012-04-06
[28] 웹사이트 NetBSD-SoC: Wide Character Support in NetBSD curses Library http://netbsd-soc.so[...] 2012-04-06
[29] 웹사이트 ADOM - The Past http://www.adom.de/a[...] 2007-11-16
[30] 웹인용 NCURSES - Frequently Asked Questions http://invisible-isl[...]
[31] 서적 Programming with curses O'Reilly



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com