Кое-что о VFP

Процедуры и функции

Что же такое Microsoft Visual FoxPro? Язык программирования, база данных или нечто иное? Немного истории. Изначально FoxBASE создавался как система управления базами данных и был хорошей альтернативой популярного пакета dBase. То есть, была система, призванная управлять большими таблицами dbf формата. В качестве языка программирования использовался язык xBase. Но и уже тогда, в отличие от dBase FoxBASE был компилятором! То есть написанные программы переводились в специальный код, который и выполнялся со скоростью большей, нежели та, которая достигалась прямым выполнением строчек программы. Но FoxBASE не был прямым компилятором, то есть, программы переводились не прямо в машинный код, инструкции микропроцессора, а в некий промежуточный код, так называемый p-код. Дело в том, что для корректного и оптимального, как с точки зрения скорости, так и с точки зрения размеров кода, преобразования требовались значительные ресурсы машины. Ведь язык xBase — это значительно более «высокоуровневый» , и соответственно более абстрактный язык, нежели традиционный языки программирования, изначально ориентированные на программирование машинных операций, такие как BASIC, C, Pascal и др.

В отличие от них, dBase предполагался как язык описания и оперирования понятиями реляционной алгебры, со всеми ее «сущностями, наборами , отношениями и связями». И как правило, попытки построения полных компиляторов xBase оканчивались компиляторами типа Clipper, код которых отлично работал с количеством записей до 1000, неплохо до 10000 и совсем плохо при количестве записей > 100000. В этой среде, среди машин класса AT-286 и господством больших мэйн-фреймов в обработке данных и появилась настольная СУБД FoxBASE.

Несмотря на кажущуюся схожесть с популярной тогда dBase, Fox обладал на голову более мощными возможностями, что и завоевало ему заслуженную популярность, и, заодно показало его создателям правильность пути. «Верной дорогой идете, товарищи!» Настоящий переворот произошел после выхода в свет FoxPro. Приставка Pro показывала , что это больше среда разработчика, нежели конечного пользователя. И действительно, СУБД стала больше ориентированна на разработку приложения, нежели на его выполнение. Язык xBase был значительно дополнен многочисленными конструкциями для оформления экрана, отчетов, меню, интерфейса, как сейчас принято говорить. Были внедрены средства упрощения разработки, построители выражений, меню, окон: Это была попытка визуального программирования под ДОС!!! Но, кроме внешних изменений, были и внутренние.

Компания Fox Software разработала и внедрила новый формат построения индексов, так называемые компактные компаудные индексы, которые значительно меньше, чем обычные. Была внедрена внутренняя поддержка SQL, был внедрен оптимизатор доступа Rushmore. О нем стоит поговорить отдельно. Дело в том, что как происходит оптимизация доступа и выборок Rushmore точно не знает никто. До сих пор (!) более или менее внятного и полного описания его мне не встречалось, но то, что с грамотным его применением скорость выборок возрастает в сотни и тысячи раз (!) — факт остается фактом. Неудивительно, что с такими «наворотами» FoxPro легко оставлял позади всех своих конкурентов. И вот здесь то и была скуплена «на корню» компания Fox Software гигантом Microsoft.

Появилось несколько версий FoxPro 2.x (.5, .6) и под ДОС и под Windows, и все: Microsoft на некоторое время замолчал, проталкивая на рынке средства программирования, такие как Visual Basic, Visual C и т. д. Кстати о последних. Не секрет, BACIS изначально разрабатывался как язык «для всех», но значительные его изменения, сделавшие его визуальным уже требовали специального обучения языку и технологии программирования. И в такой ситуации Microsoft был просто обязан выдвинуть на свет что-то для разработчиков программного продукта.

Тем более на фоне шумного успеха среды визуального программирования DELPHI. Таким образом Microsoft взял курс на развитие средств разработчика с приставкой Visual. FoxPro не был исключением, и вскоре появилась первая версия — Visual FoxPro 3, как продолжение FoxPro 2.x. Visual FoxPro стал полностью ориентирован на разработчика программного продукта, а не на конечного пользователя. Отличия и расширения, приобретенные им с приставкой Visual, огромны! Несмотря на заверения Microsoft, программист, работавший с FoxPro, смотрит на VFP некоторое время, как «баран на новые ворота», испытывая при этом чувство «легкого опупения». Ведь VFP похож на своих предшественников так же как DELPHI похожа на Turbo Pascal.

С другой стороны, надо отдать должное разработчикам, VFP обеспечивает практически 100% совместимость с программами, написанными на любой предыдущей версии. Правда, цена такой совместимости — это огромнейшее разнообразие путей и способов реализации одной и той же операции, «по старинке» и «по-новому». Язык xBase в диалекте FoxPro стал массивным, пугающим своими конструкциями, а в каких-то местах вообще перестал быть xBase. Но все же, благодаря репутации «чертовски» быстрой СУБД, VFP привлек к себе внимание большого количества пользователей и вскоре стал занимать лидирующее место среди программистов СУБД.

И не зря! Весь нововведения в основном ориентированны на профессиональных разработчиков, и поэтому они быстро нашли свою нишу. При более ближнем рассмотрении начинают открываться такие возможности, которые даже и «не снились» другим средствам разработки приложений СУБД, которые есть на рынке программного продукта. Итак, теперь можно ответить на вопрос в начале этой станицы: Visual FoxPro — это профессиональное средство визуальной разработки приложений СУБД. Конечно же, на VFP можно написать и текстовый редактор, и записную книжку наподобие Notepad, или игру «крестики-нолики», но для всего этого есть и Visual Basic и Delphi.

Основное же направление VFP — это то, в чем не справляются ни Basic ни Delphi — мощные, скоростные системы управления реляционными данными. Здесь я предвижу поток проклятий или, в крайнем случае, ухмылок со стороны поклонников DELPHI в мой адрес, но, поверьте, это так! Не верите? Тогда почитайте телеконференцию news://msnews.microsoft.com/microsoft.public.fox.vfp.queries-sql и посмотрите, о чем толкует народ:

Date: Thu, 22 Apr 1999 17:19:36 +0200
: Hi, I’m using a large (500 Mb) table with more then 2500000 records: :

С таким (!) количеством записей к DELPHI без Interbase SQL Server лучше не подходить, VFP же переваривает это все сам. Убедительно? К тому же, что проще не спорить о том, что не знаешь, а взять это и попробовать. Я уверен, если Вы работаете с большими массивами данных, вскорости Вы придете к VFP и полюбите его.