On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Бейсик повзрослел!

Дэйв Джюэл

   
          Готов поспорить, что без языка Бейсик фирма Microsoft никогда
     не достигла бы тех вершин, на которых она сейчас находится. Прези-
     дент  фирмы Билл Гейтс начал свою профессиональную карьеру в прог-
     раммировании, создав интерпретатор Бейсика  для  одного  из  самых
     первых персональных компьютеров, и уже не смог остановиться.
          Есть люди, которые все еще считают, что слово "профессиональ-
     ный" серьезно не может быть применено к какой-либо  системе  прог-
     раммирования  на Бейсике. Вот ведь и название его расшифровывается
     как Универсальный Символьный Код  для  Начинающих  (Beginners  All
     purpose Symbolic Instruction Code).
          Мне кажется, что этот взгляд несколько  устарел,  хотя  бы  в
     свете широкого диапазона средств, предлагаемых новым компилятором.
     Выпустив   недавно   седьмую   версию   системы   Microsoft  Basic
     Professional, фирма Microsoft хочет показать, что Бейсик  по-преж-
     нему остается серьезным претендентом на звание "профессионального"
     языка программирования.
          
          
                               ПАКЕТ ПОСТАВКИ
          
          Пакет Professional Development System поставляется на 12 дис-
     кетах  вместе с двумя большими книгами под названиями "Руководство
     программиста" и "Справочник по языку Бейсик".
          Есть еще пара руководств, описывающих отладчик CodeView, раз-
     нообразные утилиты и работу с редактором Microsoft Editor. Эти два
     руководства не относятся  непосредственно  к  программированию  на
     Бейсике;  если бы вы покупали транслятор Фортрана или Си, то полу-
     чили бы те же книги. В комплект также входит брошюра для  начинаю-
     щих.  Документация,  как  обычно у фирмы Microsoft, очень высокого
     уровня. Единственное серьезное замечание у меня состоит в том, что
     хотелось бы увидеть более постепенное введение в  программирование
     на  Бейсике  Microsoft для тех, кто не знаком с языком. Справочник
     по языку безусловно не рассчитан на новичков. Руководство програм-
     миста сразу погружает вас в обсуждение средств управления програм-
     мой.
          В число основных компонентов системы входят два варианта ком-
     пилятора  (интегрированная  среда и вариант для командной строки),
     отладчик CodeView, редактор Microsoft Editor и обычный набор  ути-
     лит,  необходимых  для инструментальной системы, таких как линкер,
     утилита MAKE и т.д. В поставку  входит  также  большое  количество
     примеров  программ  с  различными программистскими "штучками". Это
     коллекции полезных процедур, такие как библиотеки для работы с ок-
     нами, меню и манипулятором "мышь". Для всех этих  инструментальных
     средств приведены полные исходные тексты.
                          
                                 ИНСТОЛЛЯЦИЯ
          
          Процедура  инстолляции  Professional Development System прос-
     тая, но ужасно долгая. Она может занять до одного часа (в  зависи-
     мости  от  скорости  работы вашего компьютера и выбранных вами оп-
     ций). Кроме того, вам может понадобиться до  14  Мбайт  свободного
     места  на "винчестере"! Этот объем также зависит от опций, с кото-
     рыми вы хотите инстоллировать пакет.  Процедура  занимает  столько
     времени, поскольку инстоллятор должен создать большое число библио-
     тек и других необходимых компонентов.  После  того,  как  програм-
     ма-инстоллятор  перестала  требовать  у вас дискеты и приступила к
     созданию библиотек, можете отправляться обедать.
          
          
                            "СШИВАЕМЫЕ" ПРОГРАММЫ
          
          Эта версия компилятора Бейсика использует  ту  же  технологию
     "сшивания"  программ, которая впервые была применена в компиляторе
     QuickBasic 4.0. Для тех, кто незнаком с этим термином, поясню, что
     это значит всего-навсего, что компилятор транслирует вашу програм-
     му построчно, по мере того как вы ее набираете на клавиатуре.
          Вместо того чтобы только транслировать исходный текст  в  ма-
     шинные  коды, компилятор сохраняет достаточное количество информа-
     ции об исходном тексте,  чтобы  позволить  вам  просмотреть  текст
     программы и внести в него изменения.
          В  результате, когда вы хотите запустить свою программу, ком-
     пилятору остается сделать совсем немного - ведь перевод  исходного
     текста  на  Бейсике  в  машинные  коды уже сделан. Остается только
     "сшить" различные части программы, чтобы можно было начать  выпол-
     нение. Поэтому для многих программ создается впечатление, что ком-
     пилятор Бейсика работает мгновенно.
          
          
                            РАБОТА С КОМПИЛЯТОРОМ
          
          Интегрированная  среда  компилятора подобна той, которая пос-
     тавляется с системой QuickC фирмы Microsoft и с семейством  транс-
     ляторов фирмы Borland. Интегрированная среда включает в себя текс-
     товый  редактор, транслятор и отладчик, объединенные в одной прог-
     рамме. Очевидно, что такая программа  требует  много  памяти.  Для
     разработки  больших  программ на Бейсике лучше использовать версию
     компилятора для командной строки, поскольку она  позволяет  делать
     намного большие программы. Если вы не можете обойтись без интегри-
     рованной среды, то запускайте компилятор с опцией "No Frills". Эта
     опция освобождает для работы компилятора дополнительную память, но
     при этом вы кое-что потеряете, например, систему контекстной помо-
     щи.
          О  системе помощи стоит сказать особо. Если вы поместите кур-
     сор "мыши" на ключевое слово Бейсика и нажмете правую кнопку  "мы-
     ши",  система QuickBasic немедленно выдаст краткие пояснения к от-
     меченному ключевому слову. Вы можете получить более подробную  ин-
     формацию или даже посмотреть пример программы, которая показывает,
     как использовать то или иное средство языка Бейсик. Программу-при-
     мер можно вставить в файл, который вы  редактируете;  эта  функция
     помощи  впервые  была  использована  фирмой Microsoft в ее системе
     программирования QuickC. По моему мнению, это лучшая система помо-
     щи из поставляемых сейчас к  какому-либо  языку  программирования.
     Фирма Microsoft поставляет утилиту HELPMAKE, позволяющую создавать
     новые  файлы помощи или изменять существующие. Поэтому программист
     может создать библиотеку процедур на Бейсике и передать ее  другим
     программистам  с соответствующим файлом помощи, доступным в интег-
     рированной среде.
          Работа с версией компилятора для командной строки  аналогична
     тому, как это сделано для систем Си и Паскаля фирмы Microsoft. На-
     бор  опций  позволяет  управлять, к примеру, генерацией отладочной
     информации для программ, работающих как в реальном режиме (MS-DOS),
     так и в защищенном режиме (OS/2), и т.д.
          Когда  я использовал QBX (интегрированную среду) для создания
     EXE-файлов (но не для их немедленного выполнения), я  был  удивлен
     тем, что система для этой цели запускала версию компилятора и лин-
     кера для командной строки. Я предполагаю, что это объясняется  от-
     сутствием в QBX средств формирования объектных модулей. По-видимо-
     му, QBX ориентирован только на выполнение программ.
          
          
                                    ЯЗЫК
          
          Когда  я начал изучать программирование на Бейсике (для инте-
     ресующихся ветеранов, это было еще на компьютере ICL  1900!),  мои
     программы  почти всегда напоминали клубок операторов GOSUB и GOTO,
     и не только из-за моей неопытности, а потому, что в то время этими
     операторами, вместе с IF  и  FOR,  почти  полностью  исчерпывались
     средства Бейсика для управления ходом выполнения программы.
          Всякий,  кто  не следил за развитием Бейсика (и, в частности,
     Бейсика фирмы Microsoft), будет приятно удивлен гибкостью и  мощью
     этого языка сегодня.
          Microsoft  Basic поддерживает конструкции SELECT CASE, WHILE,
     WEND и DO LOOP. Это эквиваленты ключевых слов языка  Си  "switch",
     "while"  и  "do". В операторе SELECT CASE можно употреблять компо-
     нент ELSE, подобный "default" языка Си. Ниже приводится пример:
          
          SELECT CASE Choice$
             CASE "1"
             CALL Choice1
             CASE "2"
             CALL Choice2
             CASE ELSE
             PRINT "Invalid choice"
          END SELECT
          
          Вы можете выйти из циклов DO и  FOR  при  помощи  конструкций
     EXIT DO и EXIT FOR. Это эквиваленты "break" в Си.
          К  сожалению,  нет  команды EXIT WHILE, поэтому для выхода из
     цикла WHILE придется изменять значение управляющей циклом перемен-
     ной для срабатывания проверки на конец цикла. Это может  быть  до-
     вольно неудобно.
          Различные   расширения,  включенные  в  Бейсик  специалистами
     Microsoft,  позволяют программам выполнять так называемые "низкоу-
     ровневые" операции почти с той же легкостью, как  это  делается  в
     Си-программах.  Например,  в  приведенном ниже фрагменте программы
     используется процедура INTERRUPT для определения через обращение к
     MS-DOS имени текущего диска.
          
          
             ` $ INCLUDE:   `QBX.BI'
           DIM reg AS RegType
          `Define a register set
           reg.ax = &H1900
           CALL Interrupt (&H21, reg, reg)
           Drive$ = CHR$ ((regs.ax AND &HFF) + 65)
          + ":"
           PRINT "Current Drive is: ", Drive$
          
          
          Сравните с эквивалентным фрагментом на Си:
          
          
          #include    
          union  REGS  reg
          /* Define a register set */
          reg.x.ax = 0x1900;
          int86 (0x21, ®, ®);
          printf ("Current Drive is: %c",
          reg.h.al + 'A');
          
          
          Сходство двух текстов почти очевидно. Фирма Microsoft  многое
     сделала  для того, чтобы дать программистам Бейсика удобство прог-
     раммирования на Си. Аналогичные приведенной низкоуровневые функции
     обслуживают, к примеру, работу с портами ввода-вывода. Старые зна-
     комые - команды PEEK и POKE - обеспечивают доступ к памяти по  аб-
     солютным  адресам,  хотя  их по-прежнему необходимо использовать в
     сочетании с командой DEF SEG, указывающей адрес сегмента.
          
          
                        ИНСТРУМЕНТАРИЙ ДЛЯ ПОСТРОЕНИЯ
                     ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА (ИПИ)
     
          ИПИ - это набор очень полезных процедур, поставляемый  фирмой
     Microsoft для встраивания в ваши программы. Он заслуживает отдель-
     ного упоминания.
          ИПИ  состоит  из  четырех  отдельных модулей - общего, модуля
     окон, модуля "мыши" и  модуля  меню.  Инструментарий  обеспечивает
     программиста  всеми  функциями, необходимыми для высоко-профессио-
     нального создания пользовательского интерфейса программ в  тексто-
     вом  режиме. В число функций входят: полная поддержка манипулятора
     "мышь"; окна для диалога; вертикальные меню; окна переменного раз-
     мера, которые можно перемещать по  экрану.  Есть  также  окна  для
     списков и средства ведения диалога для выбора файлов.
          Фирма Microsoft приводит исходный текст программы uidemo, ко-
     торая  демонстрирует  различные  функции ИПИ. Эта демонстрационная
     программа произвела на меня большое впечатление, поскольку обеспе-
     чиваемый ею интерфейс очень похож на интерфейс самого  компилятора
     QBX.
          Размер  EXE-файла произвел обратное впечатление, поскольку он
     составляет чуть более 100 Кбайт. Очень хорошо для создания дружес-
     твенных интерфейсов, но не подходит для создания резидентных прог-
     рамм. Большой размер загрузочного модуля отчасти объясняется  тем,
     что Microsoft Basic использует среднюю модель памяти (адреса прог-
     рамм по умолчанию - far, адреса данных - near).
          
          
          СРЕДСТВА ИНДЕКСНО-ПОСЛЕДОВАТЕЛЬНОГО МЕТОДА ДОСТУПА (ИПМД)
          
          Средства  ИПМД  (ISAM)  это  еще один набор удобных процедур,
     поставляемых с компилятором. Они, в  частности,  хороши  тем,  что
     обеспечивают функцию отмены транзакции при работе с базами данных.
          Предположим,  к  примеру,  что  вы пишете сервер базы данных,
     подсчитывающий дебет по одному отчету и кредит по другому. Обе эти
     операции должны выполняться одновременно, иначе  целостность  базы
     данных будет нарушена и, как говорят, будет нарушен баланс.
          Если  ваш сервер выполнит одну из этих операций, но не выпол-
     нит другую (например, из-за сбоя в работе сети), необходимо  будет
     отменить транзакцию, чтобы вернуть базу данных в предыдущее состо-
     яние.
          На  практике  транзакции  в базах данных, как правило, значи-
     тельно сложнее, и отмена транзакции может  быть  довольно  сложной
     операцией. Поэтому включение такой функции фирмой Microsoft заслу-
     живает одобрения.
          Функция  отмены реализована через аппарат "точек сохранения".
     Это точки в транзакции, к которым можно  вернуть  обработку,  если
     произойдет  ошибка.  Функция SAVEPOINT (которая может быть вызвана
     во время выполнения транзакции) возвращает уникальное целое число,
     которое можно сохранить в программе. Затем, если случается ошибка,
     программа может вызвать функцию ROLLBACK и передать ей это  сохра-
     ненное  значение. Это своего рода "закладка", мощное средство, ко-
     торое применяется элегантно.
          
          
                                 ЗАКЛЮЧЕНИЕ
          
          Серьезному  программисту,  работающему  на  Бейсике,  систему
     Professional Development System фирмы Microsoft можно порекомендо-
     вать  по  многим причинам. Она может хорошо доказать свою ценность
     для каждого, кто много занимается разработкой небольших и  средних
     прикладных  программ  и  утилит  "на заказ". На меня, в частности,
     произвели впечатление инструментальные средства ИПМД и ИПИ,  кото-
     рые  позволяют программисту с минимальными усилиями создавать про-
     фессионально выглядящие приложения для  работы  с  базами  данных.
     Этот пакет представляет собой также великолепный выбор для опытно-
     го  программиста,  который  хочет войти в мир программирования для
     OS/2 самым безболезненным путем.
          Рекомендовать пакет для разработки крупных  прикладных  прог-
     рамм  можно  с  некоторыми оговорками, касающимися главным образом
     большого размера результирующих  EXE-файлов.  Необходимо,  однако,
     заметить,  что можно линковать прикладную программу с файлами, ко-
     торые фирма Microsoft называет "пеньками". Это  позволяет  сущест-
     венно  уменьшить  размер  программ при условии, что в ней не будут
     использоваться функции некоторых типов. Это направление я не  рас-
     сматривал  в  данном обзоре, но должен к счастью признать, что при
     использовании этой техники окончательные  размеры  программ  могут
     быть существенно сокращены.
          Иногда меня смущало огромное количество библиотечных файлов и
     хотелось увидеть больше подсказок относительно того, какие из  них
     использовать при создании загрузочных модулей.
          По-прежнему  для  работы  в  среде  Windows  или Presentation
     Manager придется программировать на языке Си;  компилятор  Бейсика
     не  может создавать специальные команды пролога и эпилога, необхо-
     димые  для  этих  сред.  Но  если  вас  не  интересуют Windows или
     Presentation Manager, и вы чувствуете, что  Си  вам  не  подходит,
     тогда, возможно, Professional Development System - это система как
     раз для вас.
                                                                  
          
          
                                                   Приложение
          
                Microsoft Basic: основные усовершенствования
          
                                            
          Эта  версия компилятора Бейсика имеет ряд новых средств. Осо-
     бый интерес представляет библиотека ISAM,  функции  которой  могут
     быть вызваны из программ, написанных в среде Microsoft Basic. ISAM
     (индексно-последовательный метод доступа) - это способ организации
     файлов  баз данных с ускоренным доступом к данным. При использова-
     нии библиотеки ISAM появляется возможность разработки  на  Бейсике
     больших  и  сложных  прикладных программ. Реализация процедур ISAM
     фирмы Microsoft позволяет запускать их как  резидентные  программы
     (которые  затем вызываются во время выполнения текущей программы),
     или включать их в основную программу обычным способом редактирова-
     ния связей. Преимуществом первого способа является уменьшение раз-
     меров основной программы, но я предпочитаю собирать все  командные
     последовательности в один EXE-файл, чтобы пользователь не заботил-
     ся о каких-то других файлах.
          Кроме  того, теперь поддерживаются оверлейные структуры, бла-
     годаря чему программы на Бейсике могут быть больше, чем  свободная
     оперативная  память. Оверлейные структуры поддерживаются для прог-
     рамм с размером EXE-файлов до 16 Мбайт. Поскольку транслятор  соз-
     дает  стандартные объектные модули, можно собирать вместе програм-
     мы,  написанные  на  Бейсике,  Си,  Паскале  или  Фортране   фирмы
     Microsoft.  Система  может  быть также использована для разработки
     прикладных программ на Бейсике для среды  OS/2,  и  большая  часть
     поставляемых  инструментальных  средств (в том числе текстовый ре-
     дактор Microsoft Editor) может работать в этой операционной систе-
     ме. Однако библиотека процедур ISAM расчитана только на операцион-
     ную систему MS-DOS, при программировании для OS/2 ее  использовать
     нельзя.  Кроме того, Microsoft Basic пока не предоставляет средств
     для создания "связанных" EXE-файлов (это особым образом  создавае-
     мые EXE-файлы, которые могут выполняться как в MS-DOS, так и в за-
     щищенном режиме OS/2).


Литература по Microsoft Visual Basic