트루 베이직

'''트루 베이직'''(True BASIC)은 원래의 BASIC인 다트머스 베이직에서 파생된 BASIC 프로그래밍 언어의 변형 중의 하나로, 다트머스 베이직과 트루 베이직은 모두 다트머스 대학의 교수인 존 조지 케머니와 토마스 E. 커츠에 의해 만들어졌다.
트루 베이직의 역사는 다트머스 베이직의 파생물인 스트럭쳐드 베이직 또는 줄여서 SBASIC이라는 언어로 거슬러 올라간다. 이것은 1975년 또는 1976년에 출시되었는데, 다트머스 캠퍼스를 지원하는 다트머스 타임 섀어링 시스템 (DTSS)에 BASIC의 메인라인 버전으로 설치되지는 않았다. 얼마 지나지 않아 케머니 교수는 1960년대 후반과 1970년대 초반에 걸쳐 개발된 베이직 언어의 다수의  작은 변형 베이직을 통합하려는 시도로 ANSI 표준 BASIC을 생성하려는 노력에 참여했다. 이러한 노력은 처음에 다트머스 BASIC의 초기 버전과 유사한 미니멀 베이직으로 알려진 시스템에 초점을 맞추었고 이후 작업은 기본적으로 다양한 확장이 포함된 SBASIC인 풀 베이직(Full BASIC)을 목표로 했다.
1980년대 초까지 수천만 대의 가정용 컴퓨터에서는 '''사실상'''의 표준이 된 마이크로소프트 베이직이 일부 변형된 형태로 실행되고 있어 ANSI의 노력은 결국 무의미해졌다. 이러한 버전들이 MS가 지배하는 세계에서 시장에 어떤 영향도 미치지 않을 것이 분명해졌기 때문이다. 두 버전 모두 결국 비준되었지만 거의 채택되지 않았거나 채택되지 않았으며 표준은 나중에 철회되었다. 그러나 케머니와 커츠는 SBASIC의 개념과 ANSI 표준 BASIC 노력을 도입하기 위한 노력을 계속하기로 결정했다. 이것이 트루 베이직이 되었다.
처음에 다트머스 베이직 7을 기반으로 한 트루 베이직은 1985년에 소개되었는데, MS-DOS, 마이크로소프트 윈도우 및 클래식 맥 OS 용 트루 베이직 컴파일러 버전이 있다. 한때 TRS-80 컬러 컴퓨터, 아미가 및 아타리 ST 컴퓨터용 버전과 유닉스 명령줄 컴파일러가 제공되었다.
베이직 언어를 구조화된 프로그래밍으로 구현한 버전이므로 줄 번호와 GOTO 문을 사용을 하여도 되지만 필수적이지는 않다.
트루 베이직에서는 초기부터 다트머스 베이직에 있었지만 마이크로컴퓨터 버전의 베이직 인터프리터에서는 거의 삭제되어 있던 행렬 산술에 대한 명령문의 기능을 제공한다. 또한 재귀 함수와 서브루틴을 작성할 수 있도록 전역 및 지역 변수를 구현하고 있다.
트루 베이직의 설계자들은 언어를 하드웨어 독립적으로 만들고 싶었기 때문에 트루 베이직 소스 코드는 모든 버전의 컴파일러에서 동일하게 잘 실행될 것으로 예상되며, 대부분의 경우 그들은 이러한 노력은 성공한다. 사용자의 단점으로는 기계의 일부 기능에 직접 액세스할 수 없다는 것이 있었지만 이러한 단점은 특별히 어셈블리 언어로 작성된 호출 가능 함수 및 서브루틴의 사용으로 해결할 수 있다.
최신 버전의 트루 베이직에서는 이전 기능 중 일부는 차단되어 있다. 최근 코드의 예는 다음과 같다.
 RANDOMIZE
 SET WINDOW 0,20,0,20
 SET COLOR 5 !Set the pen and text colour to 5 as true basic has 0-15 colours
 PRINT "Welcome To ..." !Print "Welcome To ..." on the user's screen.
 DO !Begin the loop
     LET x=rnd*20 !Let the value 'x' equal a random number between '0' and '20'
     LET y=rnd*20 !Let the value 'y' equal a random number between '0' and '20'
     Pause .1 !Waits 1/10 of a second
     PLOT TEXT, at x, y: "Fabulous Wikipedia!" !Plot 'Fabulous Wikipedia!' at coordinates 'x' and 'y'
 LOOP !End the loop
 END !End the program
이 간단한 프로그램은 화면 왼쪽 상단에 "Welcome To ..."라는 텍스트를 표시한 다음 "Fabulous Wikipedia!"를 임의의 좌표에서 표시하는 루프를 무한히 반복하여 실행한다.
간단한 애니메이션의 또다른 예로는 다음과 같은 것을 들 수 있다.
 
Draw the Car
 SET WINDOW 0,20,0,20
 SET COLOR 5
 BOX AREA 2,6,2,3
 BOX AREA 9,13,2,3
 BOX AREA 16,20,2,3
 SET COLOR 249
 PLOT LINES :0,5;20,5
 FLOOD 10,1
 BOX KEEP 0,20,0,5 IN road$
 BOX CIRCLE 2,3,5,6
 FLOOD 2.5,5.5
 BOX CIRCLE 5,6,5,6
 FLOOD 5.5,5.5
 SET COLOR 35
 PLOT LINES :2.5,6;5.5,6
 PLOT LINES :5,6;8,6;8,8;6,8;6,10;2,10;2,8;0,8;0,6;3,6
 FLOOD 4,8
 SET COLOR 248
 BOX AREA 4,5,8,9
 BOX KEEP 0,8,5,10 IN car$ !Save the car in 'car$'
 FOR x=1 TO 20 STEP 1 !Create a 'for' loop
     BOX SHOW road$ AT 0,0
     BOX SHOW car$ AT x,5
     PAUSE .1
     CLEAR
 NEXT x !End the 'for' loop
 END !End the programs
1985년 제리 푸어넬 (Jerry Pournelle)은 "도대체 왜 트루 베이직이 필요한가요? 그것은 일반 베이직이 하지 않는 어떠한 것도 하지 않는 것처럼 보이며, 그것이 하는 일은 논리적이거나 직관적인 방식으로 처리되지 않는다." 또한 그는 오류 발생시에 이를 출력하는 기능이 누락되어  "진단을 위한 출력문 삽입" 방식으로 대화형 디버깅을 쓸 수 없도록 한다는 점을 비판했다. 푸어엘은  "나는 트루 베이직 언어의 거듭난 신자가 될 기회를 놓칠 것 같다. 나는 마이크로소프트와 CBASIC이라는 이단아를 즐길 것이다."라고 확언하였다.
일부 사용자는 자신의 CPU(또는 코어)의 100%를 사용하는 프로그램과 편집기에 대해서 불평했다. 이는 이벤트에 대해 키보드와 마우스를 지속적으로 폴링하는 루프를 사용하는 편집기와 사용자 프로그램으로 인해 발생하는 것으로 보인다. 이 문제는 적어도 2010년 말부터 알려졌으나 2014년 초까지 여전히 해결되지 않고 있다.
* Kemeny, John G.; Kurtz, Thomas E. (1985). ''Back To BASIC:  The History, Corruption, and Future of the Language''. Addison-Wesley Publishing Company, Inc. 141 pp. .
* 
분류:베이직 프로그래밍 언어 계열
분류:베이직 인터프리터