BASIC

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
BASIC Бейсик
Парадигма:структурна, потім процедурна
Дата появи:1963
Творці:Джон Кемені і Томас Курц
Система типізації:статична, жорстка, безпечна
Основні реалізації:Apple BASIC, BBC BASIC, Microsoft BASIC
Під впливом від:ALGOL 60, FORTRAN II
Вплинула на:COMAL, Visual Basic, Visual Basic .NET, Gambas

BASIC (Бейсик[1]) — (від англ. basic — початковий, елементарний) мова програмування високого рівня, метою створення якої було отримати просту в користуванні мову для початківців. Мова набула поширення у 1980-х, і лишається популярною й досі, маючи чимало діалектів. Мову було створено у 1963 професорами Дартмутського коледжу Джоном Кемені і Томасом Курцом.

Назва мови є акронімом від фрази англ. Beginner's All-purpose Symbolic Instruction Code, що означає «універсальний код символьних інструкцій для початківців».

Історія[ред. | ред. код]

Передумови[ред. | ред. код]

До середини 1960-х комп'ютери були надто дорогими машинами, що використовувались лише для особливих задач, і виконували лише одну задачу за раз (так звана пакетна обробка). Однак, протягом 1960-х, ціна на комп'ютери стала падати так, що навіть невеликі компанії могли їх собі дозволити. Швидкість комп'ютерів збільшувалась, і настав час, коли вони часто почали простоювати, не розв'язуючи задач.

Мови програмування тієї ери, як і комп'ютери, на яких вони використовувались, були розроблені для специфічних задач, таких як наукові обчислення. Оскільки машини були дорогими і лише одне завдання могло виконуватись за раз, то й машинний час був дорогим — тому швидкість обчислення стояла на першому місці.

У той же час зростала популярність систем із розділенням часу. В таких системах, процесорний час розділявся і всі користувачі почергово отримували короткий відрізок цього часу. Машини були досить швидкими для того, щоб в результаті кожен користувач за терміналом відчував себе так, ніби він працює з системою один. Теоретично, розділення часу радикально знижувало вартість машинного часу, оскільки одна машина могла спільно використовуватись сотнями користувачів.

Народження[ред. | ред. код]

Оригінальний Бейсик було вигадано у 1963 році Джоном Кемені і Томасом Курцом в Дартмутському коледжі, і, під їхнім керівництвом було реалізовано командою студентів коледжу. З часом, коли з'явились інші діалекти, цей «початковий» діалект стали називати Дартмутським Бейсиком (Dartmouth BASIC).

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

В проектуванні мови використовувались такі вісім принципів: нова мова має

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

Мова частково ґрунтувалась на FORTRAN II і, частково, на ALGOL 60, з додатками, які робили мову зручнішою для роботи в режимі розділення часу, і, пізніше, обробки тексту та матричної арифметики. Спершу Бейсик було реалізовано на мейнфреймі GE-265 з підтримкою великої кількості терміналів. Всупереч розповсюдженій думці, на момент своєї появи це була компіляторна мова. Кількома роками пізніше, дуже поважний спеціаліст у галузі програмування Едсгер Дейкстра висловив думку, що використання оператора GOTO, що існував у багатьох мовах, в тому числі, в Бейсику, сприяло поганій практиці програмування. Дехто також висміював Бейсик за його повільність і простоту.

Автори мови вирішили, що вона має належати громадськості, тому мова швидко набула поширення. Також, чимало часу автори витрачали на популяризацію мови. В результаті, знання мови Бейсик стало досить поширеним, і її було реалізовано численною кількістю виробників. Особливої популярності мова набула на нових мінікомп'ютерах на зразок DEC PDP та Data General Nova. На цих машинах мову було реалізовано як інтерпретатор, а не як компілятор.

Вибуховий ріст[ред. | ред. код]

Попри те, що мова вже використовувався на кількох мінікомп'ютерах, її справжнє розповсюдження розпочалось з появи на мікрокомп'ютері Altair 8800. Більшість мов програмування були надто великими, щоб вміститись у невелику пам'ять, яку користувачі цих машин могли собі дозволити. Для машин з таким повільним носієм, як паперова стрічка (пізніше — аудіо-касета), і відсутністю належного текстового редактора, така невелика мова, як Бейсик, була чудовою знахідкою. BASIC, також, мав ту перевагу, що, завдяки зусиллям Кемені та Курца, він був добре знаний юними програмістами, що цікавились мікрокомп'ютерами в ті часи. Одним з перших для цієї машини був Tiny BASIC, проста реалізація Бейсика, написана доктором Лі-Чен Ванґом і, пізніше, перенесена на Altair Деннісом Еллісоном на прохання Боба Альберта (він пізніше заснував Dr. Dobb's Journal). Повний код Tiny BASIC було опубліковано у 1976 у Dr. Dobb's Journal.

У 1975 Microsoft (тоді, це лише двоє — Білл Гейтс і Пол Аллен, за участі Monte Davidoff) випустили Altair BASIC. Потім його версії з'явились на іншій платформі під ліцензією і незабаром використовувались вже мільйони копій та варіантів; одним з варантів став стандартною мовою на Apple II. В 1979 Microsoft обговорювала з кількома постачальниками комп'ютерів (включно з IBM) ліцензування інтерпретатора Бейсик на їхніх машинах. Одну з версій було включено до мікросхеми постійної пам'яті IBM PC — комп'ютер міг автоматично завантажуватись в Бейсик.

Зрілість[ред. | ред. код]

В той період було створено кілька нових версій Бейсика. Microsoft продавала кілька версій для MS-DOS/PC-DOS, включаючи BASICA, GWBASIC (модифікація BASICA, що не вимагала ПЗП від IBM) і Quick BASIC. Borland, відома своїм Turbo Pascal, в 1985 випустила Turbo BASIC 1.0 (його нащадки пізніше продавались під назвою PowerBASIC). На домашніх комп'ютерах з'явились різні розширення Бейсика, зазвичай так, що включали засоби для роботи із звуком, графікою, виконанням команд операційної системи, а також, засоби структурного програмування. Деякі інші мови використовували добре відомий синтаксис Бейсика як основу, на якій будувалась зовсім інша система (наприклад, GRASS).

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

Фортуна знову повернулась до Бейсика з появою Visual Basic від Microsoft (скорочено MS VB). Хоча і важко погодитись, що ця мова справді є Бейсиком (незважаючи на велику кількість звичних ключових слів), з часом вона стала однією з мов, що використовуються найчастіше на платформі Windows — деякий час вона використовувалась на 70-80% всіх комерційних розробок. Microsoft створила варіант під назвою WordBasic та використовувала його в MS Word до появи Word 97. Microsoft вбудувала Visual Basic for Applications (VBA) в Excel 5.0 в 1993 році, потім в Access 95 в 1995, а, також, у всі інші інструменти, що входять в пакет Office — в 1997. Internet Explorer 3.0 і вище, а також Microsoft Outlook включали інтерпретатор мови VBScript. У повний варіант пакету OpenOffice також включено інтерпретатор Бейсика.

Реалізації[ред. | ред. код]

Apple

Microsoft

Інші

Основні поняття[ред. | ред. код]

Призначення та версії мови[ред. | ред. код]

Вважають, що назва мови утворена з перших букв англійських слів Beginner's All-purpose Symbolic Instruction Code. У вільному перекладі це означає «мова програмування для початківців». Англійське слово Basic перекладають як елементарний, базовий (наприклад, набір знань). Перша версія мови налічувала 14 службових слів.

Плакат у російській школі «Train Basic everyday!»

Мову бейсик розробили співробітники Дармутського коледжу (США) у 1964 р. з метою навчання студентів, і відразу здобула широке визнання. У 80-х роках інтерес до мови зменшився, оскільки її різноманітні версії не задовольняли вимог структурного програмування. Цей недолік було подолано у версіях мови Turbo Basic, Quick Basic та Power Basic. Спрощена версія Швидкого Бейсика (Quick Basic) - Qbasic - увійшла до комплекту програм операційної системи MS-DOS корпорації Microsoft.

Мова бейсик постійно розвивається. Вона суттєво оновлюється після створення корпорацією Microsoft програмно середовища Visual Basic (VB), яке дає змогу користувачам засобами візуального програмування складати власні програми для операційної системи Windows.

Для розширення можливостей таких програм, як MS Word, MS Excel, MS Access ті інших корпорація Microsft розробила версію VB під назвою Visual Basic for Applications )VBA).

Наступне удосконалення мови - Visual Basic .NET, що є складовою інтегрованого середовища створення програм Visual Studio .NET. Середовище - це програмний комплекс, що автоматизує процеси створення, налагодження та виконання програм користувача.

Visual Basic .NET дає змогу не лише створювати типові навчальні програми, що можна робити і в середовищі Qbasic, чи типові Windows-проекти, для чого достатньо середовища Visual Basic, але й високопрофесійні програми для роботи в локальній мережі, а також в інтернеті з характерним web-інтерфейсом, що запускаються з сервера, доступ до яких здійснюється за допомогою браузера.

Алфавіт мови[ред. | ред. код]

Алфавіт мови складається з таких символів:

  • латинських літер від A до Z та літер кирилиці;
  • цифр від 0 до 9;
  • символів математичних операцій (+,-,*,/,^);
  • символів відношення (=, <,> та інших);
  • розділових символів (крапка, кома, двокрапка, крапка з комою, лапки, круглі дужки, пропуск);
  • спеціальних символів (!,#,$,%,^,& та інших).

Алфавіти можуть несуттєво відрізнятися в різних версіях мови. За допомогою символів алфавіту будуть елементи мови: службові слова, імена змінних, числа, вирази, імена, функції та інші.

Службові слова та команди мови[ред. | ред. код]

Програми складається з команд. Іноді команди називаються операторами, вказівками, реченнями. За призначенням команди поділяють на такі групи:

  • описові команди, які використовують для опису даних, типів змінних, розмірів масивів, нестандартних функцій тощо;
  • команди введення-виведення даних, які використовують для введення виведення інформації, зокрема, для організації діалогу користувача з комп'ютером.
  • команди для обчислень і керування процесами опрацювання інформації: команди надання значення, переходу, розгалуження, циклів тощо;
  • інші команди, які забезпечують додаткові можливості: команди для роботи з файлами даних, команди для графічних побудов, отримання звукових ефектів тощо.

Команди складаються з неподільних елементів мови (літералів): службових слів, чисел, символів операції тощо.

Синтаксис[ред. | ред. код]

Типові ключові слова BASIC[ред. | ред. код]

Операції з даними[ред. | ред. код]

LET
надає значення (що може бути результатом виразу) змінній.
DATA
декларує список значень, які можна зчитати у змінні командою READ.

Виконання програми[ред. | ред. код]

IF ... THEN ... {ELSE}
оператор розгалуження.
FOR ... TO ... {STEP} ... NEXT
повторення секції програми дану кількість разів (цикл). Змінна, що слугує лічильником, доступна всередині оператора
WHILE ... WEND і REPEAT ... UNTIL
повторення секції коду поки дана умова має місце. Умова перевіряється або перед кожною ітерацією циклу, або після
DO ... LOOP {WHILE} або {UNTIL}
повторення коду (нескінченне або з перевіркою умови)
GOTO
перехід до рядка (задається номером або, у новіших версіях, міткою з двокрапкою)
GOSUB
виклик процедури; повернення з процедури виконується оператором RETURN
ON ... GOTO/GOSUB
вибір рядка для виконання на основі деякої умови. Інші форми описано у оператор вибору
DEF FN
пара ключових слів, доданих до BASIC у 1960-х роках, і призначена для означення простих однорядкових функцій. Імена функцій були як правило обмежені однією літерою (наприклад, DEF FNA, DEF FNB і т.д.)

Ввід/вивід[ред. | ред. код]

LIST
показує повний лістинг поточної програми
PRINT
показує повідомлення на екрані (або іншому стандартному пристрої введення)
INPUT
очікує від користувача введення даних з термінала (клавіатури). Можна вивести повідомлення-підказку
TAB або AT
використовується з PRINT для встановлення позиції наступного надрукованого символа

Математичні функції[ред. | ред. код]

ABS
Абсолютне значення
ATN
Арктангенс (результат у радіанах)
COS
Косинус (аргумент у радіанах)
EXP
Піднесення до степеня
INT
Ціла частина
LOG
Натуральний логарифм
RND
Генерація випадкового числа
SIN
Синус (аргумент у радіанах)
SQR
Квадратний корінь
TAN
Тангенс (аргумент у радіанах)

Різне[ред. | ред. код]

REM
коментар
USR
запуск програми у машинному коді з даної адреси
TRON
трасування: вмикає режим, коли показується кожен виконаний рядок коду (англ. TRace ON)
TROFF
вимикання режиму трасування
ASM
деякі компілятори, такі як Freebasic,[2] Purebasic,[3] і Powerbasic[4] підтримують inline assembly[en], дозволяючи програмістові змішувати асемблерний і BASIC-код

Див. також[ред. | ред. код]

Стандарти[ред. | ред. код]

  • ANSI X3.60-1978 «FOR MINIMAL BASIC»
  • ISO/IEC 6373:1984 «DATA PROCESSING — PROGRAMMING LANGUAGES — MINIMAL BASIC»
  • ANSI X3.113-1987 «PROGRAMMING LANGUAGES FULL BASIC»
  • ISO/IEC 10279:1991 «INFORMATION TECHNOLOGY — PROGRAMMING LANGUAGES — FULL BASIC»
  • ANSI X3.113 INTERPRETATIONS-1992 «BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987»
  • ISO/IEC 10279:1991/ Amd 1:1994 «MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT»

Виноски[ред. | ред. код]

  1. http://www.lingvo.ua/uk/Search/uk-uk/%E1%E5%E9%F1%E8%EA[недоступне посилання з червень 2019]
  2. KeyPgAsm. FreeBasic Wiki. Процитовано August 2, 2017. 
  3. Inline x86 ASM. Pure Basic. Процитовано August 2, 2017. 
  4. Using assembly-language in your code. Power Basic. Архів оригіналу за August 2, 2017. Процитовано August 2, 2017. 

Джерела[ред. | ред. код]