Це солодке слово "XML"

Як встигнути за законом Мура розробникам ПЗ?


На одній з проходили в Москві минулої осені конференцій для ІТ-фахівців мені довелося почути чудову фразу, сказану представником одного з провідних світових постачальників ПО: "Наша корпорація, як і інші технологічні компанії, будує свій бізнес і розробку перспективних продуктів з урахуванням можливостей, що описуються законом Мура ". Він звичайно ж мав на увазі, що потрібно закладати в перспективні проекти функціональність, яка сьогоднішньої техніки ще не під силу, але стане цілком доступна до моменту виходу готового продукту.


Тут нема чого заперечити, тільки так і треба робити. Але проблема полягає в тому, що розробники ПЗ (особливо того, що відноситься до категорії платформ) часом просто не встигають за виробниками заліза і компенсують відсутність ідей щодо нових функцій більш легкими способами завантаження ресурсів комп'ютера.


Можу навести величезну кількість прикладів. Один з останніх – створення найпростішого обчислювального компонента (виконує "a + b") за новою технологією Web Services на локальному комп'ютері зажадало використання системного блоку c Pentium III 800 МГц і пам'яттю в 256 Мб, щоб виконання компіляції та реєстрації увійшло в прийнятні часові рамки 3-5 секунд.


Чесно кажучи, коли я стикаюся з подібними прикладами, то не можу вирішити для себе: штучне зниження продуктивності програм – це свідома стратегія підтримки своїх колег з сектора мікроелектроніки або ж воно відображає падіння якості програмування?


Ну гаразд, гіганти ІТ-індустрії повинні думати про глобальні перспективи, а ми, у свою чергу, можемо поіронізувати над прямолінійністю обираних ними рішень. Але якщо придивитися уважніше, то можна побачити приклади не дуже оптимального програмування і у нас.


Зате ми підтримуємо XML


Сьогодні фраза про те, що в продукті забезпечується підтримка XML, є обов'язковою для опису будь-якої програми. А в чому саме полягає така підтримка, навіщо вона тут потрібна і який толк від неї користувачеві – це вже неважливо.


На жаль, інколи складається враження, що слово "XML" використовується з тієї простої причини, що в якості достоїнств програми більше нічого привести.


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


Операція – абсолютно звичайна, тривіальна, її дають як завдання на початковому етапі навчання програмуванню. Найпростіший варіант – створити текстовий файл, що займає при введенні в масив шість рядків коду на VB 6.0.


Однак автори програми пропонують формувати список із застосуванням XML-формату, де кожне ім'я записане у вигляді тега.


Код введення такого файлу не набагато складніше, ніж варіант для простого текстового файлу (9 операторів).


Але зауважте: окрім збільшення розміру завантажуваного файлу в два рази додаток у цьому випадку використовує досить ресурсномістких бібліотеку MS XML Parser 3.0. Тут саме час згадати про одну з проблем багатокомпонентних додатків під назвою DLL Hell (DLL-пекло), коли після перенесення програми на інший комп'ютер вона відмовляється працювати через відсутність необхідних компонентів.


Питається: навіщо розробники штучно заклали цю потенційну проблему, використовуючи компонент, без якого дуже легко обійтися? При цьому хотілося б підкреслити, що модель XML DOM в цьому додатку потрібна лише для введення цього списку імен.


Що в скриньці лежить?

Але захоплення XML-форматом – це ще квіточки. В опублікованому пакеті наведені також вихідні тексти програмних проектів, реалізованих на VB 6.0. Весь цей набір повинен, за задумом авторів, демонструвати не тільки можливості деякої нової технології, але й показувати, як її можуть застосовувати незалежні програмісти.


Протягом останніх десяти років я пишу статті про програмування на Бейсіку (www.visual.2000.ru/develop/vb).


І крім обговорення суто технічних прийомів мені доводиться досить регулярно піднімати питань "стилю програмування" і на прикладі присилаються читачами питань показувати, що мова йде не про моду або абстрактних правила хорошого тону, а про насущні проблеми підвищення продуктивності роботи програміста, збільшення надійності програм і зниження вартості їх супроводу.


Правила ж "хорошого стилю" на рівні кодування окремих програмних процедур досить прості: уникайте неявного перетворення типів даних, застосовуйте при інших рівних умовах раннє зв'язування компонентів, пишіть коментарі, намагайтеся, щоб імена змінних відбивали сенс їхнього вмісту, використовуйте прості логічні конструкції …


Так ось, обговорюваний VB-проект – це просто чудове навчальний посібник на тему "як не можна писати програмний код". Ну, стиль-то добре, справа хазяйська. Які вже там коментарі і оптимізація логічних конструкцій, якщо автор формує змінні і масиви, які взагалі ніяк не використовуються в програмі, застосовує багатовимірні масиви для зберігання завідомо лінійних списків і робить багато інших дивовижних речей.


Можливо, магічне "використовується XML-формат" має справити відповідне враження на користувачів, але от тільки чомусь тривіальна процедура введення XML-файлу в даному випадку зайняла не 10, а цілих 70 рядків коду! Та й як може бути інакше, якщо число тегів у XML-файлі (для резервування масиву потрібної довжини), яке можна визначити простим зверненням до властивості Lengh, у цій програмі виконується таким фантастичним способом.


On Error Resume Next


Dim j, z j = -1: z = “~”


Do While (z <> “”)


j = j + 1


z = nodelist(j).nodename


If Err.Number > 0 Then Exit Do


Loop


ReDim Names(0 To j-1)


А чого вартий такий шедевр логічної конструкції: index = 1


While (index > 0)


'Тут щось робимо, але index не змінюється


index = 0


Wend яка абсолютно еквівалентна рядку


'Тут щось робимо


На цьому я перерву розбір даного польоту, оскільки в програмі в 350 рядків такі перли зустрічаються на кожному кроці. Зазначу лише, що для встановлення та реєстрації DLL розміром 55 Кб користувачеві потрібно завантажити з Web-вмісту на сайті інсталяційний модуль обсягом 3 Мб.


"Не біда, що все пропало. Лише б не було війни!"


Коли я поділився своїм здивуванням з приводу цього набору програм зі знайомим ІТ-менеджером, то почув вельми характерний відповідь: "Ну і що ж такого? Адже головне, що програма правильно працює! А процесори і пам'ять стрімко дешевшають ".


По-перше, програма не дуже точно відповідає оголошеним специфікаціям (що зовсім не дивно при такому програмуванні). А по-друге, справа зовсім не тільки у вартості обладнання. Адже так чи інакше, але обсяг програмного коду практично прямо відображає трудовитрати на розробку, за яку платить замовник. (До речі, обговорюваний програмний пакет хоча і безкоштовний, але виконувався на замовлення.) І в обгрунтуванні ціни проекту характеристики "число рядків коду" і "людино-дні" присутні регулярно.


До того ж варто згадати, що проблема підвищення якості програмування стала активно обговорюватися ще в кінці 60-х років не тільки в плані підвищення продуктивності праці розробників, але перш за все через необхідність поліпшення надійності додатків і зниження витрат на їх супровід. Не кажучи про те, що в даному випадку мова йде про спробу демонстрації "як треба писати програми".


Я чекаю ще однієї реакції на свої замітки: "Подумаєш, скільки галасу через програми, написаної, напевно, якимось неуспевающим студентом. Хіба мало таких саморобок валяється в Інтернеті". Я не знайомий з автором програм, але справа-то в тому, що на ній стоїть Copyright компанії-розробника, що позиціонує себе в якості одного з лідерів російського офшорного програмування.


І мова йде не про окрему програмці, а про досить солідному наборі додатків (реалізованих приблизно в тому ж стилі, що показаний вище), який був удостоєний навіть згадки в прес-релізах.


Це я до того, що при обговоренні перспектив вітчизняного ринку офшорних розробок, як правило, говорять про проблеми менеджменту, взаєминах з державою тощо, але чомусь спочатку вважається, що з самим програмуванням у нас все ОК. Однак після знайомства з наведеним тут прикладом (він не поодинокий!) Виникають сумніви в істинності останнього твердження.


Що ж стосується даного програмного проекту, то мене найбільше здивувала сміливість розробника, який вирішив опублікувати вихідний код. Невже він не боїться, що його побачать не тільки студенти та журналісти, а й потенційні замовники?

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*