Успех и закат славы
Если вы никогда ничего не слышали о Visual FoxPro, значит, вы стали интересоваться информационными технологиями в ту эпоху, когда этот программный продукт уже пережил пик своей популярности. А если нет - почему бы не вспомнить об этом действительно интересном и полезном средстве разработки?
Введение, или совсем чуть-чуть
истории
Разработка приложений, взаимодействующих с базами данных, являлась делом более чем актуальным со времен появления первых систем управления базами данных. В связи с этим ничуть не удивительно, что на рынке средств разработки приложений появилось достаточно много программных продуктов, "заточенных" именно под работу с базами данных. Появлялись эти среды, конечно, в такие стародавние времена, что не всякий старожил форума "Компьютерных вестей" их вспомнит, но, тем не менее, было когда-то и такое славное время.
Вот тогда-то и появился инструмент, которому впоследствии суждено было войти в историю индустрии разработки программного обеспечения под именем FoxPro. Началась же история этого, без преувеличений, легендарного средства разработки более четверти века назад, в уже далеком 1984 году, когда компания Fox Software начала проект под названием FoxBase. Долго ли, коротко ли, но в 1992 году компанию приобрела разросшаяся не на шутку корпорация Microsoft, и именно тогда у продукта, который уже назывался FoxPro, в названии появилась приставка Visual. Под руководством Microsoft продукт развивался и совершенствовался на протяжении последующих пятнадцати лет, до тех пор, пока в 2007 году не вышло последнее официальное обновление для Visual FoxPro - до версии 9.0 Service Pack 2. Конечно, на протяжении пятнадцати лет существования Visual FoxPro в историю продукта было вписано немало интересных страниц, но рассматривать их здесь сейчас не стоит, потому что вряд ли кому-то, кроме тех, кто плотно работал с Visual FoxPro, это будет действительно интересно, да и место, которое доступно одной отдельно взятой газетной статье, также ограничено.
Можно, конечно, привести тысячи причин, по которым Microsoft решила прекратить поддержку Visual FoxPro, но главная из них, на мой взгляд, все-таки состоит в том, что Visual FoxPro плохо согласовалась с продвигаемой корпорацией платформой .NET. Тем не менее, Visual FoxPro до сих пор используется многими разработчиками, и не только для внесения по мере эксплуатации исправлений и улучшений в уже существующие проекты. Так что говорить об этом программном продукте исключительно и только в ретроспективном аспекте было бы не совсем правильно. Поэтому, несмотря на название этой статьи, рассказ будет не столько об упадке былой популярности Visual FoxPro, сколько о самом этом программном продукте, даже сейчас, спустя столько лет после выхода своей последней версии, заслуживающем внимания со стороны достаточно широкой аудитории.
Что такое Visual FoxPro?
Итак, я уже упомянул, что Visual FoxPro - это продукт, ориентированный, в первую очередь, на создание приложений, работающих с базами данных. Однако такая краткая характеристика вряд ли может отразить все то, чем Visual FoxPro заслужил уважение и популярность среди разработчиков.
Любое средство разработки, в первую очередь, характеризуется тем языком программирования (или несколькими из них), который оно предлагает использовать в процессе разработки программного обеспечения. В случае Visual FoxPro таким языком, соответственно, будет FoxPro. Язык этот, который может показаться уже несколько морально устаревшим с позиций сегодняшних реалий индустрии программирования, до сих пор, тем не менее, обеспечивает вполне качественное решение задач, возникающих у большинства разработчиков прикладных приложений. Язык, который закладывался в эту среду её первыми разработчиками, берет свои истоки от xBase - языка программирования, который изначально был "заточен" под работу с dBase и, конечно, сильно отличался от того языка, который был "на вооружении" людей, имевших дело с FoxPro в те годы, когда эта среда ещё даже не перешла под "покровительство" Microsoft. В Visual FoxPro в распоряжении программиста имеется мощный объектно-ориентированный язык, позволяющий легко оперировать данными благодаря непосредственно встроенным в язык операторам.
Язык программирования
Возможно, эти утверждения по поводу языка, предлагаемого программистам в Visual FoxPro, покажутся вам слишком общими. Что ж, позвольте проиллюстрировать их примером. В листинге приведен небольшой пример кода на Visual FoxPro. Думаю, даже не обладая глубокими познаниями в программировании и в работе с базами данных, вполне можно увидеть основные черты, присущие коду на этом языке - то есть, возможность работы с объектами и прозрачность работы с базами данных. Комментарии в коде помогут понять общую логику данного небольшого примера.
&& Create a table CREATE TABLE randData (iData I) && Populate with random data using xBase and SQL DML commands FOR i = 1 TO 50 APPEND BLANK REPLACE iData WITH (RAND() * 100) INSERT INTO randData (iData) VALUES (RAND() * 100) ENDFOR && Place a structural index on the data INDEX ON iData TAG iData CLOSE ALL && Display ordered data using xBase-style commands USE randData SET ORDER TO iData GO TOP LIST NEXT 10 && First 10 SKIP 81 LIST NEXT 10 && Last 10 CLOSE ALL && Browse ordered data using SQL DML commands SELECT * ; FROM randData ; ORDER BY iData DESCENDING
Стоит отметить, что поскольку в конечном счете среда Visual FoxPro предназначалась для создания приложений, с которыми должен вести активный диалог конечный пользователь, то в распоряжении разработчика, пользующегося ею, были средства создания полноценного графического пользовательского интерфейса. С учетом того, что Visual FoxPro была ориентирована, конечно же, на создание приложений под Windows, нет ничего удивительного в том, что корпорация Microsoft постаралась снабдить разработчика такими возможностями. Благодаря поддержке объектов в языке программирования Visual FoxPro работать с элементами пользовательского интерфейса достаточно просто. Об этом красноречиво свидетельствует листинг - весьма короткий, но, смею надеяться, достаточно познавательный.
loForm = CREATEOBJECT("HiForm") loForm.Show(1) DEFINE CLASS HiForm AS Form AutoCenter = .T. Caption = "Hello, World" ADD OBJECT lblHi as Label WITH ; Caption = "Hello, World!" ENDDEFINE
Среда разработки
Как ни крути, но современное средство разработки приложений - это не только сам язык программирования, который, конечно, имеет первостепенную важность, но ещё и такая "мелочь", как среда разработки, с которой непосредственно взаимодействует программист. Поэтому поговорить о Visual FoxPro именно с этой позиции будет, я так полагаю, далеко не лишним.
Давно уже прошло то время, когда среды разработки от Microsoft подвергались повсеместной критике и вызывали желание закрыть их поскорее. Конечно, если сравнивать Visual FoxPro с более современными средами разработки, то можно найти ряд достаточно заметных для глаза несоответствий новейшим стандартам. Но если вспомнить о том, что речь идет о программном продукте, последний раз обновлявшемся несколько лет назад, то можно утверждать, что тогдашним стандартам Visual FoxPro соответствует на 100%.
На самом же деле, среда Visual FoxPro, как и другие продукты, названия которых начинаются с "Visual", весьма дружелюбна к разработчику. Подсветка синтаксиса кода, разнообразные подсказки по ходу написания кода, отладчик (какая же интегрированная среда разработки без него?), визуальный редактор форм, существенно упрощающий жизнь разработчика при проектировании интерфейса... В общем, как ни крути, среда разработки, созданная крупнейшим в мире разработчиком софта, так или иначе должна была соответствовать этому высокому званию.
Закат
Возвращаясь к вопросу о том, почему дальнейшая разработка Visual FoxPro была прекращена, стоит обратиться к первоисточнику - то есть, к объяснениям, которые дала по этому поводу сама корпорация Microsoft.
Во-первых, по словам представителей корпорации, дальнейшее развитие этого программного продукта не мыслилось без создания его 64-битной версии. Для этого пришлось бы практически полностью переписывать "ядро" Visual FoxPro, что не входило в планы Microsoft. Во-вторых, дальнейшее развитие Visual FoxPro - продукта, использовавшего собственный "движок" для работы с базами данных, - выглядело не слишком логично в свете достаточно солидных инвестиций в создание полноценной промышленной СУБД SQL Server, имеющей бесплатную версию SQL Server Express Edition, практически полностью покрывающую потребности большинства пользователей Visual FoxPro. Ну а в-третьих, популярность Visual FoxPro стабильно снижалась, и слухи о том, что это средство разработки планируется перестать совершенствовать, ходили ещё с начала 2000-х годов.
Visual FoxPro сегодня
Нельзя сказать, что с выходом последней версии земной путь Visual FoxPro оборвался. До сих пор по всему миру успешно работают десятки, если не сотни тысяч приложений, написанные с его использованием. Да и новые никто, в общем-то, не запрещает писать, потому что даже сегодня Visual FoxPro отлично подходит для решения многих задач.
Если вдруг вам понадобится когда-нибудь освоить этот инструмент разработки, то на помощь придет замечательный русскоязычный ресурс по Visual FoxPro - www.foxclub.ru. Ну и, конечно, не стоит забывать о печатной (и отсканированной) литературе, которой за годы существования Visual FoxPro было выпущено изрядное количество.
Вадим СТАНКЕВИЧ,
[email protected]
Комментарии
"можно увидеть основные черты, присущие коду на этом языке - то есть, возможность работы с объектами и прозрачность работы с базами данных." И где это в примере кода работа с объектами? Где там ООП?
"если сравнивать Visual FoxPro с более современными средами разработки, то можно найти ряд достаточно заметных для глаза несоответствий новейшим стандартам." - С какими? Каким? Слова...
Я бы еще добавил, что FoxPro является самым быстрой СУБД из семейства dBase. Это мы тестировали на различных одинаковых задачах, сравнивая FoxPro, Paradox, Clipper и не помню еще какой. Фокс опережал местами в разы.
В общем, не то, не так, ни о чем... ))) Таково мое скромное мнение бывшего одного из лучших фоксистов БССР.
>>В общем, не то, не так, ни о чем... )))
Давайте предметнее обсудим, как стоило бы правильно. Пока, кроме сравнений по скорости, предметных предложений не вижу:)