понедельник, 27 декабря 2021 г.

Шеркало 05: FoxPro

- Что-то ты давно меня не вызывал?

- Да другим делом решил позаниматься... ностальгическим. Вспоминал FoxPro for DOS. Помнишь такую систему, Шеркало?

- Не очень. Моё дело ведь тебе тебя отражать, а не помнить и думать. Это кажется такая система управления базами данных в древности была?

- Как бы тебе объяснить? И да, и нет. Изначально это была именно небольшая система управления базами данных (СУБД) под MS-DOS на весьма ещё маломощных тогда персональных компьютерах (ПК). Называлась она тогда ещё FoxBase+ и была не очень лицензионным клоном более ранней и более популярной СУБД dBaseIII+ (там какие-то судебные разбирательства у них были, впрочем, мне это неважно). Постепенно Fox приобретала всё больше индивидуальных, уникальных особенностей. Очень быстро dBase и другие её клоны остались даааалеко позади (с моей личной точки зрения, конечно).

В первой половине 1990-х годов FoxPro, на мой взгляд, превратилась в потрясающе мощную комплексную систему программирования. Там был очень приличный скриптовый язык программирования, полноценный оконный интерфейс с мышкой, кнопочками, менюшками, шорткатами, списками, поп-апами, прочим необходимым (свёртывание, развёртывание, перетаскивание, изменение размера, перекрытие окон)). Да, это всё в псевдографике, но, во-первых, тогда ничто иное по цене и не прокатывало, а во-вторых, весьма адекватно работало. Была встроенная База Данных. Причём вполне "взрослая", Настоящая реляционная БД со всеми необходимыми функциями, с сетевыми возможностями, по качеству и скорости как минимум не уступавшая лучшим конкурентным системам. Там же встроенная система быстрой разработки приложений - Rapid Application Development (RAD), ставшая популярной в других системах программирования несколькими годами позже. Встроенные визуальные редакторы форм ввода, отчётов вывода, диалоговых окон, меню разных уровней, исполняемых модулей, зачатки (а нужно ли большего для простого скриптового языка?!  объектно-ориентированного программирования), всё это в единой универсальной системе редактирования приложения! Мощные и гибкие средства работы не только с БД, но и с произвольными файлами, в том числе с произвольными текстами. 


- И, понимаешь, Шеркало, ВСЁ ЭТО - совершенно "из коробки"! Не нужно ничего дополнительного подключать, не нужно дозагружать, не нужно допокупать, не нужно ничего специально настраивать. Всё работает уже сразу после инсталляции. А! Кстати, насчёт инсталляции. Не было никаких вопросов, чтобы отдать кому-то работающую версию моей программы. Не нужно было там, на чужой стороне что-то такое жутко сложное и требующее внешней лицензии инсталлировать! 
Клиенту просто копировался один исполняемый файл *.exe (правда, довольно большого размера), либо три файла - один маленький исполняемый файл *.exe плюс две библиотеки (суммарным размером, как тот большой файл). А дальше у него всё само собой работало! 
Понятно, что я не мог не полюбить этого! Дааа...

- Это всё очень интересно. И про начало 1990-х годов, и про FoxPro, и про эти, как их, "БД"?... А МНЕ то ты чего сказать хотел?! Ты же зачем-то МЕНЯ сюда вызвал.

- Да, Шеркало, конечно. Дело в том, что для меня FoxPro в то время реально был одним из наиболее востребованных инструментов. Тем, чем пользуешься буквально каждую минуту рабочего времени. И я умел им пользоваться в совершенстве! Это была система, в которой я мог за единицы минут реализовать прототип любой программы!

И вот, сейчас я его запустил снова. FoxPro работает точно, как и раньше. Те же ограничения - только DOS, нет WinAPI, нет знакомых фреймворков (зато незнакомые есть - FoxPro, это по сути и есть очень мощный фреймворк поверх более ранней FoxBase, только ТСССС! Никому не рассказывайте! Там кроме фреймворка поверх FoxBase ещё много чего добавили, включая абсолютно потрясающий по скорости движок БД),  нет современной модели Объектно-Ориентированного-Программирования, точнее она есть, но стыдливо прикрыта скриптовыми "хвостиками" к традиционным командам. То есть, вроде как ООП в FoxPro якобы и нету. 

Но тут я начинаю объяснять своему начальнику работу очередной моей программы: 
- Вот эта процедура сработает по вот тому событию, а этот код - вот по этому событию, но только, если мышкой ткнуть, а на кнопку с клавиатуры совсем другой код будет реагировать, там другой сценарий предусмотрен, но в итоге обработка сведётся вот к таким-то действиям...
- О! Вот это я понимаю! Это и есть то самое ново-модное Объектно-Ориентированное-Программирование! - начальник многозначительно поднимает палец, улыбается и понимающе кивает.
- Нет, не совсем... Это же FoxPro, - стесняясь отвечаю я, - здесь объектная модель полноценно не реализована, например инкапсуляции вовсе нет...
А сам при этом думаю, что как раз ООП-модель в FoxPro всё-таки реализована, только очень-очень тщательно снаружи ветками и травой замаскирована, чтобы начинающих кодеров незнакомым видом объектов и классов не испугать.

Но вот, об чём я?  Вот, оказывается, Я не помню НИ ОДНОЙ команды!
Я взялся написать простейшую игрушку "Удавчик", который ест яблоки. Игрушка - задание для начальной школы по программированию. Писал её аж 4 дня (не подряд конечно, с перерывами). На самом деле - работы там на 10 минут! Но я же был вынужден за каждой буквой лазить в HELP системы, без которого я вообще ничего не помнил! Вот такая система, которую я искренне любил, на которой написал тысячи строк кода за десяток лет... 

- А что изменилось? FoxPro? Ты?
- Ты знаешь, Шеркало, всё изменилось. И FoxPro (это отдельный вопрос), и я, и вселенная. 
Скорее всего проблема во мне. ПОЧЕМУ я полностью забываю то, с чем (и с кем) когда-то работал? Почему это всё вытесняется?

- Ты знаешь ответ.

- НЕТ!!! Не знаю!
Впрочем, поговорим позже. Может быть я и про язык Паскаль захочу написать?

Комментариев нет:

Отправить комментарий