PalmOS 기반 프로그래밍 언어-IBM



개발 환경으로서 Palm 사용하기



David Mertz, Ph.D., Gnosis Software, Inc.

Andrew Blais, Ph.D., Gnosis Software, Inc.

2001년 8월



대 부분의 사람들은 PalmOS 애플리케이션을 개발은 데스크탑에서 C/C++ 코드를 작성하는 것으로 생각한다. 그런 다음, 그들은 PalmOS로 크로스 컴파일링(cross compiling)할 것이다. PalmOS 개발에 전혀 다른 접근방식이 있다. David Mertz와 Andrew Blais는 완벽한 프로그래밍 언어를 검토하고, 프로그램 편

집에서 최종 실행에 이르기 까지, Palm 상에서 전 과정을 완벽히 실행할 수 있는 개발 환경 제품을 살펴본다. 이러한 툴들은 "mobile" 프로그래머들을 위

한 새로운 가능성을 제시한다.



PalmOS의 컴팩트 한 외형을 보면 몇 가지 프리 패키지(pre-packaged) 애플리케이션 전용 디바이스라는 생각이 든다. 하지만 이제부터는 외형만 보고 판단

하지 말자.



PalmOS에는 모든 것이 있다!

PalmOS는 그 자체로 매우 강력한 컴퓨터이다. 초기 컴퓨터보다 더 많아진 메모리 용량과 더욱 강력해진 CPU를 채택하고 적절한 툴을 사용하면 PalmOS도 >완벽한 프로그램 개발 환경이 된다. 데스크탑 PC 없이도 애플리케이션을 커스터마이징 할 수 있다.



Palm은 MacOS, Windows, UNIX/Linux 같은 데스크탑 컴퓨터를 프로그래밍 해왔던 사람들에게는 익숙하지 않는 디바이스이다. 많은 부분 아키텍쳐는 임베디

드 프로그래머들에게 훨씬 더 익숙할 것이다. 특히 "모든 것이 파일이다"라는 UNIX 철학과는 거의 반대 개념이다. PalmOS는 파일의 개념이 거의 없다. 다

시말해서, STDIN, STDOUT, STDERR의 특별 파일이 없다. 더욱 재미있는 사실은 인터프리팅과 컴파일을 위한 소스 코드를 저장할 파일이 없다는 것이다.



이러한 "file missing" 문제를 풀기위한 두 가지 방법이 있다: 대부분의 PalmOS 기반 IDE는 고유의 미니 에디터(mini-editor)가 있어서 "one-shot code" (일종의 Perl의 one-liner와 같은 것이다)를 실행한다. 대부분 이러한 IDE는 PalmOS Memo Pad를 사용하여 영속적인 프로그램을 만든다. 프로그램 소스 ">파일"은 Memo Pad 카테고리 또는 특별한 메모 네이밍 규정에 따라 구분된다.developerWorks 에서 Pippy 관련 글을 읽은 후에(참고자료), PalmOS 프로그래밍 환경이 얼마나 다른지에 대해서 궁금해졌다. 또한 다른 환경에서 제공되>는 인풋/아웃풋 형식에 흥미를 가지게 되었다.

HotPaw Basic HotPaw는 ANSI/ISO Basic Programming Language Standard를 95% 이상 구현한다. 거의 모든 GW-Basic 함수와 문장도 지원한다. HotPaw는 구식의 라인 넘버

와 GOTO 보다는 구조화된 프로그래밍 구조체들을 사용한다. 컬러도 지원한다. 그 밖에도 custom form, dialog, serial, IR, IP 통신, 다양한 데이터베이>스 포맷으로 액세스, double precision과 transcendental mathematical 함수 (LGPL MathLib.prc를 사용하여 다른 프로그래밍 환경에서도 사용된다)도 지>원한다.



HotPaw의 설치와 사용이 쉽다는 것도 발견했다. HotPaw 웹사이트에서 튜토리얼과 예제를 참고하기 바란다(참고자료). Basic을 알면 Palm에서 PalmOS 애플리케이션을 직접 작성할 수 있다. HotPaw를 설치하기 위해서는 yBasic.prc 파일을 설치해야 한다. MathLib.prc (version 1.1+) 또한 설치해야 할 것이다. 각자 다른 사이트에서 참고하기 바란다 (참고자료). yBasic.prc 자체는 가상 머신이다. Memo Pad 또는 bytecode가 컴파일 된 애플리케이션에서 소스 코>드 파일을 실행할 수 있다. (애플리케이션은 각자의 아이콘을 가지고 있다. HotPaw 인터랙티브 인터페이스 없이 실행한다). 배포판에는 도움말(helper)과

 샘플이 있다. 반드시 필요한 것은 아니다.

HotPaw의 가장 큰 장점은 폼(form) 지원이다. form() 함수를 사용하여 매개변수화 된 인풋/아웃풋 형식을 정의할 수 있다. PalmOS GUI와 간단한 애플리케이션을 쉽게 만들 수 있다. 커스터마이즈 된 폼을 만들 수 있고 그래픽 엘리먼트를 스크린에 나타낼 수 있다.



SmallBASIC

SmallBASIC은 또 하나의 Basic 환경이다. 대부분의 개발 환경과 마찬가지로, SmallBASIC은 네이티브 컴파일러 라기 보다는 코드 인터프리터이다. SmallBASIC은 1986년의 느낌을 가지고 있다: "파일"과 VGA 컬러가 이에 해당한다; 라인 넘버(line number)와 GOTO를 사용한다; 그리고 심지어 IBM-PC ROM BASIC>의 F-KEY 프롬프트를 다시 만든다. 이 모든 것이 세련되 보이지는 않는다. 하지만 실제로 SmallBASIC은 우리가 그동안 보아온 IDE의 개발 인터페이스 중 하나이다. PalmOS에 파일시스템이 없더라도, SmallBASIC의 빌트인 소스 코드 에디터는 "File Save (파일 저장)" "Save As (다른 이름으로 저장)" "Close (닫기)," "Open (열기)"에 대해 메뉴 옵션을 사용한다. 이 빌트인 에디터는 Memo Pad가 지원하는 것보다 큰 문서를 적용한다. 이것은 "search," "goto line", "search again" 옵션과 클립보드 지원과 독특한 온라인 지원 시스템을 제공한다.



SmallBASIC 설치는 HotPaw 설치와 매우 비슷하다. sbpad.prc와 MathLib.prc 파일 (배포판 아카이브에 포함)을 설치하면 된다. 그런다음 아이콘에서 SmallBASIC을 실행하고 SmallBASIC 인터페이스를 사용하여 스크립트를 만들어 실행시킨다.



SmallBASIC은 다양한 함수를 지원한다 (GW-BASIC & QBASIC). 그래픽 프리머티브 (primitive)를 스크린으로 끌어올 수 있고 사운드를 만들고 다른 폰트로 텍스트를 만들고 키보드 입력도 가능하다. 기본적으로 유용한 애플리케이션에 필요한 모든것이 지원된다. 구조화된 프로그래밍 기술을 사용할 수 있기를 바란다. 하지만 SmallBASIC도 Palm 기반 애플리케이션을 빠르게 작성할 수 있는 훌륭한 도구이다.



PocketC

PocketC는 PalmOS의 C 언어라고 할 수 있다. Win32와 WinCE에도 같은 버전의 컴파일러를 사용할 수 있다. (Win32 "Desktop" 버전은 PalmOS와 WinCE handheld에도 사용할 수 있다). PocketC는 런타임 환경에서 제공하는 대부분의 언어들과 유사하게 작동한다; 이것은 PocketC 컴파일 된 bytecode를 인터프리트

하는 가상 머신이 된다. 언어는 기본적인 C 언어지만, Palm에서 쓰일 수 있는 많은 함수들과 C++ 신택스 규칙들이 추가되었다. 스트링 데이터 타입(string data type)과 가비지 컬렉션 (garbage collection)과 같은 전형적인 기능들도 추가되었다. 그래픽, 사운드. 데이터베이스 I/O, 폼 I/O를 위한 함수들도

 "표준 라이브러리"에 포함되었다. 애플리케이션을 작성은 대게 Palm 스팩의 함수를 호출하는 것이지만 익숙한 C 스타일에서 플로우 컨트롤 (flow control)이 있다.



PocketC 환경은 일반적으로 다른 IDE와 유사하다. Memo Pad는 소스 코드 저장에 사용된다. #include 헤더를 저장할 때도 Memo Pad를 사용할 수 있다. "fully interpreted" 언어와는 달라서 PocketC는 애플리케이션을 실행하기 전에 개별적인 컴파일 단계가 필요하다; 같은 인터페이스 내에서 컴파일을 수행할

 수 있다 (그리고 일단 한번 수행하면 bytecode는 그 주위에 고정된다). Memo Pad와 PocketC의 상호 작용에 있어서 좋은 점은 소스 코드 에러가 발생하면

 에러로 곧바로 점프(jump)하여 이것을 하이라이팅 할 수 있다는 점이다.



PocketC가 C 프로그래머들에게는 좋은 툴이지만 필요이상으로 장황한 듯이 보인다. PocketC의 고급 함수, 스트링 타입, garbage collection은 코드 길이>를 약간 줄였다. 하지만 PocketC는 훌륭히 수행된다.



OnBoard C

OnBoard C은 우리가 검토한 다른 개발 환경 보다 목표가 다르다. PRC 실행파일 또는 HackMaster hack으로 소스 코드 컴파일을 지원한다. 가상 머신과 bytecode를 사용하지 않는다. 게다가 OnBoard C는 실제 프로젝트 기반의 IDE 이고 소스 코드와 리소스 에디터 선택이 있고 주어진 프로젝트에 다양한 파일을

 추가할 수 있다. OnBoard C에서 지원되는 소스 코드 에디터에는 pedit, pedit32, QED, SmartEdit가 포함되어 있다; 물론 Memo Pad만 사용해도 된다. OnBoard C로 만들어진 애플리케이션은 런타임 또는 라이브러리를 포함하지 않고 배포될 수 있다.



OnBoard C를 사용하고 있는 개발자는 리소스 에디터인 RsrcEdit도 필요할 것이다. RsrcEdit는 형식, 텍스트, 스트링, 비트맵, 메뉴, 기타 GUI 엘리먼트를

 만들 수 있다. OnBoard C와 마찬가지로, RsrcEdit 역시 전적으로 Palm 기반이다.



OnBoard C는 일반적으로 PalmOS에 익숙한 개발자들에게 잘 알려져 있다. OnBoard C를 사용하면 훨씬 빨라진 애플리케이션을 갖게 될 것이다.

Poplet Kit

Poplet Kit는 재미있는 도구이다. 이 글에서 다루었던 대부분의 IDE는 쓰기/컴파일/실행 환경이다. 하지만 Poplet Kit 환경 안에서 스크립트를 실행 할 >수 없다. 대신, Poplet Kit에서 만들어져 실행될 수 있는 각 "poplet"은 PalmOS 애플리케이션에 향상된 기능을 제공한다. HackMaster와 많은 부분 유사하

지만 우리에게 더욱 친숙하고 인터프리트 된 언어이다. 애플리케이션에서 poplet을 호출하기위해서는, PalmOS Command Bar를 호출하면 된다.



Poplet Kit의 언어는 Handscript 라고 불리며, Javascript와 비슷하다. Javascript의 OOP 특징은 배제되었지만, 신택스와 함수 의미는 같다. 함수를 poplet으로 그루핑(grouping) 함으로서 모듈성이 추가되었다. PalmOS 기능을 사용하는 데 필요한 숏컷 커맨드(shortcut command)도 추가 되었다. 기본적으로 Javascript를 알고 있다면 Handscript을 쉽게 다룰 수 있을 것이다.



Poplet Kit 용 인터페이스는 뛰어나다. 많은 뷰(view)가 제공된다. 한 장소에서 문서를 읽을 수 있고, 다른 장소에서는 함수를 검색할 수 있다. 그리고 >또 다른 장소에서는 함수 정의를 편집할 수 있다. 또한 설치된 poplet를 실행/실행 불가로 빠르게 만들 수 있다.



Poplet Kit이 프로그래밍 환경이라기 보다는 향상된 시스템이라는 생각을 할 수 있지만, Poplet Kit을 사용하여 실행할 수 있는 프로그램은 다른 언어/IDE 처럼 일반적인 것이다. 주변 인풋을 하이라이팅 해서 원하는 모든것을 입력할 수 있고 다이얼로그에 나타난 활성 애플리케이션으로 출력될 수 있다. Palm을 실제로 사용할 때나 다른 Palm과의 상호작동의 관점에서 볼 때, Poplet Kit은 앞서 언급한 어떤 IDE 보다 더욱 빛난다.



결론

Palm 기반 IDE에 대한 자세한 정보는 Michael Winikoff의 홈페이지를 참조하라(참고자료). Forth와 Lua 같은 약간 생소한 언어도 리스트에 포함되었다. PalmOS용 Scheme인 LispMe 검토하려 했었다. 하지만 우리의 테스트 플랫폼에서는 LispMe는 시험하기 어려웠다; 특별한 ROM/OS 버전에 문제인 것 같다. 시 gnome이 꼬였다고 판단될때는 유용한 tip일듯..-.-;

ONIONMiXER.net
ONIONMiXER.net RSS feed 맨위로 이동