라이브코드
1. 개요
라이브코드는 다양한 운영체제에서 실행되는 애플리케이션을 생성하는 데 사용되는 프로그래밍 플랫폼이다. Transcript라는 자체 프로그래밍 언어를 사용하여, 여러 장치 및 플랫폼에서 동일한 코드를 실행할 수 있도록 설계되었다. 라이브코드는 영어와 유사한 구문을 사용하여 초보자도 쉽게 배울 수 있으며, 연관 배열, 정규 표현식, 멀티미디어 및 데이터베이스 지원과 같은 고급 기능을 제공한다. 라이브코드 프로젝트 파일은 플랫폼 간 바이너리 호환성을 가지며, 독립 실행형으로 컴파일하여 별도의 런타임 없이 실행 파일을 생성할 수 있다.
| 이름 | 라이브코드 |
|---|---|
| 개발사 | 라이브코드 Ltd. |
| 출시일 | 2001년 7월 11일 |
| 최신 버전 | 9.6.4 |
| 최신 버전 출시일 | 2021년 8월 31일 |
| 최신 미리보기 버전 | 9.6.5RC2 |
| 최신 미리보기 버전 출시일 | 2021년 10월 25일 |
| 운영 체제 | macOS Windows Linux Unix Android iOS HTML5 |
| 장르 | 프로그래밍 |
| 라이선스 | GPL (버전 9.6.3까지), 사유 |
| 웹사이트 | 라이브코드 공식 웹사이트 |
| 프로그래밍 패러다임 | 객체 지향 |
|---|---|
| 계열 | 스크립트 언어 |
| 영향 받은 언어 | xTalk |
| 최초 출시일 | 1993년 |
| 개발자 | 라이브코드, Ltd |
| 영향을 준 언어 | HyperTalk |
| 플랫폼 | i386, AMD64, ARM |
| 운영 체제 | Windows macOS Linux Unix 라즈베리 파이 |
| 라이선스 | 사유, GPL |
| 웹사이트 | 공식 웹사이트 |
-
2001년 개발된 프로그래밍 언어 -
C 샤프
C#은 마이크로소프트에서 개발한 멀티 패러다임 프로그래밍 언어로, .NET Framework 개발 과정에서 안데르스 하일스베르그 팀에 의해 개발되었고, C++를 기반으로 객체 지향 프로그래밍의 특징을 강조하며 .NET 플랫폼을 지원한다. -
2001년 개발된 프로그래밍 언어 -
D (프로그래밍 언어)
D는 월터 브라이트가 개발하여 2001년 12월에 처음 출시된 프로그래밍 언어로, C/C++와 유사한 구문과 가비지 컬렉션 등의 현대적인 기능을 제공하며, 다양한 프로그래밍 패러다임을 지원하는 시스템 프로그래밍 언어이다. -
크로스 플랫폼 소프트웨어 -
MSN
MSN은 1995년 마이크로소프트가 윈도우 95와 함께 출시한 웹 포털이자 관련 서비스 모음으로, 뉴스, 엔터테인먼트, 스포츠, 금융 등 다양한 콘텐츠를 제공하며 주요 온라인 서비스를 통합하는 허브 역할을 수행한다. -
크로스 플랫폼 소프트웨어 -
구글 포토
구글 포토는 사진 및 동영상 저장, 공유, 관리 기능을 제공하는 구글의 클라우드 기반 서비스로, 자동 분류, 얼굴 인식, 검색 기능을 제공하지만 2021년부터 무료 무제한 저장 용량 제공 정책이 변경되었고, 2024년에는 기술의 군사적 이용에 대한 윤리적 논란이 있었다. -
스크립트 언어 -
Tcl
Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다. -
스크립트 언어 -
PHP
PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
2. Description
라이브코드 소프트웨어는 컴파일 없는 워크플로우를 사용하여 다양한 환경에서 실행되는 애플리케이션을 생성한다. 라이브코드의 동일한 컴퓨터 코드는 여러 장치 및 플랫폼에서 실행될 수 있다. 라이브코드는 동적으로 형식이 지정되는 Transcript라는 고급 영어 유사 프로그래밍 언어를 사용한다. Transcript와 컴파일 없는 워크플로우는 자체 문서화되고 일반 프로그래머가 이해하기 쉬운 코드를 생성한다.
Transcript 언어는 연관 배열, 정규 표현식, 멀티미디어, 다양한 SQL 데이터베이스 및 TCP/IP 라이브러리 등 고급 기능을 지원한다. 라이브코드 엔진은 여러 가지 일반적인 이미지 형식(BMP, PNG, GIF 및 JPEG 포함), 안티 앨리어싱된 벡터 그래픽, HTML 스타일 텍스트 하이퍼링크, 체인 방식의 동작 및 내장 웹 브라우저를 지원한다. 이러한 상위 수준 기능에 쉽게 접근 하도록 설계되었다.
2.1. Transcript 언어의 특징
Transcript는 동적으로 형식이 지정되는 고급 영어 유사 프로그래밍 언어이다. 변수는 형식이 없으며, 컴파일 시점에 문맥을 기반으로 형식이 지정된다. 이는 속도 손실을 최소화하면서 코드를 읽고 유지보수하기 쉽게 만든다.
다음은 Transcript 코드 예시이다.
```applescript
repeat ten times
put "Hello world at" && the long time & return after field 1
wait 1 second
end repeat
```
이 코드는 "field 1"이라는 텍스트 필드에 다음 10줄을 출력한다.
```text
Hello world at 9:00:00 AM
Hello world at 9:00:01 AM
Hello world at 9:00:02 AM
...
```
Transcript는 연관 배열, 정규 표현식, 멀티미디어, 다양한 SQL 데이터베이스 및 TCP/IP 라이브러리를 지원하는 등 고급 기능을 포함하고 있다. 라이브코드 엔진은 여러 이미지 형식(BMP, PNG, GIF, JPEG), 안티 앨리어싱된 벡터 그래픽, HTML 스타일 텍스트 하이퍼링크, 체인 방식의 동작 및 내장 웹 브라우저를 지원한다.
2.2. 예제
applescript
repeat ten times
put "Hello world at" && the long time & return after field 1
wait 1 second
end repeat
```
위 스크립트는 시스템 시계가 오전 9시 00분 00초일 때 실행되었다고 가정하면, 10개의 줄이 첫 번째 텍스트 필드("field 1"으로 표시)에 로드되어 다음과 같이 표시된다.
Hello world at 9:00:00 AM
Hello world at 9:00:01 AM
Hello world at 9:00:02 AM
...
* `repeat` (및 관련 `end repeat`)는 제어 구조이다.
* `put`는 명령이다.
* `"Hello World at"`는 리터럴이다.
* `the long time`은 시스템 시간을 호출하는 함수이다.
* `return`은 ASCII 문자 10(줄 바꿈)과 동일한 상수이다.
* `after`는 xTalk 언어의 특징인 "청킹"으로 알려진 시스템과 관련된 키워드이다.
* `field 1`은 객체 참조이며, 여기서는 텍스트 필드의 레이어 번호로 표시된다. 거의 모든 표준 객체 클래스가 지원되며, 여러 가지 매우 직관적인 방식으로 참조될 수 있다.
웹 페이지의 소스 코드를 변수에 로드하는 것은 한 줄의 코드로 가능하다.
```applescript
put url "http://www.wikipedia.com" into MyVariable
```
파일을 FTP 서버에 업로드하는 것도 비슷한 구문을 사용한다.
```applescript
put url "binfile:picture.jpg" into url "ftp://john:[email protected]:2121/picture.jpg"
2.3. 언어의 깊이
라이브코드는 동적으로 형식이 지정되는 Transcript라는 고급 영어 유사 프로그래밍 언어를 사용한다. Transcript와 컴파일 없는 워크플로우는 자체 문서화되고 일반 프로그래머가 이해하기 쉬운 코드를 생성한다. 라이브코드의 자연스러운 영어 유사 구문은 초보자가 배우기 쉽다. 변수는 형식이 없으며, 순전히 문맥을 기반으로 컴파일 시점에 형식이 지정된다. 이렇게 하면 속도 손실을 비교적 최소화하면서 언어를 읽고 유지 관리하기가 간단해진다.
예를 들어, 시스템 시계가 오전 9시 00분 00초일 때 다음 스크립트가 실행되었다고 가정해 보자.
```applescript
repeat ten times
put "Hello world at" && the long time & return after field 1
wait 1 second
end repeat
```
10개의 줄이 첫 번째 텍스트 필드("field 1"으로 표시)에 로드되어 다음과 같이 표시된다.
```text
Hello world at 9:00:00 AM
Hello world at 9:00:01 AM
Hello world at 9:00:02 AM
...
```
* `repeat` (및 관련 `end repeat`)는 제어 구조이다.
* `put`는 명령이다.
* `"Hello World at"`는 리터럴이다.
* `the long time`은 시스템 시간을 호출하는 함수이다.
* `return`은 ASCII 문자 10(줄 바꿈)과 동일한 상수이다.
* `after`는 xTalk 언어의 특징인 "청킹"으로 알려진 시스템과 관련된 키워드이다.
* `field 1`은 객체 참조이며, 여기서는 텍스트 필드의 레이어 번호로 표시된다. 거의 모든 표준 객체 클래스가 지원되며, 여러 가지 매우 직관적인 방식으로 참조될 수 있다.
이 언어에는 연관 배열, 정규 표현식, 멀티미디어, 다양한 SQL 데이터베이스 및 TCP/IP 라이브러리에 대한 지원을 포함한 고급 기능이 포함되어 있다. 라이브코드 엔진은 여러 가지 일반적인 이미지 형식(BMP, PNG, GIF 및 JPEG 포함), 안티 앨리어싱된 벡터 그래픽, HTML 스타일 텍스트 하이퍼링크, 체인 방식의 동작 및 내장 웹 브라우저를 지원한다. 이러한 상위 수준 기능에 액세스하도록 설계되었다.
라이브코드는 약 2,950개의 내장 언어 용어와 키워드를 가지고 있으며, 이는 C 및 기타 하위 레벨 언어로 작성된 외부 라이브러리를 통해 확장될 수 있다.
2.4. 결과
applescript
repeat ten times
put "Hello world at" && the long time & return after field 1
wait 1 second
end repeat
```
위 스크립트가 시스템 시계가 오전 9시 00분 00초일 때 실행되었다면, 첫 번째 텍스트 필드("field 1"으로 표시)에 다음과 같이 10개의 줄이 나타난다.
Hello world at 9:00:00 AM
Hello world at 9:00:01 AM
Hello world at 9:00:02 AM
...
3. 호환성
라이브코드는 다양한 운영체제와 호환된다. 다음은 버전별 지원 운영체제 목록이다.
| 버전 | 매킨토시 | 윈도우 | 리눅스 |
|---|---|---|---|
| 9.x | 10.9.x - 10.13.x 인텔 | 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 32 또는 64 비트, 32비트 ARMv6 (라즈베리 파이) glibc glib gtk/gdk lcms pango/xft gksu esd mplayer |
| 8.x | 10.6.x - 10.12.x 인텔 | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 32 또는 64 비트, 32비트 ARMv6 (라즈베리 파이) glibc gtk lcms pango/xft gksu esd mplayer |
| 7.x | 10.6.x - 10.9.x 인텔 | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 32 또는 64 비트, 32비트 ARMv6 (라즈베리 파이) glibc gtk lcms pango/xft gksu esd mplayer |
| 6.7.x | 10.6.x - 10.9.x 인텔 | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 6.6.x | 10.5.8 - 10.9.x 인텔/PPC | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 6.0.x - 6.5.x | 10.4.11 - 10.9.x 인텔/PPC | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (데스크톱) | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 5.x | 10.4.11 - 10.8.x 인텔/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms |
| 4.6.x | 10.4.11 - 10.8.x 인텔/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms |
| 4.5.x | 10.3.9 - 10.8.x 인텔/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 비트 X11R5 glibc 2.3.2 gtk lcms |
| 4.0.x | ? | ? | ? |
| 3.x | ? | ? | ? |
| 2.6.x | 10.2.7 - 10.6.x 인텔/PPC, 9.2.2 PPC | 98, Me, NT, 2000, XP, Vista | 2.4+ 32 비트 X11R5 glibc 2.2.4 gtk lcms |
일부 버전에서는 iOS 및 안드로이드 타겟을 사용할 수 있다.
3.1. 리눅스 요구 사항 (4.5.x-6.x)
다음은 라이브코드 버전 4.5.x부터 6.x까지의 리눅스 요구 사항이다.,,,,,
* 32비트 설치 또는 32비트 호환 레이어를 가진 64비트 리눅스 배포판
* 2.4.x 이상 커널
* 24비트 디스플레이에서 로컬로 실행되는 X11R5 지원 X서버
* glibc 2.3.2 이상
* gtk/gdk/glib (선택 사항 – 네이티브 테마 지원에 필요)
* pango/xft (선택 사항 – PDF 인쇄, 앤티앨리어싱된 텍스트 및 유니코드 글꼴 지원에 필요)
* lcms (선택 사항 – JPEG 및 PNG의 색상 프로필 지원에 필요)
* gksu (선택 사항 – 프로세스 권한 상승 지원에 필요)
4. 참고 문헌
* 에드워드 라비에리, https://www.packtpub.com/livecode-mobile-development-hotshot/book LiveCode 모바일 개발 HOTSHOT
* 콜린 홀게이트, https://www.amazon.com/LiveCode-Mobile-Development-Beginners-Guide/dp/1849692483 LiveCode 모바일 개발 초보자 가이드
* 마크 쇠네빌, http://www3.economy-x-talk.com/file.php?node=book%253A-programming-livecode-for-real-starters 실제 초보자를 위한 LiveCode 프로그래밍
* http://www.oreillynet.com/pub/au/1955 댄 셰이퍼, Revolution: Software At The Speed Of Thought, Volume 1 (Runtime Revolution Ltd, 2003)
* 윌리스 왕, https://archive.today/20130121211145/http://eu.dummies.com/DummiesTitle/productCd-0470088702.html 초보자를 위한 프로그래밍, 4판