Хтось створив інтерпретатор мови бейсик. Бейсик як мова програмування та його історія

Хтось створив інтерпретатор мови бейсик. Бейсик як мова програмування та його історія

  • Розробка під Windows
  • DONKEY.BAS. Входить до комплекту IBM PC в 1981. Співавтор - Білл Гейтс

    Назва BASIC з'явилася як скорочення від "Beginner"s All-purpose Symbolic Instruction Code", що в дослівному перекладі означає "багатоцільова мова символічних команд для початківців". Це той випадок, коли дослівний переклад абсолютно точно передавав суть. Ключовою особливістю BASIC"а була не лише його простота, а й можливість знаходити розв'язання задач у режимі діалогу з комп'ютером.

    Для багатьох комп'ютерів кінця 60-х BASIC позиціонувався як єдина мова програмування високого рівня загального призначення, і згодом це призвело до появи різних його модифікацій. Поворотним моментом у розвитку мови стала поява Visual Basic.

    Передісторія

    У 1950-х років роль програмування в машинних кодах стала зменшуватися. З'явилися мови вищого рівня – Fortran, Algol, Cobol тощо.

    Першим і одним із найпоширеніших був Фортран (FORTRAN, від FORmula TRANslator – перекладач формул), розроблений групою програмістів фірми IBM 1954 року (перша версія). Ця мова була спрямована на науково-технічні розрахунки математичного характеру.

    Назва мови Algol (ALGOrithmic Language), перша версія якого з'явилася в 1958 році, підкреслює те, що він призначений для запису алгоритмів. Завдяки чіткій логічній структурі Алгол став стандартним засобом запису алгоритмів у науковій та технічній літературі.

    Тоді мов програмування високого рівня характерна предметна орієнтація. Крім того, подібні мови були надто складні для розробників-початківців, особливо, якщо вони не були інженерами. Тому зрозуміло, що з часом з'явилася мова програмування для «простих смертних».

    BASIC. Просто BASIC

    З ідеєю створення цієї мови програмування асоціюють відому історію для англійського місіонера.
    У XIX столітті одному англійському місіонеру, який шукав можливість полегшити і спростити контакт з тубільцями, спало на думку геніальна думка - вичленувати з англійської найпростішу його частину, що практично не має граматики, і містить близько 300 найпоширеніших слів. Цей урізаний підвид англійської мови був названий BASIC ENGLISH, і як показала практика - він справді виявився дуже простим для засвоєння, і незабаром завоював популярність не тільки серед тубільного населення, а й серед іммігрантів, для яких англійська не була рідною мовою.
    Сто років тому аналогічний шлях обрали співробітники математичного факультету Дартмутського коледжу. Вони вирішили полегшити взаємодію між комп'ютером та непрофесійним користувачем за допомогою «спрощеної» мови програмування.

    У 1964 році Томас Курц та Джон Камені створили спеціалізовану мову програмування, яка складалася з простих слів англійської мови. Нову мову назвали BASIC.

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

    Серйозний вплив на BASIC справили Fortran II та Algol 60. Крім того, розробники реалізували в ньому механізми роботи для систем з режимом поділу часу, а також обробки тексту та матричної арифметики. Спочатку компілятор мови було написано для мейнфрейму GE-265.

    Розквіт

    У 70-х з'явилися компактні комп'ютери (ПК). Цю обставину вдало використали Білл Гейтс та Пол Аллен, засновники Microsoft.

    Вони створили нову версію BASIC для перших комп'ютерів Альтаїр (MITS Altair), здатну працювати в 4КБ оперативної пам'яті. Згодом саме ця версія і перетворилася на одну з найпопулярніших мов програмування у світі.


    Altair

    Періодом найбільшого розквіту та розвитку вихідного BASIC можна вважати кінець 1970-х – першу половину 1980-х років. Його версії з'явилися на інших платформах, і незабаром почали розходитися мільйонними тиражами зі всілякими змінами та доопрацюваннями. Однією з найпопулярніших версій був Applesoft BASIC, який став стандартною мовою Apple II.

    Applesoft BASIC був написаний фірмою Microsoft як заміна системі Integer BASIC, яка використовувалася в першій моделі Apple II і мала дуже обмежені можливості. Applesoft BASIC був прошитий у ПЗУ всіх моделей Apple II, починаючи з Apple II+, і всіх клонів Apple II. Також більш рання та урізана версія Applesoft BASIC була доступна на касетах для першої моделі Apple II.

    Для операційної системи CP/M було створено діалект BASIC-80, який надовго визначив розвиток мови.

    Коли з'явилися перші персональні комп'ютери IBM PC, саме він став стандартом програмування, але вже у вигляді GW-Basic.

    У середині 1980-х BASIC став основною мовою у складних моделях програмованих калькуляторів, які якраз на той час досягли потужності, що допускає застосування повноцінної мови високого рівня. BASIC був вбудований в радянський калькулятор «Електроніка МК-85» і всі його пізніші моделі.

    Також у 1985 році з'явилася IDE Quick Basic - інтегроване середовище розробки та компілятор мови програмування BASIC, яке розроблялося компанією Microsoft з 1985 по 1988 рік. Існували версії для DOS та Mac OS. Використовуваний діалект BASIC був заснований на вдосконаленому діалекті GW-BASIC: була реалізована підтримка типів користувачів, конструкцій структурного програмування, значно розширена підтримка графічних та дискових операцій.

    Роберт "Боб" Зейл у 1987 році на основі своєї багаторічної розробки BASIC/Z створив Turbo Basic, а потім продав його компанії Borland. Журнал Infoworld назвав його одним із найзначніших продуктів того року.

    На відміну від більшості реалізацій BASIC того періоду Turbo Basic був повним компілятором, що генерував рідний код для MS-DOS.

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

    Друге життя

    На початку 90-х з'явилася операційна система Microsoft Windows із новим графічним інтерфейсом користувача.

    Щоб створити просту програму, розробникам доводилося писати кілька сторінок коду: прописувати об'ємні блоки коду меню і вікон, шрифтів, очищати пам'ять, «малювати» кнопки тощо. Однак переваги нового інтерфейсу були досить сильними, і у Windows з'явилися реальні перспективи стати повсюдно популярною.

    У Microsoft розуміли, що потрібно якось полегшити життя розробників. Тому компанія запустила кілька паралельних проектів щодо створення нової мови програмування та середовища розробки для Windows.

    Друге життя BASIC одержав, коли Microsoft випустила Visual Basic. Він став логічним завершенням еволюції мови і, незважаючи на збереження звичних ключових слів, за структурою та набором можливостей був ближчим до Pascal, ніж до початкового BASIC.

    1991 року з'явилася перша версія нової IDE Microsoft Visual Basic. Однак у той момент Microsoft досить скромно оцінювала можливості цієї системи, орієнтуючи її, все ж таки, на категорію початківців і непрофесійних програмістів.

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

    Система програмування, створена розробниками Visual Basic, дозволяла абстрагуватись від внутрішньої структури Windows. Меню, вікна, списки, кнопки, поля введення тексту та інші елементи інтерфейсу Windows додавалися в програму за допомогою найпростіших операцій drag&drop, і більшість коду для їх ініціалізації та налаштування генерувалася автоматично.

    Свою першу програму VB-програмісти могли створити вже за кілька хвилин після початку вивчення цієї мови. Більше того, Visual Basic дозволяв розробникам створювати нові елементи графічного інтерфейсу, які могли використовуватися в програмах нарівні зі стандартними.

    Незважаючи на те, що багато С-розробників не сприймали серйозно спроби Microsoft зробити простий і зрозумілий інструмент розробки Windows-програм, решта учасників ІТ-спільноти покладала на Visual Basic великі надії.

    1994 року компанія випустила Visual Basic for Applications. Саме в цей час, після включення VBA до складу Microsoft Office, Basic став одним із основних стандартів програмування для Windows.

    Visual Basic від Microsoft, що спочатку замислювався як іграшка, неймовірно швидко завоював програмістський світ. Його популярність обумовлена ​​двома причинами: відносною простотою та продуктивністю.

    Програми на VB працювали повільніше своїх аналогів на C/C++, але все ж таки вони досить швидкі для багатьох ділових цілей і вимагають набагато менше часу на розробку. Форми були тією абстракцією, що заощаджує зусилля, яку запропонував VB програмістам Windows.

    IDE VB дозволила розробляти вікна графічно, перетягуючи елементи керування, такі як кнопки та списки, з панелі інструментів у форму. Отримавши задовільний вигляд форми, можна було переходити до кодової частини і писати обробники подій для кожного елемента управління форми.

    Розробка програми в VB, таким чином, складалася зі створення декількох форм, які взаємодіяли один з одним.

    З точки зору написання коду важливою відмінністю від того ж C + + стала відмова від покажчиків. Так вирішив Білл Гейтс ще під час розробки перших версій Microsoft BASIC. Хоча покажчики корисні, оскільки дозволяють прямий доступом до пам'яті за будь-якою адресою, їх використання пов'язані з помилками у разі, якщо вони застосовуються неакуратно. Оскільки мова створювалася для «простих смертних», це рішення виглядає цілком виправданим.

    Основні версії Visual Basic

    У першій версії (1991 рік) Алан Купер реалізував принцип зв'язку мови та графічного інтерфейсу.

    Починаючи з третьої версії (1993), у VB з'явилася підтримка MS Access.

    Visual Basic 4.0 (1995) - версія, в якій з'явилася можливість створювати як 32 так і 16-розрядні Windows-додатки. Крім того, до мови були додані класи.

    Починаючи з VB 5.0 (1997) з'явилася можливість розробляти власні COM-компоненти. Крім того, з'явилася нова віртуальна машина, реалізована у динамічній бібліотеці MSVBVM50.DLL. Компілятор VB для трансляції використовував багатопрохідний режим, але зрештою покладався на компілятор Microsoft C++ для отримання вихідного машинного коду після компіляції в проміжну мову. Використання бібліотеки часу виконання та внутрішнього інтерфейсу C++ стало відправною точкою для формування технології .NET.

    VB версії 6 - це вже потужна мова, яку можна використовувати для створення розподілених програм із застосуванням компонентів СОМ і Microsoft Transaction Server. Microsoft запропонувала трирівневий підхід для архітектур «клієнт-сервер», в якому «тонкі» інтерфейси користувача взаємодіяли з віддаленими компонентами VB для отримання даних з бази даних або з іншої машини.

    Більш того, VB6 (1998) можна було використовувати для створення елементів керування Active-X, що працюють разом із Internet Explorer.

    2002 року з'явився перший випуск Visual Basic .NET. З цього моменту зворотна сумісність із класичною версією Visual Basic виявилася порушеною.

    З 2005 року Visual Basic входить до складу IDE Microsoft Visual Studio 2005. До цього дня мова розвивається разом із IDE – аж до поточної версії – MS Visual Studio 2015.

    Мови Basic і Visual Basic пройшли серйозний шлях і зазнали суттєвих, можна сказати, незворотних змін. Від їхньої початкової простоти мало що залишилося. В результаті VB перетворилася на «звичайну» об'єктно-орієнтовану мову програмування високого рівня.

    Мова програмування Бейсік -це сімейство мов програмування найвищого рівня. Спочатку розроблений як навчальний посібник, він набув широкого поширення на домашніх мікрокомп'ютерах в 1980-і роки, і залишається популярним і до цього дня в сильно змінному діалекті. Програмування для початківців.
    Назва мови програмування BASIC була придумана в класичних традиціях інформатики, що призвело до хорошого скорочення найменування, Beginner"s All-purpose Symbolic Instruction Code (багатоцільовий код символьних інструкцій для початківців). Назва пов'язана з назвою неопублікованої роботи винахідника мови Томаса Курца. Називають його Спроба мови Білла захопити контроль над промисловістю у відповідь на політику Microsoft щодо інтерпретатора Бейсіка, який включали у всі поставки з ранніми ПК сумісними з IBM.

    Історія

    До появи
    До середини 1960-х років комп'ютери були дуже дорогими інструментами, які використовувалися тільки для завдань спеціального призначення, в той час виконувати могли тільки одну "роботу". З середини 1960-х років, однак, комп'ютери почали падати в ціні, аж до того моменту, коли навіть невеликі компанії могли їх собі дозволити, а швидкості виконання інструкцій зросли настільки, коли комп'ютери стали простоювати, тому що не було достатньої кількості роботи їм, що згодом розглядалося в основах програмування.
    Мови програмування тієї епохи, як правило, розроблялися з урахуванням можливостей обчислювальних машин і для конкретних цілей, таких як наукова обробка формул. Комп'ютери, які могли виконувати лише одну "роботу", були дорогими, а найголовнішою характеристикою була швидкість виконання інструкцій. Загалом їх використання було важким справою, і, навіть можна сказати, трохи "потворним".
    Саме в цей час концепція поділу часу операційною системою почала ставати популярною. У такій системі час основної обробки комп'ютер нарізав на частини, і кожен користувач отримував невелику кількість часу в певній послідовності. Машини були вже досить швидкими, тому більшість користувачів помилялися, думаючи, що вони монопольно використовували цілий комп'ютер. Теоретично поділ часу зниження часу обчислення надзвичайно важливо, оскільки одному комп'ютері можуть працювати сотні користувачів, по крайнього заходу теоретично.

    Народження та ранні роки
    Мова програмування BASIC винайшов у 1964 році Джон Джордж Кемені (1926-93) та Томас Курц Євген (1928 -) у Дартмутському коледжі. У наступні роки, після появи безлічі різновидів Бейсіка, було випущено опис оригінального BASIC від Кемені та Курця, який дав назву справжньому Бейсику "Дартмут Бейсік".
    Мова програмування Бейсік був розроблений для того, щоб студенти могли писати програми, використовуючи комп'ютерні термінали в режимі поділу часу. Бейсик призначений для вирішення складних питань, які вирішували попереднє покоління мов. Розроблений спеціально для нового класу користувачі, які прийняли ідею використання поділу часу, тобто для "простого" користувача, який був зацікавлений не так у швидкості, як у простій можливості використання комп'ютера. Розробники мови також хотіли, щоб мова стала суспільним надбанням, яке б допомогло йому поширюватися.
    Вісім принципів побудови BASIC:

    1. Бути легким для новачків
    2. Бути мовою загального призначення
    3. Дозволити розширені можливості додавання власних удосконалень для фахівців (при збереженні мови простою для початківців)
    4. Бути інтерактивним
    5. Розробка чітких та дружніх повідомлень про помилки
    6. Швидко реагувати на невеликі програми
    7. Не потрібне знання комп'ютерних апаратних
    8. Огородження користувача від операційної системи

    Мова була заснована частково на Фортран II і частково на Алгол 60, з доповненнями, щоб зробити його придатним для поділу часу та матрицею арифметики, BASIC був вперше реалізований на манфреймах GE-265, які підтримували кілька терміналів. Всупереч поширеній думці, на момент створення це була компілювана мова. Майже відразу після його випуску, комп'ютерні фахівці почали висміювати Бейсік як занадто повільний і простий. Так як елітарність мови є незмінною темою в комп'ютерній промисловості.
    Бейсік поширюється на велику кількість машин, і стає досить популярним на нових мінікомп'ютерах, таких як серія DEC PDP і Data General Nova. У цих випадках мова, як правило, виступає як перекладач, а не компілятор, або, навпаки, залежно від потреб.

    Вибуховий ріст
    Однак лише з появою мікрокомп'ютера Altair 8800 у 1975 році BASIC починає своє масове поширення. Більшість мов програмування були занадто великі, щоб уміститися в невеликій пам'яті комп'ютерів, які більшість користувачів можуть дозволити собі купити, а якщо ще врахувати, що читання відбувалося з повільної паперової стрічки (або в пізніших версіях аудіо касети) і були відсутні відповідні текстові редактори, то малі вимоги мови BASIC добре відповідали цим вимогам. Одним з перших на цій машині був Tiny BASIC, проста реалізація BASIC спочатку написана доктором Лі-Ван Чень, а потім перенесена на Альтаїр Деннісом Еллісоном на прохання Боба Альбрехта (який пізніше заснував доктор Dobbs Journal - DDJ). Дизайн Tiny BASIC та повний вихідний код був опублікований у 1976 DDJ.
    У 1977 році Microsoft (на той час це були тільки дві людини - Гейтс і Аллен) випустила Altair BASIC. Версії потім почали з'являтися і на інших платформах відповідно до ліцензії, і мільйони копій і варіантів незабаром були у використанні, він став однією зі стандартних мов Apple II. До 1979 року Microsoft веде переговори з кількома постачальниками мікрокомп'ютерів, зокрема IBM, у тому, щоб ліцензувати інтерпретатор BASIC цих комп'ютерів. Версія була зашита в чіпах IBM PC у ПЗУ, а для ПК без дисків, Бейсік став автоматично завантаженим при включенні живлення.
    У міру появи нових компаній багато хто з них намагався повторити успіх Альтаїра, наприклад, IMSAI, Полярна зірка, і Apple, і таким чином відбулася революція домашнього комп'ютера, в якому BASIC став стандартним атрибутом домашніх комп'ютерів того часу. Більшість йшли з інтерпретатором BASIC у ПЗУ (функція вперше з'явилася на Commodore PET у 1977). Незабаром з'явилося багато мільйонів машин, що працюють з BASIC у всьому світі, ймовірно, набагато більше, ніж число всіх користувачів всіх інших мов разом узятих. Багато програм, особливо ті, що на Apple II та IBM PC, стали залежними від інтерпретатора BASIC компанії Microsoft і не працювали без нього. Таким чином, Microsoft використовувала авторську ліцензію на транслятори BASIC, щоб отримати важелі тиску на переговорах із постачальниками комп'ютерів.

    Зрілість
    У цей час були створені нові й потужніші версій BASIC. Microsoft продала кілька версій BASIC для MS-DOS/PCDOS включаючи BASICA, GW-BASIC (BASICA-сумісну версію, яка не вимагала наявності ROM IBM) та Quick Basic. Компанія Borland (розробник Turbo Pascal) опублікувала Turbo Basic 1.0 у 1985 (наступник цієї версії все ще продається під назвою PowerBASIC іншою компанією). З'являлися різні розширення для домашнього комп'ютера, які підтримував Бейсик, наприклад, графіка, звук та DOS команди, а також засоби для структурного програмування. Інші мови програмування використовували широко відомий синтаксис мови Бейсік як основу для перенесення на інші операційні системи, як приклад можна згадати GRASS.
    Однак у другій половині 1980-х років нові комп'ютери були набагато складнішими і мали безліч можливостей (наприклад, графічні інтерфейси користувача), що робило BASIC менш придатним для програмування. У той самий час комп'ютери прогресують від інструменту любителів до інструмента професіоналів. p align="justify"> Персональні комп'ютери починають використовуватися в основному для виконання додатків, написаних іншими людьми, і програмування в цілому стає менш важливою складовою для швидко зростаючого числа простих користувачів. Бейсік почав зникати, хоча численні версії залишилися доступними.
    Тяжке становище БЕЙСИКА змінюється з появою Visual Basic від Microsoft. Хоча вже досить важко розглянути в цій мові класичний BASIC (незважаючи на використання в назві знайомих слів BASIC), але ця нова стала однією з найчастіше використовуваних мов на платформі Windows. Не забудемо згадати, що програми, написані цією мовою є приблизно 70 до 80% всіх комерційних додатків. Visual Basic для додатків (VBA) був доданий у Microsoft Excel 5.0 у 1993 році та включений на всю лінійку продуктів Microsoft Office у 1997 році. У Windows 98 з'явився VBScript. Остання версія Visual Basic називається VB.NET. OpenOffice Suite включає варіант BASIC менш потужний, ніж його колега MS.

    Синтаксис
    Оператор завершення логічного рядка це переклад на новий рядок, якщо тільки не зустрівся оператор перенесення логічного рядка на наступний символ символу продовження рядка. Мінімальний синтаксис Бейсіка: LET, PRINT, IF та GOTO команди. Інтерпретатор, який запускає програму з цим мінімальним синтаксисом, не потребує стеку, тому що деякі ранні реалізації мікрокомп'ютерів були настільки простими. Якщо додати стек, то можуть бути додані цикли та команди GoSub. Інтерпретатор BASIC для роботи з цими функціями необхідно мати код номера рядків.
    Номери рядків були особливістю класичного BASIC для домашнього комп'ютера. На жаль, використання номерів рядків має великий недолік, який вимагає від програміста чуття на те, скільки рядків буде у програми, оскільки основними командами був перехід до номера певного рядка. А у разі внесення правок або доповнень у пізніших версіях програми номери цих рядків починали змінюватися, що призводило до необхідності зміни майже всієї програми. Для вирішення цієї проблеми використовувалися хитрі прийоми, які говорили, що нумерувати треба рядки із запасом і крок становив +10. Але все одно це не рятувало у разі серйозних модифікацій програми. Щоб вирішити цю проблему з ранніми трансляторами BASIC, досвідчені користувачі швидко написали власні утиліти для перенумерації рядків вихідного коду програми. Деякі транслятори БЕЙСИКА, які з'явилися пізніше, мали вбудовану команду зміни нумерації рядків, усуваючи найбільш актуальну проблему з номерами рядків.
    Сучасні діалекти BASIC відмовилися від нумерації рядків, і більшість реалізацій підтримують структурні керуючі оператори, які використовуються у відомих мовах, таких як Сі або Паскаль як відомо та в інших мовах, таких як C та Pascal (хоча залишаються і версії, де поєднано структурне управління та нумерація рядків):

    • do - loop - while - until - exit
    • on x goto / gosub (switch & case)

    Останні варіанти, такі як Visual Basic, ввели можливість об'єктно-орієнтованого програмування, і навіть успадкування в останній версії. Управління пам'яттю в останній реалізації набагато легше, ніж у багатьох інших процедурних мовах програмування через те, що зазвичай включено збирач сміття (який самостійно очищує пам'ять та видаляє непотрібні дані).
    Різноманітність варіантів мови показує, що мова має "органічний" характер і що ця мова може розглядатися як субкультура в комп'ютерному світі, а не фіксований набір синтаксичних правил. Те саме стосується і інших "старих" мов програмування, таких як COBOL і FORTRAN. Безліч фахівців в ІТ промисловості, які володіють БЕЙСИКОМ, можна пояснити тим, що основна маса відточувала зуби в програмуванні в 80-х роках, роки популярності Бейсіка.

    Процедури та управління потоком
    Basic немає стандартних зовнішніх бібліотек, як інші мови, такі як Сі. Натомість транслятор (або компілятор) містить велику вбудовану бібліотеку власних процедур. Ці процедури включають більшість інструментів, за допомогою яких програміст повинен навчитися програмування і писати прості додатки, включаючи математичні функції, введення і виведення рядків на консоль, графіки і обробка файлів.
    Деякі діалекти BASIC не дозволяють програмістам писати свої процедури. Програмісти мають натомість писати свої програми з великою кількістю GOTO заяв для розгалуження. Це може призвести до заплутаного вихідного коду, який зазвичай називають код спагетті. GoSub повідомляє прості види підпрограм без параметрів або локальних змінних. Більшість сучасних версій BASIC, таких як Microsoft QuickBASIC, додали підтримку повних підпрограм і функцій. Це ще одна область, якою ця мова відрізняється від багатьох інших мов програмування. BASIC, як Паскаль, робить різницю між процедурою, яка повертає значення (так звані підпрограми) і процедури, які повертають значення (називається функція). Багато інших мов (зокрема, C) роблять різниці і називають все функціями (хоча деякі функції повертають " порожні " значення і є процедурами-подпрограммами).

    Типи даних
    Бейсік добре відомий своєю відмінною функцією обробки рядків. Вже перших діалектах було безліч фундаментальних функцій (LEFT$, MID$, RIGHT$) для простої обробки рядків. Так як рядки часто використовуються в повсякденних додатках, це була значна перевага перед іншими мовами в момент появи мови.
    Оригінальний Дартмут BASIC підтримує лише числові та рядкові типи даних. У мові був цілого типу даних, натомість передбачалося описувати все числа з допомогою змінних з плаваючою точкою (речовий тип). Рядки були динамічної довжини. Підтримувалися масиви, і навіть матриці (двовимірні масиви).
    У кожному сучасному діалекті BASIC принаймні є цілі та рядкові типи даних. Типи даних, як правило, відрізняються наступним: рядкові ідентифікатори містять наприкінці $, а цілих немає. У деяких діалектах змінні повинні бути оголошені до першого використання, в інших діалектах не вимагають цього, але є можливість перевірити його виконання цього правила, для цього використовують директиви, такі як Option Explicit. Багато діалектів також мають підтримку додаткових типів, такі як 16 і 32-розрядних цілих чисел і чисел з плаваючою точкою. Крім того, деякі дозволяють визначати типи даних користувача, схожі на Pascal "записи", або С "структури".
    Більшість основних діалектів також підтримує масиви цілих чисел чи інших типів. У деяких, масиви повинні бути визначені, перш ніж вони можуть бути використані (за заявою DIM). Підтримка двох та багатовимірних масивів, а також масиви нецілих типів є звичайною справою.
    DIM myIntArray (100) AS INTEGER
    DIM myNameList (50) AS STRING
    Залежно від діалекту BASIC і використання Option Base, значення можуть коливатися від myIntArray (0) до myIntArr (100), від myIntArr (1) до myIntArr (100) або з myIntArray (LowInteger) в myIntArray (HighInteger), іншими словами номер Перший елемент може починатися з нуля або з одиниці.

    Реляційні та логічні оператори
    = Рівні
    <= меньше или равно
    not логічне заперечення
    <>Не одно
    >= більше чи одно
    and логічне множення
    < Меньше
    or логічне додавання
    > Більше
    (Зверніть увагу, що немає лексичного розходження між оператором рівності та оператором присвоєння в Бейсику - це знак "=")

    Доступність та варіанти діалектів
    Basic доступний практично для будь-якої платформи мікропроцесорів. Є вільний інтерпретатор мови, сумісний із стандартами та крос-платформний Байуотер BASIC (bwBASIC). Інтерпретатор написано на C і постачається під ліцензією GNU. Він призначений для текстової консолі програми, і не включає інструменти для створення графічного інтерфейсу користувача (GUI). Безкоштовний Бейсик, який не включає GUI Builder, схожий на Visual Basic і працює на Windows та Linux – це Phoenix Object Basic.
    Найвідоміші версії - це версія Microsoft Quick BASIC і QBASIC версія, яка не створює автономні програми. Деякі версії Visual Basic можуть компілюватися в машинний код. Microsoft зберегла у Visual Basic мінімальну сумісність навіть із ранніми версіями.
    Інші версії включають мову програмування PowerBASIC від компанії PowerBASIC, а також True BASIC від компанії True BASIC, сумісну з останніми офіційними стандартами для BASIC. Компанія True BASIC була заснована одним із творців Дартмут BASIC.
    REALbasic це варіант для Apple Macintosh, яка також створює файли, що виконуються для Microsoft Windows. PureBasic є варіантом з простим синтаксисом, але який виробляє швидкі і крихітні файли для Windows і Linux. SmallBASIC це діалект, який працює на багатьох платформах (Win32, DOS, Linux та PalmOS) та постачається під ліцензією GNU (GPL).

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

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

    Народження

    Вибуховий ріст

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

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

    Опис мови

    Синтаксис мови нагадує Fortran і багато елементів - явні запозичення з нього. Мова замислювався на навчання, тому його конструкції максимально прості. Як і в інших мовах програмування, ключові слова взяті з англійської. Основних типів даних два: рядки та числа. З появою версії Visual Basic , а також різних його модифікацій (таких як VBA), в мові з'явилося багато інших типів даних і доповнень, типових для сучасних мов програмування (наприклад, об'єктна модель). Оголошення змінних не вимагає спеціальної секції (на відміну, наприклад, Паскаля). Оголошення змінної - це її використання.

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

    Ранні версії

    Зовнішній вигляд програм на ранніх версіях Бейсіка багато в чому визначався тим, що він призначався для програмування з малим редактором тексту. У такому редакторі користувач не мав звичної зараз можливості відображати весь текст на екрані (у вікні), пересуватися по ньому в будь-яких напрямках за допомогою клавіатури та/або миші. У рядкових редакторах користувач для зміни рядка тексту повинен дати команду зміни рядка із заданим номером, потім ввести новий текст вказаного рядка. Для вставки нового рядка потрібно дати команду вставки, знову вказавши номер. Рядки, що вводяться, відображаються на екрані послідовно (незалежно від номерів). Щоб побачити зроблені зміни, застосовується команда виведення тексту, яка виводить рядки у правильному порядку (за зростанням номерів).

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

    10 PRINT "Hello, World!"

    Змінювати вручну номери вже наявних рядків було небезпечно, оскільки номери виконували роль міток для оператора 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 ​​. Це була одна з найкорисніших можливостей мови, тому що вона дозволяла розбити великий проект на модулі, викликаючи їх у порядку потреби.

    # 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. та ключові слова. Таким чином, Basic переріс із засобу для створення програм любителям-непрофесіоналам до повноцінного засобу створення програм.

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

    Критика

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

    Однією з «візитівок» Едсгера Дейкстри став вислів: « Студентів, які раніше вивчали Бейсік, практично неможливо навчити хорошому програмуванню. Як потенційні програмісти вони зазнали незворотної розумової деградації». Однак, цей вислів цитується поза контекстом, в якому Дейкстра розкритикував і багато інших популярних на той час мов.

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

    Стандарти

    • 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»

    Виробники

    У різний час інтерпретатори BASIC випускалися різними організаціями, компаніями, фірмами як за кордоном, так і в СРСР:

    Іноземні

    • Basic International
    • CDC (англ.)російська.
    • Comshare
    • Concept Omega
    • Data General (англ.)російська.
    • Exidy (англ.)російська.
    • Fantaisie Software
    • The Game Creators
    • Gordon Eubanks (англ.)російська.
    • Hedge Systems
    • Mark Williams (англ.)російська.
    • Microdata (англ.)російська.
    • Microway (англ.)російська.
    • Morgan Computing
    • NCR Century (англ.)російська.
    • Radio Shack (англ.)російська.
    • Ryan McFarland (англ.)російська.
    • Sax Software
    • Sperry (англ.)російська. / Univac (англ.)російська.
    • Summi Software Tehnology
    • True Basic (англ.)російська.
    • Unicomp (англ.)російська.
    • Varian (англ.)російська.
    • Zedcor (англ.)російська.
    • ВЦ СО АН СРСР - Новосибірськ
    • Університет - Нижній Новгород

    Реалізації

    Apple

    Microsoft

    Інші

    • BBC-basic

    І під їхнім керівництвом було реалізовано командою студентів коледжу. Згодом, коли почали з'являтися інші діалекти, початкову реалізацію почали називати Dartmouth BASIC.

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

    При проектуванні мови використовувалися вісім принципів. Нова мова мала:

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

    Мова була заснована частково на Фортрані II і частково на Алголі 60 з додаваннями, що роблять його зручним для роботи в режимі поділу часу і, пізніше, обробки тексту та матричної арифметики. Спочатку Бейсік був реалізований на мейнфреймі GE-265 з підтримкою багатьох терміналів. Попри поширене переконання, у момент своєї появи це була компілювана мова.

    Зростання

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

    Зрілість

    Періодом найбільшого розквіту та розвитку вихідного Бейсіка можна вважати кінець 1970-х – першу половину 1980-х років. У цей період практично всі персональні комп'ютери мали власний інтерпретатор Бейсіка, який часто зашивався в ПЗУ, який у найпростіших комп'ютерах нерідко виконував також функції операційної системи. Майже все більш сильні комп'ютери також мали інтерактивні Бейсік-системи. Характерно, що практично не було компіляторівБейсика, абсолютна більшість реалізацій являли собою стандартний гібрид рядкового редактора та інтерпретатора. Невдоволення примітивізмом вихідного Бейсика породжувало спроби покращити і базові засоби мови, що призвело до появи в деяких реалізаціях складних операторів розгалуження, додаткових видів циклів, іменованих процедур із параметрами.

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

    У середині 1980-х Бейсік став основною мовою в складних моделях програмованих калькуляторів, які якраз на той час досягли потужності, що допускає застосування повноцінної мови високого рівня. Сам факт, що багато виробників, не змовляючись, вибрали в якості основи ЯВУ калькуляторів саме Бейсік, найкраще говорить про поширеність та популярність цієї мови у вказаний час. Так, Бейсік був вбудований у радянський калькулятор «Електроніка МК-85» і всі його пізніші моделі. Застосування Бейсика як основне ЯВУ програмованих калькуляторів триває до сьогодні; нині саме «калькуляторний» Бейсик найбільше схожий на початковий варіант 1960-80х років, наприклад, реалізація для калькуляторів CITIZEN містить лише 14 ключових слів (крім математичних функцій) і допускає лише односимвольні імена змінних.

    До кінця 1980-х років персональні комп'ютери стали набагато потужнішими та надавали можливості (такі, як графічний інтерфейс користувача), використання яких у Бейсику було вже не таким зручним. До того ж поява на комп'ютерах «навчального» та «домашнього» класу недорогих трансляторів промислових мов (передусім – Паскаля та Сі), що супроводжуються зручними середовищами програмування та корисними бібліотеками (наприклад, Borland Pascal з бібліотекою Turbo Vision) створило Бейсіку сильну конкуренцію. Бейсік почав здавати позиції, незважаючи на те, що величезна кількість його версій ще використовувалася та продавалася. У цей час почалося стрімке зміна вигляду тих Бейсик-систем, які залишалися у експлуатації. Відбувався поступовий «дрейф» у бік визнаних структурних мов: розширився словник та набір конструкцій мови, з'явилися складні розгалуження, іменовані підпрограми та функції, довгі імена змінних. Крім того, можливості персональних комп'ютерів, що зросли, дозволили відмовитися від характерних особливостей Бейсика, введених для забезпечення ефективної інтерактивної роботи за текстовим терміналом: числових міток у кожного рядка і рядкового редагування.

    Опис

    Синтаксис мови нагадує Фортран та багато елементів - явні запозичення з нього. Мова замислювався на навчання, тому його конструкції максимально прості. Як і в інших мовах програмування, ключові слова взяті з англійської. Основних типів даних два: рядки та числа. З появою версії Visual Basic , а також різних його модифікацій (таких як VBA), в мові з'явилося багато інших типів даних і доповнень, типових для сучасних мов програмування (наприклад, об'єктна модель). Оголошення змінних не потребує спеціальної секції (на відміну Паскаля). Оголошення змінної - це її використання.

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

    Ранні версії

    Зовнішній вигляд програм на ранніх версіях Бейсіка багато в чому визначався тим, що він призначався для програмування з малим редактором тексту. У такому редакторі користувач не мав можливості відображати весь текст на екрані (у вікні), пересуватися по ньому в будь-яких напрямках за допомогою клавіатури та/або миші. У рядкових редакторах користувач для зміни рядка тексту повинен дати команду зміни рядка із заданим номером, потім ввести новий текст вказаного рядка. Для вставки нового рядка потрібно дати команду вставки, знову вказавши номер. Рядки, що вводяться, відображаються на екрані послідовно (незалежно від номерів). Щоб побачити зроблені зміни, застосовується команда виведення тексту, яка виводить рядки у правильному порядку (за зростанням номерів).

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

    10 PRINT "Hello, World!"

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

    Ознакою кінця оператора служив кінець рядка. Щоб на одному рядку розмістити кілька операторів, потрібно поставити між ними двокрапку (це дозволялося не у всіх реалізаціях мови). Імена змінних у більшості діалектів могли складатися тільки з однієї літери, після якої можна було додати одну цифру, що не сприяло поліпшенню розуміння коду. Для створення змінної рядкового типу потрібно було після назви вказати знак долара ($). Змінна без цього знака була числовою (з плаваючою точкою). Було ще кілька модифікаторів, що відносяться до числового типу: знак відсотка (%) - цілий тип, знак оклику (!) - звичайна точність, октоторп (#) - подвійна точність (для даних з плаваючою точкою, тобто десяткових дробів). У деяких версіях числові модифікатори могли не застосовуватись або застосовуватися не всі. В абсолютній більшості програм використовувався лише базовий числовий тип.

    Вирази подібні до більшості інших процедурних мов програмування, але у перших варіантах Бейсика їх набір був досить бідним. У ранніх варіантах число ключових слів не досягало навіть 20. Ось набір основних програмних конструкцій та інтерактивних команд, які були реалізовані практично в будь-якій Бейсік-системі кінця 1970-х років:

    • LIST - Виведення на монітор тексту програми у правильній послідовності рядків. Залежно від реалізації команда підтримувала параметри – діапазон рядків, який потрібно вивести. Іноді підтримувався варіант LLIST - висновок друкувальний пристрій.
    • RUN - Запуск поточної програми з першого оператора рядка із найменшим номером. Міг підтримуватись параметр - номер рядка, з якого потрібно починати виконання.
    • REM - Коментар. Текст, що був після ключового слова і до кінця рядка, на виконання програми не впливав. Багато інтерпретаторів також підтримували як знак початку коментаря одиночну лапку».
    • INPUT "Запрошення: ", Змінна - Виведення на монітор тексту "Запрошення: " і очікування, доки користувач не введе значення і не натисне Enter. Після цього в Змінну запишеться введене значення. У найпростіших реалізаціях запрошення INPUT не підтримувалося і його потрібно було виводити окремим оператором PRINT (див. нижче).
    • PRINT «Текст»; Змінна; Змінна; «Текст» - Виведення на монітор послідовно перерахованих об'єктів (тексту та значень змінних). Залежно від реалізації, по-різному сприймалися роздільники: в одних випадках роздільник приводив до висновку хоча б одну прогалину, в інших значення виводилися поспіль і роздільники потрібно було додавати вручну. Розділювач «;» виконував також функцію придушення переказу на наступний рядок.
    • CLS – Очищення екрана терміналу. Залежно від реалізації, конструкції та режиму роботи терміналу текстовий курсор переносився або у верхній лівий або нижній лівий кут.
    • LET - Надання (формат «LET Змінна = Значення»). В абсолютній більшості версій оператор LET підтримувався, але був факультативним - надання змінним значень записувалися без LET).
    • DIM – Опис масиву. На відміну від звичайних змінних масиви вимагали описи. Максимальна кількість розмірностей масиву визначалася лише реалізацією
    • DATA - Набір даних, розміщених у тексті програми (аналог константи чи масиву-константи).
    • READ – Команда зчитування з набору DATA.
    • GOTO Lbl – Команда безумовного переходу на мітку Lbl.
    • ON… GOTO - Команда обчислюваного переходу - після ON мало йти обчислюване вираз чи змінна, а після GOTO - набір міток через кому. Значення виразу вказувало номер мітки, яку потрібно перейти.
    • IF … THEN … - Звичайний оператор розгалуження. Після IF розміщується логічна умова, після THEN - оператор, який має бути виконаний за істинності цієї умови. Для скорочення запису багато реалізації підтримували угоду - якщо після THEN йде число, це - мітка, яку потрібно перейти, тобто форма «IF … THEN 150» рівнозначна «IF … THEN GOTO 150». Також могли підтримуватись форми «IF…GOTO…»
    • FOR ЗміннаЦикла=ПочатковийЗначення TO КінцевеЗначення STEP Крок - Заголовок циклу з кроком. Ініціює цикл, в якому Змінна послідовно проходить ряд значень від ПочатковогоЗначення до КінцевогоЗначення з кроком Крок. Тіло циклу обмежується заголовком та ключовим словом NEXT. Частина STEP могла опускатися - у цьому випадку крок дорівнював одиниці. Коли змінна циклу виходить за вказані межі, відбувається перехід за відповідний оператор NEXT.
    • NEXT – Завершення тіла циклу з кроком. Оператор показує, що необхідно перейти на заголовок поточного циклу, що виконується FOR і продовжити роботу. У найрозвиненіших реалізаціях NEXT міг містити перелік змінних циклу через кому - це означало, що у цій точці програми завершується тіло одного, а кількох циклів. Застосування NEXT зі змінною також страхувало від порушення логіки програми, оскільки викликало помилку часу виконання, якщо під час виконання цієї команди виявлялося, що активний цикл за тією змінною, ім'я якої зазначено.
    • WHILE Умова - Заголовок циклу з передумовою. Цикл завершувався, якщо умова виявлялася хибно. У цьому випадку відбувався перехід за відповідний заголовок оператор WEND.
    • WEND – Завершення тіла циклу WHILE. Аналог NEXT для циклу з передумовою.
    • GOSUB Мітка - Перехід до підпрограми, що починається з Мітки. Повернення відбувається при досягненні оператора RETURN. Рекурсивний виклик процедури був, як правило, заборонений та призводив до помилки часу виконання.
    • RETURN – Оператор повернення з підпрограми. Виконується безперечний перехід на оператор, наступний за командою GOSUB, який було здійснено перехід до підпрограми.
    • END – Завершення виконання програми. Система виходить в інтерпретатор та користувачеві видається запрошення на введення команд.
    • CHAIN ​​- Завантаження діапазону рядків програми із зовнішнього носія.
    • OPEN – Відкриття файлу даних на зовнішньому носії.
    • CLOSE - Закриття файлу даних на зовнішньому носії.
    • GET - Послідовне читання значень зазначених змінних із файлу з переміщенням файлового покажчика за останній лічений символ.
    • PUT - Послідовний запис значень вказаних змінних у файл із переміщенням файлового покажчика за останній записаний символ.
    • DELETE - Команда інтерактивного режиму - видалення рядка із зазначеним номером.
    • SAVE – Команда інтерактивного режиму – збереження поточної програми у файлі на зовнішньому носії.
    • LOAD – Команда інтерактивного режиму – завантаження в пам'ять програми з файлу на зовнішньому носії. Як правило, за умовчанням вона призводила до знищення раніше завантаженої програми та даних.
    • RENUM - Команда інтерактивного режиму - перенумерація всіх або заданого діапазону рядків програми, починаючи із заданого числа із зазначеним кроком. За замовчуванням перенумеруються всі рядки програми з кроком 10.

    Умовний оператор (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 ​​. Це була одна з найкорисніших можливостей мови, тому що вона дозволяла розбити великий проект на модулі, викликаючи їх у порядку потреби.

    Критика

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

    Різко критикувалося повсюдно поширене початкове навчання програмування, що базується на Бейсіку. Однією з «візитних карток» Едсгера Дейкстри став вислів:

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

    Оригінальний текст(англ.)

    Це практично неможливий для того, щоб хороший програмування до школярів, які повинні бути як пріоритет exposure в BASI: як потенційні програмісти вони є метально mutilated beyond hope of regeneration

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

    Якщо ж говорити про сучасні діалекти і реалізації Бейсика, то вони настільки далеко втекли від первісної форми мови, що все вищесказане навряд чи можна вважати таким, що відноситься до них. Сучасні діалекти Бейсика є досить структурованими мовами, вони можна порівняти за можливостями з такими мовами, як Сі, Паскаль тощо.

    Виробники

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

    Радянські:

    • Вільнюський університет - Вільнюс
    • ВЦ СО АН СРСР - Новосибірськ
    • Нижегородський державний університет імені М. І. Лобачевського - Нижній Новгород

    Реалізації

    • Visual Basic (VBA, VBS, .NET)
    • Rapid-Q basic

    Напишіть відгук про статтю "Бейсік"

    Примітки

    Література

    • Дьяконов V., Munerman V., Samoylova T., Yemelchenkov Ye. The Revolutionary Guide до QBASIC. - Birmingham: Wrox Press Ltd, 1996. - 578 p.
    • Дияконів В. П.Довідник з алгоритмів та програм мовою Бейсік для персональних ЕОМ. – М.: Наука, Фізматліт, 1987. – 240 с.
    • Дияконів В. П.Застосування персональних ЕОМ та програмування мовою Бейсік. – М.: Радіо та зв'язок, 1989. – 288 с.
    • Дияконів В. П.Сучасні зарубіжні мікрокалькулятори. – М.: СОЛОН-Р, 2002. – 400 с.
    Стандарти
    • 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»
    • ГОСТ 27787-88 «Мова програмування БЕЙСІК» (включає стандарт ISO 6373:1984)
    • ANSI X3.113 INTERPRETATIONS-1992 «BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987»

    Посилання

    • Андрій Колесов. Авторський варіант. c незначною літературною правкою у журналі «Наука та життя» № 10/2000, с. 18-20.
    • Препринт Дартмутського коледжу від 1 жовтня 1964 року.
    • Thomas E. Kurtz. , 1977.
    • (англ.)

    Уривок, що характеризує Бейсік

    Так дивно раптом для Наташі здався його лагідний, ніжний, задушевний голос.
    - Не говоритимемо, мій друже, я все скажу йому; але про одне прошу вас - вважайте мене своїм другом, і якщо вам потрібна допомога, порада, просто потрібно буде вилити свою душу комусь - не тепер, а коли у вас ясно буде в душі - згадайте про мене. - Він узяв і поцілував її руку. - Я буду щасливий, якщо буду в змозі... - П'єр зніяковів.
    – Не говоріть зі мною так: я не вартий цього! - скрикнула Наталка і хотіла піти з кімнати, але П'єр утримав її за руку. Він знав, що йому треба щось сказати їй. Але коли він сказав це, він здивувався сам своїми словами.
    - Перестаньте, перестаньте, все життя попереду для вас, - сказав він.
    – Для мене? Ні! Для мене все пропало, – сказала вона із соромом та самоприниженням.
    – Все пропало? – повторив він. – Якби я був не я, а найкрасивіша, найрозумніша і краща людина у світі, і був би вільний, я б зараз на колінах просив руки та любові вашої.
    Наташа вперше після багатьох днів заплакала сльозами подяки та розчулення і глянувши на П'єра вийшла з кімнати.
    П'єр теж услід за нею майже вибіг у передпокій, утримуючи сльози розчулення і щастя, що давили його горло, не влучаючи в рукави, одягнув шубу і сів у сани.
    – Тепер куди накажете? - Запитав кучер.
    «Куди? спитав себе П'єр. Куди ж тепер можна їхати? Невже в клуб чи гості? Всі люди здавалися такими жалюгідними, такими бідними в порівнянні з тим почуттям розчулення і любові, яке він відчував; в порівнянні з тим розм'якшеним, вдячним поглядом, яким вона востаннє через сльози глянула на нього.
    — Додому, — сказав П'єр, незважаючи на десять градусів морозу, розорюючи ведмежу шубу на своїх широких грудях, що радісно дихали.
    Було морозно та ясно. Над брудними, напівтемними вулицями, над чорними дахами стояло темне, зоряне небо. П'єр, тільки дивлячись на небо, не відчував образливої ​​ницості всього земного в порівнянні з висотою, на якій була його душа. При в'їзді на Арбатську площу величезний простір зоряного темного неба відкрився очам П'єра. Майже в середині цього неба над Пречистенським бульваром, оточена, обсипана з усіх боків зірками, але відрізняючись від усіх близькістю до землі, білим світлом, і довгим, піднятим догори хвостом, стояла величезна яскрава комета 1812-го року, та сама комета, яка передвіщала, як казали, всякі жахи та кінець світу. Але в П'єрі ця світла зірка з довгим променистим хвостом не збуджувала жодного страшного почуття. Навпроти П'єр радісно, ​​мокрими від сліз очима, дивився на цю світлу зірку, яка, ніби, з невимовною швидкістю пролетівши незмірні простори по параболічній лінії, раптом, як стріла, що встромилася в землю, вліпилася тут в одне вибране нею місце, на чорному небі, і зупинилася, енергійно піднявши догори хвіст, світячись і граючи своїм білим світлом між незліченними іншими, мерехтливими зірками. П'єру здавалося, що ця зірка цілком відповідала тому, що було в його розквітлій до нового життя, розм'якшеній і підбадьореній душі.

    З кінця 1811-го року почалося посилене озброєння і зосередження сил Західної Європи, і в 1812 році ці сили - мільйони людей (вважаючи тих, які перевозили і годували армію) рушили із Заходу на Схід, до кордонів Росії, до яких так само з 1811 го року стягувалися сили Росії. 12 червня сили Західної Європи перейшли кордони Росії, і почалася війна, тобто відбулася неприємна людського розуму і всієї людської природи подія. Мільйони людей чинили один, проти одного таку незліченну кількість злодіянь, обманів, зрад, крадіжок, підробок і випуску фальшивих асигнацій, грабежів, підпалів та вбивств, якого в цілі століття не збере літопис усіх судів світу і на які, у цей період, люди , які робили їх, не дивилися як на злочини.
    Що справило цю надзвичайну подію? Які були його причини? Історики з наївною впевненістю кажуть, що причинами цієї події були образа, завдана герцогу Ольденбурзькому, недотримання континентальної системи, владолюбство Наполеона, твердість Олександра, помилки дипломатів тощо.
    Отже, варто було тільки Меттерниху, Румянцеву чи Талейрану, між виходом і раутом, гарненько постаратися і написати пошуковіший папірець або Наполеону написати до Олександра: повернути герцогство Ольденбурзькому герцогу.] - і війни б не було.
    Зрозуміло, що такою була справа сучасникам. Зрозуміло, що Наполеону здавалося, що причиною війни були інтриги Англії (як і говорив це острові Св. Олени); Відомо, що членам британської палати здавалося, що причиною війни було владолюбство Наполеона; що принцу Ольденбурзькому здавалося, що причиною війни було скоєне проти нього насильство; що купцям здавалося, що причиною війни була континентальна система, що розоряла Європу, що старим солдатам і генералам здавалося, що головною причиною була необхідність вжити їх у справу; легітимістам того часу те, що необхідно було відновити les bons principes [хороші принципи], а дипломатам того часу те, що все сталося від того, що союз Росії з Австрією в 1809 не був досить майстерно прихований від Наполеона і що незручно був написаний memorandum за № 178. Зрозуміло, що це і ще незліченна, нескінченна кількість причин, кількість яких залежить від незліченної відмінності точок зору, представлялося сучасникам; але для нас – нащадків, які споглядають у всьому його обсязі величезність події, що відбулася і вникає в його простий і страшний зміст, причини ці видаються недостатніми. Для нас незрозуміло, щоб мільйони людей християн убивали і мучили один одного, тому що Наполеон був владолюбний, Олександр твердий, політика Англії хитра і герцог Ольденбурзький скривджений. Не можна зрозуміти, який зв'язок мають ці обставини із самим фактом вбивства та насильства; чому внаслідок того, що герцог скривджений, тисячі людей з іншого краю Європи вбивали та розоряли людей Смоленської та Московської губерній та були вбиті ними.
    Для нас, нащадків, – не істориків, не захоплених процесом дослідження і тому з незатемненим здоровим глуздом споглядають подію, причини її видаються у незліченній кількості. Чим більше ми заглиблюємося в пошук причин, тим більше нам їх відкривається, і всяка окремо взята причина або ціла низка причин видаються нам однаково справедливими самі по собі, і однаково помилковими за своєю нікчемністю в порівнянні з величезністю події, і однаково помилковими через недійсність свою ( без участі всіх інших збіглися причин) зробити подію, що відбулася. Такою ж причиною, як відмова Наполеона відвести свої війська за Віслу і віддати назад Ольденбурзьке герцогство, видається нам і бажання або небажання першого французького капрала вступити на вторинну службу: бо, якби він не захотів йти на службу і не захотів би інший, і третій , І тисячний капрал і солдат, настільки менше людей було б у війську Наполеона, і війни не могло б бути.
    Якби Наполеон не образився вимогою відступити за Віслу і звелів наступати військам, був війни; Але якби всі сержанти не захотіли вступити на вторинну службу, теж війни не могло б бути. Теж не могло б бути війни, якби не було інтриг Англії, і не було б принца Ольденбурзького і почуття образи в Олександрі, і не було б самодержавної влади в Росії, і не було б французької революції і подальших диктаторств та імперії, і всього того , що справило французьку революцію, і таке інше. Без жодної з цих причин нічого не могло б бути. Отже, ці причини – мільярди причин – збіглися для того, щоб зробити те, що було. І, отже, ніщо не було винятковою причиною події, а подія мала відбутися тільки тому, що вона мала відбутися. Повинні були мільйони людей, зрікшись своїх людських почуттів і свого розуму, йти на Схід із Заходу і вбивати собі подібних, так само, як кілька століть тому зі Сходу на Захід йшли натовпи людей, вбиваючи собі подібних.
    Дії Наполеона і Олександра, від слова яких залежало, здавалося, щоб подія відбулася чи не відбулася, - були так само мало довільні, як і дія кожного солдата, що йшов у похід за жеребом або набором. Це не могло бути інакше тому, що для того, щоб воля Наполеона та Олександра (тих людей, від яких, здавалося, залежала подія) була виконана, необхідно було збіг незліченних обставин, без жодної з яких подія не могла б відбутися. Необхідно було, щоб мільйони людей, в руках яких була дійсна сила, солдати, які стріляли, везли провіант і гармати, треба було, щоб вони погодилися виконати цю поодиноких і слабких людей і були приведені до цього безліч складних, різноманітних причин.
    Фаталізм в історії неминучий пояснення нерозумних явищ (тобто тих, розумність яких ми розуміємо). Чим більше ми намагаємося розумно пояснити ці явища в історії, тим вони стають для нас нерозумнішими і незрозумілішими.
    Кожна людина живе для себе, користується свободою для досягнення своїх особистих цілей і відчуває усією істотою своєю, що вона може зараз зробити або не зробити таку ту дію; Але коли він зробить його, то дія ця, досконала в певний момент часу, стає безповоротною і стає надбанням історії, в якій воно має не вільне, а зумовлене значення.
    Є дві сторони життя в кожній людині: життя особисте, яке тим більше вільне, ніж абстрактніше її інтереси, і життя стихійне, роєве, де людина неминуче виконує запропоновані їй закони.
    Людина свідомо живе собі, але служить несвідомим знаряддям задля досягнення історичних, загальнолюдських цілей. Досконалий вчинок неповернений, і дія його, збігаючись у часі з мільйонами дій інших людей, набуває історичного значення. Чим вище стоїть людина на громадських сходах, чим з великими людьми вона пов'язана, тим більше влади вона має на інших людей, тим очевидніша зумовленість і неминучість кожного його вчинку.
    «Серце царево в божій руці».
    Цар є раб історії.
    Історія, тобто несвідоме, спільне, роєве життя людства, будь-якою хвилиною життя царів користується для себе як знаряддям для своїх цілей.
    Наполеон, незважаючи на те, що йому більш ніж коли-небудь, тепер, у 1812 році, здавалося, що від нього залежало verser або verser le sang de ses peuples [проливати чи не проливати кров своїх народів] (як в останньому листі писав йому Олександр), ніколи більше як тепер не підлягав тим неминучим законам, які змушували його (діючи щодо себе, як йому здавалося, по власному свавіллю) робити для спільної справи, для історії те, що мало відбутися.
    Люди Заходу рухалися Схід у тому, щоб вбивати одне одного. І за законом збігу причин підробилися самі собою і збіглися з цією подією тисячі дрібних причин для цього руху і для війни: докори за недотримання континентальної системи, і герцог Ольденбурзький, і рух військ до Пруссії, зроблений (як здавалося Наполеону) для того, щоб досягти збройного світу, і любов і звичка французького імператора до війни, що збіглася з прихильністю його народу, захоплення грандіозністю приготувань, і витрати на приготування, і потреба придбання таких вигод, які окупили б ці витрати, і одурманили почесті в Дрездені, і дипломатичні переговори, які, на думку сучасників, були ведені зі щирим бажанням досягнення світу і які лише уразили самолюбство того й іншого боку, і мільйони мільйонів інших причин, що підробилися під подію, що має відбутися, збіглися з ним.
    Коли дозріло яблуко і падає, чому воно падає? Чи тому, що тяжіє до землі, чи тому, що засихає стрижень, чи тому, що сушиться сонцем, що важче, що вітер трясе його, чи тому, що хлопцеві, що стоїть унизу, хочеться з'їсти його?
    Ніщо не є причиною. Все це тільки збіг тих умов, за яких відбувається всяка життєва, органічна, стихійна подія. І той ботанік, який знайде, що яблуко падає від того, що клітковина розкладається тощо, буде так само правий, і так само не правий, як і та дитина, що стоїть унизу, яка скаже, що яблуко впало від того, що йому хотілося з'їсти його і що він молився за це. Так само правий і не правий буде той, хто скаже, що Наполеон пішов у Москву тому, що він захотів цього, і тому загинув, що Олександр захотів його смерті: як правий і не правий буде той, хто скаже, що завалилася в мільйон пудів підкопана гора впала через те, що останній працівник ударив під неї востаннє киркою. В історичних подіях так звані великі люди суть ярлики, що дають найменувань події, які, як і ярлики, найменше мають зв'язку з самою подією.
    Кожна дія їх, що здається їм довільним для себе, в історичному сенсі мимоволі, а знаходиться у зв'язку з усім ходом історії і визначено споконвічно.

    29 травня Наполеон виїхав із Дрездена, де він пробув три тижні, оточений двором, складеним з принців, герцогів, королів і навіть одного імператора. Наполеон перед від'їздом обласкав принців, королів та імператора, які на те заслуговували, приборкав королів і принців, якими він був не цілком задоволений, обдарував своїми власними, тобто взятими в інших королів, перлами та діамантами імператрицю австрійську і, ніжно обійнявши імпера. як каже його історик, залишив її засмученою розлукою, яку вона - ця Марія Луїза, яка вважалася його дружиною, незважаючи на те, що в Парижі залишалася інша дружина, - здавалося, не в змозі була перенести. Незважаючи на те, що дипломати ще твердо вірили у можливість миру і старанно працювали з цією метою, незважаючи на те, що імператор Наполеон сам писав листа імператору Олександру, називаючи його Monsieur mon frere [Государ брат мій] і щиро запевняючи, що він не бажає війни і що завжди любитиме і поважатиме його, - він їхав до армії і віддавав на кожній станції нові накази, що мали на меті поспішати рух армії від заходу до сходу. Він їхав у дорожній кареті, запряженій шістьом, оточений пажами, ад'ютантами і конвоєм, трактом на Позен, Торн, Данциг і Кенігсберг. У кожному з цих міст тисячі людей із трепетом та захопленням зустрічали його.
    Армія рухалася із заходу Схід, і змінні шестерні несли його туди. 10 червня він наздогнав армію і ночував у Вільковіському лісі, у приготовленій для нього квартирі, в маєтку польського графа.
    На другий день Наполеон, обігнавши армію, в колясці під'їхав до Німана і, щоб оглянути місцевість переправи, переодягнувся в польський мундир і виїхав на берег.
    Побачивши на тому боці козаків (les Cosaques) і степи (les Steppes), що розстилалися, в середині яких була Moscou la ville sainte, [Москва, священне місто,] столиця тієї, подібної до Скіфської, держави, куди ходив Олександр Македонський, - Наполеон, несподівано всім і гидко як стратегічним, і дипломатичним міркувань, наказав наступ, і другого дня війська його почали переходити Неман.
    12-го числа рано-вранці він вийшов з намету, розкинутого в цей день на крутому лівому березі Німану, і дивився в зорову трубу на потоки своїх військ, що випливали з Вільковіського лісу, що розливались по трьох мостах, наведених на Німані. Війська знали про присутність імператора, шукали його очима, і, коли знаходили на горі перед наметом відокремлену від почту фігуру в сюртуку і капелюсі, вони кидали вгору шапки, кричали: «Vive l'Empereur! [Хай живе імператор!] – і одні за іншими, не виснажуючи, витікали, все витікали з величезного лісу, що приховував їх досі, і, засмучуючись, по трьох мостах переходили на той бік.
    – On fera du chemin cette fois ci. Ох! quand il s'en mele lui meme ca chauffe... Nom de Dieu... Le voila!.. Vive l'Empereur! Les voila on les Steppes de l'Asie! Vilain pays tout de meme. Empereur!.. preur! Si on me fait gouverneur aux Indes, Gerard, je te fais ministre du Cachemire, c'est arrete. Vive l'Empereur! Vive! vive! vive! Les gredins de Cosaques, comme ils filent. Vive l'Empereur! Le voila! Le vois tu? Le petit caporal… Ось як він сам візьметься, справа закипить. Їй богу… Ось він… Ура, імператор! ось вони, азіатські степи ... Однак поганий, Боше. ось він! Бачиш його? Я його два рази як тебе бачив. Маленький капрал. всіх обличчях цих людей був один загальний вираз радості про початок давно очікуваного походу і захоплення і відданості до людини в сірому сюртуку, що стояв на горі.
    13 го червня Наполеону подали невеликого чистокровного арабського коня, і він сів і поїхав галопом до одного з мостів через Німан, невпинно оглушуваний захопленими криками, які він, очевидно, переносив тільки тому, що не можна було заборонити їм цими криками виражати свою любов до нього; але ці крики, супутні йому скрізь, обтяжували його і відволікали його від військової турботи, що охопила його з того часу, як він приєднався до війська. Він проїхав по одному з мостів, що гойдалися на човнах, на той бік, круто повернув ліворуч і галопом поїхав до Ковно, що передував завмиравши від щастя, захопленими гвардійськими кінними єгерями, розчищаючи дорогу по військах, що скакали попереду його. Під'їхавши до річки Вілії, він зупинився біля польського уланського полку, що стояв на березі.
    - Віват! – також захоплено кричали поляки, засмучуючи фронт і давлячи один одного, щоб побачити його. Наполеон оглянув річку, зліз із коня і сів на колоду, що лежала на березі. По безсловесному знаку йому подали трубу, він поклав її на спину щасливого пажа, що підбіг, і став дивитися на той бік. Потім він поринув у розглядання аркуша карти, розкладеного між колодами. Не підводячи голови, він сказав щось, і двоє його ад'ютантів поскакали до польських уланів.
    – Що? Що він сказав? – чулося в лавах польських уланів, коли один ад'ютант підскакав до них.
    Було наказано, знайшовши брід, перейти на той бік. Польський уланський полковник, гарний старий чоловік, розчервонівшись і плутаючись у словах від хвилювання, спитав у ад'ютанта, чи дозволить йому перепливти зі своїми уланами річку, не шукаючи броду. Він із очевидним страхом за відмову, як хлопчик, який просить дозволу сісти на коня, просив, щоб йому дозволили перепливти річку в очах імператора. Ад'ютант сказав, що, ймовірно, імператор не буде незадоволений цією зайвою старанністю.
    Як тільки ад'ютант сказав це, старий вусатий офіцер зі щасливим обличчям і блискучими очима, піднявши вгору шаблю, прокричав: «Віват! - І, скомандувавши уланам слідувати за собою, дав шпори коня і підскакав до річки. Він злісно штовхнув коня, що зам'явся під собою, і бухнувся у воду, прямуючи вглиб до швидкої течії. Сотні уланів поскакали за ним. Було холодно й моторошно на середині та на бистрині течії. Улани чіплялися один за одного, звалювалися з коней, коні деякі тонули, тонули й люди, інші намагалися пливти хтось на сідлі, хтось тримаючись за гриву. Вони намагалися пливти вперед на той бік і, незважаючи на те, що за півверсти була переправа, пишалися тим, що вони пливуть і тонуть у цій річці під поглядами людини, яка сиділа на колоді і навіть не дивилася на те, що вони робили. Коли ад'ютант, що повернувся, обравши зручну хвилину, дозволив собі звернути увагу імператора на відданість поляків до його особи, маленька людина в сірому сюртуку встав і, покликавши до себе Бертьє, почав ходити з ним туди-сюди по березі, віддаючи йому накази і зрідка невдоволено поглядаючи на уланів, що тонули, розважали його увагу.
    Для нього було не нове переконання в тому, що присутність його на всіх кінцях світу, від Африки до степів Московії, однаково вражає і кидає людей у ​​безумство самозабуття. Він наказав подати собі коня і поїхав у свою стоянку.
    Людина сорок улан потонула в річці, незважаючи на вислані на допомогу човни. Більшість прибилася назад до цього берега. Полковник і кілька людей перепливли річку і ледве вилізли на той берег. Але тільки-но вони вилізли в мокрій сукні, що стікає струмками, вони закричали: «Віват!», захоплено дивлячись на те місце, де стояв Наполеон, але де його вже не було, і в ту хвилину вважали себе щасливими.
    Увечері Наполеон між двома розпорядженнями – одне про те, щоб якнайшвидше доставити заготовлені фальшиві російські асигнації для ввезення до Росії, та інше про те, щоб розстріляти саксонця, у перехопленому листі якого знайдені відомості про розпорядження щодо французької армії, – зробив третє розпорядження – про зарахування польського полковника, що кинувся без потреби, до когорти честі (Legion d'honneur), якою Наполеон був головою.
    Qnos vult perdere - dementat. [Кого хоче занапастити – позбавить розуму (лат.)]

    Російський імператор тим більше місяця вже жив у Вільні, роблячи огляди і маневри. Ніщо не було готове для війни, на яку всі очікували і для приготування до якої імператор приїхав з Петербурга. Спільного плану дій не було. Коливання про те, який план із усіх тих, що пропонувалися, має бути прийнятий, тільки ще більше посилилися після місячного перебування імператора у головній квартирі. У трьох арміях був у кожній окремий головнокомандувач, але спільного начальника над усіма арміями був, і імператор не приймав він цього звання.
    Чим довше жив імператор у Вільні, тим менше готувалися до війни, втомившись чекати її. Всі прагнення людей, що оточували государя, здавалося, були спрямовані лише на те, щоб змушувати государя, приємно проводячи час, забути про майбутню війну.
    Після багатьох балів і свят у польських магнатів, у придворних і в самого государя, у червні місяці одному з польських генерал-ад'ютантів государя прийшла думка дати обід і бал государеві від імені його генерал-ад'ютантів. Думка ця радісно була прийнята всіма. Государ виявив згоду. Генерал ад'ютанти зібрали за підпискою гроші. Особа, яка найбільше могла бути приємна государю, була запрошена бути господаркою балу. Граф Бенігсен, поміщик Віленської губернії, запропонував свій заміський будинок для цього свята, і 13 червня було призначено обід, бал, катання на човнах та феєрверк у Закреті, заміському будинку графа Бенігсена.
    Того самого дня, коли Наполеоном був відданий наказ про перехід через Німан і передові війська його, відтіснивши козаків, перейшли через російський кордон, Олександр проводив вечір на дачі Бенігсена - на балі, що дається генерал ад'ютантами.
    Було веселе, блискуче свято; знавці справи казали, що рідко збиралося в одному місці стільки красунь. Графиня Безухова серед інших російських жінок, які приїхали за государем з Петербурга до Вільні, була цьому балі, затемняючи своєю важкої, так званої російської красою витончених польських жінок. Вона була помічена, і пан удостоїв її танцю.
    Борис Друбецькой, en garcon (холостяком), як він казав, залишивши свою дружину в Москві, був також на цьому балі і, хоч не генерал-ад'ютант, був учасником на велику суму у підписці для балу. Борис тепер був багата людина, що далеко пішла в почестях, яка вже не шукала заступництва, а на рівній нозі стояла з вищими зі своїх однолітків.
    О дванадцятій годині ночі ще танцювали. Елен, яка не мала гідного кавалера, сама запропонувала Борису мазурку. Вони сиділи у третій парі. Борис, холоднокровно поглядаючи на блискучі оголені плечі Елен, що виступали з темного газового із золотом сукні, розповідав про старих знайомих і водночас непомітно для самого себе та для інших, ні на секунду не переставав спостерігати государя, який перебував у тій же залі. Государ не танцював; він стояв у дверях і зупиняв то тих, то інших тими лагідними словами, які він тільки умів говорити.
    На початку мазурки Борис бачив, що генерал ад'ютант Балашев, одне з найближчих осіб до государя, підійшов до нього і непридворно зупинився поблизу государя, який говорив із польською жінкою. Поговоривши з дамою, государ глянув запитливо і, мабуть, зрозумівши, що Балашев вчинив так тільки тому, що на те були важливі причини, трохи кивнув дамі і звернувся до Балашева. Щойно Балашев почав говорити, як здивування виразилося на обличчі государя. Він узяв під руку Балашева і пішов з ним через залу, несвідомо для себе розчищаючи по обидва боки сажні на три широку дорогу, що стояли перед ним. Борис помітив схвильоване обличчя Аракчеєва, тоді як государ пішов із Балашевим. Аракчеєв, спідлоба дивлячись на государя і сопучи червоним носом, висунувся з натовпу, ніби чекаючи, що государ звернеться до нього. (Борис зрозумів, що Аракчеєв заздрить Балашеву і незадоволений тим, що якусь, очевидно, важливу, новину не через нього передано государю.)
    Але пан з Балашевим пройшли, не помічаючи Аракчеєва, через вихідні двері до освітленого саду. Аракчеєв, притримуючи шпагу і злісно оглядаючись навколо себе, пройшов кроків за двадцять за ними.
    Поки Борис продовжував робити фігури мазурки, його не переставала мучити думку про те, яку новину привіз Балашев і яким чином дізнатися її перш за інших.
    У фігурі, де йому треба було вибирати дам, шепнувши Елен, що він хоче взяти графиню Потоцьку, яка, здається, вийшла на балкон, він, ковзаючи ногами паркетом, вибіг у вихідні двері в сад і, помітивши государя, що входить з Балашевим на терасу. , зупинився. Государ із Балашевим прямували до дверей. Борис, квапившись, ніби не встигнувши відсунутися, шанобливо притиснувся до готелю і нагнув голову.
    Государ із хвилюванням особисто ображеної людини домовляв такі слова:
    - Без оголошення війни вступити до Росії. Я помирюся тільки тоді, коли жодного озброєного ворога не залишиться на моїй землі, – сказав він. Як здалося Борисові, государю приємно було висловити ці слова: він був задоволений формою висловлювання своєї думки, але був незадоволений тим, що Борис почув їх.
    – Щоб ніхто нічого не знав! - додав государ, насупившись. Борис зрозумів, що це стосувалося його, і, заплющивши очі, злегка нахилив голову. Пан знову увійшов до зали і ще близько півгодини пробув на балі.
    Борис перший дізнався звістку про перехід французькими військами Німану і завдяки цьому мав нагоду показати деяким важливим особам, що багато, приховане від інших, буває йому відомо, і тому мав нагоду піднятися вище в думці цих осіб.

    Несподівана звістка про перехід французами Німана була особливо несподівано після місяця очікуваного очікування, і на балі! Государ, у першу хвилину отримання звістки, під впливом обурення і образи, знайшов те, що стало потім знаменитим, вислів, яке сподобалося йому і виражало цілком його почуття. Повернувшись додому з балу, государ о другій годині ночі послав за секретарем Шишковим і звелів написати наказ військам і рескрипт до фельдмаршала князя Салтикова, в якому він неодмінно вимагав, щоб були вміщені слова про те, що він не помириться доти, доки хоча один озброєний француз залишиться на російській землі.
    Другого дня було написано наступного листа до Наполеона.
    «Monsieur mon frere. J'ai appris her que malgre la loyaute avec laquelle j'ai maintenu mes engagements над Votre Majeste, se troupes on franchis les frontiers de la Russie, et je recois al'instant de Petersbourg un note par laquelle le comte Lauriston, po cette agression, annonce que Votre Majeste si's consideree comme en etat de guerre avec moi des le moment ou le prince Kourakine a fait la demande de ses passeports. Les motifs sur lesquels le duc de Bassano fondait son refus de les lui delivrer, n"auraient jamais pu me faire supposer que cette demarche servirait jamais de pretexte l"agression. En efet cet ambassadeur n"y jamais ete autorise comme il l"a declare lui meme, et aussitot que j"en fus informe, je lui ai fait connaitre combien je le desapprouvais en lui donnant l'ordre de rester a son poste. Si Votre Majeste ''єш pas intentionnee de verser le sang de nos peuples pour un malentendu de ce genre et qu'elle consente a retirer ses troupes du territoire russe, je regarderai ce qui' est passe comme non avenu, et un accommodement entre nous sera possible. Il depend encore de Votre Majeste d'eviter a l'humanite les calamites d'un nouvelle guerre.
    Je suis, etc.
    (Signe) Alexandre».
    [«Пане брате мій! Вчора дійшло до мене, що, незважаючи на прямодушність, з якою я дотримувався моїх зобов'язань щодо Вашої Імператорської Величності, війська Ваші перейшли російські кордони, і тільки тепер отримав з Петербурга ноту, якою граф Лорістон сповіщає мене, з приводу цього вторгнення, що Ваша Величність вважаєте себе у неприязних стосунках зі мною, відколи князь Куракін зажадав свої паспорти. Причини, на яких герцог Бассано засновував свою відмову видати ці паспорти, ніколи не могли б змусити мене припускати, щоб вчинок мого посла став приводом до нападу. І насправді він не мав на те від мене наказу, як було оголошено їм самим; і як тільки я дізнався про це, то негайно висловив моє невдоволення князю Куракину, наказавши йому виконувати досі доручені йому обов'язки. Якщо Ваша Величність не схильні проливати кров наших підданих через подібне непорозуміння і якщо Ви згодні вивести свої війська з російських володінь, то я залишу поза увагою все, що сталося, і угода між нами буде можлива. Інакше я змушений відбивати напад, який нічим не був збуджений з мого боку. Ваша Величність, ще маєте можливість позбавити людство від лих нової війни.
    (підписав) Олександр». ]

    13-го червня, о другій годині ночі, государ, покликавши до себе Балашева і прочитавши йому свого листа до Наполеона, наказав йому відвезти цей лист і особисто передати французькому імператору. Відправляючи Балашева, государ знову повторив йому про те, що не помириться до того часу, поки залишиться хоча б один озброєний ворог російської землі, і наказав неодмінно передати ці слова Наполеону. Государ не написав цих слів у листі, тому що він відчував зі своїм тактом, що ці слова незручні для передачі в ту хвилину, коли робиться остання спроба примирення; але він неодмінно наказав Балашеву передати їх особисто Наполеону.
    Виїхавши в ніч з 13-го на 14-е червня, Балашев, супутній трубачом і двома козаками, на світанку приїхав до села Риконти, на французькі аванпости на той бік Німану. Він був зупинений французькими кавалерійськими вартовими.
    Французький гусарський унтер офіцер, у малиновому мундирі та волохатій шапці, крикнув на Балашева, що під'їжджав, наказуючи йому зупинитися. Балашев не відразу зупинився, а продовжував кроком рухатися дорогою.
    Унтер офіцер, насупившись і пробурчавши якусь лайку, насунувся грудьми коня на Балашева, взявся за шаблю і грубо крикнув на російського генерала, питаючи його: чи глухий він, що не чує того, що йому кажуть. Балашев назвав себе. Унтер офіцер послав солдата до офіцера.
    Не зважаючи на Балашева уваги, унтер офіцер почав говорити з товаришами про свою полкову справу і не дивився на російського генерала.
    Надзвичайно дивно було Балашеву, після близькості до вищої влади та могутності, після розмови три години тому з государем і взагалі звиклий за своєю службою до почестей, бачити тут, на російській землі, це вороже і головне – нешанобливе ставлення до себе грубої сили.
    Сонце тільки починало підніматися з-за хмар; у повітрі було свіжо та росисто. Дорогою з села виганяли стадо. У полях один за одним, як бульбашки у воді, спалахували з чувиканням жайворонки.
    Балашев озирався навколо себе, чекаючи на приїзд офіцера з села. Російські козаки, і трубач, і французькі гусари мовчки зрідка дивилися одне на одного.
    Французький гусарський полковник, мабуть, щойно з ліжка, виїхав із села на гарного ситого сірого коня, супутнього двома гусарами. На офіцері, на солдатах та на їхніх конях був вид достатку та чепуруни.
    Це був перший час кампанії, коли війська ще перебували у справності, майже рівної оглядової, мирної діяльності, тільки з відтінком ошатної войовничості в одязі і з моральним відтінком того веселощів і підприємливості, які завжди супроводжують початків кампаній.
    Французький полковник насилу утримував позіхання, але був чемним і, мабуть, розумів усе значення Балашева. Він провів його повз своїх солдатів за ланцюг і повідомив, що бажання його бути представленому імператору буде, ймовірно, негайно виконано, оскільки імператорська квартира, скільки він знає, знаходиться недалеко.
    Вони проїхали село Риконти, повз французькі гусарські конов'язі, вартових і солдатів, які віддавали честь своєму полковнику і з цікавістю оглядали російський мундир, і виїхали на інший бік села. За словами полковника, за два кілометри був начальник дивізії, який прийме Балашева та проводить його за призначенням.
    Сонце вже підвелось і весело блищало на яскравій зелені.
    Щойно вони виїхали за корчму на гору, як назустріч їм з-під гори показалася купка вершників, попереду якої на вороному коні з блискучою на сонці збруєю їхав високий зріст чоловік у капелюсі з пір'ям і чорним, завитим по плечі волоссям, у червоній мантії. довгими ногами, випнуті вперед, як їздять французи. Чоловік цей поїхав галопом назустріч Балашеву, блищачи і майорячи на яскравому червневому сонці своїм пір'ям, камінням і золотими галунами.
    Балашев уже був на відстані двох коней від вершника, що скакав йому назустріч з урочисто театральним обличчям, у браслетах, пір'ї, намистах і золоті, коли Юльнер, французький полковник, шанобливо прошепотів: «Le roi de Naples». [Король Неаполітанський.] Справді, то був Мюрат, званий тепер неаполітанським королем. Хоч і було зовсім незрозуміло, чому він був неаполітанським королем, але його називали так, і він сам був переконаний у цьому і тому мав урочистіший і важливіший вигляд, ніж раніше. Він так був упевнений у тому, що він справді неаполітанський король, що, коли напередодні від'їзду з Неаполя, під час його прогулянки з дружиною вулицями Неаполя, кілька італійців прокричали йому: «Viva il re!», [Хай живе король! (італ.)] він із сумною усмішкою повернувся до дружини і сказав: «Les malheureux, ils ne savent pas que je les quitte demain! [Нещасні, вони не знають, що я їх завтра залишаю!]
    Але незважаючи на те, що він твердо вірив у те, що він був неаполітанський король, і що він шкодував про прикрощі своїх підданих, останнім часом, після того як йому наведено було знову вступити на службу, і особливо після побачення з Наполеоном в Данцигу, коли найясніший швагер сказав йому: «Я вас зробив королем для того, щоб царювати не по своєму, а по моєму.] – він весело взявся. за знайоме йому діло і, як роз'їлий, але не зажирілий, придатний на службу кінь, почувши себе в упряжці, заграв у оглоблях і, розрядившись якомога строкатіший і дорожчий, веселий і задоволений, скакав, сам не знаючи куди й навіщо, дорогами Польща.
    Побачивши російського генерала, він королевськи, урочисто, відкинув назад голову з завитим по плечі волоссям і запитливо подивився на французького полковника. Полковник шанобливо передав його величності значення Балашева, прізвище якого не міг вимовити.

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

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

    Народження

    Зростання

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

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

    Опис

    Синтаксис мови нагадує Фортран та багато елементів - явні запозичення з нього. Мова замислювався на навчання, тому його конструкції максимально прості. Як і в інших мовах програмування, ключові слова взяті з англійської. Основних типів даних два: рядки та числа. З появою версії Visual Basic , а також різних його модифікацій (таких як VBA), в мові з'явилося багато інших типів даних і доповнень, типових для сучасних мов програмування (наприклад, об'єктна модель). Оголошення змінних не вимагає спеціальної секції (на відміну, наприклад, Паскаля). Оголошення змінної - це її використання.

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

    Ранні версії

    Зовнішній вигляд програм на ранніх версіях Бейсіка багато в чому визначався тим, що він призначався для програмування з малим редактором тексту. У такому редакторі користувач не мав можливості відображати весь текст на екрані (у вікні), пересуватися по ньому в будь-яких напрямках за допомогою клавіатури та/або миші. У рядкових редакторах користувач для зміни рядка тексту повинен дати команду зміни рядка із заданим номером, потім ввести новий текст вказаного рядка. Для вставки нового рядка потрібно дати команду вставки, знову вказавши номер. Рядки, що вводяться, відображаються на екрані послідовно (незалежно від номерів). Щоб побачити зроблені зміни, застосовується команда виведення тексту, яка виводить рядки у правильному порядку (за зростанням номерів).

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

    10 PRINT "Hello, World!"

    Змінювати вручну номери вже наявних рядків було небезпечно, оскільки номери виконували роль міток для оператора 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 ​​. Це була одна з найкорисніших можливостей мови, тому що вона дозволяла розбити великий проект на модулі, викликаючи їх у порядку потреби.

    Критика

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

    Однією з «візитівок» Едсгера Дейкстри став вислів: « Студентів, які раніше вивчали Бейсік, практично неможливо навчити хорошому програмуванню. Як потенційні програмісти вони зазнали незворотної розумової деградації».

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

    Виробники

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

    Перехідні Процедурні Об'єктні Мобільні

    Basic4ppc GLBasic NS Basic

     

     

    Це цікаво: