Этот сайт предназначен, прежде всего, людям, ностальгирующим по ушедшим РУССКОМУ СЛОВУ, Windows 3.1, ФОТОНУ, процессорам 486SX и иже с ними.
Конечно, времена должны идти вперед, но почему они обязательно должны уходить?
StuhlbergR 2007-2009 ©
|
Все течет, все изменяется, или от "быстрого" Бейсика к "профессиональному"
А.А. Колесов, О.Р. Павлова
В свое время на смену "простому" Бейсику пришел "быстрый" (см. "Мир ПК", №4/91). Теперь настала очередь "профессионального".
Стоит ли тратить время на изучение языка и программирование на нем, если через год он будет представлять интерес только как антиквариат? С появлением персональных компьютеров языки Си и Паскаль практически полностью вытеснили язык супер-программистов PL/I, и даже "вечный" Фортан, похоже, попал в аутсайдеры.
Могло показаться, что Бейсик не сможет устоять: недаром два года назад фирма Borland заявила о прекращении развития системы TurboBASIC, еще недавно весьма популярной среди программистов. Однако в действительности это был не проигрыш языку Си, а признание превосходства QuickBASIC фирмы Microsoft.
Появление системы QuickBASIC, использующей два типа трансляторов - интерпретатор и компилятор, уравняло его принципиальные возможности с другими компилирующими системами, сохранив все то, что делало Бейсик привлекательным для начинающих программистов, и обеспечив совместимость Бейсик-программ снизу вверх. И хотя большинство пользователей QuickBASIC вполне удовлетворены сегодня версией 4.5, вопрос о том, что нас ждет завтра, волнует многих - тем более, о новых версиях Паскаля и Си мы слышим и читаем постоянно.
Спешим обрадовать почитателей Бейсика: их ждет встреча с новой системой фирмы Microsoft.
Microsoft BASIC, ВЕРСИИ 7.0 и 7.1
"Теперь все, что необходимо вам для серьезного программирования на Бейсике, находится в одном пакете", - с таких слов начинается проспект, рекламирующий новую разработку фирмы Microsoft. Качественно новый уровень пакета отражен в его названии - Microsoft BASIC Professional Development System (система для профессиональной разработки). В отечественной литературе по программированию иногда пишут "Professional BASIC", однако здесь мы будем придерживаться того же сокращенного наименования новой системы, что и его создатели - Microsoft BASIC.
Некоторое представление о Microsoft BASIC дают уже его размеры - на жестком диске он занимает около 10 Мбайт памяти (для сравнения, версия 4.5 занимает всего 1,5 Мбайт). Общий размер файлов встроенной документации для всей системы составляет почти 1,7 Мбайт; кроме того, 1,6 Мбайт занимают текстовые файлы документации.
Первый вариант новой системы - версия 7.0 - был создан в 1989 г., а уже на следующий год появилась версия 7.1, которую фирма Microsoft представляла, в частности, в Москве на выставке "Форум "Мира ПК"" летом 1991 г. Именно об этой версии и пойдет речь.
Отличий версии 7.1 от 7.0 немного (значительная часть их связана с возможностью работы в среде OS/2 в полном объеме), поэтому фирма не выпускала отдельной документации для нее и предлагает использовать руководства "BASIC Language Reference" и "Programmer's Guide" для версии 7.0 и дополнительную информацию, записанную в файле REDAME.DOC. Еще одно отличие состоит в изменении формы дистрибутива: версия 7.1 записана в архивированном виде и требует 16 дискет емкостью 360 Кбайт, либо 5 по 1,2 Мбайт.
Microsoft BASIC - СИСТЕМА ДЛЯ ВСЕХ
И тем не менее, слова о "профессиональной разработке" не должны смущать и пугать программистов, пишущих на Бейсике, которые под влиянием традиционного общественного мнения считают себя "любителями". Как представляется, основное достоинство Microsoft BASIC заключается именно в том, что, сохраняя характерную для Бейсика простую и доступную технологию программирования, он представляет новые расширенные возможности для создания сложных программных комплексов.
Прежде всего, стоит подчеркнуть, что, хотя из названия пакета и исчез фирменный заголовок "Quick", его близкое родство с версией QuickBASIC 4.5 очевидно. Более того, для некоторого "массового" уровня разработок Microsoft BASIC 7.1 даже ближе к QuickBASIC 4.5, чем QuickBASIC 4.5 к QuickBASIC 3.0. Версия 6.0 не имела широкого распространения и осталась в стороне от основоного пути развития пакета: хотя в этой версии и реализованы некоторые идеи, получившие в версии 7.0 законченное, в целом она оказалась тупиковой.
До версии 4.5 система QiuckBASIC развивалась в основном как среда программирования, построенная на базе транслятора-интерпретатора.
Компилятор, имевшийся в системе, позволял получить автономные EXE-модули, но до уровня профессиональных компилирующих систем явно "не дотягивал". Это касается вопросов оптимизации программ (включая настройку на нужную конфигурацию технических средств), создания оверлейных структур, использования библиотек подпрограмм и т.д.
В системе Microsoft BASIC интерпретирующая часть практически не изменилась: будущее профессионального программирования создатели пакета однозначно связывают с компилятором. Соответственно принят новый подход к функциональному расширению языка: если раньше оно состояло в добавлении новых операторов
=текст утерян=
НОВЫХ ВОЗМОЖНОСТЕЙ МНОГО. ЧТО С НИМИ ДЕЛАТЬ?
Краткая характеристика пакета Microsoft BASIC, по сравнению с QuickBASIC версии 4.5, заключается в следующем: он позволяет реализовать более мощные программные комплексы, расширить круг решаемых прикладных задач и сократить затраты на их создание. Кроме того, он полностью обеспечивает разработку программ в среде и для среды OS/2. Этот факт сам по себе говорит о том, что фирма Microsoft надеется на будущее языка Бейсик.
С точки зрения практического использования, новые средства системы можно условно разделить на следующие группы (в порядке возрастания "профессиональности"):
- расширение базового языка;
- модификация среды разработки Бейсик-программ;
- инструментальные библиотеки подпрограмм общего назначения;
=текст утерян=
Расширение базового языка
Если не учитывать появление большого комплекса средств для работы с индексно-последовательными файлами (о них будет отдельный разговор), то внешне базовый язык изменился не очень сильно - появилось несколько новых операторов и модифицирорваны функции некоторых других. Но все эти новшества могут оказаться весьма полезными:
- с помощью оператора TYPE теперь можно включать в запись определяемые пользователем (User-Defined Record Data Type) статистические массивы;
- дополнительный числовой параметр в операторах END, SYSTEM, SYOP позволяет при выходе из программы передать в операционную систему код ошибки;
- можно организовать более эффективную обработку ошибок как на уровне модуля, так и на уровне отдельной процедуры (оператор ON LOCAL ERROR), а также использовать новые операторы EVENT ON и EVENT OFF - включение и выключение системы "ловушек" для обнаружения непредусмотренных ситуаций;
- существенно проще стало переходить на другой диск (CHDRIVE), получать имя текущего каталога (CURDIR$) и список файлов заданного каталога (DIR$);
- оператор REDIM PRESERVE модифицирован так, что позволяет переопределять размеры динамических массивов с сохранением старой информации;
- реализована возможность передавать параметры по значению с использованием ключевого слова BYVAL в Бейсик-процедуры (ранее это можно было делать только при работе с процедурами, написанными на других языках, например, Си), а также передавать в качестве параметров массивы, содержащие символьные строки фиксированной длины;
- новый оператор STACK выполняет изменение размеров стековой памяти (в отличие от оператора CLEAR, без обнуления данных).
Кроме того, реализован новый тип данных - CURRENCY (деньги), который обеспечивает высокую скорость целочисленной математической обработки данных. Это целые числа со знаком, с фиксированной запятой (16 десятичных знаков перед запятой и 4 после), внутреннее представление которых занимает 8 байт. Новый формат совместим с денежным типом данных, принятом в SQL (Structured Query Language - язык структурированных запросов). Соответственно расширен состав операторов преобразования данных из одного типа в другой.
И еще одно, совсем маленькое, но очень приятное для пользователей QuickBASIC усовершенствование - исчезли проблемы с вводом русской строчной буквы "р".
Очевидно, что большинство перечисленных функций несложно реализовать и в версии 4.5 (в том числе, и ввод буквы "р"). Поэтому главным из того, что появилось в языке Microsoft BASIC, следует считать новые возможности использования оперативной памяти.
Во-первых, теперь вы сможете работать с дополнительной памятью (по крайней мере, те из вас, в чьем компьютере имеются соответствующие платы памяти), поскольку Microsoft BASIC поддерживает стандарт EMS (Expanded Memory Specification - спецификация отображаемой памяти) версии 4.0.
Во-вторых, сняты ограничения на суммарную длину символьных строк (раньше все эти строки должны были размещаться в одном и том же ближнем сегменте данных): для их хранения можно использовать многочисленные дальние сегменты, так что сообщение исполняющей системы "Out of string space", получив которое приходилось радикально менять структуру программы, теперь будет забыто.
Работа с дальними сегментами изменила принцип определения адреса символьной строки - теперь вместо адреса смещения (SADD) надо в общем случае использовать полный адрес (SSEGADD) или совместно адреса сегмента (SSEG) и смещения (SADD). Это должны учесть программисты, написавшие вспомогательные процедуры для работы с символьными данными на других языках, например, на Си или Ассемблере. Кстати, для поддержки смешанного программирования при работе с символьными строками в язык добавлено несколько процедур - StringAddres, StringAssign, StringLength, StringRelease.
Рис. 1. Среда QBX. Создание исполняемого модуля
Модификация среды разработки Бейсик-программ
Главное усовершенствование расширенной среды разработки бейсик-программ (Microsoft QuickBASIC Extended Enviroment - QBX.EXE) также относится к работе с памятью. Сняты былые ограничения на размеры программ при работе в среде (в версии 4.5 реально можно было загрузить в виде исходных модулей не более 5000-5500 строк текста). Правда, для больших программ нужен и соответствующий объем оперативной памяти; если же ее всего 1 Мбайт, не исключены некоторые проблемы: программа QB.EXE занимает 279 Кбайт, а QBX.EXE - целых 325.
Внешние среды QBX и QB 4.5 очень похожи. В главном меню добавился только пункт UTILITY - обращение к команде DOS без выхода из среды QBX.EXE. Кроме того, программист может создать свое небольшое (до 8 пунктов) меню стандартных обращений к DOS.
В редакторе QBX (меню Edit) теперь предусмотрено несколько шагов отката (Undo) и обратного отката (Redo); добавилась также возможность переопределить действие различных клавиш. Используя команду Print (меню File), можно вывести текст программы или содержимое справочника (интерактивной подсказки) на любое периферийное устройство, известное DOS, например, в дисковый файл. А отладчик среды позволяет следить за значениями 16 переменных одновременно.
Удобнее и понятнее стала структура справочника. Увеличился его размер: соответствующие файлы занимают теперь 648 Кбайт (в версии 4.5 - 460 Кбайт). Но главное, пользователь может сам дополнять и настраивать справочные HLP-файлы в соответствии со своими кокретными требованиями.
И, наконец, программист получил возможность управлять режимом создания EXE-модулей и библиотек непосредственно из среды QBX.EXE (в QB.EXE практически все режимы работы компилятора были раз и навсегда настроены по умолчанию, так что для работы с другими режимами требовалось покинуть среду). Опции компилятора выбираются с помощью диалоговых окон; кроме того, появилось специальное окно для задания дополнительных опций компилятора, недоступных в режиме диалога (см. рис.1).
Инструментальные библиотеки подпрограмм
Отсутствие библиотек подпрограмм общего назначения являлось серьезным недостатком системы QuickBASIC 4.5. Правда, необходимо учитывать, что в силу специфики развития Бейсика это в значительной степени компенсировалось широким набором базовых операторов языка. Например, комплекс графических операторов QuickBASIC фактически представляет собой встроенный непосредственно в язык вариант графической библиотеки TOOLKIT. И тем не менее, этих средств для профессионального програмирования явно не достаточно.
В новой версии фирма Microsoft предлагает инструментарий BASIC Toolbox, который включает три библиотеки.
- User Interface Toolbox - процедуры для поддержки диалога в текстовом режиме экрана: создание меню, вывод символьных данных в окна, а также работа с "мышью".
- Presentation Graphics Toolbox - процедуры для представления данных в графической форме; с их помощью можно создавать круговые диаграммы, вертикальные и горизонтальные гистограммы, линейные графики и пр. (см. рис. 2-4). Кроме того, библиотека содержит несколько готовых графических шрифтов (правда, только латинских) и процедуры для работы с ними.
- Matrix Math Toolbox - процедуры для работы с матрицами: нахождение детерминанта, обращение матрицы, преобразование Гаусса, а также сложение, вычитание, умножение и деление матриц.
Привлекательной чертой этого комплекса является то, что он предоставляется пользователю в виде исходных модулей. Все основные модули, естественно, написаны на Microsoft BASIC, но ряд вспомогательных процедур (в основном работа с видеопамятью) реализован на Ассемблере (MASM). Для каждой библиотеки имеются демонстрационные программы, а в тексты голосовых модулей включены краткие инструкции по созданию двоичных библиотек. К сожалению, несмотря на наличие исходного текста, этот инструментарий не удается адаптировать к среде 4.5, поскольку вспомогательные подпрограммы, написанные на Ассемблере, используют обращения к некоторым процедурам, имеющимся только в библиотеках версии 7.1.
Библиотеки Toolbox реализованы в виде нескольких крупных модулей: например, библиотека для работы с окнами экрана (модуль WINDOW.BAS) состоит из 40 процедур и занимает 111 Кбайт. Может быть, кто-то скажет, что работать с большими модулями удобное - меньше сложностей с их подключением к программе, однако этот подход имеет и существенные недостатки - прежде всего то, что ради трех-четырех реально используемых процедур приходится загружать массу ненужных. При этом процедуры внутри модулей столь тесно взаимосвязаны, что разделить крупный модуль на более мелкие невозможно. Подобный способ организации библиотек затрудняет также коррекцию имеющихся в них процедур и добавление новых.
Рис. 2.
Рис. 3.
Рис. 4. Такие диаграммы можно построить с помощью библиотек пакета Presentation Graph
Расширение проблемно-ориентированных функций
Среди новых возможностей проблемно-ориентированного программирования необходимо выделить пакет ISAM (Indexed Sequential Acces Method - индексно-последоватльный метод доступа), который позволяет организовать высокоэффективную работу с базами данных. Пакет полностью интегрирован в язык: загрузка внешних библиотек не требуется; он предоставляет, кроме того, такие новые возможности, как обработка входных сообщений (транзакций), словарь данных и комбинированные индексы.
В состав системы Microsoft BASIC включено также несколько утилит для преобразования файлов в форматах различных баз данных (включая dBase, Btrieve и более ранние версии формата Microsoft ISAM) в индексно-последовательные. Освоить работу с пакетом ISAM можно с помощью демонстрационной программы ISAMDEMO.BAS, а также прикладной программы BOOKLOOK.BAS - управление базой данных гипотетической библиотеки BOOK.MDB (не библиотеки подпрограмм, а библиотеки в тридиционном понимании этого слова). Версия 7.1 полностью поддерживает индексно-последовательный доступ для OS/2.
И, наконец, присутствуют исходные и объектные библиотеки, содержащие процедуры для проведения финансовых расчетов, работы с датой и временем, форматирования данных. Все это, наряду с уже упоминавшимся новым типом данных CURRENCY, существенно упрощает создание прикладных программ для решения задач, связанных с предпринимательской деятельностью, торговыми и финансовыми операциями и т.д.
Управление структурой и кодом программы
Создание больших прикладных комплексов требует эффективного управления структурой и кодом программы. Система Microsoft BASIC предлагает целый комплекс средств для решения этих проблем.
В новой версии вы можете создавать EXE-модули большего размера, чем это позволял QuickBASIC 4.5 (как по длине исполняемого кода, так и по необходимому программе объему оперативной памяти). Это обеспечивается за счет использования расширенной памяти и дальних сегментов для хранения символьных данных. Кроме того, компилятор и компоновщик программ позволяют создавать EXE-модули оверлейной структуры (run-time overlay), так что теперь программа может иметь размеры до 16 Мбайт в скомпилированном виде и при этом не содержать ни одного оператора CHAIN!
Структура программы может быть оптимизирована с помощью модулей поддержки, называемых также RT (run-time) -модулями. Модуль поддержки представляет некоторый вариант библиотеки внешних процедур, реализованной в формате загрузочного файла. Прикладной EXE-модуль, создаваемый в режиме Requiring RT Module, получается короче, так как в него не включаются процедуры соответствующего RT-модуля. При запуске такого прикладного модуля на выполнение он автоматически загружает необходимый файл поддержки.
Естественно, полный объем памяти, требуемый для работы такой программы, больше, чем у EXE-модулей, созданных в режиме Stand Alone (традиционный вариант создания единого загрузочного модуля), и она дольше загружается в память. Однако при реализации многомодульной системы EXE-файлов, использующих одинаковые RT-модули, выигрыш в дисковой и оперативной (если в ней одновременно находятся несколько прикладных программ) памяти может быть очень значительным.
Возможность такой организации программ существовала и в QuickBASIC 4.5 (что позволяло создавать крупные многомодульные прикладные программные комплексы), но в нем был только один стандартный RT-модуль - BRUN45.EXE. В Microsoft BASIC включено уже несколько RT-модулей, но самое главное - пользователь получил возможность создавать собственные модули поддержки с помощью специальной утилиты BUILDRTM.EXE.
Оптимизация исполняемого кода программы (по размерам и по времени) осуществляется следующими способами:
- настройка кода программы и выбор библиотек стандартных процедур с учетом наличия или отсутствия сопроцессора;
- непосредственная генерация инструкций микропроцессора (для 80286 и выше);
- использование опции оптимизации компилятора /Ot повышает скорость обращения к процедурам программы.
Кроме этого, имеется возможность сокращения размещения программы за счет использования на этапе компоновки обратных модулей с процедурами-"заглушками" (Stub Files) - фиктивными подпрограммами, которые подключаются вместо реальных функций, ненужных в данной программе. Например, если вы не работаете с индексно-последовательным доступом, то можете подключить "заглушечный" модуль NOISAM.OBJ. При использовании только графического режима EGA в прикладном модуле, подсоединив к нему модули NOCGA.OBJ, NOVGA.OBJ, NOHERC.OBJ, вы заблокируете подключение реальных процедур поддержки графических режимов CGA, VGA и HERCULES. А при работе только в текстовом режиме можно применить NOGRAF.OBJ и т.д. В QuickBASIC 4.5 было два "заглушечных" модуля NOEM.OBJ и SMALLERR.OBJ, в новой системе их стало 19.
Дополнительные сервисные возможности
Среда разработки PWB (Programmer's WorkBench - рабочее место программиста) обеспечивает возможность смешанного программирования в операционных системах MS-DOS и OS/2 с использованием любых языков семейства Microsoft. При этом вы можете установить опции каждого компилятора. Нужный компилятор автоматически используется для каждого исходного файла. Удобный, настраиваемый в соответствии с требованиями пользователя многооконный редактор позволяет одновременно работать с несколькими файлами, размеры которых ограничены только свободным местом на диске.
Специальная утилита просмотра Source Browser создает "карту дорог" вашей программы. Такая "карта" позволяет быстро просмотреть последовательность вызова различных процедур в программе, найти определение любой переменной или функции и т.д. Утилита NMAKE, представляющая собой расширение мощного средства XENIX MAKE, позволяет управлять программными комплексами (см. рис. 5).
В среду PWB включен мощный отладчик нового поколения Microsoft CodeView версии 3.0. С его помощью может выполняться в оконном режиме отладка программного комплекса, разные части которого написаны на различных языках.
Полная и всеобъемлющая информация о среде и отладчике содержится в документации, реализованной как интерактивный справочник.
Кроме этого, в систему Microsoft BASIC включено несколько полезных автономных утилит:
- утилита Microsoft QuickHelp обеспечивает полный доступ ко всем файлам документации из командной строки MS-DOS и OS/2;
- утилита HELPMAKE формирует гипертекстовые файлы документации, с ее помощью вы сможете создавать свой собственный справочник;
- утилита BUILDRTM.EXE позволяет создавать модули поддержки с нужной конфигурацией.
Рис. 5. Настройка режимов работы в среде PWB
ПЕРЕХОДИТЬ К НОВОЙ ВЕРСИИ НАДО. НО КОГДА?
Какую же практическую пользу принесет программисту переход от знакомого QuickBASIC 4.5 к Microsoft BASIC 7.1 и стоит ли эта польза усилий, затраченных на поиск новой версии? Ответ на этот вопрос далеко не очевиден.
Проблема освоения нового пакета решается на первом этапе довольно просто. Система обеспечивает полную программную совместимость "снизу вверх", а среда интерпретатора QBX.EXE (версия 7.1) внешне практически полностью идентична QB.EXE (версия 4.5). Таким образом, перейдя к новой версии, можно работать с ней точно так же, как и со старой. Однако сумеете ли вы использовать "профессиональные" возможности системы, и нужны ли они вам реально?
Видимо, 80-90 % пользователей вполне достаточно QuickBASIC 4.5: ведь многие "профессиональные" возможности версии 7.1 необходимы только при создании действительно больших и сложных программных комплексов. Вдобавок, новая система программирования требует более мощной техники. Для полного использования ее возможностей ресурсов IBM PC XT явно маловато, да и AT 286, по-видимому, будет удовлетворять только на начальном этапе работ. Недаром в описании необходимой конфигурации аппаратных средств указано, что желательно наличие дополнительной оперативной памяти.
Однако, как показывает опыт, запросы пользователей растут достаточно быстро, и старые системы программирования перестают их удовлетворять. Что же касается оснащения техникой, то не будем забывать, что многие из нас три года назад еще работали на ДВК или "Искра-266" и об IBM PC AT 286 могли только мечтать.
Поэтому продолжайте спокойно работать в среде QuickBASIC, но, столкнувшись с новой "непреодолимой" проблемой, вспомните, что ее можно легко решить с помощью Microsoft BASIC Professional Development System!
Microsoft Visual Basic ver. 6.5 - семейство Бейсик продолжает свое шествие...
=Мир ПК №5 1992 г.=
Статья была опубликована в журнале "Мир ПК" №5 1992
Программы
|
Большинство предоставленного здесь материала является цитированием со старых номеров компьютерных журналов, таких, как
"Мир ПК" или "Весь Компьютерный Мир". К сожалению, все мои попытки связаться с этими изданиями по поводу вопроса о цитировании были безуспешны.
Издания упорно хранили молчание. Что я разрешил себе расценивать как знак согласия, указывая, тем не менее, повсюду как выходные данные
издания (с работающей ссылкой на Интернет-представительство), так и автора публикации. Тем более, что, в силу срока давности этих публикаций, вряд ли материал можно рассматривать как коммерческий или рекламный,
пусть даже названия фирм здесь и присутствуют (уж без этого никуда).
Ежели появятся какие претензии по оному поводу, прошу
издания связаться со мной
Райво Штулберг |