Це солодке слово “XML”, HTML, XML, DHTML, Інтернет-технології, статті

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


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


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


Можу навести величезну кількість прикладів. Один з останніх – створення найпростішого обчислювального компонента (виконує “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-cайт інсталяційний модуль об’ємом 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>

*

*