История языка Basic весьма длинна и поучительна. Еще бы, ведь это один из самых старых языков программирования. Создателями его были John George Kemeny и Тоm Kurtz, работавшие в Дортмундском колледже в 1964 году. Свой язык они назвали по первым буквам слов «Beginner's All-purpose Symbolic Instruction Code». Кроме того, имелась ввиду ассоциация со словом «базовый». Новый язык быстро завоевал популярность благодаря своей простоте в изучении, особенно среди начинающих. Собственно, как и Pascal, Basic был предназначен для обучения студентов. Возможно, это и повлияло на то, что два человека, теперь широко известных, Пол Аллен и Уильям Гейтс в далеком 1975 году начали разрабатывать интерпретатор Бейсика для персонального компьютера Altair, основав в дальнейшем компанию Microsoft, ставшую одной из крупнейших компьютерных империй. В те далекие годы Basic стал первым продуктом, выпущенным этой компанией. На этом история Бейсика, однако, не заканчивается. Он был успешно перенесен на другие компьютеры, такие как Apple, Commodore и Atari. Затем интерпретатор был написан для только что появившегося компьютера IBM PC. Он не только поставлялся как программа, но и зашивался в ПЗУ компьютера. Многие ветераны, возможно, еще помнят времена, когда после включения машины даже при отсутствии винчестера или дискет можно было писать программы на встроенном Бейсике. Но все это был еще не тот язык, который мы знаем сейчас. Нумерованные строки, отсутствие структурных конструкций и типизации, а также интерпретируемость мешали писать нормальные программы на ранних версиях Basic. И Microsoft не останавливался! В середине 80-х годов им был реализован QuickBasic (последняя версия 4.5). Это полностью компилируемый язык, с нормальными структурными конструкциями, пользовательскими типами данных, причем еще и совместимый со старыми версиями (Basic и GW Basic). По тем временам это был большой шаг вперед Basic стало возможным использовать наравне с Pascal или С. Но и это был еще не конец. С появлением Windows и моды на визуальные средства разработки изменился и Basic. Его новая версия, названая Visual Basic, была отлично приспособлена для написания несложных программ с развитым пользовательским интерфейсом. VB наравне с VC++ и сейчас остается весьма популярным в народе средством разработки под Windows. Это может прозвучать странно, но существуют и стандарты для Basic. Два стандарта ANSI (1978 и 1987 годов) и два ISO (1984 и 1991). Последний из стандартов официально именуется ISO Standard for Full BASIC (1SO/IEC 10279 1991). Честно говоря, я не заглядывал в эти документы и возможно пропустил много интересного. Назначение, синтаксис, семантика Как было сказано выше, Basic предназначался для обучения людей простым приемам программирования, дабы потом им было легче перейти на более сложные языки типа Algol, Fortran и т.п. Вообще говоря для этих целей он и использовался, но благодаря стараниям Microsoft стал языком общего назначения. Изначально Basic был языком со слабой типизацией на манер фортрановской, определение типов переменных производилось по их именам. Например,Str$ — строковая переменная. Особо описывались только массивы. Средства для вызова процедур были убогими равно как и другие структурные конструкции. В QuickBasic язык был практически полностью реструктурирован. Появились пользовательские типы объявления переменных, процедуры, структурный оператор ветвления IF-THEN-ELSE-ENDIF. Наконец, стала необязательной нумерация строк. Язык стал компилируемым. Начиная с 5-й версии, в VisualBasic были добавлены объектные расширения, которые, впрочем, не слишком мощны. Новое дыхание Basic приобрел в качестве скриптового языка, используемого в прикладных программах Microsoft (Visual Basic for Application) и на web-страницах (VB Script). Правда, никто кроме Microsolt эти языки не реализует. В нашем примере мы ограничимся использованием QuickBasic 4.5 как наиболее простого, но в тоже время полного варианта Basic, освобожденного от исторических наслоений и прочего хлама. VisualBasic уже не вызывает того ощущения стройности, как его предшественник. Как и в C++, новые идеи здесь прогибаются под тяжестью старого синтаксиса. Кроме того, излишняя ориентация на диалог с пользователем тоже вредит краткости и ясности выражения программистской мысли. Андрей Студнев, a_jelly@hotmail.com. Статья из журнала BYTE/Россия, Март 2000 Для того, чтобы наглядно продемонстрировать использование описанных языков на практике нами была выбрана задача, в которой требовалось ввести со стандартного ввода или из файла ряд целых чисел, а затем вывести только нечетные из них, причем в обратном порядке следования. Это одна из простейших задач, которая существенным образом требует для своего решения работы с массивами, циклами, ветвлением и вводом/выводом, а также позволяет продемонстрировать вызовы подпрограмм. При этом она обозрима и легко воспринимается. Листинг. Basic ' This is Basic reverse example DIM Str(10) AS LONG ' создадим массив из 10 32-битных целых DIM num AS LONG ' переменная целого типа
file$ = COMMAND$ ' берем имя файла из командной строки OPEN file$ FOR INPUT AS #1 ' открываем файл для текстового ввода Count = 0 ' счетчик найденных строк FOR i = 1 ТО 10 ' цикл от 1 до 10 LINE INPUT #l, CurLine$ ' введем очередную строку num - VAL(CurLine$) ' преобразуем строку в число IF num MOD 2 <> 0 THEN ' если результат не делится на 2, Count = Count + 1 ' увеличим счетчик нечетных чисел Str(Count) = num ' заполним очередной элемент массива END IF NEXT i ' конец цикла
FOR i = Count TO 1 STEP -1 ' проход по массиву в обратном порядке PRINT Str(i) ' печатаем очередное значение NEXT i ' конец цикла ЕND ' конец программы Что случится, если в файле встретится не-число? В этом случае функция VAL просто вернет 0, и ничего страшного не произойдет, но и пользователь не узнает об ошибке. Что будет, если число выйдет за разрядную сетку? В данном случае — банальное переполнение, после которого программа будет прервана. В первых двух строках продемонстрирована возможность явного объявления типов переменных. Однако это делать не обязательно.
|