понедельник, 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 (это отдельный вопрос), и я, и вселенная. 
Скорее всего проблема во мне. ПОЧЕМУ я полностью забываю то, с чем (и с кем) когда-то работал? Почему это всё вытесняется?

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

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

среда, 22 декабря 2021 г.

Шеркало 04: картошка

 - Здесь?! Шеркало, здесь?

- А ты здесь?

- Ну я-то здесь, раз уж зову.

- Ну так и я здесь, раз уж отзываюсь. Чего хотел-то?

- Жена, вот, картошку жарит. Вкусно пахнет. Хочешь? Заходи!

- Вот ты прямо порадовал! Угощать бестелесную сущность жареной картошкой?! Прямо шесть баллов по шкале Задорнова-Петросяна.

- А чем тебя угощать? Анекдотами, что ли? Давай попробую.

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

- Здорово, мужик! Это хорошо, что ты к нам зашёл, мы тут как раз ужинать с друзьями собрались. Оо! Так ты и шампур с собой принёс? (отбирает у мужика ружьё) Это ты молодец, это прямо очень своевременно!

Мужик понимает, что надо как-то выкручиваться. Через силу натягивает на рожу улыбку:

- Здравствуйте, уважаемые хищники. Если желаете поужинать, то у меня как раз есть с собой целый рюкзак вкусной картошки, на соседней полянке под ёлкой стоит. Можно её пожарить!

- Да мы твой картофан уже почистили, порезали, уже и жарим, - доброжелательно отвечает гризли, - вот только мяса на шашлыки к твоей картощке нам не хватало...


- Это ты сам что ли анекдот придумал?

- Ага, прямо сейчас, как только тебя, Шеркало, увидел.

- Ладно, молодец, вручаю тебе медаль героя подполья театра имени Дубовицкой!

- Где?

- Да вот же! Она же невидимая. Прикрутишь сзади к трусам, пусть все прохожие смеются...

- Не издевайся! Жена картошку дожаривает, картошка - пахнет. Вот, само собой и придумалось, про шашлыки. А шашлыков-то и нету.

- Ладно, ладно, иди, ешь свою картошку. А то я - невкусное, не заглядывайся в мою сторону лишний раз.

суббота, 11 декабря 2021 г.

Шеркало 03: жизнь это

 - Привет, Шеркало!

- Привет, врунишка!

- Я - врунишка?! Да с чего бы?!!

- А кто мне ещё в тексте номер 00 говорил, что в зеркало никогда не смотрится? А сам-то сегодня утром что делал?

- Так это же я для бритья только...

- И что, факт созерцания своей рожи в зеркале от этого перестал быть фактом?

- Ну, понимаешь, раньше я вообще в зеркало не смотрел! И брился тоже всегда вслепую. Но недавно понял, что бриться перед зеркалом немного удобнее. В общем, не обращай внимания, считай, что зеркало при бритье - это понарошку. Я о другом рассказать хотел.

Тут мне сегодня утром сообщили, что один умный человек, Бернард Шоу, однажды сказал:

"Жизнь - это не поиск себя.

Жизнь - это создание себя"

Так вот, я с ним не согласен. По моему представлению жизнь - это

бесконечный, бессмысленный, безнадёжный поиск выхода из наглухо запертой тёмной комнаты без окон, без дверей. Есть бездна свободы воли: можно легко и свободно идти налево (пока не упрёшься в стенку), можно так же легко идти направо (пока не упрёшься в другую стенку). Можно свободно танцевать в центре темницы, не касаясь стен, изобретая всё более изощрённые па. Можно бесконечно долго ощупывать бесконечно разнообразные фрактальные рисунки трещинок на стенах темницы. Безумно интересно, бесконечно вариативно, живи, ищи, твори и радуйся!

Абсолютно бессмысленно, поскольку все твои действия в темноте всё равно никому не видны. И абсолютно бесполезно, поскольку отпереть темницу может лишь тот, кто её запер, тебе же это не дано.


- Ну ты и пессимист! Прямо как я.

- Атож, Шеркало, мы же тени друг друга!

пятница, 10 декабря 2021 г.

Шеркало 02: не пишу стихи

 - Слышь, Шеркало, какой мне сон сегодня приснился!

Будто бы я пришёл в школу, в нашу школу, учиться. Кажется, пришёл сразу после каникул, потому что в школе перед этим явно был ремонт. И вот, я захожу в класс перед уроком. Там тоже всё после ремонта, все парты разобраны по деталям и сложены в углу. Эти парты нужно по одной из угла доставать, привинчивать болтами ножки к столешницам, и расставлять на места.

И вот, я выдвигаю очередную парту, начинаю её болтами стягивать. И тут вдруг, один из моих одноклассников, который раньше пришёл и свою парту уже собрал, очень спокойным, деловым тоном обращается ко мне:

- Миша, ты - П%ДОРАС и стихи не пишешь! А я пишу стихи!

Я от неожиданности аж проснулся! ЗА ЧТО меня так обругали? Вот ведь что-что, а вот ни в каком мужеложестве я точно никогда в жизни не участвовал! И причём тут стихи?

Утром не выдержал, рассказал сон дочке.

- Ну и правильно обругали, - решила дочь, - ты ни фига не делаешь, деньги не зарабатываешь, да ещё и стихи не пишешь. Каким словом тебя ещё прикажешь называть?!

четверг, 2 декабря 2021 г.

Шеркало 01: скидка

- Шеркало, здесь? У меня пара строчек.

- Здесь. Рассказывай. чего хотел, я рОманов от тебя тут и не жду.

- Ты не представляешь, как же приятно стало покупать алкоголь в магазинах!

- Вот точно не представляю. Чего же приятного??

Прихожу сегодня в магазин, прошу чекушечку водки.

- Покажите, пожалуйста ваш паспорт, - смущённо просит продавщица.

- Девушка, вы вообще ОФИГЕЛИ, - взрываюсь я, неожиданно сам для себя, - по моей внешности что, 18 лет совсем не видать?!?!

- Нет, что вы, извините, - ещё больше смущается продавщица, - просто у нас сегодня для пенсионеров скидка была, до 11:00, я хотела вам дешевле продать. Но извините, компьютер на кассе уже 01 минуту показывает, наверное скидка всё равно не получится.

Шеркало, а может мне завтра туда же на 20 минут раньше пойти?

среда, 1 декабря 2021 г.

Шеркало 00

- Привет!

- Привет. А ты кто?!

- Я - Зеркало!

- Но я никогда не смотрюсь в зеркала.

- Ну, так и не смотрись в меня, кто тебя заставляет?

- Тогда зачем ты здесь?

- Извини, отвечать вопросом на вопрос не совсем прилично, но у меня нет других вариантов: а как ты без меня будешь общаться с другими людьми?

- Ааа... Кажется начинаю понимать. Ты - не зеркало. Ты - моя тень ! Я Выдвигаю тебя вместо себя самого, когда общаюсь с другими людьми? Правильно? Но, ведь я сейчас ни с кем не общаюсь?

- Абсолютно правильно! А что ты сейчас не общаешься, так и что? Я же Зеркало - тень первого уровня, которую выдвигают для того, чтобы общаться с другими тенями, которые будут общаться с другими тенями, которые будут общаться с иными сущностями. Ты же в курсе.... Для моего появления факт наличия конечной сущности в цепочке теневого общения совсем не обязателен.

- А ты, однако, логично! Только слово "Зеркало" мне всё равно не нравится. Я никогда не смотрюсь в зеркала, даже в момент общения с другими людьми. И тем более не смотрюсь в момент общения с абстрактными существами, вроде тебя.

- Не нравится слово "зеркало", так назови как-нибудь иначе. Пусть, например, я буду "Шеркало".

- А ты, Шеркало, однако покладистое существо. ;)

- Я покладистое, ровно настолько, насколько я - твоя тень, только я - не существо. Я - сущность! О разнице между этими понятиями у тебя Королева Кама, кажется. несколько абзацев текста вещала.

- Нет. Я планировал это написать, но, вроде, так и не реализовал. Тем не менее я рад твоему присутствию, Шеркало-сущность!