Советы и лайфхаки

Команды бейсик – 20. [1991 .., .., ..

Сайт о языке программирования SmallBasic

Введение в Small Basic

Среда Разработки Small Basic
Начнем с краткого введения в среду разработки Small Basic. Запуская SmallBasic.exe в первый раз, Вы увидите окно, которое выглядит следующим образом.

Рисунок 1 – Среда разработки Small Basic

Так выглядит среда Small Basic, где мы будем писать и запускать программы Small Basic. Среда разделена на несколько четко различимых между собой частей.
В Редакторе, обозначаемом [1], мы будем писать программный код на языке Small Basic. Если вы откроете образец программы или ранее сохраненную программу, то она отобразится в этом редакторе. В нем вы можете изменять программу и сохранять ее для дальнейшего использования.
Панель инструментов, обозначаемая [2], используется для исполнения команд либо в активном редакторе, либо в операционной среде. С разнообразием команд мы познакомимся в процессе изучения Small Basic.

Рабочая область, обозначаемая [3], — это часть, где располагаются все окна редакторов.

Компьютерная программа
Программа – это набор команд для компьютера. Эти команды описывают компьютеру точную последовательность его действий, которые он всегда выполняет. Как и люди, компьютеры выполняют команды, только если они написаны на понятном им языке. Такие языки и называются языками программирования.
Обычная программа Small Basic состоит из связки командных предложений. Каждая строка программы представляет собой предложение, и каждое предложение является командой для компьютера. Когда мы просим компьютер запустить программу Small Basic, он переходит к программе и считывает первое предложение. Понимая, что именно мы хотим, он выполняет нашу команду. Выполнив первую команду, он возвращается к программе, считывает вторую строку и выполняет следующую команду. Компьютер продолжает выполнять команды до тех пор, пока не дойдет до конца программы. Только тогда вся программа будет выполнена.

Первая программа
Научимся работать в среде программирования, напишем первую программу! Введите в поле Редактора следующий текст.

  ‘диалог
  TextWindow.Write(«Как тебя зовут? «)
  a = TextWindow.Read()
  TextWindow.WriteLine(«Здравствуй, » + a)

  • Первая строка, начинающаяся с апострофа, строка комментария. Комментарий всегда начинается с апострофа и его можно оставлять в любом месте программы. При выполнении программы все комментарии пропускаются, они предназначены только для человека.
При наборе второй строки, вы неожиданно для себя, заметили всплывающее окно с перечнем команд.

Рисунок 2 – Контекстное меню Small Basic

Это Контекстное Меню. Small Basic по первым набранным символам предлагает возможный список команд и подробную справку о ней. Контекстное меню помогает избежать синтаксических ошибок, набрать программу быстрее и выступает в качестве справочника по основным командам. Передвигаться по нему можно с помощью клавиш Вверх/Вниз. Выбрав необходимую Вам команду, нажмите Enter, чтобы вставить ее в программу.

  • Вторая строка с помощью объекта TextWindow с параметром Write выводит текстовое сообщение.
  • Третья строка с помощью объекта TextWindow с параметром Read присваивает переменной a набор символов, введенных с клавиатуры.
  • Четвертая строка с помощью объекта TextWindow с параметром WriteLine выводите составное сообщение и переводит курсор в следующую строку.
Если Вы напечатали все верно, то в окне редактора должно появиться то же самое, что Вы видите на Рисунке 3. Редактор кода автоматически выделяет цветом константы (числовые и символьные) и ключевые слова языка Small Basic (TextWindow, Read и др.), а также курсивом — комментарии, что облегчает восприятие структуры программы.

Рисунок 3 – Первая программы

Запуск программы


Запустить программу можно либо нажав на значок Запуск, который расположен на панели инструментов, либо используя «горячую клавишу» F5 на клавиатуре. Если Вы все сделали
правильно, то в результате выполнения нашей программы должно появиться такое же окно, как Вы видите ниже.

Рисунок 4 – Окно исполнения программы

Мигающий курсор сигнализирует о том, что программа ожидает ввода символов с клавиатуры (третья строка). Напишите свое имя и нажмите клавишу Enter. Программа продолжит выполнение.

Рисунок 5 – Окно выполненной программы

Последняя фраз означает «Нажмите любую клавишу для продолжения…». Нажмите любую клавишу, для закрытия окна.

Сообщения об ошибках
При написании программ не возможно избежать ошибок. Самые критические ошибки не позволяют выполнить программу. В этом случае Small Basic сигнализирует о таких ошибках и выводит сообщения в нижней части редактора программ. Возможно вы уже сделали одну из таких ошибок и увидели сообщение как на рисунке.


Рисунок 6 – Сообщение об ошибке

4,39 в начале сообщения означает, что в 4 строке 39-й символ является ошибочным. Как могло такое случится? Очень просто! Это типичная ошибка начинающих русскоговорящих программистов, которые при написании программы используют русские и английские буквы. Во второй строке у вас переменная а — английская буква, а в четвертой буква а — русская.
Запомните главные правила:

  • Весь текст программы пишется на английском языке
  • Русские символы можно использовать после апострофа или во фразах, заключенных в кавычках.
Исправьте свою ошибку — наберите переменную а в обеих случаях в английской раскладке.

Сохранение программы
Текущую программу можно сохранить нажав на значок Сохранить или Сохранить как… Отличие этих команд думаю вам знакомо. Рекомендую при сохранении, для каждой программы выделять отдельную папку (зачем, увидите позже). Сохраните вашу программу в папке Диалог под именем Диалог и закройте среду разработки SmallBasic. Откройте папку с программой вы увидите сразу четыре файла, как на рисунке.


Рисунок 7 – Окно папки с сохраненными файлами программы

  • SmallBasicLibrary.dll — библиотека SmallBasic, необходимая для выполнения исполняемых файлов
  • Диалог.exe — исполняемый файл (попробуйте запустить его). Его выполнение возможно только при наличии библиотеки SmallBasicLibrary.dll
  • Диалог.pdb — информационный файл программы
  • Диалог.sb — файл с кодом программы. Его можно открыть и отредактировать в среде SmallBasic.

Открытие программы
Откройте среду разработки SmallBasic. Нажмите кнопку Открыть, найдите и откройте папку Диалог. В ней вы увидите только один файл Диалог.sb. Откройте его.

Редактирование программы
Исправлять и дорабатывать можно любую открытую программу. Допишите, в открытой вами программе Диалог, следующий строки:

  TextWindow.Write(«Сколько тебе лет? «)
  b = TextWindow.ReadNumber()
  c = b + 1
  TextWindow.WriteLine(«Через год тебе будет » + c + » лет!»)

При наборе кода следите за раскладкой клавиатуры, обратите внимание на наличие начальных и конечных пробелов в текстовых сообщениях. Запустите программу, при необходимости найдите и исправьте все ошибки, сохраните программу под прежним именем.

Вопросы и задания

  1. Чем отличаются параметры Write и WriteLine?
  2. Чем отличаются параметры Read и ReadNambe? Что произойдет, если при ответе на вопрос о возрасте вы наберёте не число, а текст? Проверьте следующие случаи: 15; пять; 15,6; 15.6
  3. Как компьютер узнает, сколько лет вам будет через год?
  4. Придумайте и допишите еще несколько вопросов-ответов с использованием как текстовых так и числовых данных.
  5. Скопируйте на флешку два первых файла из папки диалог и запустите их на компьютере друга и удивите его своей перво программой. Возможно, что, после демонстрации, полк любителей-программистов увеличится и вы уже вдвоем будете осваивать азы программирования.
Файлы программ
Диалог (скачать архив zip)

smallbasic.ucoz.ru

Бейсик — это… Что такое Бейсик?

Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих[1]) — семейство высокоуровневых языков программирования.

Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.[2]

Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров.

История

До середины 1960-х годов компьютеры были слишком дорогими машинами, использовавшимися в основном для научно-технических задач и выполнявшими задачи в пакетном, а не интерактивном режиме, и общение с машиной осуществлялось через её оператора.

Языки программирования той поры, как и компьютеры, на которых они использовались, были разработаны для работы с ними обученных технических специалистов и программистов. Поскольку машины были дорогими, то и машинное время было дорого — поэтому на первом месте стояла скорость выполнения программы (скорость счёта).

Однако в течение 1960-х годов цены на компьютеры стали падать так, что даже небольшие компании могли их себе позволить; их быстродействие всё увеличивалось и наступило время, когда стало возможно организовать более эффективную непосредственную работу пользователей с компьютерами в режиме разделения времени (time-sharing).

Рождение

Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, изначальную реализацию стали называть

Dartmouth BASIC.

Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач, не имея специальной подготовки.

При проектировании языка использовались следующие восемь принципов. Новый язык должен был:

  1. быть простым в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступную опытным программистам
  4. быть интерактивным
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

Язык был основан частично на Фортран II и частично на Алгол 60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

Рост

Несмотря на то, что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Альтаир 8800. Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее — аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

В 1975 году Microsoft (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова), выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC — компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения — не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.

Зрелость

В этот период было создано несколько новых версий Бейсика. Microsoft продавала несколько версий Бейсик для MS-DOS/PC DOS, включая BASICA, GW-BASIC (модификация BASICA, не требующая «прошивки» от IBM) и QuickBASIC. Borland, известная своим Turbo Pascal, в 1985 году выпустила Turbo Basic 1.0 (его наследники впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные версии Бейсика, обычно включавшие в себя расширения для работы с графикой, звуком, команды ОС, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).

Однако, начиная с конца 1980-х годов, новые компьютеры стали намного более сложными и предоставляли возможности (такие, как графический интерфейс пользователя), которые делали Бейсик уже не столь удобным для программирования. Бейсик начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось.

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Хотя и трудно согласиться, что этот язык — действительно Бейсик (несмотря на множество привычных ключевых слов), спустя некоторое время он стал одним из наиболее часто используемых языков на платформе Windows. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Microsoft Excel 5.0 в 1993 году, затем в Access 95 в 1995 году, а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript.

Бейсик используется в некоторых моделях программируемых калькуляторов. Например, он был встроен в советский калькулятор «Электроника МК-85».

Описание

Синтаксис языка напоминает Фортран и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной — это первое её использование.

Ранние версии Бейсика (такие как BASICA, GW-BASIC) существенно отличаются от современных диалектов и сегодня практически не используются.

Ранние версии

Экран с Бейсиком компьютера ДВК

Внешний вид программ на ранних версиях Бейсика во многом определялся тем, что он предназначался для среды программирования со строчным редактором текста. В таком редакторе пользователь не имел возможности отображать весь текст на экране (в окне), перемещаться по нему в любых направлениях с помощью клавиатуры и/или мыши. В строчных редакторах пользователь для изменения строки текста должен дать команду изменения строки с заданным номером, затем ввести новый текст указанной строки. Для вставки новой строки нужно дать команду вставки, опять таки указав номер. Вводимые строки отображаются на экране последовательно (независимо от номеров). Чтобы увидеть сделанные изменения, применяется команда вывода текста, которая выводит строки в правильном порядке (по возрастанию номеров).

Всё это отразилось в Бейсике. Каждая строка начиналась с номера. При вводе в редактор строка оказывалась в исходном тексте программы на позиции, соответствующей её номеру. Для вставки новой строки нужно было дописать строку с номером, находящимся в диапазоне между номерами двух других строк. «Раздвинуть» строки было невозможно, если требовалось вставить новую строку между строками с соседними номерами, приходилось повторно вводить эти строки с другими номерами, чтобы обеспечить разрыв в нумерации (либо применять специальную команду RENUM, которая перенумеровывала все уже введённые строки с постоянным шагом, синхронно изменяя все команды переходов). Для упрощения оперативного редактирования программы сложилась практика нумеровать строки с шагом 10 — это позволяло практически во всех случаях вставлять новые строки без изменения номеров ранее введённых. Например, чтобы добавить третью строку между строками 20 и 30, нужно было написать строку с номером 25. Типичная строка из программы на Бейсике выглядела так:

Изменять вручную номера уже имеющихся строк было небезопасно, так как номера выполняли роль меток для оператора GOTO. Ранее в Бейсике были допустимы только числовые метки для этого оператора, и наличие в каждой строке уникального номера делало возможным безусловный переход к любой из них. Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spagetti code), потому что логика программы с частыми переходами GOTO напоминает тарелку со спагетти.

Признаком конца оператора служил конец строки. Чтобы на одной строке разместить несколько операторов, нужно поставить между ними двоеточие (это разрешалось не во всех реализациях языка). Имена переменных в большинстве диалектов могли состоять только из одной буквы, после которой можно было добавить одну цифру, что так же не способствовало улучшению понимания кода. Для создания переменной строкового типа нужно было после имени указать знак доллара ($). Переменная без этого знака являлась числовой (с плавающей точкой). Было ещё несколько модификаторов, относящихся к числовому типу: знак процента (%) — целый тип, восклицательный знак (!) — обычная точность, октоторп (#) — двойная точность (для данных с плавающей точкой, то есть дробей). Числовые модификаторы применялись не во всех версиях.

Выражения сходны с большинством других процедурных языков программирования, но в первых вариантах Бейсика их набор был довольно бедным.

Условный оператор (IF..THEN) изначально имел только одну ветвь — ветвь ELSE в нём отсутствовала и моделировалась с помощью безусловного перехода. Так, в нижеследующей программе выполняется элементарная операция — ввод числа и вывод сообщения «Отрицательное число» или «Положительное число или нуль» в зависимости от его значения:

10 INPUT I
20 IF I >= 0 THEN PRINT "Positive number or null" : GOTO 40
30 PRINT "Negative number"
40 END

Имелся оператор перехода по вычисляемой метке ON..GOTO (унаследованный от аналогичной конструкции Фортрана) — в нём после ON указывалось числовое выражение, а после GOTO — список номеров строк. Переход происходил на строку, номер которой в списке соответствовал значению выражения. Присутствуют также циклы (цикл со счётчиком FOR и цикл с предусловием WHILE).

Использование функций, определяемых пользователем (участков кода, для многократного использования), было возможно двумя способами: определяемые функции и подпрограммы.

Подпрограммы не являлись аналогом функций таких языков, как Си или Паскаль, так как не имели имён и не могли принимать и/или возвращать параметры. Параметры и результаты передавались через глобальные переменные (все переменные в ранних версиях Бейсика были глобальными). Подпрограммы писались обычно в конце модуля, с нумерацией заведомо большей, чем планируемое количество строк (к примеру, нумерация блока подпрограмм могла начинаться с 5000, даже если в программе была пара сотен строк). Подпрограммы не имели заголовков и имён, и ничем не отличались от любого другого участка кода. Вызов подпрограммы осуществлялся с помощью ключевого слова GOSUB <метка>. Это практически клон GOTO, за исключением одного: возврат в точку вызова происходил автоматически, при достижении в подпрограмме ключевого слова RETURN. GOSUB, как и GOTO, только способствовали плохой структуре кода, так как отследить выполнение программы, содержащей большое количество безусловных переходов и подпрограмм, было сложной задачей.

Отсутствие возможности давать подпрограммам имена (и передавать по ним управление), невозможность передачи параметров, отсутствие локальных переменных, использование только числовых меток в больших проектах вызывало путаницу в коде и очень затрудняло отладку.

В некоторых диалектах Бейсика имелась возможность загрузить файл с кодом непосредственно при выполнении программы (текущий при этом выгружался) оператором CHAIN. Это была одна из самых полезных возможностей языка, так как она позволяла разбить большой проект на модули, вызывая их в порядке необходимости.

Редактора кода в ранних версиях, как такового, не было. При запуске интерпретатора Бейсика запускался диалоговый режим ввода команд. Для работы в этом режиме были предусмотрены специальные команды, которые не являлись операторами самого языка (их нельзя было включить в код программы). Это команды по управлению средой ввода, такие как: LIST <диапазон строк> — вывод листинга программы на экран (LLIST — на принтер), SAVE <имя файла> — сохранение текста программы в файл, LOAD <имя файла> — загрузка кода в память и т. д. Запуск программы производился вводом команды RUN. В большинстве интерпретаторов Бейсика в нижней части экрана была строка с этими (и другими) командами.

Если команда начиналась с номера строки (метки), она запоминалась в памяти как часть вводимой программы. Если строка оператора вводилась без номера, она выполнялась сразу же, после нажатия клавиши  ↵ Enter . В качестве первых уроков обучающимся на Бейсике предлагалось поэкспериментировать с таким режимом, когда результат выполнения выражения был виден сразу. Например, если, находясь в режиме диалога, ввести строку PRINT 2+2 и нажать  ↵ Enter , на экране отобразится результат сложения.

Для редактирования уже введённой строки в большинстве реализаций нужно было перепечатать её полностью. Удаление строк производилось командой DELETE <диапазон строк>. Команда RENUM — позволяла восстановить шаг 10 в нумерации строк. Часто возникала ситуация, что штатного шага 10 для будущих строк не хватало (так как такой шаг позволяет добавить лишь 9 строк между требуемыми) и тогда команда RENUM была необходимой (все строки перенумеровывались с шагом 10, и соответствующим образом корректировались строки с GOTO под новую нумерацию строк).

Для выполнения программы на Бейсике использовалась передача имени файла с кодом программы интерпретатору в командной строке. В этом случае, после загрузки кода команда RUN (начать выполнение программы) вызывалась автоматически.

Фрагмент типичной программы на Бейсике:

10 CLS 'Очистка экрана
20 PRINT "Добро пожаловать!" 'Заголовок в первой строке
30 'Цикл, выводящий линию под заголовком, на всю ширину экрана
40 FOR I=1 TO 80
50 PRINT "=";
60 NEXT I
65 'Ввод символьных данных от пользователя (комментарий добавлен после ввода нижних строк)
70 INPUT "Имя:  ",N$
80 INPUT "Фамилия: ",S$
90 INPUT "Отчество: ",T$
95 'Вырезаем копию первых символов из имени и отчества
100 N2$=LEFT$(N$,1)
110 T2$=LEFT$(T$,1)
120 'Выводим результат
130 PRINT "Ваше имя кратко: ";S$;" ";N2$;". ";T2$;"."
140 INPUT "Повторить программу? (Y/N) ",U$
150 IF U$="Y" THEN GOTO 10
160 END

Точка с запятой выполняет функцию подавления перехода на новую строку после оператора PRINT. Ключевое слово END означает завершение программы. Оно необязательно, в его отсутствие программа завершалась после исполнения последнего оператора, но было полезно в случаях, когда имелась секция подпрограмм, либо программа имела несколько возможных точек завершения (в последнем случае либо в каждой такой точке ставили END, либо END был один, а на него делались переходы в других местах).

Поздние версии

Одним из наиболее распространённых вариантов языка Бейсик стала реализация интерпретатора QBasic корпорации Microsoft. Долгие годы она включалась как бесплатное приложение, входящее в операционные системы MS-DOS и ранних Windows. В нём имелись довольно мощные графические и звуковые возможности, позволяющие создавать на этом языке даже игры.

Бейсик поздних версий (начиная с Turbo Basic и Visual Basic) резко отличается от ранних вариантов. Фактически, это новый язык, который во многом ближе к Фортрану или Паскалю, чем к исходному Бейсику. Основные изменения версий 1990-х годов состоят в следующем:

  • Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.
  • В языке появились именованные подпрограммы с параметрами, механизм вызова подпрограмм стал обычным: подпрограмма вызывается по имени, с указанием списка фактических параметров.
  • Были введены структурные управляющие конструкции, в результате для организации обычных ветвлений и циклов перестало быть необходимым использование оператора GOTO и меток строк.
  • Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.
  • Стали необязательными типизирующие суффиксы в именах переменных, хотя их использование не запрещалось.
  • В более поздних версиях появилась обработка исключений и поддержка элементов ООП.
  • Были введены механизмы поддержки модульности — появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.
  • Появились средства для работы с цветной графикой и звуковой картой.
  • Visual Basic, ориентированный на разработку Windows-приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.
  • Появились кроссплатформенные реализации, например, FreeBASIC и PureBasic.

Практически все недостатки, присущие ранним версиям языка, были исправлены, и программирование на современных диалектах Бейсика мало отличается от использования других языков и сред (например, таких, как Delphi). Оборотной стороной процесса модификации Basic является то, что язык стал гораздо объёмнее и сложнее, его освоение требует больше времени и усилий.

Фрагмент типичной программы на FreeBASIC:

# Lang "fb"
Dim As String n,s,t,n2,t2
Cls : Print "Добро пожаловать!" 'Заголовок в первой строке
Do
        'Цикл, выводящий линию под заголовком, на всю ширину экрана
        For i As Integer=1  To LoWord(Width)
                Print "=";
        Next i
        'Ввод символьных данных от пользователя
        Input "Имя:  ",n
        Input "Фамилия: ",s
        Input "Отчество: ",t
        'Вырезаем копию первых символов из имени и отчества
        n2=Left(n,1)
        t2=Left(t,1)
        'Выводим результат
        Print "Ваше имя кратко: "; s; " "; n2; ". "; t2; "."
        Print "Повторить программу? (y/n) "
Loop While LCase(Input(1))="y"
End 0

Несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic в пользу принципиально нового языка Visual Basic .NET — в этой реализации язык был снова кардинально пересмотрен, и в текущем состоянии он практически совпадает по набору возможностей c языком C#, отличаются только детали синтаксиса и ключевые слова. Таким образом, Basic перерос из средства для создания программ любителям-непрофессионалам до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA).

Критика

Бейсик подвергается жёсткой критике за то, что его простота и бесструктурность поощряют порочные методики и привычки программирования, которые могут быть уместны при создании малых программ, но способны привести к краху крупных проектов.

Одной из «визитных карточек» Эдсгера Дейкстры стало высказывание: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации».[3]

Кроме того, критики Бейсика часто игнорируют тот факт, что он создавался в качестве отнюдь не инструмента профессиональной разработки сложных программ, а средства, с помощью которого студенты-непрограммисты смогут писать простейшие программы. Если же говорить о современных диалектах и реализациях Бейсика, то они далеко ушли от первоначальной формы языка, являются более структурированными и сопоставимы по возможностям с такими языками, как Си, Паскаль и т. п.

Производители

В разное время интерпретаторы BASIC выпускались различными организациями, компаниями, фирмами:

Советские:

Реализации

Apple:

Microsoft:

Другие:

Интересные факты

Примечания

Литература

  • Vladimir Dyakonov and other. The Revolutionary Guide to QBASIC. — Birmingham: Wrox Press Ltd, 1996. — 578 p.
  • Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. — М.: Наука, Физматлит, 1987. — 240 с.
  • Дьяконов В. П. Применение персональных ЭВМ и программирование на языке Бейсик. — М.: Радио и связь, 1989. — 288 с.
  • Дьяконов В. П. Современные зарубежные микрокалькуляторы. — М.: СОЛОН-Р, 2002. — 400 с.
Стандарты

Ссылки

biograf.academic.ru

Бейсик — это… Что такое Бейсик?

Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих[1]) — семейство высокоуровневых языков программирования.

Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.[2]

Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров.

История

До середины 1960-х годов компьютеры были слишком дорогими машинами, использовавшимися в основном для научно-технических задач и выполнявшими задачи в пакетном, а не интерактивном режиме, и общение с машиной осуществлялось через её оператора.

Языки программирования той поры, как и компьютеры, на которых они использовались, были разработаны для работы с ними обученных технических специалистов и программистов. Поскольку машины были дорогими, то и машинное время было дорого — поэтому на первом месте стояла скорость выполнения программы (скорость счёта).

Однако в течение 1960-х годов цены на компьютеры стали падать так, что даже небольшие компании могли их себе позволить; их быстродействие всё увеличивалось и наступило время, когда стало возможно организовать более эффективную непосредственную работу пользователей с компьютерами в режиме разделения времени (time-sharing).

Рождение

Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, изначальную реализацию стали называть Dartmouth BASIC.

Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач, не имея специальной подготовки.

При проектировании языка использовались следующие восемь принципов. Новый язык должен был:

  1. быть простым в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступную опытным программистам
  4. быть интерактивным
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

Язык был основан частично на Фортран II и частично на Алгол 60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

Рост

Несмотря на то, что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Альтаир 8800. Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее — аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

В 1975 году Microsoft (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова), выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC — компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения — не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.

Зрелость

В этот период было создано несколько новых версий Бейсика. Microsoft продавала несколько версий Бейсик для MS-DOS/PC DOS, включая BASICA, GW-BASIC (модификация BASICA, не требующая «прошивки» от IBM) и QuickBASIC. Borland, известная своим Turbo Pascal, в 1985 году выпустила Turbo Basic 1.0 (его наследники впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные версии Бейсика, обычно включавшие в себя расширения для работы с графикой, звуком, команды ОС, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).

Однако, начиная с конца 1980-х годов, новые компьютеры стали намного более сложными и предоставляли возможности (такие, как графический интерфейс пользователя), которые делали Бейсик уже не столь удобным для программирования. Бейсик начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось.

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Хотя и трудно согласиться, что этот язык — действительно Бейсик (несмотря на множество привычных ключевых слов), спустя некоторое время он стал одним из наиболее часто используемых языков на платформе Windows. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Microsoft Excel 5.0 в 1993 году, затем в Access 95 в 1995 году, а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript.

Бейсик используется в некоторых моделях программируемых калькуляторов. Например, он был встроен в советский калькулятор «Электроника МК-85».

Описание

Синтаксис языка напоминает Фортран и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной — это первое её использование.

Ранние версии Бейсика (такие как BASICA, GW-BASIC) существенно отличаются от современных диалектов и сегодня практически не используются.

Ранние версии

Экран с Бейсиком компьютера ДВК

Внешний вид программ на ранних версиях Бейсика во многом определялся тем, что он предназначался для среды программирования со строчным редактором текста. В таком редакторе пользователь не имел возможности отображать весь текст на экране (в окне), перемещаться по нему в любых направлениях с помощью клавиатуры и/или мыши. В строчных редакторах пользователь для изменения строки текста должен дать команду изменения строки с заданным номером, затем ввести новый текст указанной строки. Для вставки новой строки нужно дать команду вставки, опять таки указав номер. Вводимые строки отображаются на экране последовательно (независимо от номеров). Чтобы увидеть сделанные изменения, применяется команда вывода текста, которая выводит строки в правильном порядке (по возрастанию номеров).

Всё это отразилось в Бейсике. Каждая строка начиналась с номера. При вводе в редактор строка оказывалась в исходном тексте программы на позиции, соответствующей её номеру. Для вставки новой строки нужно было дописать строку с номером, находящимся в диапазоне между номерами двух других строк. «Раздвинуть» строки было невозможно, если требовалось вставить новую строку между строками с соседними номерами, приходилось повторно вводить эти строки с другими номерами, чтобы обеспечить разрыв в нумерации (либо применять специальную команду RENUM, которая перенумеровывала все уже введённые строки с постоянным шагом, синхронно изменяя все команды переходов). Для упрощения оперативного редактирования программы сложилась практика нумеровать строки с шагом 10 — это позволяло практически во всех случаях вставлять новые строки без изменения номеров ранее введённых. Например, чтобы добавить третью строку между строками 20 и 30, нужно было написать строку с номером 25. Типичная строка из программы на Бейсике выглядела так:

Изменять вручную номера уже имеющихся строк было небезопасно, так как номера выполняли роль меток для оператора GOTO. Ранее в Бейсике были допустимы только числовые метки для этого оператора, и наличие в каждой строке уникального номера делало возможным безусловный переход к любой из них. Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spagetti code), потому что логика программы с частыми переходами GOTO напоминает тарелку со спагетти.

Признаком конца оператора служил конец строки. Чтобы на одной строке разместить несколько операторов, нужно поставить между ними двоеточие (это разрешалось не во всех реализациях языка). Имена переменных в большинстве диалектов могли состоять только из одной буквы, после которой можно было добавить одну цифру, что так же не способствовало улучшению понимания кода. Для создания переменной строкового типа нужно было после имени указать знак доллара ($). Переменная без этого знака являлась числовой (с плавающей точкой). Было ещё несколько модификаторов, относящихся к числовому типу: знак процента (%) — целый тип, восклицательный знак (!) — обычная точность, октоторп (#) — двойная точность (для данных с плавающей точкой, то есть дробей). Числовые модификаторы применялись не во всех версиях.

Выражения сходны с большинством других процедурных языков программирования, но в первых вариантах Бейсика их набор был довольно бедным.

Условный оператор (IF..THEN) изначально имел только одну ветвь — ветвь ELSE в нём отсутствовала и моделировалась с помощью безусловного перехода. Так, в нижеследующей программе выполняется элементарная операция — ввод числа и вывод сообщения «Отрицательное число» или «Положительное число или нуль» в зависимости от его значения:

10 INPUT I
20 IF I >= 0 THEN PRINT "Positive number or null" : GOTO 40
30 PRINT "Negative number"
40 END

Имелся оператор перехода по вычисляемой метке ON..GOTO (унаследованный от аналогичной конструкции Фортрана) — в нём после ON указывалось числовое выражение, а после GOTO — список номеров строк. Переход происходил на строку, номер которой в списке соответствовал значению выражения. Присутствуют также циклы (цикл со счётчиком FOR и цикл с предусловием WHILE).

Использование функций, определяемых пользователем (участков кода, для многократного использования), было возможно двумя способами: определяемые функции и подпрограммы.

Подпрограммы не являлись аналогом функций таких языков, как Си или Паскаль, так как не имели имён и не могли принимать и/или возвращать параметры. Параметры и результаты передавались через глобальные переменные (все переменные в ранних версиях Бейсика были глобальными). Подпрограммы писались обычно в конце модуля, с нумерацией заведомо большей, чем планируемое количество строк (к примеру, нумерация блока подпрограмм могла начинаться с 5000, даже если в программе была пара сотен строк). Подпрограммы не имели заголовков и имён, и ничем не отличались от любого другого участка кода. Вызов подпрограммы осуществлялся с помощью ключевого слова GOSUB <метка>. Это практически клон GOTO, за исключением одного: возврат в точку вызова происходил автоматически, при достижении в подпрограмме ключевого слова RETURN. GOSUB, как и GOTO, только способствовали плохой структуре кода, так как отследить выполнение программы, содержащей большое количество безусловных переходов и подпрограмм, было сложной задачей.

Отсутствие возможности давать подпрограммам имена (и передавать по ним управление), невозможность передачи параметров, отсутствие локальных переменных, использование только числовых меток в больших проектах вызывало путаницу в коде и очень затрудняло отладку.

В некоторых диалектах Бейсика имелась возможность загрузить файл с кодом непосредственно при выполнении программы (текущий при этом выгружался) оператором CHAIN. Это была одна из самых полезных возможностей языка, так как она позволяла разбить большой проект на модули, вызывая их в порядке необходимости.

Редактора кода в ранних версиях, как такового, не было. При запуске интерпретатора Бейсика запускался диалоговый режим ввода команд. Для работы в этом режиме были предусмотрены специальные команды, которые не являлись операторами самого языка (их нельзя было включить в код программы). Это команды по управлению средой ввода, такие как: LIST <диапазон строк> — вывод листинга программы на экран (LLIST — на принтер), SAVE <имя файла> — сохранение текста программы в файл, LOAD <имя файла> — загрузка кода в память и т. д. Запуск программы производился вводом команды RUN. В большинстве интерпретаторов Бейсика в нижней части экрана была строка с этими (и другими) командами.

Если команда начиналась с номера строки (метки), она запоминалась в памяти как часть вводимой программы. Если строка оператора вводилась без номера, она выполнялась сразу же, после нажатия клавиши  ↵ Enter . В качестве первых уроков обучающимся на Бейсике предлагалось поэкспериментировать с таким режимом, когда результат выполнения выражения был виден сразу. Например, если, находясь в режиме диалога, ввести строку PRINT 2+2 и нажать  ↵ Enter , на экране отобразится результат сложения.

Для редактирования уже введённой строки в большинстве реализаций нужно было перепечатать её полностью. Удаление строк производилось командой DELETE <диапазон строк>. Команда RENUM — позволяла восстановить шаг 10 в нумерации строк. Часто возникала ситуация, что штатного шага 10 для будущих строк не хватало (так как такой шаг позволяет добавить лишь 9 строк между требуемыми) и тогда команда RENUM была необходимой (все строки перенумеровывались с шагом 10, и соответствующим образом корректировались строки с GOTO под новую нумерацию строк).

Для выполнения программы на Бейсике использовалась передача имени файла с кодом программы интерпретатору в командной строке. В этом случае, после загрузки кода команда RUN (начать выполнение программы) вызывалась автоматически.

Фрагмент типичной программы на Бейсике:

10 CLS 'Очистка экрана
20 PRINT "Добро пожаловать!" 'Заголовок в первой строке
30 'Цикл, выводящий линию под заголовком, на всю ширину экрана
40 FOR I=1 TO 80
50 PRINT "=";
60 NEXT I
65 'Ввод символьных данных от пользователя (комментарий добавлен после ввода нижних строк)
70 INPUT "Имя:  ",N$
80 INPUT "Фамилия: ",S$
90 INPUT "Отчество: ",T$
95 'Вырезаем копию первых символов из имени и отчества
100 N2$=LEFT$(N$,1)
110 T2$=LEFT$(T$,1)
120 'Выводим результат
130 PRINT "Ваше имя кратко: ";S$;" ";N2$;". ";T2$;"."
140 INPUT "Повторить программу? (Y/N) ",U$
150 IF U$="Y" THEN GOTO 10
160 END

Точка с запятой выполняет функцию подавления перехода на новую строку после оператора PRINT. Ключевое слово END означает завершение программы. Оно необязательно, в его отсутствие программа завершалась после исполнения последнего оператора, но было полезно в случаях, когда имелась секция подпрограмм, либо программа имела несколько возможных точек завершения (в последнем случае либо в каждой такой точке ставили END, либо END был один, а на него делались переходы в других местах).

Поздние версии

Одним из наиболее распространённых вариантов языка Бейсик стала реализация интерпретатора QBasic корпорации Microsoft. Долгие годы она включалась как бесплатное приложение, входящее в операционные системы MS-DOS и ранних Windows. В нём имелись довольно мощные графические и звуковые возможности, позволяющие создавать на этом языке даже игры.

Бейсик поздних версий (начиная с Turbo Basic и Visual Basic) резко отличается от ранних вариантов. Фактически, это новый язык, который во многом ближе к Фортрану или Паскалю, чем к исходному Бейсику. Основные изменения версий 1990-х годов состоят в следующем:

  • Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.
  • В языке появились именованные подпрограммы с параметрами, механизм вызова подпрограмм стал обычным: подпрограмма вызывается по имени, с указанием списка фактических параметров.
  • Были введены структурные управляющие конструкции, в результате для организации обычных ветвлений и циклов перестало быть необходимым использование оператора GOTO и меток строк.
  • Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.
  • Стали необязательными типизирующие суффиксы в именах переменных, хотя их использование не запрещалось.
  • В более поздних версиях появилась обработка исключений и поддержка элементов ООП.
  • Были введены механизмы поддержки модульности — появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.
  • Появились средства для работы с цветной графикой и звуковой картой.
  • Visual Basic, ориентированный на разработку Windows-приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.
  • Появились кроссплатформенные реализации, например, FreeBASIC и PureBasic.

Практически все недостатки, присущие ранним версиям языка, были исправлены, и программирование на современных диалектах Бейсика мало отличается от использования других языков и сред (например, таких, как Delphi). Оборотной стороной процесса модификации Basic является то, что язык стал гораздо объёмнее и сложнее, его освоение требует больше времени и усилий.

Фрагмент типичной программы на FreeBASIC:

# Lang "fb"
Dim As String n,s,t,n2,t2
Cls : Print "Добро пожаловать!" 'Заголовок в первой строке
Do
        'Цикл, выводящий линию под заголовком, на всю ширину экрана
        For i As Integer=1  To LoWord(Width)
                Print "=";
        Next i
        'Ввод символьных данных от пользователя
        Input "Имя:  ",n
        Input "Фамилия: ",s
        Input "Отчество: ",t
        'Вырезаем копию первых символов из имени и отчества
        n2=Left(n,1)
        t2=Left(t,1)
        'Выводим результат
        Print "Ваше имя кратко: "; s; " "; n2; ". "; t2; "."
        Print "Повторить программу? (y/n) "
Loop While LCase(Input(1))="y"
End 0

Несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic в пользу принципиально нового языка Visual Basic .NET — в этой реализации язык был снова кардинально пересмотрен, и в текущем состоянии он практически совпадает по набору возможностей c языком C#, отличаются только детали синтаксиса и ключевые слова. Таким образом, Basic перерос из средства для создания программ любителям-непрофессионалам до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA).

Критика

Бейсик подвергается жёсткой критике за то, что его простота и бесструктурность поощряют порочные методики и привычки программирования, которые могут быть уместны при создании малых программ, но способны привести к краху крупных проектов.

Одной из «визитных карточек» Эдсгера Дейкстры стало высказывание: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации».[3]

Кроме того, критики Бейсика часто игнорируют тот факт, что он создавался в качестве отнюдь не инструмента профессиональной разработки сложных программ, а средства, с помощью которого студенты-непрограммисты смогут писать простейшие программы. Если же говорить о современных диалектах и реализациях Бейсика, то они далеко ушли от первоначальной формы языка, являются более структурированными и сопоставимы по возможностям с такими языками, как Си, Паскаль и т. п.

Производители

В разное время интерпретаторы BASIC выпускались различными организациями, компаниями, фирмами:

Советские:

Реализации

Apple:

Microsoft:

Другие:

Интересные факты

Примечания

Литература

  • Vladimir Dyakonov and other. The Revolutionary Guide to QBASIC. — Birmingham: Wrox Press Ltd, 1996. — 578 p.
  • Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. — М.: Наука, Физматлит, 1987. — 240 с.
  • Дьяконов В. П. Применение персональных ЭВМ и программирование на языке Бейсик. — М.: Радио и связь, 1989. — 288 с.
  • Дьяконов В. П. Современные зарубежные микрокалькуляторы. — М.: СОЛОН-Р, 2002. — 400 с.
Стандарты

Ссылки

dik.academic.ru

GW-BASIC — диалект языка программирования Basic

GW-BASIC — это диалект языка программирования BASIC, разработанный компанией Microsoft из реализации BASICA, для компании Compaq.

GW-BASIC является совместимым с Microsoft/IBM BASICA и при этом не требует ресурсы ROM BASIC, которые включались в машины IBM. Реализации были связаны с операционной системой MS-DOS компании Microsoft. Как и все ранние реализации BASIC, GW-BASIC испытывал недостаток во многих структурах, необходимых для структурного программирования (на пример, локальные переменные). Программы на GW-BASIC исполнялись медленно, так как это был интерпретируемый язык программирования. Имел большое количество команд ориентированных на работу с графикой.

Однако он обладал достаточной гибкостью для написания простых игр, деловых программ и т.п. GW-BASIC был доступен для любого ПК, что открывало возможность изучения основ программирования для многих потенциальных программистов.

GW-BASIC имел основанную на командной строке интегрированную среду разработки (IDE). Все строки программы нумеровались, непронумерованные строки рассматривались как команды и немедленно исполнялись. Интерфейс пользователя — практически командная строка. Программы обычно сохранялись в сжатом бинарном формате; однако при использовании специальной опции, возможно сохранение в ASCII текст.

Интегрированная среда разработки GW-BASIC имела команды RUN, LOAD, SAVE, LIST, SYSTEM. Все они могли использоваться как операторы программы, однако такое использование крайне редко для всех команд за исключением SYSTEM.

GW-BASIC обладал минимальной поддержкой структурного программирования, что имело значение для организации хорошей структурности программ. Так все операторы IF/THEN/ELSE должны быть написаны на одной строке, а операторы WHILE/WEND могут группировать несколько строк кода, переменные часто типизировались посредством конечного символа переменной (A$ — строка, A% — целое число и т.д.), необъявленным переменны можно было установить значения по умолчанию при помощи команд DEFINT, DEFSTR.

Но так как большинство программистов, использовавших GW-BASIC, не имели соответствующих навыков программирования, они часто не заботились о структурировании и использовали оператор GOTO, что приводило к трудному пониманию программы.

GW-BASIC умел работать с джойстиками, устройствами ввода наподобие ручек, но не поддерживал должным образом устройство типа мышь. Так же умел писать и считывать информация из файлов, LPT и COM портов, проигрывать звук при помощи команды PLAY.

С выпуском MS-DOS 5.0 место GW-BASIC было заменено Microsoft QBASIC. Главное преимущество GW-BASIC перед BASICA в том, что он не требовал интерпретатора ROM BASIC и мог использоваться на ПК отличных от IBM-PC.

progopedia.ru

Бейсик — это… Что такое Бейсик?

Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих[1]) — семейство высокоуровневых языков программирования.

Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.[2]

Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров.

История

До середины 1960-х годов компьютеры были слишком дорогими машинами, использовавшимися в основном для научно-технических задач и выполнявшими задачи в пакетном, а не интерактивном режиме, и общение с машиной осуществлялось через её оператора.

Языки программирования той поры, как и компьютеры, на которых они использовались, были разработаны для работы с ними обученных технических специалистов и программистов. Поскольку машины были дорогими, то и машинное время было дорого — поэтому на первом месте стояла скорость выполнения программы (скорость счёта).

Однако в течение 1960-х годов цены на компьютеры стали падать так, что даже небольшие компании могли их себе позволить; их быстродействие всё увеличивалось и наступило время, когда стало возможно организовать более эффективную непосредственную работу пользователей с компьютерами в режиме разделения времени (time-sharing).

Рождение

Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, изначальную реализацию стали называть Dartmouth BASIC.

Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач, не имея специальной подготовки.

При проектировании языка использовались следующие восемь принципов. Новый язык должен был:

  1. быть простым в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступную опытным программистам
  4. быть интерактивным
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

Язык был основан частично на Фортран II и частично на Алгол 60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

Рост

Несмотря на то, что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Альтаир 8800. Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее — аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

В 1975 году Microsoft (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова), выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC — компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения — не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.

Зрелость

В этот период было создано несколько новых версий Бейсика. Microsoft продавала несколько версий Бейсик для MS-DOS/PC DOS, включая BASICA, GW-BASIC (модификация BASICA, не требующая «прошивки» от IBM) и QuickBASIC. Borland, известная своим Turbo Pascal, в 1985 году выпустила Turbo Basic 1.0 (его наследники впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные версии Бейсика, обычно включавшие в себя расширения для работы с графикой, звуком, команды ОС, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).

Однако, начиная с конца 1980-х годов, новые компьютеры стали намного более сложными и предоставляли возможности (такие, как графический интерфейс пользователя), которые делали Бейсик уже не столь удобным для программирования. Бейсик начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось.

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Хотя и трудно согласиться, что этот язык — действительно Бейсик (несмотря на множество привычных ключевых слов), спустя некоторое время он стал одним из наиболее часто используемых языков на платформе Windows. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Microsoft Excel 5.0 в 1993 году, затем в Access 95 в 1995 году, а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript.

Бейсик используется в некоторых моделях программируемых калькуляторов. Например, он был встроен в советский калькулятор «Электроника МК-85».

Описание

Синтаксис языка напоминает Фортран и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной — это первое её использование.

Ранние версии Бейсика (такие как BASICA, GW-BASIC) существенно отличаются от современных диалектов и сегодня практически не используются.

Ранние версии

Экран с Бейсиком компьютера ДВК

Внешний вид программ на ранних версиях Бейсика во многом определялся тем, что он предназначался для среды программирования со строчным редактором текста. В таком редакторе пользователь не имел возможности отображать весь текст на экране (в окне), перемещаться по нему в любых направлениях с помощью клавиатуры и/или мыши. В строчных редакторах пользователь для изменения строки текста должен дать команду изменения строки с заданным номером, затем ввести новый текст указанной строки. Для вставки новой строки нужно дать команду вставки, опять таки указав номер. Вводимые строки отображаются на экране последовательно (независимо от номеров). Чтобы увидеть сделанные изменения, применяется команда вывода текста, которая выводит строки в правильном порядке (по возрастанию номеров).

Всё это отразилось в Бейсике. Каждая строка начиналась с номера. При вводе в редактор строка оказывалась в исходном тексте программы на позиции, соответствующей её номеру. Для вставки новой строки нужно было дописать строку с номером, находящимся в диапазоне между номерами двух других строк. «Раздвинуть» строки было невозможно, если требовалось вставить новую строку между строками с соседними номерами, приходилось повторно вводить эти строки с другими номерами, чтобы обеспечить разрыв в нумерации (либо применять специальную команду RENUM, которая перенумеровывала все уже введённые строки с постоянным шагом, синхронно изменяя все команды переходов). Для упрощения оперативного редактирования программы сложилась практика нумеровать строки с шагом 10 — это позволяло практически во всех случаях вставлять новые строки без изменения номеров ранее введённых. Например, чтобы добавить третью строку между строками 20 и 30, нужно было написать строку с номером 25. Типичная строка из программы на Бейсике выглядела так:

Изменять вручную номера уже имеющихся строк было небезопасно, так как номера выполняли роль меток для оператора GOTO. Ранее в Бейсике были допустимы только числовые метки для этого оператора, и наличие в каждой строке уникального номера делало возможным безусловный переход к любой из них. Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spagetti code), потому что логика программы с частыми переходами GOTO напоминает тарелку со спагетти.

Признаком конца оператора служил конец строки. Чтобы на одной строке разместить несколько операторов, нужно поставить между ними двоеточие (это разрешалось не во всех реализациях языка). Имена переменных в большинстве диалектов могли состоять только из одной буквы, после которой можно было добавить одну цифру, что так же не способствовало улучшению понимания кода. Для создания переменной строкового типа нужно было после имени указать знак доллара ($). Переменная без этого знака являлась числовой (с плавающей точкой). Было ещё несколько модификаторов, относящихся к числовому типу: знак процента (%) — целый тип, восклицательный знак (!) — обычная точность, октоторп (#) — двойная точность (для данных с плавающей точкой, то есть дробей). Числовые модификаторы применялись не во всех версиях.

Выражения сходны с большинством других процедурных языков программирования, но в первых вариантах Бейсика их набор был довольно бедным.

Условный оператор (IF..THEN) изначально имел только одну ветвь — ветвь ELSE в нём отсутствовала и моделировалась с помощью безусловного перехода. Так, в нижеследующей программе выполняется элементарная операция — ввод числа и вывод сообщения «Отрицательное число» или «Положительное число или нуль» в зависимости от его значения:

10 INPUT I
20 IF I >= 0 THEN PRINT "Positive number or null" : GOTO 40
30 PRINT "Negative number"
40 END

Имелся оператор перехода по вычисляемой метке ON..GOTO (унаследованный от аналогичной конструкции Фортрана) — в нём после ON указывалось числовое выражение, а после GOTO — список номеров строк. Переход происходил на строку, номер которой в списке соответствовал значению выражения. Присутствуют также циклы (цикл со счётчиком FOR и цикл с предусловием WHILE).

Использование функций, определяемых пользователем (участков кода, для многократного использования), было возможно двумя способами: определяемые функции и подпрограммы.

Подпрограммы не являлись аналогом функций таких языков, как Си или Паскаль, так как не имели имён и не могли принимать и/или возвращать параметры. Параметры и результаты передавались через глобальные переменные (все переменные в ранних версиях Бейсика были глобальными). Подпрограммы писались обычно в конце модуля, с нумерацией заведомо большей, чем планируемое количество строк (к примеру, нумерация блока подпрограмм могла начинаться с 5000, даже если в программе была пара сотен строк). Подпрограммы не имели заголовков и имён, и ничем не отличались от любого другого участка кода. Вызов подпрограммы осуществлялся с помощью ключевого слова GOSUB <метка>. Это практически клон GOTO, за исключением одного: возврат в точку вызова происходил автоматически, при достижении в подпрограмме ключевого слова RETURN. GOSUB, как и GOTO, только способствовали плохой структуре кода, так как отследить выполнение программы, содержащей большое количество безусловных переходов и подпрограмм, было сложной задачей.

Отсутствие возможности давать подпрограммам имена (и передавать по ним управление), невозможность передачи параметров, отсутствие локальных переменных, использование только числовых меток в больших проектах вызывало путаницу в коде и очень затрудняло отладку.

В некоторых диалектах Бейсика имелась возможность загрузить файл с кодом непосредственно при выполнении программы (текущий при этом выгружался) оператором CHAIN. Это была одна из самых полезных возможностей языка, так как она позволяла разбить большой проект на модули, вызывая их в порядке необходимости.

Редактора кода в ранних версиях, как такового, не было. При запуске интерпретатора Бейсика запускался диалоговый режим ввода команд. Для работы в этом режиме были предусмотрены специальные команды, которые не являлись операторами самого языка (их нельзя было включить в код программы). Это команды по управлению средой ввода, такие как: LIST <диапазон строк> — вывод листинга программы на экран (LLIST — на принтер), SAVE <имя файла> — сохранение текста программы в файл, LOAD <имя файла> — загрузка кода в память и т. д. Запуск программы производился вводом команды RUN. В большинстве интерпретаторов Бейсика в нижней части экрана была строка с этими (и другими) командами.

Если команда начиналась с номера строки (метки), она запоминалась в памяти как часть вводимой программы. Если строка оператора вводилась без номера, она выполнялась сразу же, после нажатия клавиши  ↵ Enter . В качестве первых уроков обучающимся на Бейсике предлагалось поэкспериментировать с таким режимом, когда результат выполнения выражения был виден сразу. Например, если, находясь в режиме диалога, ввести строку PRINT 2+2 и нажать  ↵ Enter , на экране отобразится результат сложения.

Для редактирования уже введённой строки в большинстве реализаций нужно было перепечатать её полностью. Удаление строк производилось командой DELETE <диапазон строк>. Команда RENUM — позволяла восстановить шаг 10 в нумерации строк. Часто возникала ситуация, что штатного шага 10 для будущих строк не хватало (так как такой шаг позволяет добавить лишь 9 строк между требуемыми) и тогда команда RENUM была необходимой (все строки перенумеровывались с шагом 10, и соответствующим образом корректировались строки с GOTO под новую нумерацию строк).

Для выполнения программы на Бейсике использовалась передача имени файла с кодом программы интерпретатору в командной строке. В этом случае, после загрузки кода команда RUN (начать выполнение программы) вызывалась автоматически.

Фрагмент типичной программы на Бейсике:

10 CLS 'Очистка экрана
20 PRINT "Добро пожаловать!" 'Заголовок в первой строке
30 'Цикл, выводящий линию под заголовком, на всю ширину экрана
40 FOR I=1 TO 80
50 PRINT "=";
60 NEXT I
65 'Ввод символьных данных от пользователя (комментарий добавлен после ввода нижних строк)
70 INPUT "Имя:  ",N$
80 INPUT "Фамилия: ",S$
90 INPUT "Отчество: ",T$
95 'Вырезаем копию первых символов из имени и отчества
100 N2$=LEFT$(N$,1)
110 T2$=LEFT$(T$,1)
120 'Выводим результат
130 PRINT "Ваше имя кратко: ";S$;" ";N2$;". ";T2$;"."
140 INPUT "Повторить программу? (Y/N) ",U$
150 IF U$="Y" THEN GOTO 10
160 END

Точка с запятой выполняет функцию подавления перехода на новую строку после оператора PRINT. Ключевое слово END означает завершение программы. Оно необязательно, в его отсутствие программа завершалась после исполнения последнего оператора, но было полезно в случаях, когда имелась секция подпрограмм, либо программа имела несколько возможных точек завершения (в последнем случае либо в каждой такой точке ставили END, либо END был один, а на него делались переходы в других местах).

Поздние версии

Одним из наиболее распространённых вариантов языка Бейсик стала реализация интерпретатора QBasic корпорации Microsoft. Долгие годы она включалась как бесплатное приложение, входящее в операционные системы MS-DOS и ранних Windows. В нём имелись довольно мощные графические и звуковые возможности, позволяющие создавать на этом языке даже игры.

Бейсик поздних версий (начиная с Turbo Basic и Visual Basic) резко отличается от ранних вариантов. Фактически, это новый язык, который во многом ближе к Фортрану или Паскалю, чем к исходному Бейсику. Основные изменения версий 1990-х годов состоят в следующем:

  • Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.
  • В языке появились именованные подпрограммы с параметрами, механизм вызова подпрограмм стал обычным: подпрограмма вызывается по имени, с указанием списка фактических параметров.
  • Были введены структурные управляющие конструкции, в результате для организации обычных ветвлений и циклов перестало быть необходимым использование оператора GOTO и меток строк.
  • Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.
  • Стали необязательными типизирующие суффиксы в именах переменных, хотя их использование не запрещалось.
  • В более поздних версиях появилась обработка исключений и поддержка элементов ООП.
  • Были введены механизмы поддержки модульности — появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.
  • Появились средства для работы с цветной графикой и звуковой картой.
  • Visual Basic, ориентированный на разработку Windows-приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.
  • Появились кроссплатформенные реализации, например, FreeBASIC и PureBasic.

Практически все недостатки, присущие ранним версиям языка, были исправлены, и программирование на современных диалектах Бейсика мало отличается от использования других языков и сред (например, таких, как Delphi). Оборотной стороной процесса модификации Basic является то, что язык стал гораздо объёмнее и сложнее, его освоение требует больше времени и усилий.

Фрагмент типичной программы на FreeBASIC:

# Lang "fb"
Dim As String n,s,t,n2,t2
Cls : Print "Добро пожаловать!" 'Заголовок в первой строке
Do
        'Цикл, выводящий линию под заголовком, на всю ширину экрана
        For i As Integer=1  To LoWord(Width)
                Print "=";
        Next i
        'Ввод символьных данных от пользователя
        Input "Имя:  ",n
        Input "Фамилия: ",s
        Input "Отчество: ",t
        'Вырезаем копию первых символов из имени и отчества
        n2=Left(n,1)
        t2=Left(t,1)
        'Выводим результат
        Print "Ваше имя кратко: "; s; " "; n2; ". "; t2; "."
        Print "Повторить программу? (y/n) "
Loop While LCase(Input(1))="y"
End 0

Несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic в пользу принципиально нового языка Visual Basic .NET — в этой реализации язык был снова кардинально пересмотрен, и в текущем состоянии он практически совпадает по набору возможностей c языком C#, отличаются только детали синтаксиса и ключевые слова. Таким образом, Basic перерос из средства для создания программ любителям-непрофессионалам до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA).

Критика

Бейсик подвергается жёсткой критике за то, что его простота и бесструктурность поощряют порочные методики и привычки программирования, которые могут быть уместны при создании малых программ, но способны привести к краху крупных проектов.

Одной из «визитных карточек» Эдсгера Дейкстры стало высказывание: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации».[3]

Кроме того, критики Бейсика часто игнорируют тот факт, что он создавался в качестве отнюдь не инструмента профессиональной разработки сложных программ, а средства, с помощью которого студенты-непрограммисты смогут писать простейшие программы. Если же говорить о современных диалектах и реализациях Бейсика, то они далеко ушли от первоначальной формы языка, являются более структурированными и сопоставимы по возможностям с такими языками, как Си, Паскаль и т. п.

Производители

В разное время интерпретаторы BASIC выпускались различными организациями, компаниями, фирмами:

Советские:

Реализации

Apple:

Microsoft:

Другие:

Интересные факты

Примечания

Литература

  • Vladimir Dyakonov and other. The Revolutionary Guide to QBASIC. — Birmingham: Wrox Press Ltd, 1996. — 578 p.
  • Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. — М.: Наука, Физматлит, 1987. — 240 с.
  • Дьяконов В. П. Применение персональных ЭВМ и программирование на языке Бейсик. — М.: Радио и связь, 1989. — 288 с.
  • Дьяконов В. П. Современные зарубежные микрокалькуляторы. — М.: СОЛОН-Р, 2002. — 400 с.
Стандарты

Ссылки

med.academic.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *