Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| {{контекст|видеоигры}} | | {{контекст|видеоигры}} |
− | '''BASIC''' ('''B'''eginner’s '''A'''ll-purpose '''S'''ymbolic '''I'''nstruction '''C'''ode — универсальный код символических инструкций для начинающих), или Бейсик<ref>Русскоязычное название, использовавшееся ещё в [[советские компьютеры|советских компьютерах]].</ref> — семейство высокоуровневых языков программирования. Был распространён на персональных микрокомпьютерах, таких как [[Commodore 64]] и [[Sinclair ZX81]], и часто запускался вместе со средой. Например, клавиши [[Sinclair ZX Spectrum]] были подписаны командами Бейсика для облегчения ввода. Бейсик позволял домашним пользователям и другим не-специалистам самим писать программы для микрокомпьютеров, в отличие от использовавшихся ранее языков программирования, предназначенных для математиков и учёных. | + | '''BASIC''' ('''B'''eginner’s '''A'''ll-purpose '''S'''ymbolic '''I'''nstruction '''C'''ode — универсальный код символических инструкций для начинающих) — семейство высокоуровневых языков программирования. Был распространён на персональных микрокомпьютерах, таких как [[Commodore 64]] и [[Sinclair ZX81]], и часто запускался вместе со средой. Например, клавиши [[Sinclair ZX Spectrum]] были подписаны командами Бейсика для облегчения ввода. Бейсик позволял домашним пользователям и другим не-специалистам самим писать программы для микрокомпьютеров, в отличие от использовавшихся ранее языков программирования, предназначенных для математиков и учёных. |
| | | |
− | На Бейсике того времени было написано много видеоигр, работавших в [[текстовый режим|текстовом режиме]]. В [[компьютерный журнал|компьютерных журналах]] публиковался исходный код игр (и просто полезных программ), который читатели могли вбить в свой компьютер и запустить игру. Программа такого формата занимала обычно до 150 строчек, так как должна была уместиться в ограниченную оперативную память (в некоторых конфигурациях — всего килобайт). Каждая марка компьютеров имела свой диалект Бейсика и свои особенности (отличия были даже между такими моделями как [[ZX80]] и ZX81), поэтому при вводе программ для других моделей от пользователя требовалась некоторая адаптация — [[портирование]]. Различные рекомендации по портированию программ распространялись в журналах и внутри сообщества. Само изложение программ в журналах также рекомендовало различные модификации, например, для увеличения или уменьшения [[сложность (видеоигры)|сложности]] — как с конкретными инструкциями, так и в виде идей, реализацию которых пользователь волен проработать сам. Таким образом многие видеоигр на Бейсике ходили в различных версиях как подлинно народное творчество. В ту эпоху обзоры компьютерных игр часто указывали язык программирования, на котором создавалась игра, что обычно было «Бейсик» или «машинный код». Некоторые игры, такие как «[[3D Monster Maze]]», пополам состояли из того и другого. | + | На Бейсике того времени было написано много видеоигр, работавших в [[текстовый режим|текстовом режиме]]. В [[компьютерный журнал|компьютерных журналах]] публиковался исходный код игр (и просто полезных программ), который читатели могли вбить в свой компьютер и запустить игру. Программа такого формата занимала обычно до 150 строчек, так как должна была уместиться в ограниченную оперативную память (в некоторых конфигурациях — всего килобайт). Каждая марка компьютеров имела свой диалект Бейсика и свои особенности (отличия были даже между такими моделями как [[ZX80]] и ZX81), поэтому при вводе программ для других моделей требовалась некоторая адаптация. Само изложение программ в журналах также рекомендовало различные модификации, например, для увеличения или уменьшения [[сложность (видеоигры)|сложности]] — как с конкретными инструкциями, так и в виде идей, реализацию которых пользователь волен проработать сам. Таким образом многие видеоигр на Бейсике ходили в различных версиях как подлинно народное творчество. В ту эпоху обзоры компьютерных игр часто указывали язык программирования, на котором создавалась игра, что обычно было «Бейсик» или «машинный код». Некоторые игры, такие как «[[3D Monster Maze]]», пополам состояли из того и другого. |
| | | |
| Множество популярных видеоигр на Бейсике было собрано Дэвидом Алем и издано в книге «[[BASIC Computer Games]]». Одной из самых популярных игр на Бейсике была «{{нет статьи|[[:wikipedia:ru:Star Trek (текстовая игра)|см.]]|Star Trek (текстовая игра)|Star Trek}}», известности которой способствовала популярность «[[Звёздный путь|Звёздного пути]]» среди компьютерщиков. Из-за этого игра ходила во многих модифицированных версиях, самая распространённая из которых называлась «Super Star Trek». | | Множество популярных видеоигр на Бейсике было собрано Дэвидом Алем и издано в книге «[[BASIC Computer Games]]». Одной из самых популярных игр на Бейсике была «{{нет статьи|[[:wikipedia:ru:Star Trek (текстовая игра)|см.]]|Star Trek (текстовая игра)|Star Trek}}», известности которой способствовала популярность «[[Звёздный путь|Звёздного пути]]» среди компьютерщиков. Из-за этого игра ходила во многих модифицированных версиях, самая распространённая из которых называлась «Super Star Trek». |
− |
| |
− | == Пример игры: Animal ==
| |
− | Классическая игра «Угадай животное» вошла в сборник «BASIC Computer Games» и была распространена как в США и Великобритании, так и в СССР, и в постсоветской России. В той или иной реализации эта игра приводится как пример во многих учебниках по Бейсику. Это реализация из «BASIC Computer Games».
| |
− | {| class=standard
| |
− | ! Строчка !! Объяснение
| |
− | |-
| |
− | | 10<ref>Команды Бейсика начинались с номера строки, который определял порядок выполнения, давал возможность перейти к строке по её номеру или заменить её в командной строке, введя новую строчку с тем же номером. Обычно строчки нумеровались кратными десяти, чтобы можно было вставлять новые строчки между ними, не меняя нумерацию остальной программы.</ref> <nowiki>PRINT TAB(32);"ANIMAL"</nowiki> || Первая строчка программы. Печатает название игры после отступа.
| |
− | |-
| |
− | | <nowiki>20 TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"</nowiki> || Печатает название и адрес автора (по крайней мере данной версии) после меньшего отступа.
| |
− | |-
| |
− | | 30 PRINT: PRINT: PRINT || Три раза печатает перенос строки.
| |
− | |-
| |
− | | <nowiki>40 PRINT "PLAY `GUESS THE ANIMAL`"</nowiki> || Печатает «Сыграем в „Угадай животное“».
| |
− | |-
| |
− | | <nowiki>50 PRINT "THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT"</nowiki> || Печатает «Задумайте животное, а компьютер постарается угадать».
| |
− | |-
| |
− | | 60 PRINT || Печатает перенос строки.
| |
− | |-
| |
− | | 70 DIM A$(200) || Создаёт пустой массив данных A$ для 201 строк (поскольку нумерация элементов начинается с нуля).
| |
− | |-
| |
− | | 80 FOR I=0 TO 3 || Следующий после этой строчки блок команд будет повторён четыре раза.
| |
− | |-
| |
− | | 90 READ A$(I) || Считывает начальные данные для массива A$ (данные расположены в строчке 530).
| |
− | |-
| |
− | | 100 NEXT I || Закрывает блок, нуждающийся в повторении.
| |
− | |-
| |
− | | 110 N=VAL(A$(0)) || В переменную N записывается числовое значение первого элемента массива — номер следующего пустого элемента масива.
| |
− | |-
| |
− | | <nowiki>120 REM MAIN CONTROL SECTION</nowiki> || Примечание для программиста «Основная часть программы».
| |
− | |-
| |
− | | <nowiki>130 INPUT "ARE YOU THINKING OF AN ANIMAL";A$</nowiki> || Спрашивает «Вы задумали животное?» и записывает ответ в переменную A$ (не следует путать с массивом A$).
| |
− | |-
| |
− | | <nowiki>140 IF A$="LIST" THEN 600</nowiki> || Если пользователь ответил «перечень», перейти на строчку 600, где начинается подпрограмма, перечисляющая известных компьютеру животных.
| |
− | |-
| |
− | | <nowiki>150 IF LEFT$(A$,1)<>"Y" THEN 120</nowiki> || Если пользователь ответил не «перечень» и не «да» (точнее, любое слово на Д), тогда вернуться на строчку 120, чтобы спросить снова.
| |
− | |-
| |
− | | 160 K=1 || В переменной K хранится рассматриваемый индекс массива данных. Догадки начинаются индекса № 1.
| |
− | |-
| |
− | | 170 GOSUB 390 || Перейти к подпрограмме догадок на строчке 290. Поскольку используется GOSUB, подпрограмма, закончив, сможет вернуться в то самое место, которое её вызвала.
| |
− | |-
| |
− | | 180 IF LEN(A$(K))=0 THEN 999 || Когда подпрограмма закончила, если последний рассматриваемый элемент массива пуст, то перейти к 999 (где расположен конец программы).
| |
− | |-
| |
− | | <nowiki>190 IF LEFT$(A$(K),2)="\Q" THEN 170</nowiki> || Если рассматриваемый элемент массива начинается на «\Q», то это вопрос, и нужно продолжить догадки — перейти к строчке 170, которая запускает подпрограмму догадок.
| |
− | |-
| |
− | | 200 PRINT "IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2); || Печатает «Это (предполагаемое животное)?». Название животного берётся как рассматриваемый элемент массива, минус первые два символа («\A»).
| |
− | |}
| |
− | <pre><nowiki>
| |
− | 210 INPUT A$
| |
− | 220 A$=LEFT$(A$,1)
| |
− | 230 IF LEFT$(A$,1)="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?": GOTO 120
| |
− | 240 INPUT "THE ANIMAL YOU WERE THINKING OF WAS A ";V$
| |
− | 250 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A"
| |
− | 260 PRINT V$;" FROM A ";RIGHT$(A$(K),LEN(A$(K))-2)
| |
− | 270 INPUT X$
| |
− | 280 PRINT "FOR A ";V$;" THE ANSWER WOULD BE ";
| |
− | 290 INPUT A$
| |
− | 300 A$=LEFT$(A$,1): IF A$<>"Y" AND A$<>"N" THEN 280
| |
− | 310 IF A$="Y" THEN B$="N"
| |
− | 320 IF A$="N" THEN B$="Y"
| |
− | 330 Z1=VAL(A$(0))
| |
− | 340 A$(0)=STR$(Z1+2)
| |
− | 350 A$(Z1)=A$(K)
| |
− | 360 A$(Z1+1)="\A"+V$
| |
− | 370 A$(K)="\Q"+X$+"\"+A$+STR$(Z1+1)+"\"+B$+STR$(Z1)+"\"
| |
− | 380 GOTO 120
| |
− | 390 REM SUBROUTINE TO PRINT QUESTIONS
| |
− | 400 Q$=A$(K)
| |
− | 410 FOR Z=3 TO LEN(Q$)
| |
− | 415 IF MID$(Q$,Z,1)<>"\" THEN PRINT MID$(Q$,Z,1);: NEXT Z
| |
− | 420 INPUT C$
| |
− | 430 C$=LEFT$(C$,1)
| |
− | 440 IF C$<>"Y" AND C$<>"N" THEN 410
| |
− | 450 T$="\"+C$
| |
− | 455 FOR X=3 TO LEN(Q$)-1
| |
− | 460 IF MID$(Q$,X,2)=T$ THEN 480
| |
− | 470 NEXT X
| |
− | 475 STOP
| |
− | 480 FOR Y=X+1 TO LEN(Q$)
| |
− | 490 IF MID$(Q$,Y,1)="\" THEN 510
| |
− | 500 NEXT Y
| |
− | 505 STOP
| |
− | 510 K=VAL(MID$(Q$,X+2,Y-X-2))
| |
− | 520 RETURN
| |
− | 530 DATA "4","\QDOES IT SWIM\Y2\N3\","\AFISH","\ABIRD"
| |
− | 600 PRINT:PRINT "ANIMALS I ALREADY KNOW ARE:"
| |
− | 605 X=0
| |
− | 610 FOR I=1 TO 200
| |
− | 620 IF LEFT$(A$(I),2)<>"\A" THEN 650
| |
− | 624 PRINT TAB(15*X);
| |
− | 630 FOR Z=3 TO LEN(A$(I))
| |
− | 640 IF MID$(A$(I),Z,1)<>"\" THEN PRINT MID$(A$(I),Z,1);: NEXT Z
| |
− | 645 X=X+1: IF X=4 THEN X=0: PRINT
| |
− | 650 NEXT I
| |
− | 660 PRINT
| |
− | 670 PRINT
| |
− | 680 GOTO 120
| |
− | 999 END
| |
− | </nowiki></pre>
| |
− |
| |
− | == История ==
| |
− | Бейсик был придуман в 1964 году преподавателями Дартмутского Колледжа {{ruw|Кемени, Джон Джордж|Джоном Кемени}} и {{ruw|Курц, Томас|Томасом Курцем}}, и под их руководством был реализован командой студентов колледжа. Язык был основан частично на {{ruw|Фортран|Фортране}} II и частично на {{ruw|Алгол 60|Алголе 60}}. Со временем, когда стали появляться другие диалекты, изначальную реализацию стали называть Dartmouth BASIC.
| |
− |
| |
− | Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач, не имея специальной подготовки.
| |
− |
| |
− | При проектировании языка использовались следующие восемь принципов. Новый язык должен был:
| |
− | # быть простым в использовании ''для начинающих'';
| |
− | # быть языком программирования ''общего назначения'';
| |
− | # предоставлять возможность ''расширения функциональности'', доступную опытным программистам;
| |
− | # быть ''интерактивным'';
| |
− | # предоставлять ясные сообщения об ошибках;
| |
− | # быстро работать на небольших программах;
| |
− | # не требовать понимания работы аппаратного обеспечения;
| |
− | # защищать пользователя от [[Операционная система|операционной системы]].
| |
− |
| |
− | == Критика ==
| |
− | В пору своего расцвета (1970—1980 годы) Бейсик подвергся жёсткой критике. Помимо констатации очевидных недостатков языка, связанных с синтаксической бедностью ранних вариантов и отсутствием многих признанных и удобных конструкций и механизмов, Бейсик критиковали за то, что его простота и бесструктурность поощряют применение порочных методик разработки и способствуют выработке опасных привычек программирования, которые иногда могут быть уместны при быстром создании малых программ для текущих нужд, но способны привести к краху крупных проектов.
| |
− |
| |
− | Резко критиковалось повсеместно распространённое начальное обучение программированию, базирующееся на Бейсике. Одной из «визитных карточек» {{ruw|Дейкстра, Эдсгер Вибе|Эдсгера Дейкстры}} стало высказывание: «It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration». («Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они умственно изувечены без надежды на восстановление».)<ref>[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html How do we tell truths that might hurt?], [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html The threats to computing science]</ref>
| |
− |
| |
− | В ответ на критику адепты Бейсика замечают, что критики приписывают языку те негативные стороны, которые следовало бы отнести к его неправильному применению. Недостатки Бейсика (если иметь в виду ранние диалекты) проявляются при попытке профессиональной разработки на нём сложных и крупных программ и при использовании его как базового языка для обучения программистов, но ни для одного их этих применений данный язык не предназначался; его основной задачей было предоставить студентам-''непрограммистам'' возможность после ''минимального'' обучения самостоятельно писать ''простейшие'' программы ''для собственных нужд'', чтобы не отвлекать на эту работу специалистов. Этой задаче язык вполне соответствует.
| |
− |
| |
− | == Примечания ==
| |
− | {{примечания}}
| |
| | | |
| == Ссылки == | | == Ссылки == |
Строка 134: |
Строка 11: |
| | | |
| | | |
− | {{Википедия|Бейсик}}
| |
| {{оригинальный материал RPGverse}} | | {{оригинальный материал RPGverse}} |
| [[Категория:Средства разработки видеоигр]] | | [[Категория:Средства разработки видеоигр]] |