본문으로 이동

블리츠 베이직

위키백과, 우리 모두의 백과사전.
(Blitz BASIC에서 넘어옴)
블리츠 베이직
개발자블리츠 리서치(Blitz Research)
운영 체제AmigaOS
마이크로소프트 윈도우
언어영어
종류게임 제작 시스템
라이선스Zlib 라이선스
웹사이트blitzresearch.itch.io

블리츠 베이직(Blitz BASIC)은 뉴질랜드 기반 개발자 마크 시블리가 고안한 최초의 블리츠[1] 컴파일러의 프로그래밍 언어 방언이다. 베이직에서 파생된 블리츠 문법은 프로그래밍을 처음 배우는 초보자가 쉽게 익힐 수 있도록 설계되었다. 이 언어는 게임 프로그래밍 지향적이지만, 대부분의 응용 프로그램 유형에 사용할 수 있을 만큼 범용적이다. 블리츠 언어는 새로운 제품이 출시됨에 따라 발전했으며, 최근 버전에서는 객체 지향다중 스레딩과 같은 고급 프로그래밍 기술을 지원한다. 이로 인해 이 언어는 나중에 BASIC이라는 명칭을 잃게 되었다.[2]

역사

[편집]

블리츠 언어의 첫 번째 버전은 아미가 플랫폼용으로 만들어졌으며 오스트레일리아 회사인 메모리 앤 스토리지 테크놀로지(Memory and Storage Technology)에서 발행했다. 뉴질랜드로 돌아온 후, 블리츠 베이직 2는 몇 년 후(이 보도 자료에 따르면 1993년경[3]) 지역 아미가 게임 퍼블리셔인 Acid Software에서 발행했다. 그 이후로 블리츠 컴파일러는 여러 플랫폼에서 출시되었다. 상업적으로 실용적인 플랫폼으로서 아미가가 사라진 후, 블리츠 베이직 2 소스 코드는 아미가 커뮤니티에 공개되었다. 개발은 오늘날까지 AmiBlitz라는 이름으로 계속되고 있다.[4]

블리츠베이직

[편집]

Idigicon은 2000년 10월 마이크로소프트 윈도우용 블리츠베이직을 출시했다. 이 언어는 기본적인 2D 그래픽 및 오디오 작업을 수행하기 위한 내장 API를 포함했다. 블리츠3D 출시 이후 블리츠베이직은 종종 블리츠2D와 동의어로 언급된다.

블리츠베이직의 인지도는 PC 포맷과 같은 인기 있는 영국 컴퓨터 잡지에 "무료" 버전이 제한적으로 배포되면서 높아졌다. 이로 인해 개발자와 퍼블리셔 간에 법적 분쟁이 발생했지만, 결국 원만하게 해결되었다.

블리츠플러스

[편집]

2003년 2월, 블리츠 리서치(Blitz Research Ltd.)는 윈도우용 블리츠플러스를 출시했다. 블리츠3D의 3D 엔진은 없었지만, 네이티브 GUI 생성을 위한 제한적인 윈도우 제어 지원을 구현하여 언어의 2D 측면에 새로운 기능을 제공했다. 2D 엔진의 하위 호환성도 확장되어 컴파일된 블리츠플러스 게임 및 응용 프로그램이 DirectX 1만 지원하는 시스템에서도 실행될 수 있었다.

블리츠맥스

[편집]
BlitzMax
패러다임명령형, 객체 지향, 모듈성, 성찰적
설계자마크 시블리
개발자Blitz Research
발표일2004
최근 버전1.51
최근 버전 출시일2015년 9월 21일(10년 전)(2015-09-21)
자료형 체계정적, 약한, 강한 (선택 사항)
운영 체제윈도우, Mac OS X, 리눅스
웹사이트www.blitzbasic.com
방언
Official BlitzMax, bmx-ng
영향을 받은 언어
BlitzBasic
영향을 준 언어
Monkey

최초의 블리츠맥스 컴파일러는 2004년 12월 Mac OS X용으로 출시되었다. 이로써 *nix 플랫폼에서 컴파일될 수 있는 최초의 블리츠 방언이 되었다. 마이크로소프트 윈도우리눅스용 컴파일러는 2005년 5월에 출시되었다. 블리츠맥스는 객체 지향 개념을 포함하도록 타입 시스템을 확장하고 OpenGL에 더 적합하도록 그래픽 API를 수정함으로써 현대 블리츠 제품군에 가장 큰 언어 구조 변화를 가져왔다. 블리츠맥스는 또한 ASCII가 아닌 문자로 구성된 문자열 리터럴에 대한 네이티브 지원을 허용하는 UCS-2를 사용하여 내부적으로 문자열을 표현하는 최초의 블리츠 언어였다.

블리츠맥스의 플랫폼 독립적인 명령 집합은 개발자가 여러 플랫폼에서 소스 코드를 컴파일하고 실행할 수 있도록 한다. 그러나 공식 컴파일러 및 빌드 체인은 실행 중인 플랫폼용 바이너리만 생성한다. 비공식적으로 사용자는 리눅스와 Mac OS X에서 윈도우 플랫폼으로 크로스 컴파일할 수 있었다.

블리츠맥스는 또한 블리츠 언어의 최초 모듈형 버전으로, 명령 집합의 확장성을 향상시킨다. 또한 컴파일러와 함께 제공되는 모든 표준 모듈은 오픈 소스이므로 필요한 경우 프로그래머가 수정하고 다시 컴파일할 수 있다. 공식 블리츠맥스 크로스 플랫폼 GUI 모듈(MaxGUI로 알려짐)은 개발자가 리눅스(FLTK), Mac(코코아), 윈도우에서 응용 프로그램용 GUI 인터페이스를 작성할 수 있도록 한다. 다양한 사용자 기여 모듈은 WxWidgets, 카이로, Fontconfig와 같은 라이브러리 및 다양한 데이터베이스 모듈을 래핑하여 언어의 사용을 확장한다. MiniB3D[5] – 블리츠맥스에서 지원하는 세 가지 플랫폼 모두에서 컴파일 및 사용할 수 있는 오픈 소스 OpenGL 엔진을 비롯한 여러 타사 3D 모듈도 제공된다.

2007년 10월, 성찰 모듈이 추가된 블리츠맥스 1.26이 출시되었다.[6] 블리츠맥스 1.32에는 새로운 스레딩루아 스크립팅 모듈이 포함되었으며, 대부분의 표준 라이브러리 함수가 유니코드 친화적으로 업데이트되었다.[7]

블리츠3D SDK

[편집]

블리츠3D SDK는 블리츠3D 엔진을 기반으로 한 3D 그래픽 엔진이다. C++, C 샤프, 블리츠맥스, 퓨어베이직과 함께 사용하도록 판매되었지만, 호환 가능한 호출 규약을 따르는 다른 언어와도 사용할 수 있었다.

Max3D 모듈

[편집]

2008년에 C++ 기반 크로스 플랫폼 3D 엔진인 Max3D의 소스 코드가 BSD 라이선스로 공개되었다. 이 엔진은 OpenGL에 중점을 두었지만 다른 그래픽 드라이버(예: DirectX)를 위한 추상화된 백엔드를 가졌고, Assimp, Boost, ODE와 같은 여러 오픈 소스 라이브러리를 사용했다.

블리츠 커뮤니티에서 Max3D가 블리츠3D의 오랫동안 기다려온 후속작이라는 기대에도 불구하고, 소스 코드 출시 직후 관심과 지원이 사라졌고 결국 개발은 중단되었다. 블리츠 리서치에서 이 프로젝트를 다시 시작할 것이라는 징후는 없다.

오픈 소스 출시

[편집]

블리츠플러스는 2014년 4월 28일 깃허브오픈 소스Zlib 라이선스하에 공개되었다.[8][9] 블리츠3D도 곧이어 2014년 8월 3일 오픈 소스 소프트웨어로 공개되었다.[10][11] 블리츠맥스는 2015년 9월 21일 오픈 소스 소프트웨어로 출시되었다.[12]

평가

[편집]

블리츠 베이직 2.1은 아미가 잡지로부터 좋은 평가를 받았다. CU 아미가는 AMOS Basic과 달리 AmigaOS 호환 응용 프로그램과 게임을 만들 수 있는 능력을 강조했으며[13], 아미가 쇼퍼는 강력한 프로그래밍 언어라고 불렀다.[14]

예시

[편집]

화면에 출력하고, 키가 눌릴 때까지 기다린 다음 종료하는 Hello, World! 프로그램:

Print "Hello, World!" ; Prints to the screen.
WaitKey()             ; Pauses execution until a key is pressed.
End                   ; Ends Program.

세 가지 주요 데이터 유형(문자열, 정수형, 부동소수점)을 사용하여 변수를 선언하고 화면에 출력하는 프로그램:

name$        = "John"   ; Create a string variable ($)
age          = 36       ; Create an integer variable (No Suffix)
temperature# = 27.3     ; Create a float variable (#)

print "My name is " + name$ + " and I am " + age + " years old."
print "Today, the temperature is " + temperature# + " degrees."

Waitkey()               ; Pauses execution until a key is pressed.
End                     ; Ends program.

현재 시간을 이진 및 십진 형식으로 표시하는 창 응용 프로그램을 생성하는 프로그램. 블리츠맥스 및 블리츠베이직 버전은 아래를 참조하십시오:

BlitzBasic version BlitzMax version
AppTitle "Binary Clock"
Graphics 150,80,16,3

;create a timer that means the main loop will be
;executed twice a second
secondtimer=CreateTimer(2)

Repeat
 	Hour = Left(CurrentTime$(),2)
 	Minute = Mid(CurrentTime$(),4,2)
 	Second = Right(CurrentTime$(),2)

 	If Hour >= 12 Then PM = 1
 	If Hour > 12 Then Hour = Hour - 12
 	If Hour = 0 Then Hour = 12

 	;should do this otherwise the PM dot will be
 	;left up once the clock rolls past midnight!
 	Cls

 	Color(0,255,0) ;make the text green for the PM part
 	If PM = 1 Then Text 5,5,"PM"
 	;set the text colour back to white for the rest
 	Color(255,255,255)

 	For bit=0 To 5
        xpos=20*(6-bit)
        binaryMask=2^bit

        ;do hours
        If (bit<4)
            If (hour And binaryMask)
                Text xpos,5,"1"
            Else
                Text xpos,5,"0"
            EndIf
        EndIf

        ;do the minutes
        If (minute And binaryMask)
            Text xpos,25,"1"
        Else
            Text xpos,25,"0"
        EndIf

        ;do the seconds
        If (second And binaryMask)
 			Text xpos,45,"1"
        Else
 			Text xpos,45,"0"
        EndIf
    Next

    ;make the text red for the decimal time
    Color(255,0,0)
    Text 5,65,"Decimal: " + CurrentTime$()
    ;set the text back to white for the rest
    Color(255,255,255)

    ;will wait half a second
    WaitTimer(secondTimer)

Forever
Import BRL.Timer
Import BRL.TimerDefault
AppTitle = "Binary Clock"
Graphics 145,85

'create a timer that means the main loop will be
'executed twice a second
Local secondtimer:TTimer = CreateTimer(2)
Local Hour:Int
Local Minute:Int
Local Second:Int
Local PM:Int
local bit:Int
local xpos:Int
Local binaryMask:Int

Repeat
    Hour = CurrentTime()[..2].ToInt()
    Minute = CurrentTime()[4..6].ToInt()
    Second = CurrentTime()[6..].ToInt()

    If Hour >= 12 Then PM = 1
    If Hour > 12 Then Hour = Hour - 12
    If Hour = 0 Then Hour = 12

    'should do this otherwise the PM dot will be
    'Left up once the clock rolls past midnight!
    Cls

    SetColor(0,255,0) 'make the text green For the PM part
    If PM = 1 Then DrawText "PM",5,5
    'set the text colour back To white For the rest
    SetColor(255,255,255)

    For bit=0 Until 6
        xpos=20*(6-bit)
        binaryMask=2^bit

        'do hours
        If (bit < 4)
            If (hour & binaryMask)
                DrawText "1",xpos,5
            Else
                DrawText "0",xpos,5
            EndIf
        EndIf

        'do the minutes
        If (minute & binaryMask)
            DrawText "1", xpos,25
        Else
            DrawText "0", xpos,25
        EndIf

        'do the seconds
        If (second & binaryMask)
            DrawText "1",xpos,45
        Else
            DrawText "0",xpos,45
        EndIf
    Next

    'make the text red For the decimal time
    SetColor(255,0,0)
    DrawText "Decimal: " + CurrentTime(),5,65
    'set the text back To white For the rest
    SetColor(255,255,255)

 	Flip

    'will wait half a second
    WaitTimer(secondTimer)
 	If KeyHit(KEY_ESCAPE) Then Exit
Forever

블리츠베이직으로 작성된 소프트웨어

[편집]

유산

[편집]

2011년에 BRL은 Monkey라는 크로스 플랫폼 프로그래밍 언어와 Mojo라는 첫 공식 모듈을 출시했다. Monkey는 BlitzMax와 유사한 구문을 가지고 있지만, 어셈블리 코드로 직접 컴파일하는 대신 Monkey 소스 파일을 선택한 언어, 프레임워크 또는 플랫폼(예: 윈도우, Mac OS X, IOS, 안드로이드, HTML5, 어도비 플래시)용 소스 코드로 직접 변환한다.

2015년부터 Monkey X의 개발은 마크 시블리가 언어의 업데이트 버전인 Monkey 2를 선호하여 중단되었다.

블리츠 베이직의 개발자인 마크 시블리는 2024년 12월 초에 사망했다.[16][17]

각주

[편집]
  1. The word "Blitz" means "lightning" in German.
  2. “The Official Blitz Website”. 《blitzresearch.itch.io/》. 3 June 2017에 원본 문서에서 보존된 문서. 
  3. “Blitz Basic 2”. 《AmigaReport》. 2022년 3월 31일에 원본 문서에서 보존된 문서. 2020년 4월 30일에 확인함. 
  4. “AmiBlitz”. 《깃허브》. 
  5. “Blitz News”. 《www.blitzbasic.com》. 26 January 2008에 원본 문서에서 보존된 문서. 12 December 2007에 확인함. 
  6. “BlitzMax update 1.26 now available!”. 《www.blitzbasic.com》. 26 May 2011에 원본 문서에서 보존된 문서. 11 January 2011에 확인함. 
  7. BlitzMax V132 for Windows and MacIntel now up! 보관됨 26 5월 2011 - 웨이백 머신 on blitzbasic.com
  8. BlitzPlus Source Code Released 보관됨 16 7월 2016 - 웨이백 머신 by simonh (2014-04-29)
  9. Blitz3D open sourced! 보관됨 6 9월 2016 - 웨이백 머신 on Blitz3D Forums by (2014)
  10. Blitz3D Now Free and Open Source! 보관됨 16 7월 2016 - 웨이백 머신 by simonh (2014-08-03)
  11. blitz3d on GitHub
  12. blitzmax on GitHub
  13. Bettinson, Mat (March 1996). “Blitz Basic 2.1”. 《CU Amiga》. 73호 (EMAP Images). 69–70쪽. ISSN 0963-0090. 
  14. Overaa, Paul (April 1996). “Blitz Basic 2.1”. 《Amiga Shopper》. 61호 (Future Publishing). 41쪽. ISSN 0961-7302. 
  15. IGN. Worms Blast Preview 보관됨 18 2월 2007 - 웨이백 머신 on ign.com
  16. GCRedditor136 (2024년 12월 12일). “Mark Sibly, creator of BlitzBasic, has died :(”. 《r/amiga》. 2025년 3월 24일에 확인함. 
  17. “Mark Sibly (Blitz Basic) passes away”. Amiga-News.de. 2024년 12월 14일. 2025년 3월 24일에 확인함. 

더 읽을거리

[편집]
  • NRS Developer Book for Blitz Basic, 1997.
NRS Developer Book Vol I - Photo of Book Cover
NRS Developer Book Vol I - Book Cover 사진

외부 링크

[편집]