Редактирование: BASIC

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 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}}
 
[[Категория:Средства разработки видеоигр]]
 
[[Категория:Средства разработки видеоигр]]

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Creative Commons Attribution Share Alike (см. Энциклопедия:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)
Источник — «http://wiki.rpgverse.ru/wiki/BASIC»