ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 1 Бейсик повзрослел! Дэйв Джюэл Готов поспорить, что без языка Бейсик фирма 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 |