Кіріспе

Dartmouth BASIC – BASIC бағдарламалау тілінің түпнұсқасы. Оны Дартмут колледжінің екі профессоры Джон Г. Кемени мен Томас Э. Курц жасаған. Dartmouth Time Sharing System (DTSS) жүйесіне негізделген бұл тіл, барлық студенттерге және университет қауымдастығына интерактивті бағдарламалау ортасын ұсынды. Дартмутте бірнеше нұсқасы жасалды, оларды студенттер жүзеге асырып, компиляция және іске қосылатын жүйе ретінде пайдаланды. Алғашқы нұсқасы 1964 жылдың 1 мамырында іске қосылды және маусым айында жалпы қолдануға ашылды. Жаңарып жаңартылып, 1979 жылы жетінші және соңғы нұсқасы шығарылды. Дартмут 1975 жылы Structured BASIC (немесе SBASIC) деп аталатын жаңартылған нұсқасын ұсынды, ол құрылымдық бағдарламалау концепцияларын қосты. SBASIC 1980-ші жылдардың басында ANSI Standard BASIC стандартын жасауға негіз болды. BASIC тілінің көптеген түрі тарихын Төртінші басылымнан бастайды (мысалы, көптеген BASIC қолданушыларына түсінікті тізбектік айнымалыларды қосты, ал түпнұсқа тізбектерді басып шығара алатын), бірақ матрицалық есептеулер сияқты арнайы мүмкіндіктерді көбінесе қалдырады. Дартмут компиляторларынан өзгеше, көптеген BASIC тілдері интерпретатор ретінде жазылды. Бұл шешім оларға алғашқы микрокомпьютерлердің шектеулі жадысында жұмыс істеуге мүмкіндік берді. Microsoft BASIC – 4 КБ жадыда жұмыс істеуге арналған мысал. 1980-ші жылдардың басында ондаған миллион үй компьютерлерінде MS интерпретаторының әртүрлі нұсқалары қолданылды. Ол BASIC үшін де-факто стандартына айналып, ANSI SBASIC жобаларын тоқтатуға себеп болды. Кейін Кемени мен Курц SBASIC-тің True BASIC деп аталатын нұсқасын жасау және насихаттау үшін компания құрды. Көптеген ерте мейнфрейм ойындарының тарихы Дартмут BASIC және DTSS жүйесімен байланысты. Олардың ішінен таңдалып алынғандары HP Time Shared BASIC нұсқаларында «Келгеннен кейін не істеу керек» кітабында жинақталды. BASIC Компьютерлік ойындары мен басқа да туысты жұмыстардың көптеген бастапқы кодтары Дартмут BASIC-ке қатысты.

Санақ техникасы

Кемен мен Куртц дәстүрлі STEM салаларынан тыс студенттер арасында бағдарламалау сауаттылығының қажеттігі туралы келісті; Дартмут студенттерінің бар болғаны 25% STEM-ге қатысты курстарды оқыды, бірақ математиканың белгілі бір деңгейі дерлік барлық мамандықтарда қолданылды. Сонымен қатар, компьютерлер қоғамда маңызға ие бола бастағандықтан, олар: «Компьютер туралы ешқандай білімі жоқ адамдар оның қолданылуы және пайдалануы туралы ақылға қонымды шешім қалай қабылдай алады?» – деп ойланды. Кейін Кеменің айтуынша, «Біздің мақсатымыз – кампустағы әрбір студенттің компьютерге қол жеткізуіне және кез келген оқытушының қажет болған жағдайда компьютерді сабақта пайдалануына мүмкіндік беру еді. Бұл осымен шешілді». Бірақ, қолда бар құралдармен мұны істеу өте қиын болар еді; әдеттегі SCALP жұмысының айналымы шамамен 15 минутқа созылды, ал тілдер STEM емес мамандық иелері үшін қарапайым тапсырмаларды орындау үшін тым қиын болды. Мәселе тек күрделілік емес, бәрінен бұрын, пакеттік өңдеудің өзі болатын. Студенттер бағдарламаларын перфокарталарға немесе қағаз ленталарға дайындап, компьютер операторларына тапсыратын, содан кейін белгілі бір уақыттан кейін нәтижелерін алатын. Көбінесе бұл қателіктерді көрсетіп, бүкіл процесті қайталау қажет болатын. Кейін олар былай деді: «Егер бір рет сынауға бір күн кетсе, студент қызығуын жоғалтады немесе мәселенің не екенін ұмытып қалады. Ең жақсы жағдайда, ол күні бойы нәтижелерді күтіп, уақытын босқа өткізеді». 1959 жылы, негізінен Кеменінің математиканы оқытудағы инновациялық тәсілдерінің арқасында, кафедра жаңа оқу ғимаратын салу үшін 500 000 доллар көлемінде Альфред П. Слоан қорының грантын жеңіп алды.

Тұжырымдаманы әзірлеу

1961 жылы MIT-ге сапар барысында олар PDP 1 және оның жаңа ғана аяқталған тәжірибелік уақыт бөлісу операциялық жүйесімен танысты. Джон Маккарти Курцтан неге олар компьютерлік технологияны көпшілікке тарату үшін уақыт бөлісуді пайдаланбағанын сұрады. Курц Дартмутқа оралып, Кеменге "біз уақыт бөлісуді іске асыруымыз керек" деді, ал Кемен бірден "Жарайды" деп жауап берді. Бұл ұғымның жұмыс істейтінін тексеру мақсатында студенттер бес адамнан тұратын топтарға бөлініп, SCALP қолданысын пайдаланып LGP 30 машинасымен кезекпен жұмыс істеді. Компьютерлік уақыт 15 минуттық сессияларға бөлінді, әрбір топқа бір сессия берілді, содан кейін келесі топқа тапсырылды. Студенттер әдетте бір сессия ішінде екі немесе үш "айналым" ішінде бағдарламаларын аяқтай алатындығы анықталды. Бұл интерактивті жүйенің жүздеген пайдаланушыларға бір машинаны табысты пайдалануға мүмкіндік беретінін нақты көрсетті. Жаңадан енгізілген ASCII кодын телефон желілері арқылы пайдаланатын Teletype Model 33 телепринтерінің пайда болуы қолжетімділік мәселесін шешті; енді бағдарламашылар бағдарламаларды карталар немесе қағаз ленталар арқылы жіберудің қажеті болмайды, олар енді Model 33 арқылы тікелей компьютерге мәтін енгізе алады. Уақыт бөлісу жүйесін іске қосуға жеткілікті жылдамдығы бар жаңа машина және бағдарламашылар қолдана алатын қарапайым тіл ғана қажет еді. Қарапайым тіл туралы ойластыра бастағанда, Кемен бірден жаңа тілді жазуды ұсынды. Курц FORTRAN немесе ALGOL тілдерінің қысқартылған нұсқасына көбірек қызығушылық танытты. Бірақ бұл тілдерде көптеген ерекшеліктер болғандықтан, Курц Кеменмен келісті:

Уақыт өте келе төрт маңызды элемент анықталды: жүйе уақыт бөлісуді қолданады, жаңа тіл қажет болады, пайдаланушыларды жүйеге қосу үшін жаңа курстарда бағдарламалау басқа пәндермен қатар қосымша оқытылады, сондай-ақ терминалдар барлық пайдаланушыларға ашық болады.

Жаңа жүйе

Бағдарламаның бастапқы мақсаттарының бірі – бағдарламалауды басқа оқу курстарына енгізу еді. Бұл жоба сәтті аяқталды, бірақ жүйеге үлкен жүктеме түсіріп, оның болашақта дамуға кеңістігі жоқ екені анық болды. 1965 жылы команда GE компаниясына одан әрі дамыту үшін қолдау сұрады. Қыркүйек айында вице-президент Луис Радер жаңа GE 635 моделін ұсынды, ол бұрынғыдан шамамен 10 есе жылдам жұмыс істейтін және екі процессордан тұратын еді. Сонымен қатар, 150 бір мезгілде пайдаланушыға жететіндей, қосымша DN 30 құрылғысы қосылды. Бұл үшін 265-ші модель орналасқан Колледж залының жертөлесінен гөрі үлкен ғимарат қажет болды. 1922 жылғы түлек Петер Кивит, NSF-тің қосымша қолдауымен бірге, 1966 жылдың желтоқсанында ашылған Кивит есептеу орталығының құрылысын бастады. Бұл жаңа машина келгенше күтіп отырып, 1966 жылдың жазы мен күзінде Рим Әуе Даму Орталығындағы GE 635 құрылғысы арқылы MOLDS, яғни «Көп пайдаланушы Желілік Қателерді Жөндеу Жүйесі» әзірленді. GE 635 1967 жылдың басында пайдалануға берілді, ал MOLDS жүйесі арқылы жаңа операциялық жүйе қыркүйек айында толыққанды жұмыс істеді, содан кейін GE 265 сатылды. GE компаниясы үш жыл бойы машинаны тегін берді, бұл келісімге сәйкес Дартмут BASIC-тің жаңа нұсқаларын әзірлесе, ал GE оны операциялық жүйенің жаңа нұсқасын жасау үшін пайдаланатын еді. Бұл ынтымақтастық өте табысты болды; GE осы машиналарды Mark II уақыт бөлісу жүйелері ретінде қолдануды бастады, ал онжылдықтың соңына қарай олар әлемдегі ең ірі уақыт бөлісу қызметін ұсынатын компаниялардың біріне айналды. Осы «I кезең» жүйесі іске қосылғаннан кейін Дартмут командасы «II кезең» – идеалды операциялық жүйені әзірлеуге кірісті. Бұл жүйе 1969 жылдың наурыз айында орнатылып, көп ұзамай Дартмут Уақыт Бөлісу Жүйесі деп аталды. Үш жылдық мерзім аяқталғаннан кейін GE компаниясы машинаны университетге сыйға берді. Екі команда байланыста болды және қарым-қатынасты жалғастыру үшін бірнеше жақсы ниетпен әрекеттер жасалды, бірақ одан әрі ынтымақтастық болмады және серіктестік 1972 жылдың 20 қыркүйегінде ресми түрде аяқталды.

Пайдаланушылар базасының кеңейуі

1968 жылы жасалған шолуда студенттердің 80% және профессорлық-оқытушылар құрамының 70% жүйені қандай да бір деңгейде қолданып жүргені белгіленді. Жүздеген терминалдар университет аумағында, ауруханадан бастап бизнес мектебіне дейін орналасқан. CPU уақытының 57% оқу процесіне, 16% зерттеу жұмысына, ал қалған 27% "бос уақытты өткізуге" жұмсалды; Дартмут пайдаланушыларды компьютерге деген қорқынышты жеңу және оны тәжірибелі түрде қолдану үшін ойын ойнауға ынталандырды. 1967 жылы NSF грантының арқасында Дартмут кампустан тыс жерлерде де, аймақтағы жоғары мектептерде де терминалдарды орналастыруды бастады. Пайдаланушылар саны бойынша, осы терминалдар барлық пайдаланушылардың 69% -ын құрады, бірақ компьютер уақытын аз мөлшерде пайдаланды. 1971 жылға қарай Нью-Джерси және Мэн штатындағы Бангор қаласына дейін 79 қашықтағы терминалдар болды. Олар бір дауыстық телефон желісі арқылы 12 терминалға дейін қолдау көрсетуге мүмкіндік беретін мультиплексерлік жүйелермен қамтамасыз етілді. Бұған қоса, осы желілердің бірнешеуі модем арқылы қосылу үшін қолжетімді болды.

Ықпал

Уақытты бөлісу 1960 жылдары зерттеудің маңызды саласы болды, компьютер индустриясының көптеген мамандары есептеу қуатының арзанға түсіп, кеңінен таралатынын болжады. Бұл туралы Джон Маккарти ең әйгілі түрде былай деді: "Есептеу бір күні телефон жүйесі сияқты қоғамдық қызмет ретінде ұйымдастырылуы мүмкін". DTSS-те басқа тілдер де қолданылса, 1972 жылы оның бағдарламаларының 98% BASIC тілінде жазылған. BASIC арқасында компьютерлік қызметтер соңғы пайдаланушылар үшін оңай қолжетімді болды, себебі олардың тапсырмаларын компьютерде орындау үшін кодтауға тым көп уақыт кеткеніндей. Бұл шағын немесе орташа көлемдегі тапсырмаларды шешуге ниеттенген пайдаланушылар нарығы үшін арнайы жасалған компьютерлерді енгізген бірқатар өндірушілерге әкелді және олар тікелей өнімділік туралы тым алаңдамады. Атап айтқанда, осы нарыққа тікелей бағытталған екі машина "ешқашан дамытылған ең көп қолданылатын шағын уақытты бөлісу жүйелері" атанды. HP 2000 HP Time Shared BASIC-ті іске қосты, ол BASIC пен DTSS орнатуына ұқсас уақытты бөлісу операциялық жүйесінің үйлесімі болды. Жүйе 32 бір мезгілде пайдаланушыны қолдайды, терминалдарды бастапқы GE 265 орнатуындағы Datanet 30 сияқты іске қосу үшін төменгі деңгейлі HP 2100 процессорын пайдаланды, ал бағдарламалар сол машинаның жоғары деңгейлі моделінде жұмыс істеді, әдетте оның негізгі жады көлемі артық болды. HP BASIC бағдарламаларды сақтау үшін жартылай компиляцияланған токенді форматты қолданды, бұл жүктеу уақытын жақсартты және "компиляция" уақыты нөлдік болды. Digital Equipment Corporation компаниясы жаңа RSTS/E операциялық жүйесі мен BASIC PLUS негізіндегі бір машиналық шешім ұсынып, басқаша тәсіл қолданды. BASIC PLUS MAT командаларын қоса алғанда, Бесінші басылымға жақын болды, бірақ Дартмут компиляторынан немесе HP-нің токенді форматынан айырмашылығы, таза интерпретатор ретінде іске асырылды. Ол сондай-ақ JOSS үлгісіндегі басқару құрылымдарын қамтыды, мысалы Tymshare SUPER BASIC JOSS стильді құрылымдар мен матрицалық есептеулерді қолдады, бірақ бастапқы компиляция және іске қосу операциясын сақтап қалды. Бұл дәуірдегі әрбір жеткізуші осы мәселенің шешімін ұсынды, бірақ олар түпнұсқаға осы деңгейде ұқсамайтын жағдайлар да болды. Курц 1973 жылы BASIC үшін ANSI стандартын әзірлеуді қарастыра бастағанда, BASIC қолдауы бар уақытты бөлісу қызметтері бюроларының саны кез келген басқа тілге қарағанда көп екенін анықтады. Алайда, бұл жетістік сонымен бірге проблема да тудырды, себебі сол кезде стандартты жасау мүмкін емес сияқты көрінген көптеген нұсқалар болды.

BASIC тіліндегі ойындар

Кемені DTSS платформасындағы ойындарды белсенді түрде қолдады және оны DTSS жүйесінің табысының маңызды себептерінің бірі деп есептеді. Ол, мүмкін, алғашқы мейнфрейм ойынының авторы болған. Кемені оған авторлық құқық алмаса да, кейін FTBALL ойыны туралы айта келіп, оны "1965 жылы Дартмут Принстон ойынынан кейін, Дартмут Ламберт кубогын жеңгеннен соң, жексенбі күні жазылған. Бұл – естелік бағдарлама" деп сипаттады. Ойын, үлкен үміткер саналған Принстонға қарсы күтпеген жеңіс болды. Жүйе кеңейген сайын, әсіресе BASIC-ке жолдарды өңдеу мүмкіндігі қосылғаннан кейін, DTSS жүйесі көптеген мәтіндік ойындарды жасау үшін маңызды платформаға айналды. 1970 жылдардың басында People's Computer Company осы ойындарды журналдарында жариялай бастады, әдетте оларды кең таралған HP BASIC форматына ауыстырып. Осы тізімдердің көп бөлігі 1975 жылы жарық көрген «Return басылғаннан кейін не істеу керек» деген кітабында жинақталды. Бұл бағдарламалар HP BASIC форматында жарияланғанымен, олардың көпшілігі DTSS немесе Калифорниядағы Лоренс ғылым залына, DECISION деп аталған ұқсас машина орнатылған жерге қатысты тарихқа ие. 1978 жылғы «BASIC Компьютерлік ойындар» жинағы одан да танымал, онда кітаптағы бағдарламалардың шамамен жартысы Дартмутта жазылған, оның ішінде Кеменің, Батнумның немесе 1968 жылдан кейін оған қосылған көптеген жоғары мектептердің бірінің еңбектері болды. Өте белсенді мектептердің бірі – Массачусетс штатындағы Лексингтон орта мектебі, бірақ басқа да көптеген мектептер де кездеседі. Көптеген бағдарламалардың бастапқы орналасқан жері көрсетілмеген, бірақ олар мектептер немесе Project SOLO сияқты қоғамдық жобалар арқылы жүйемен байланысты авторларға тиесілі болуы мүмкін. BASIC-те көп ойыншылы бейне ойындарды жасау мүмкін болды, қашан Стивен Гарланд пен Джон МакГичи DTSS үшін MOTIF Multiple Online Terminal Interface-ті жасады. Ойынды бастау үшін пайдаланушы RUN орнына LINK деп, содан кейін сессия атын жазса, басқа пайдаланушылар JOIN деп, содан кейін сессия атын жазып, ойынға қосыла алатын болды. MOTIF BASIC бағдарламасы үшін кіріс және шығысты мультиплекстеді, әрбір кіріс және шығыс жолының басына жол идентификаторын қосты. Бұл интерфейспен жасалған алғашқы бағдарламалар FTBALL-дың екі ойыншылық нұсқасы және бес ойыншылық покер ойыны болды. Ал одан да маңыздысы – Amos Tuck Business School-дің онға дейін студентіне бір өнімді өндіру және сатуда бәсекелесуге мүмкіндік беретін басқару ойыны.

Бірінші басылым

Бастапқы нұсқасы, кейіннен бірінші нұсқа деп аталған, LET, PRINT, END, FOR NEXT, GOTO, GOSUB RETURN, IF THEN, DEF, READ, DATA, DIM және REM командаларын қолдады. Онда негізгі математикалық амалдар, , , және , сондай-ақ үстіне қарай жебе "телетайп машинасымен жоғарғы индекстерді басу мүмкін болмағандықтан" пайдаланылды. Қазіргі заманғы нұсқаларында үстіне қарай жебе әдетте "тылсым белгіше" ("hat" character) арқылы алмастырылады. Экспоненталар есептеу алдында санның абсолюттік мәнін алды, сондықтан есептеу үшін пайдалану қажет болды. Экспонента функциясында операциялардың дұрыс ретіне қарама-қарсы келетін тағы бір мәселе болды, ол үшінші нұсқада ғана түзетілді. INT функциясы әрқашан нөлге қарай дөңгелектелді. Бұл тілдің өзіне тән ерекшеліктері де болды. Кейінгі нұсқалардан айырмашылығы, LET командасы басқа командасы жоқ барлық операторларда міндетті болды, сондықтан осы нұсқада жарамсыз еді. PRINT операторы бірнеше айнымалыны басып шығару кезінде үтірді пайдаланды, соның арқасында бес "аймақтың" келесісіне өтті. Бір мәнді немесе сұрауды басып шығару кезінде үтір қажет болмады, сондықтан жарамды болды. Біршама жасырын мүмкіндік - барлық айнымалылар DIM арқылы жарияланбастан, 1-ден 10-ға дейінгі (екінші басылымда 0-ден 9-ға дейін өзгертілген) индекстермен 10 элементке дейін жететін массивтерді (векторларды) ұсынуға қабілетті болды. DIM тек басқа вектор өлшемі қажет болған жағдайда ғана қажет болды. Айтмалы атаулар бір әріппен немесе әріптен кейін санмен шектелді (286 мүмкін айтмалы атау). Пайдаланушы функциялары тек бір әріптен тұруы мүмкін болды, сондықтан дейін. Барлық операциялар қозғалатын нүктеде орындалды. GE 225 және GE 235 машиналарында бұл шамамен 30 биттік (шамамен он цифрлық) дәлдік пен 2 базалық экспонентаның -256-дан +255-ке дейінгі диапазонын қамтамасыз етті. Сонымен қатар, GE 235 машинасының сөз өлшемі 20 бит болғандықтан және 6 биттік таңбалық кодты пайдаланғандықтан, тіл үш әріпті функция атауларын қолдады, себебі бұл 20 биттік сөзде үш 6 биттік таңбаны сақтауға мүмкіндік берді (18 бит пайдаланылды). Сондықтан BASIC функциялары үш әріптен тұрады, мысалы INT немесе SQR, және бұл GE 235 машинасынан кейін тілдің көптеген нұсқаларында сақталды.

Екінші басылым, CARDBASIC

BASIC-тің екінші басылымы (сол кезде осылай аталмаса да) минимал өзгерістер ғана енгізді. 1964 жылдың қазан айында жарық көрген нұсқа массивтерді 1-ден емес, 0-ден бастау мүмкіндігін берді (көпмүшелерді бейнелеу үшін ыңғайлы), сондай-ақ PRINT операторына нүктелі үтір (;) қосылды. Кейінгі нұсқаларда бұл элементтер арасында бос орын қалдырса, нүктелі үтір баспаны үш таңбаға дейін жылжытып, қолданыстағы үтірге қарағанда бір қатарға көбірек сандарды "сығымдауға" мүмкіндік берді. Үш таңбалы өлшем – GE 235 машинасының 20 биттік сөз өлшемінің жанама салдары, ол үш 6 биттік таңбаны сақтады. Келесі үш таңбалы бағанға өту жадтағы келесі сөзға жылжу арқылы оңай жүзеге асырылды. Қазан айындағы нұсқада CARDBASIC жеке анықтамасы да болды, ол карталармен жұмыс істеу үшін арналған BASIC нұсқасы еді. CARDBASIC интерактивті нұсқаға ұқсас болды, бірақ нөлдік негіздегі массивтерді қамтымады. Тілдің болашағы үшін маңыздырақ жайт – CARDBASIC сандық матрицалармен жұмыс жасайтын MAT командаларын қосты. CARDBASIC одан әрі дамытылмады, себебі BASIC-тің негізгі мақсаты – интерактивтілік болатын.

Үшінші басылым

1966 жылы шыққан Үшінші басылым және «басылым» атауын алғаш рет қолданған нұсқа, жаңа GE 635 компьютерімен жұмыс істеу үшін арнайы жасалған алғашқысы болды, ол жақын арада келуі тиіс еді. Бұл нұсқа CARDBASIC-тен MAT функцияларын қамтиды, енді олар 0-ді төменгі индекс ретінде қолдана алады. Жаңа SGN функциясы аргументінің таңбасын көрсетті (оң?0 және теріс?1), ал RESTORE READ/DATA позициясын «қайтару» үшін қосылды. Экспоненциация мәселесі шешілді, сондықтан ол былай түсіндіріледі. Сонымен қатар, INT функциясы нөлге қарай жуықтаудың орнына нақты төмендетуге өзгертілді, бұл INT(X+0.5) арқылы дөңгелектеуді жүзеге асыруға мүмкіндік берді. Бұл нұсқадағы маңызды өзгеріс – сандық мәндерді талдайтын және тілді орындау кезінде алғаш рет шын мәнінде интерактивті ететін жаңа INPUT операторы болды; бұрын орындау кезінде бақылаудың жалғыз жолы – мониторда STOP деп теру еді. Сонымен қатар, жүйе енді BASIC-тің көптеген басқа нұсқаларында кездеспейтін мүмкіндік – циклдарды ығыстыруға рұқсат берді және оны ынталандырды.

Төртінші басылым

Үшінші нұсқа GE 235-тің өмірлік циклы бойы 1967 жылдың күзіне дейін қолданыста болды. Дегенмен, GE 635-ті алу жоспарлары жасалғанда, 1967 жылдың көктемінде 635-те тәжірибелік нұсқа құрылды. Бұл нұсқа GE мен Дартмут арасындағы серіктестік болып табылды, онда GE жаңа операциялық жүйені, сондай-ақ өздерінің Mark 1 BASIC жұмыстарынан BASIC-тің бірқатар мүмкіндіктерін ұсынды. Бұл нұсқа, бастапқыда Үшінші басылымға қосымша ретінде жарияланған, RND функциясын "seed" ретінде бастау үшін RANDOMIZE командасын, ал FORTRAN-дағы ұқсас мүмкіндікке ұқсас "ON GOTO" ("компьютерлік goto") командасын қосты. Бұл нұсқа ON THEN командасына да рұқсат берді, егер THEN GOTO қажет болмаса, онда оның да қажет емес екенін дәлелдеді. Жаңа TAB функциясы басылымды 0-ден 74-ке дейінгі белгілі бір бағанға жылжытты. Тағы бір ішкі өзгеріс MAT-ті қайтадан 1-ге негіздеуге өзгерту болды; 0-ші индекс қолданылуы мүмкін, бірақ ол әдетте түрлі командалармен елеусіз қалдырылатын еді. Бұл нұсқаның маңызды қосымшасы – жол айнымалылары, сонымен қатар READ/DATA операторларының өзгерістері, олар жолдарды сақтауға мүмкіндік берді, және оларды интерактивті түрде оқу үшін INPUT операторы. Жол жүйесінің бір ерекшелігі – салыстыру кезінде соңғы бос орындар қасақана ескерілмеді, сондықтан "YES" және "YES " тең деп есептелді. Кейін бұл қателік екені анықталды. Жол айнымалылары доллар белгісімен белгіленді, мысалы, көптеген пернетақталарда кездесетін таңбалардың таусылуына байланысты. Біреу $ белгісінің "String" сөзіндегі S әрпіне ұқсайтынын айтты, сонымен де мәселе шешілді. Жолдарды өңдеу жаңа команда арқылы жүзеге асырылды. Бұл команда айнымалыдағы жол мәнін эквивалентті ASCII мәндері жиынтығына түрлендірді. Сандық массивті өңдеп, одан кейін жолға қайта түрлендіруге болады. Мысалы, төмендегі код консольде "is" деген нәтижені шығарады:

140-шы жолда жол ұзындығы 2-ге орнатылады, оны пайдаланушы басқаруы керек. Бірінші таңба T(1)-де сақталады. Бұл жүйе икемді болғанымен, пайдалануы аса ыңғайлы болған жоқ. Келесі нұсқалар жаңа мүмкіндіктермен бұл мәселені шешеді. Бұл нұсқадағы шағын өзгерістер PRINT операторларындағы нүкте-сызықтарды кеңістіксіз "жинақы басылымға" өзгертіп, REM үшін апострофты қысқаша форма ретінде пайдалануға мүмкіндік берді. Ресми Төртінші басылым 1968 жылға дейін пайда болмады, ол алдыңғы қосымшаларға бірнеше жаңа мүмкіндіктерді қосты. Оларға DEF командасымен көпжолды функцияларды анықтау мүмкіндігі және тізбектерді ASCII кодтарының массиві ретінде қарастыратын қуатты CHANGE операторы кірді, бұл бүкіл тізбекті аралап өтусіз жеке таңбаларды өңдеуге мүмкіндік берді. Бұл сонымен қатар жалғыз жол өңдеу функциясы болды; бір таңбаны немесе кішіжолды алу үшін оны сандар массивіне түрлендіру үшін CHANGE операторын қолдану қажет болды, содан кейін осы масситті түрлендіріп, қайтадан түрлендіру қажет еді. MAT қайтадан 1-ге негізделгенінің себебі осы еді; жол ұзындығы нөлдік жайға орналастырылды және оны әдетте елемеу керек болды.

Бесінші басылым

Бесінші басылым, 1970 жылдың соңында, 1969 жылдың ақпан және сәуір айларында шыққан Төртінші басылымның екі қосымшасы ретінде қайтадан басталды. Басты өзгеріс – файлдармен жұмыс ілуді енгізу болды. Бұрын бағдарламада қолданылатын алдын ала анықталған деректер жолдарға орналастырылып, команда арқылы бірінен соң бірі оқылатын. Бұл мүмкіндікті пайдаланып, файлдарды да осылай оқуға болады. Команда файлдан бір элементті оқи алады және бірін жаза алады. Файлдар жаңа кілт сөз арқылы ашылды, одан кейін файл атауларын сипаттайтын тұрақты тізбектердің тізімі келді. Бұл тұрақтылар болғандықтан, файл атауын өзгерту үшін кодты да сәйкес ету қажет болды. Атауларға нөмірлер берілді, бірінші атау файл #1 болды, және т.с.с. Екі файл форматы қолдау көрсетілді: кездейсоқ қолжетімділік және сызықтық. Сызықтық файл бүгінгі күнгі мәтіндік файл сияқты қарастырылды, мәтіннің бір жолын тізбек айнымалысына оқып, содан кейін оны терминалға шығаруға болады. Кейінгі нұсқаларда файлдарды тізбектермен көрсетуге мүмкіндік беру үшін қосылды, бірақ біраз уақыт бойы бұл форматты қолданатыныңызды көрсету үшін бағдарламаның басында көрсету қажет болды. Кездейсоқ қолжетімділік файлдары үшін атау ішіндегі деректер түрін көрсетуі керек еді; екілік деректерді қамтиды дегенді білдірді, ал оны ең көп ұзындығы болатын тізбек ретінде оқу керек екенін білдірді. Команда арқылы кездейсоқ қолжетімділік файлында кез келген жерге орналасуға болады, ал ағымдағы орны функциясымен қайтарылды, ал файл ұзындығы функциясымен. Сызықтық оқылым кезінде, файл соңына жеткенін тексеруге болады: IF END THEN.

Тағы бір маңызды өзгеріс – бір BASIC бағдарламасының екіншісін команда арқылы шақыру және тізім арқылы айнымалыларды беру мүмкіндігі болды. Кейіннен бұл қарапайым тұжырымдаманың бірнеше мәселелері бар екені анықталды, бірақ оның көмегімен кейбір үлкен бағдарламалар жазылды. Тізбектерді басқару жақсартуларға ие болды. Жаңа команда басқа тізбектен бөліп алынған жаңа тізбекті қайтарады. Жоғарыдағы мысалда, үлкен тізбектен "is" тізбегі алынады. Жаңа команданы пайдаланып, оны қысқартуға болады, бұл көптеген диалекттерде кездесетін функцияға ұқсас жұмыс істейді. SEG$ бірінші және соңғы индекстерді пайдаланады; MID$ бірінші индекс пен ұзындықты пайдаланады. тізбектің ұзындығын қайтарады, бұл енді ішкі түрде басқарылады және көп жағдайда есептеуді қажет етпейді, ал тізбектің екінші тізбектегі орнын қайтарады, бұл көптеген диалекттерде амперсандпен басқарылады. Тізбектерді біріктіру үшін енгізілді. Сонымен қатар, көптеген ұсақ өзгерістер енгізілді. Олардың арасында бұрынғы нұсқадағы бір өлшемді емес, екі өлшемді тізбек массивтері, сондай-ақ математикалық функцияларды анықтау үшін тізбектерді пайдалану мүмкіндігі болды. Жаңа жүйелік функциялар кірді, уақыт пен күндермен жұмыс істеу үшін, өткен уақытты қайтаратын және пайдаланушы нөмірін қайтаратын, бүгінгі күні пайдаланушы аты қандай болар еді. Жаңа тізбек функциялары, қазіргі BASIC диалекттерінде жиі кездесетін. сондай-ақ, осы нұсқада қысқартылған түрі пайда болды.

Алтыншы басылым

Алтыншы басылымның жұмысы 1969 жылдың күзінде, бесінші басылым аяқталмас бұрын басталды. Жаңа нұсқа үшін толық сипаттама бұрыннан жазылып дайын болды. Бұл бұрынғы нұсқалардан өзгеше, онда спецификациялық құжаттар компилятордағы өзгерістерге сүйенген. Бұл нұсқаны Кемен мен Курц, сондай-ақ бірнеше бұрынғы студенттер, факультетке оралған: Стивен Гарланд, Джон МакГичи және Роберт Харгрейвс жасады. Ол жетілу үшін көп уақыт берілді, 1971 жылдың жазында үш ай бойы бета-нұсқасы сынақтан өтті, содан кейін 1971 жылдың 21 қыркүйегінде жарияланды. Осы жетілудің нәтижесінде Курц оны "Дартмут университетіндегі ең жақсы жобаланған және ең тұрақты бағдарламалық жүйе" деп атады. Ең ірі өзгерістердің бірі – бұрынғы CHAIN ұғымын, GOSUB-қа ұқсас жұмыс істейтін, бірақ жол нөмірінің орнына функция атауын көрсететін, әлдеқайда нақты анықталған CALL-мен алмастыру болды. Функциялар SUB SUBEND арқылы анықталды және COMMON декларациялары арқылы жаһандық айнымалыларды пайдаланудың орнына шақыру кезінде кез келген параметрлерді қабылдады. Тағы бір маңызды өзгеріс – FILE командасымен жасалған файл дескрипторларын (нөмірлерін) пайдалану болды, ол көптеген қазіргі заманғы BASIC-тердегі OPEN командасына ұқсас. PRINT USING командасы FORTRAN-ға ұқсас форматталған шығаруды қамтамасыз етті, ал кіріс деректерін түсіндірмей қабылдады, соның арқасында үтірлер, нүктелер және тіпті BASIC кодын енгізуге болады. Алтыншы басылым BASIC-тің бастапқы тұжырымдамасының соңғы нұсқасы болды. Ол көп жылдар бойы өзгеріссіз сақталды. Кейінгі нұсқалар мүлдем басқа тілдер болды.

SBASIC

1976 жылы Стивен Гарланд Дартмут структуралық BASIC немесе SBASIC жасау үшін бірқатар құрылымдалған бағдарламалау қосымшаларын жинады. Басты мақсат – IF THEN және GOTO негізіндегі басқару құрылымдарын әртүрлі блокқа бағытталған құрылымдармен алмастыру болды. Ол SBASIC бастапқы кодын 6-шы BASIC нұсқасына түрлендіретін, содан кейін оны қалыпты түрде компиляциялап, іске қосатын алдын ала компиляторды пайдаланды. SBASIC басқа бағдарламашылар қосымша салған PLOT командасына негізделген графикалық мүмкіндіктерді де қосты. Блок құрылымдары, мысалы, DO WHILE, ALGOL 68-дегідей, сәйкес келетін операторлармен аяқталады және LOOP-пен бітуге дейін бірнеше жолдарды қамтиды, бұл Pascal немесе C сияқты тілдердегі жалпы блок құрылымдарынан өзгеше. DO циклін WHILE немесе UNTIL операторларын алып тастау арқылы және LOOP-тың астына шартты операторды орналастыру арқылы төменнен шығаруға болады. DO FOREVER немесе LOOP FOREVER арқылы шексіз циклдар қолдауға алынды. "Түпнұсқа" Дартмут BASIC THEN операторынан кейін операторларға рұқсат бермей, тек тармақталуға арналған жол нөмірін ғана қабылдады. SBASIC кез келген операторға рұқсат берді, мысалы, 1972 жылы BASIC PLUS-пен бастау алған IF THEN-ге арналған негізгі кеңейтім осы кезде, микрокомпьютерлік нұсқаларын қоса алғанда, BASIC-тің көптеген түрлерінде кеңінен қолданылды. Бұдан өзге, SBASIC THEN операторын жеке жолға орналастырып және блокты CONTINUE операторымен аяқтап, блокқа бағытталған IF құрылымын қосты. Сонымен қатар SBASIC Visual Basic NET-те бүгінгі күнге дейін сақталған SELECT CASE механизмін қосты. SBASIC сонымен қатар планеттермен пайдалануға арналған графикалық командалар жиынтығын қосты. Ол үшін PLOTTER "plottername" командасы келесі командаларды таңдалған құрылғыға бағыттау үшін, ал WINDOW командасы оның параметрлерін орнату үшін қажет болды. Содан кейін PLOT X,Y командасы таңдалған планетте нүктелерді шығарады, ал PRINT командасында қолданылғандай, оператордың соңына нүкте-жоны қосу қаламды қағаз бетінде қалдырып, сызық салады, мысалы PLOT 10,10;20,20. SBASIC ақырында 1987 жылғы ANSI X3.113 1987 толық BASIC стандартын құрады, ол 1978 жылғы ANSI X3.60 1978 минималды BASIC стандартын кеңейтті. Бұл стандартты жасаудың ұзаққа соғуы және компьютерлік ғалымдардың құрылымдалмаған BASIC-ке деген құрметсіздігі Гарланд төрағалық еткен Жоғары деңгейдегі компьютерлік ғылым курсын әзірлеу жөніндегі колледж комиссиясын Паскальді міндетті етуге және BASIC-ті курстың тілі ретінде рұқсат етпеуге мәжбүр етті. Гарланд Дартмут университетінде компьютерлік ғылымның кіріспе курсын оқыту үшін SBASIC-ті пайдаланды, бірақ П.А. курсын оқыту үшін Паскаль тілінде оқулығын қайта жазды.

Жетіінші басылым

Гарландтың SBASIC-і SBASIC бастапқы кодында жазылған алдын ала компилятор болды. Жүйе SBASIC бастапқы кодын оқиды, сәйкес 6-шы редакция кодын жазады, содан кейін осы шығысты компиляциялайды. 1980 жылы шыққан жетінші басылым SBASIC-тің дербес компиляторы болатын нұсқасы еді. Ол өзіне бірнеше жаңа мүмкіндіктер қосты. Көптеген өзгерістер сыртқы бағдарламаларды шақыру жүйесін және бағдарламаны бөліктерге бөлуге арналған "оверлейлерді" жетілдіруге бағытталған. Бұл нұсқада бір файлды бөлісетін SUB процедуралары деректерді тиімді түрде бөлісіп қолданды. Бұл процедуралар тобының ішінде деректерді жасырудың қарапайым жолын ұсынды. Бүгінгі күні мұндай бөлініс модуль деп аталады. Бұған қоса, бұл басылым LET операторларында құрылымдық қателерді өңдеу және кез келген матрицалық амалдарды қолдану мүмкіндігін қосты, сондықтан A = M*4 деп LET бергенде, M матрицалық айнымалы болса, мәлімдеме M-дегі барлық элементтері 4 еселенген жаңа матрицаны A-ға шығарады. Соңында, тағы бір маңызды жаңару – рекурсияны мүмкін ететін процедуралар үшін активация тізімдерін пайдалану болды.

ANSI BASIC, Сегізінші басылым

1970-ші жылдардың басында BASIC-тің іске асырылған түрлерінің саны ондағанға жетті, олардың барлығы бастапқы нұсқада ұсынылған негізгі идеяға өзгерістер енгізді. Көпшілігі Бесінші басылымға негізделген, бірақ көбінесе MAT командалары мен кодты теріс енгізу мүмкіндігі болмады. GE осындай компаниялардың бірі болды; олар 6-шы басылым бірнеше айдан кейін шығарылатынын күтпей, Mark II жүйелерін 5-ші басылыммен бірге шығарды. DEC платформасындағы BASIC PLUS, мысалы, MAT командаларын қоса алғанда, ең жақын нұсқаға ие болды, бірақ кейін кері үйлесімді емес бірнеше өзгерістер енгізілді. Керісінше, Standard BASIC басқа BASIC-терде болмаған көптеген жаңа мүмкіндіктерге ие болды, олардың көпшілігі жақсы ойластырылмаған және сынға ұшырады. Мысалы, стандартқа жол жалғастыру символы енгізілді, бірақ амперсанд (&) таңдалды, ол сонымен қатар жолдарды біріктіру үшін де қолданылды. Оларды бір жолда қолдану өте шатастыратын кодқа әкелуі мүмкін. Осы кезде 1975 жылы алғашқы микрокомпьютерлердің пайда болуы Microsoft BASIC деп танылатын Altair BASIC-тің енгізілуіне әкелді. MS BASIC BASIC PLUS-қа, демек, ақыр соңында Бесінші басылымға негізделген, бірақ теріс енгізу, MAT және басқа мүмкіндіктерден мүлдем айырылды. Сонымен қатар, ол LEFT$ және RIGHT$ функцияларын қосты, бұл үш әріптік конвенцияны бұзды. Микрокомпьютерлер саны артып, 1970-ші жылдардың соңында үй компьютерлері нарығына айналғанда, MS BASIC де-факто стандартқа айналды. Нарықтағы осы қарқынды өзгерістерге байланысты Standard BASIC жұмысы одан әрі баяулады және 1987 жылға дейін X3.113 1987 ретінде ресми түрде бекітілмеді. Осы кезде стандарттардың мағынасы қалмады; MS BASIC кеңінен таралған ғана емес, сонымен қатар 1980-ші жылдардың ортасында BASIC-тің қолданылуы азайды, себебі жинақталған бағдарламалық жасақтамалар енгізілген бағдарламалардың орнын басты. Екі стандарт та кейіннен алынып тасталды. ANSI күш-жігерінің сәтсіздігіне қарамастан, Standard BASIC жобасы 1982 жылы Дартмутте Сегізінші басылым ретінде іске асырылды.

DTSS интерфейсі

DTSS бастапқы интеграцияланған даму ортасын (IDE) іске асырды: интерактивті командалық желі интерфейсі. Бұл пайдаланушы және жұмыс басқару командаларын қамтамасыз етті. Мысалы, бос терминал HELLO деп теріп, пайдаланушы тіркелгісіне қосылуы мүмкін, ал BYE деп қайта тіркелгіден шығуға болады. Пайдаланушы енгізген кез келген жол, егер ол жол нөмірімен басталса, бағдарламаға қосылып, сол нөмірдегі бұрынғы сақталған жолды алмастыратын еді; ал қалғандары DTSS командасы деп есептеліп, дереу орындалатын. Жол нөмірінен ғана тұратын жолдар сақталмайтын, бірақ бұрын сақталған сол нөмірлі жолдар жойылатын. Мұндай түзету әдісі терминал құрылғылары ретінде телепринтерлерді пайдаланудың қажеттілігінен туындады. Әрбір пайдаланушы тіркелгісінде кез келген BASIC бағдарламаларын оффлайн режимінде сақтауға болады, ал әкімші тіркелгілері бағдарламаларды тұрақты сақтауға қалдыра алады. Белгілі бір уақытта белгілі бір пайдаланушы тіркелгісі үшін осы бағдарламалардың кез келгені белсенді болатын, егер бағдарлама жүктелмеген болса, жаңа бағдарлама қабылданатын. Сақталған бағдарламаларға қазір BASIC тілінің бөлігі ретінде жақсы таныс командалар арқылы қол жеткізілуі мүмкін; мысалы, LIST командасы DTSS-ке қазіргі белсенді бағдарламаны басып шығаруды бұйыратын.

ТЕХН/Тест жүйесі

1960 жылдардың соңында Дартмут студенттерінің 80%-ы математикадан екі курс оқыды және екінші курста есептеу математикасы немесе дискретті математикадан Basic тілін үйренді. Олар осы курстардың басында Basic тілі бойынша бір сағаттық екі дәріс тыңдады, содан кейін Basic тілінде төрт бағдарлама жазуға міндеттелді. Бағдарламалар π шамасын табудан бастап, бесінші дәрежелі көпмүшенің түбірін табуға дейін, дифференциалдық теңдеуді шешуге немесе (модельдеу арқылы) Марков тізбегіндегі лимиттік ықтималдықты анықтауға арналды. TEACH/Test жүйесі студенттерге осы тапсырмаларды орындауға көмектесті. Олар бағдарламаның жұмыс істейтініне сенгенде, TEST командасын енгізеді, ал оқытушы жазған бағдарлама олардың жазғанын мақұлдайтын немесе қателіктерді табуға көмектесетін кеңес беретін. Студенттер әр бағдарламаның кодының тізімін, оның жұмыс істеу үлгісін және TEACH/Test жүйесінен алынған мақұлдауды тапсыру керек еді. Жүйе тапсырмаларды бағаламайды және студент TEST командасын қанша рет енгізгенін тіркемейді, ол тек студенттерге және олардың оқытушыларына көмектеседі.

ТАҢЫЗ тіл

Бірінші нұсқада келесі оператор түрлері енгізілді, олардың кейбіреулері FORTRAN II-ден, ал кейбіреулері ALGOL 60-тан алынды. Жалпы, тіл FORTRAN үлгісіне жақын, себебі ол әдетте кодтың әр жолы үшін бір операторды қамтиды, кодты топтастыру үшін ALGOL-дың "блоктарынан" мүлдем құрылған жоқ (осы құрылымдық бағдарламалау конструкциялары ALGOL-ді жасаудың басты себебі болды) және бағдарлама ағынын басқару үшін GOTO операторын пайдаланды. ALGOL-дан FOR TO STEP стиліндегі циклдар FORTRAN-ның қиын DO CONTINUE операторларын ығыстырды. BASIC сондай-ақ IF THEN конструкциясын қарапайым салыстыруға мүмкіндік беру үшін жеңілдетті, мысалы, FORTRAN-ның IF (X 5) 20,20,30 сияқты түрінен өзгеше. FORTRAN стиліндегі "есептелген IF" кейінгі нұсқаларда ON GOTO командасымен қайта енгізілді. Айнымалы атаулары A-дан Z-ға дейін, A0-дан A9-ға дейін, B0-дан B9-ға дейін, Z0-дан Z9-ға дейін шектелді, бұл ең көп дегенде 286 түрлі айнымалыны құруға мүмкіндік берді. FORTRAN-ның I-ден N-ге дейінгі айнымалыларды бүтін сан ретінде, ал қалғандарын қозғалатын нүкте ретінде анықтаудың ерекше жүйесі алынып тасталды, және барлық айнымалылар қозғалатын нүкте болып саналды және 10 элементке дейін өлшемделді. DIM командасы массив оннан астам элементті қамтыса ғана қажет болды. Массив атаулары тек A-дан Z-ға дейін ғана шектелді.

Операторлардың тізімі

Арифметикалық операторларЛогикалық операторларЖоқ (унарлық операция) = Тең+Қосу<>Тең емес-Азайту (екілік операция)<Кішіден*Көбейту<=Кішіден немесе тең/Бөлу>Үлкен?Даржалау=>Үлкен немесе теңТоптау операторы( )Топтау