Архивы: по дате | по разделам | по авторам

Использование новых технологий в повседневной практике программистов

Архив
автор : Олег Борисов   27.07.1998

Приходя на работу, я все чаще ловлю себя на мысли, что в последнее время она напоминает бег по замкнутому кругу. Два этажа (до грядущего сокращения еще надо дожить), на которых программистов видят лишь после телефонного звонка с дежурной фразой "а у нас опять не работает", отчеты, подвинчивание и подкручивание, головная боль по вечерам… И тот же трудяга Oracle лишь облегчает эту участь "ипподромных" забегов, а так хочется посмотреть по сторонам, узнать, чем занимаются собратья по клавиатуре, на какие новые искажения "генеральной линии" пора копить наличность.

Эта заметка - попытка остановиться и посмотреть вокруг. В силу своей привычки брюзжать, буду глядеть не в заоблачные дали, озаренные заревом "Комтека", а в любимые родные пенаты, благо, они под богом и греют душу сейчас…

И последнее в этом затянувшемся вступлении. Так как писать на узко профильные темы скучно, да и специалисты обычно читают не статьи на популярные рекламные темы, а нудные книги, то и рассказать я хочу не об особенностях построения сложных отчетов с использованием динамического SQL. Я тешу себя надеждой, что у меня получится чуть со стороны взглянуть на новые способы разработки программ, которые применяются в наше время. Тем более что эти программы пишутся для пользователей всей этой кучи старых и новых компьютеров. И как бы мы, программисты, ни кичились своими зауженными навыками, закон остается един: пользователь платит деньги, значит, он (пользователь) прав…

Итак.

Повседневные труд и его производные

Заглянув в наши отделы, в 99,9% увидишь одинаковую картину: летящие облака осыпающихся "форточек" (включая и их 3.11 прародителя), и в оставшейся 0,1% - более &"разумные" WinNT. Novell'овский сервер, использующийся как банка с горами файлов, и спящий до лучших времен Unix на Motorola оставим в покое. И не потому, что та же Novell скатилась с 6 на 20 место по рейтингам фирм в USA. Просто, пользователь с этими серверами общается постольку/поскольку, а вот "калькулятор для каждой домохозяйки" у него стоит на столе, и писать очередной заказ мне приходится именно для него.

Что требуется сейчас? (Правильнее говоря, при постановке задачи нам, программистам из ИТ, геологии и т. д., о сроках говорят: "надо еще вчера".) Сейчас, когда информация стала цениться и использоваться в повседневной работе, на первое место выходят разнообразные базы данных, системы учета (от памперсов на складе до объема перекачанной нефти), аналитическая и статистическая обработка всей этой цифровой пирамиды. Но один человек уже не справляется с этим потоком данных, поэтому целые отделы (от одного человека до одного битком забитого этажа) работают, корпят над бумагами, счетами, книгами прихода/расхода…

И все эти "пришел/ушел, продали/одолжили" разрабатываются на несколько человек. А это - несколько рабочих мест, с каждого из которых можно (и нужно) добавить, посмотреть, стереть, спрятать от налоговой полиции, и т. д. Так и появляется следующая головная боль: как обрабатывать данные, раскиданные по целому сонму "персоналок". Что может использовать программист, чтобы вовремя сдать очередную задачу? Учитывая современные средства разработки и сопровождения…

Инструментарий

Когда пользователь берет готовую программу, то он не задумывается над тем, как именно эта программа была создана. Мало того, любые попытки рассказать, как это работает, вызывают лишь справедливое раздражение: зачем бухгалтеру знать о потоках его платежек на уровне железок, ведь я не интересуюсь правилами построения проводок согласно последним положениям Федерального законодательства.

Какую же "палочку-выручалочку" используем я и мои товарищи в настоящее время?

Из всего обилия существующих средств разработки я уже три года работаю на продукте фирмы Borland Inc. (ныне - Inprise). Из обилия существующих плюсов можно отметить следующие:

  • доступ к малым и большим базам данных (если есть драйверы для сервера базы данных, то программа сможет пользоваться возможностями этого сервера);
  • удобная библиотека быстрой визуальной разработки приложений;
  • мощный объектно-ориентированный язык программирования, позволяющий писать достаточно сложные задачи (из таких вещей можно отметить созданные моими бывшими коллегами системы картопостроения для геологических и промысловых моделей, трехмерные объекты геологических пластов, динамическую связь с любыми серверами баз данных, имеющих линк на Delphi);
  • поддержку всех нововведений базовой платформы (для Delphi - Windows & Clones).

Но это еще не все. Одной из больших проблем при создании современного "юзер-ориентированного" обеспечения является необходимость работать с большим парком рабочих мест, на которых надо обновлять уже установленные программы по мере их изменения, появления новых "заплаток" и т. д. А если машин больше пары десятков и стоит на них несколько разных программ, которые нагружают центральный сервер и анализируют лежащие там данные? Ходить по этажам (или рулить с удаленного доступа) с одной машины на другую? Печальная перспектива…

Попытки выложить все программы на сервер и потом разрешить пользователям запускать их оттуда привели к увеличению обмена "пустой" информацией по сети, что увеличило и без того немаленький трафик и привело к заторам в кабельном хозяйстве и недовольству секретарши босса, которая не могла уже с той же легкостью пускать любимые LINES с сервера… Пришлось принимать меры.

Идею выбросить часть кода в отдельные модули, которые могли бы обмениваться между собой информацией, располагаясь в разных частях локальной сети, вынашивали давно. Пробовали придать этой идее разную форму и реализовать под тем или иным названием. Как бы ни складывалась история, но любимое детище г-на Гейтса пошло своим путем и родилось после звонкой барабанной дроби под флагами "OLE/COM/DCOM ruleZ for ever…"

COM. DCOM. Использование Delphi for Client/Server works

Что же небезызвестная фирма понимает под OLE (Object Linking and Embedding)? Этот термин столько раз менял свое значение, что окончательно запутал не только интересующихся компьютерами людей, но и программистов, пишущих в этой струе. Поэтому для себя лично (никоим образом не навязываю вам эту трактовку) я пытаюсь новые и старые (перекрашенные) технологии от MS воспринимать следующим образом:

  • Под OLE можно понимать ограниченный круг задач, которые представляют технологии создания составных документов (содержащих в себе разнородную информацию по способу ее подготовки, показа и обработки). Теперь - составная часть COM.
  • COM (Component Object Model) - стандартные механизмы, позволяющие одному набору программ общаться с другим набором программ (программы могут быть разработаны различными коллективами). Весь набор возможностей реализуется на одной машине.
  • DCOM (Distributed COM) - использование модели COM на разных машинах, связанных в сеть.

    Наглядно это можно представить на примере MS Office, который и вобрал в себя нововведения как губка (но повторить их не пытайтесь, кодирование в MS Office идет своим путем, обходя заявленные для разработчиков "лучшие правила создания совместимых с MS приложений"). Итак: COM вырос из OLE как из пеленок, унаследовав часть идей, и предоставил возможность пользователям (при наличии в меру корявой помощи программистов) собрать кучу приложений в одно целое. Если вам надо в одном и том же месте использовать графики, текстовые редакторы, графические редакторы, аналитические системы бухучета и пр. - надо лишь оформить их в виде самостоятельных объектов типа COM (OLE), и вызывайте на здоровье. Что и делает тот же Word, встраивая в себя и диаграммы, и оформление трехмерных заголовков для статей, а так же многое другое.

    Получается, COM - программа, разрешающая использовать всю свою мощь другим программам. Достаточно лишь получить список возможностей, разобраться с правилами отдачи приказа, и можете пользоваться. Хотите использовать проверку правописания из MS Office в своей аналитической программе - ради бога, цепляйтесь к существующему блоку и работайте. Ваш сосед по столу создал мультипликатор и налепил анимационных роликов для заставки - думаю, что за пивом вы сумеете договориться по этой проблеме, и скоро ваши шедевры будут сиять диснеевскими цветами.

    Осталась лишь малость: COM работает на одной машине. И поэтому для случаев, когда один и тот же объект надо бы использовать множеством рабочих мест, MS выпустила на рынок DCOM. Те же объекты, только вид сбоку, с сетевого окружения. Достаточно настроить такой модуль на сервере, привинтить на вашу любимую писишку поддержку DCOM - и можно инсталлировать новые программы, созданные для жаждущего прогресса "конечного потребителя".

    Ах да, я забыл одну "мелочь&". Все это правильно работает лишь на "решениях от MS", то есть все тех же Windows & Clones. На остальных системах использование DCOM подобно покупке мины замедленного действия. Для очень большого любителя.

    Обобщая: выше названные аббревиатуры скрывают за собой направление развития программного рынка с точки зрения фирмы Microsoft. Данное направление включает в себя поддержку работы корпоративных и индивидуальных пользователей на персональных компьютерах с подключением в сети (локальные и глобальные) и возможностью эксплуатировать все разнообразие существующих ресурсов (корпоративные хранилища информации, справочники, on-line системы, анекдоты из курилки). Прекрасная идея, счастливые потребители, поставленное на промышленную основу (наконец-то закончилась эра кустарных промыслов) производство программ, универсальные инструменты (м-да, вообще-то и молоток можно применять для анестезии).

    Хотя, если вы пишете (как программист) для Wintel, то можно спокойно закрыть глаза на остальной рынок и другие возможности и идти зарабатывать наличность.

    Кроме того, все та же (воспетая выше) Delphi в своей новой редакции предоставляет возможность эксплуатировать на полную катушку весь этот модный идеологический пласт. И вам, уважаемый читатель, остается лишь писать заявки в отдел информационных технологий, чтобы эти яйцеголовые ротозеи проснулись и поставили новую версию взаимозачетов, бухгалтерских проводок, анализа платеже- и конкурентоспособности коллег на рынке недвижимости. Ведь вам уже объяснили, что при изменениях алгоритмов расчетов и правил начисления сальдо и пяти золотых они сами нажмут пару кнопок у себя на сервере, а вас это никоим образом не коснется. Вы будете пользоваться все той же программой (измененной, отлаженной и прилизанной согласно вашим последним пожеланиям), которая лишь требует с сервера необходимую информацию. А все изменения пройдут безболезненно, не касаясь ни вас, ни вашей повседневной работы… Как, вам это не объяснили? Тогда я ничего такого не говорил, может, у вас в организации правила совсем другие…

    Разработки

    В качестве примера хочется привести два комплекса, которые используют DCOM в качестве основы, но по своей сути представляют разные подходы к решению поставленных задач.

    1. Система учета бухгалтерских проводок

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

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

    Минусы… Писать это надо, подходя достаточно тщательно к проектированию подобных программ с самого начала. Входные потоки данных, выходные, бизнес-правила и их возможная перенастройка, аудит (не забывайте, мы живем в полицейском государстве: учет - первичен, выстрел в затылок - конечен), внешний вид форм, общие блоки для клиента, сервера, связь с другими подобными приложениями… И писать, писать, писать. Предоставленные возможности предлагают создавать мощные и расширяемые программы, состоящие из "кирпичиков", разрешающих строить целые "замки". Надо лишь вовремя остановиться и создать ту самую "хибарку", которая нужна именно сейчас вашему бухгалтеру.

    В целом этот пример показывает, как, используя стандартный набор средств, можно построить "серийное" приложение. В минимальные сроки, одним программистом, с возможностями вести проект в случае смены "ездовой лошади".

    2. Комплекс PanTerra (информационное хранилище, динамическая связь с крупными промышленными серверами баз данных (Oracle, Sybase, Interbase, etc.)

    Посмотрим на более интересную задачу. Тюмень - это центр обработки геологической и промысловой информации с месторождений Западной Сибири. И хотя эти исторические особенности в настоящее время утрачиваются, но кадры и проекты пока живут. И при обмолоте тех гигабайт информации, которые хранятся на всем этом зоопарке техники (западные комплексы на SUN, наши изделия и многолетние вырожденцы, хранимые еще с больших машин), пытаются выжать максимум возможного. А выжимать есть из чего…

    Кажется, что тот, кто сможет получить доступ ко всему обилию этой информации, станет более продуктивно и качественно использовать свое рабочее время. Что создано для этого моими друзьями (ваш покорный слуга уже больше не участвует в этом проекте)?

    Набор DCOM-модулей, которые являются "интеллектуальными" средствами визуализации существующей логической структуры базы данных, позволяют представить разные модели информации, хранящиеся на нескольких физических носителях (разные серверы, разные компьютеры и т. д.). Общий DCOM-сервер, который предоставляет любой программе интерфейсы управления этими модулями и связывает доступ к различным системам информации в одно целое. Из этих кубиков уже построены редактор данных, редактор логических связей, управление правильностью заполнения информационного хранилища из разнородных систем, генерация отчетов и система анализа уровня геолога (анализ вплоть до месторождения в целом).

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

    Мне эта вещь более симпатична, чем написанные недавно проводки, тем более что и сам участвовал в этом. Но если вы собираетесь заехать в гости и купить это, то не советую так торопиться. Ибо здесь мы подходим к последним абзацам этого раздела.

    Самое печальное, что набор программ, о которых я так старательно распинался, пишется вопреки пожеланиям начальства. И затраченное время, и нервы - все лишь голый энтузиазм разработчиков. (Три года адовой работы для самосовершенствования? Увы, видимо, так.) Боссов интересуют более меркантильные вопросы, чем какие-то там "новые технологии". И пусть заказчики с севера заинтересованы новой разработкой и выстраиваются за новыми модулями в очередь, мы (пардон, не мы - боссы) идем своим путем. Кормушка уже оприходована и совсем не программистами… А выживут ли они на вольных хлебах в наше время - это еще вопрос…

    Плюсы и минусы "золотой курицы"

    Последнее… Несмотря на все рассказанные здесь сказки про светлое будущее, хочется все же заметить, что бесплатный сыр, как вы знаете, уже давно съеден. И появление этих новых технологий (с урезанными возможностями) от MS обусловлено вовсе не желанием помочь программистам, создающим требуемые программы. Во главе угла стоит золотой телец, а поклонение ему уже не только не помогает, скорее, вредит делу создания нормальных средств разработки, облегчения жизни программисту, ускорению прогресса.

    Мы пишем новый софт, мы тратим деньги, а чем это закончится? Человеку со стороны кажется, что создать новую программу проще простого. И студентам, вступающим на эту дорогу, так же хочется "ваять", и сейчас, и быстрее, и за очень большие деньги. Но те, кто уже втянулся в этот "бег Алисы", понимают, что качественная работа требует большой самоотдачи и труда. И все не так просто с этими Plug & Plunder. Только кто слушает этих "кассандроэмбрионов". В институтах учат, как бегать на короткие дистанции, и не спрашивают, зачем вообще выходить на эту беговую дорожку. И все новые АСУшники, системщики и пр. пишут новые и новые программы, заключают контракты, раскручивают проекты… Наши самородки, которые огранятся на безработице, безденежье, "болгарских" компиляторах и напишут новых "Аллодов" или следующий "Байконур".

    Так что если вам, читатель (если вы все же остались со мной и дошли до этого места) захочется заняться чем-то новым, самобытным, рекламируемым: идите сразу к боссу. Со сметой. Большой сметой, аргументированной. И димедрол с собой захватите, а то, как босс последнюю цифру с фамилией "Итого" увидит, так димедрол очень понадобиться. Может, и вам.

    А если вы сами босс, то гоните их взашей, этих просителей, лучше позвонить в очередное представительство (благо, их рекламой забиты все журналы) очень дистрибутивной западной фирмы и они вам сделают, на основе новейших технологий. Правда, это выльется в пару лишних миллионов, но кого это волнует, зато - по-новому. По западному. Без участия наших полутора миллионов, которые программы и не пишут. А воруют. Все. Поголовно. (Если есть желание, читатель, могу пригласить к себе на чашку чая, хорошего чая, и мы побеседуем о понятиях пиратства в России, в Тюмени, на домашних компьютерах и корпоративных сетях Налоговой полиции. И о том, как нас, программистов, называют в той же полиции, в офисах "их" представителей и у продавцов болгарской штамповки).

    Если подводить итоги, то не все так уж плохо. Программы пишутся, новые технологии осваиваются или отмирают за ненадобностью/финансовой личной недостаточностью. Ощущение зависти, так хорошо описанное в одном из писем "Компьютерры" присуще и мне как обычному человеку, и эта зависть выливается в жалобы на плохую жизнь (а вы посмотрите, как живут… которые своего счастья не понимают). Может, все у вас, читатель, устаканится, устроится, в крайнем случае, можно пнуть того человека, который приходит к вам по вызову с опозданием на пару часов и правит в поставленной им программе очередную найденную вами ошибку. Правильно, он все равно даром хлеб зарабатывает, ведь достаточно открыть любой журнал, а там черным по белому, с картинками, написано, что программы теперь любая машина напишет. Всего-то надо: сказать ей, что вы хотите, и нажать на одну большую, самую важную кнопку "СДЕЛАТЬ, КАК Я ХОЧУ, ХОТЯ И НЕ ЗНАЮ ЕЩЕ, ЧТО ИМЕННО Я ХОЧУ".

    А программисты, они того, они эту кнопку от вас спрятали и наживаются на ее тайном существовании… Надо их, программистов, с их новыми технологиями…

    Может, тогда нам и не придется участвовать в этой гонке за глупостью, сможем перестать выступать в качестве заезженных лошадей, которых гонят неизвестно куда, и пойдем в дворники. (Хотя нет, у нас тут пыльно, зимой снега много, мусорные баки исчезли вместе с колбасой по 1,20, не пойдем в дворники). Лучше пойти в домоуправы, куда в итоге перепрофилировался мой любимый книжный герой, сын турецко-подданного. Раз про него ничего не слышно, он явно нашел свое Рио на берегу ближайшего к ЖЭУ водоема.

    P.S. Честное слово, последняя пара строк… Если вы потребитель создаваемого племенем программистов продукта под названием "софт", то будьте добры, относитесь к нам доброжелательнее и воздастся вам. Может быть. Если нам будет не лень.

    P.P.S. Всем желающим бросить камень в профессионального программиста:
    zb@telecom.tmn.ru
    только поторопитесь, так как в связи с грядущим сокращением я вряд ли долго продержусь на новом месте работы… Месяц, другой. А то и того меньше…

    P.P.P.S. Человек, который найдет для меня Рио на ближайшем озере, получит персональный ящик пива. Или два. А я постараюсь обрести на берегах этого белого города долгожданный покой.

  • © ООО "Компьютерра-Онлайн", 1997-2024
    При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.