{{위키데이터 속성 추적}}
{{소프트웨어 정보
| name                   = 애플소프트 베이직
| logo                   = 
| logo alt               = 
| screenshot             = 
| caption                = 
| screenshot alt         = 
| collapsible            = 
| author                 = [[Marc McDonald]], [[Ric Weiland]]
| developer              = 
| released               = 1977년
| discontinued           = 
| latest release version = 애플소프트 II
| latest release date    = 1978년
| latest preview version = 
| latest preview date    = 
| status                 = 미지원
| programming language   = 
| operating system       = [[애플 II 시리즈]]
| platform               = 
| size                   = 
| language               = 
| language count         = 
| language footnote      = 
| genre                  = [[마이크로소프트 베이직]]
| license                = 
| website                = 
| standard               = 
| AsOf                   = 
}}
'''애플소프트 베이직'''({{lang|en|Applesoft BASIC}})은 [[정수 베이직]]에 이어 두 번째로 [[애플 2]] 컴퓨터에 내장된 [[베이직]] [[프로그래밍 언어]]로 [[마이크로소프트]]가 공급했다.

== 역사와 기능 ==
애플은 48KB 램의 애플 2 컴퓨터에 적재할 새로운 베이직을 찾고 있었고 [[알테어 베이직]]으로 성공한 마이크로소프트를 선택했다. 애플은 10KB [[어셈블리어]] 베이직을 "애플소프트"란 이름으로 계약하였다. [[어셈블리어]] 코드를 공유하였기 때문에 [[코모도어 베이직]]과 같은 다른 [[MOS 6502|6502]] 기반 컴퓨터의 베이직 구현과 매우 흡사했다. 행 번호가 있었고 각 행은 [[공백 기호]]가 필요하지 않았으며 반복문은 매우 느렸다. 그럼에도 애플소프트 베이직은 이전의 열악한 정수 베이직보다 더 많은 기능을 제공하였다.

* 원자적인 문자열. 문자열은 더 이상 C언어와 같이 문자형의 배열이 아니었다. 대신에 [[자바 (프로그래밍 언어)|자바]]나 [[스킴 (프로그래밍 언어)|스킴]]과 같이 [[메모리 수거]] 객체를 사용했다. 이것은 문자열 배열의 사용이 가능하게 했다. DIM A$(10)은 문자열 배열의 10개짜리 [[동적 배열]] 자료 구조, 즉 벡터가 되었다.
* 다차원 배열
* 8비트 지수와 31비트 유효수를 가지는 단정밀도 [[부동소수점]] 변수. 삼각법의 사용이 가능했다.
* 고해상도 영상
* 수치형과 문자열의 변환을 위해 CHR$, ASC, STR$, VAL 함수 제공.
* LET 문이 부차적으로 가능했다.
* 사용자 지정 함수: DEF FN문을 이용하고, 파라메터는 한 개만 제공.
* PEEK와 POKE문을 이용해서 메모리 직접 제어 가능.
* 명령어는 대문자만 사용이 가능하며 (문자열에는 소문자도 사용 가능), 행 번호를 다시 정렬해주는 RENUM 기능은 없다.

== 게임 ==

그러나 몇 가지 이유로 애플소프트 베이직으로 만들어진 [[액션 게임]]은 거의 없었다.

* 당시에는 제한된 메모리와 [[중앙 처리 장치|CPU]] 클록을 조심스럽게 사용하던 시대였기 때문에, 게임같은 속도에 민감한 프로그램을 실시간 [[인터프리터]]로 작성하는 것을 비효율적인 일로 여겼다.
* 애플소프트 베이직은 산술 연산을 위해 정수 대신 실수를 사용하였다. 이것이 프로그램 수행에 불필요한 오버헤드의 원인이 되어, 전체 프로그램의 효율을 떨어뜨렸다. 모든 정수형 수치는 산술 연산을 위해 실수형으로 변환되었고 계산 후에 정수형 수치로 변환되었다. 마이크로소프트는 이를 결코 [[최적화 (정보 공학)|최적화]]하지 않았다.
* [[비트맵]] 대신에 [[모양 구성표]]({{llang|en|Shape Table}})만 제공되었다. 영상 하단에 4줄의 텍스트가 붙는 "하드웨어 분할 화면" 이외에 텍스트와 그래픽을 동시에 출력할 방법이 없었다. 128KB의 메모리를 가졌던 [[애플 2e]]와 [[애플 2c]]의 베이직 인터프리터도 여분의 메모리나 배정밀도 그래픽을 지원하지 않았고 [[애플2GS]]의 16 색상도 지원하지 않았다. ([[비글 브로스]]는 이 문제의 해결을 위해 기계어 코드를 제공했다.)
* 프로그램의 각 행은 [[연결 리스트]]에 저장되어서 [[Goto (명령어)|Goto]]의 계산에 [[계산 복잡도 이론|O(n) (선형) 시간]]이 걸렸다.
* 음향에 관한 기능을 제공하지 않았다.
* [[소스 비공개]] 운동이 일어났다. 소프트웨어 개발사들은 인터프리터 소스보다 컴파일된 바이너리를 수정하기 어렵다는 것을 인지했다.

=== 주요 게임 ===

* [[울티마]] I: [[1980년]], [[오리진]], 제작자 [[리처드 개리엇]]<ref>{{웹 인용 |url=http://www.griddles.de/adventure.html |제목=보관된 사본 |확인날짜=2007-11-11 |보존url=https://web.archive.org/web/20081219174320/http://www.griddles.de/adventure.html |보존날짜=2008-12-19 |url-status=dead }}</ref>
* Phantasie I - III: [[SSI]]<ref>{{웹 인용 |url=http://www.angusm.demon.co.uk/AGDB/DBM1/PhanIII.html |제목=보관된 사본 |확인날짜=2007-11-11 |archive-date=2007-11-12 |archive-url=https://web.archive.org/web/20071112015943/http://www.angusm.demon.co.uk/AGDB/DBM1/PhanIII.html }}</ref>

== Hello World ==
[[파일:Applesoft BASIC.png|섬네일|Hello World]]
애플소프트 베이직의 [[Hello World 프로그램|Hello World]]는 다음과 같다.

 10 PRINT "HELLO, WORLD"

애플소프트 베이직만의 형태를 살려서 프로그램을 짜면 다음과 같다.<ref>이 소스는 [http://everything2.com/?node=Applesoft+BASIC Everything2]의 것으로 [[GFDL 라이선스]]이다.</ref>

 10 TEXT:HOME
 20 ?"HELLO WORLD"

== 같이 보기 ==
* [[정수 베이직]]: 이전의 인티저 베이직
* [[중문 베이직]]: 중국화 된 애플 베이직
* [[비글 베이직]]: [[비글 브로스]]에서 만든 컴파일러 베이직

== 참고 ==
<references />

{{베이직}}
{{주요 프로그래밍 언어}}

[[분류:베이직 프로그래밍 언어 계열]]
[[분류:애플의 소프트웨어]]
[[분류:베이직 인터프리터]]
[[분류:마이크로소프트 베이직]]
[[분류:마이크로소프트의 프로그래밍 언어]]