наука програмування

Олексій В. Пастухов

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

Життєвий цикл програмного забезпечення

Почнемо розгляд питання зі зрозумілою всім погляду- з життєвого циклу програмного забезпечення та з досить філософського питання - а навіщо взагалі потрібні програми і що є мірило правильності їх роботи.

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

Системи розробки програмного забезпечення

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

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

Інженерне рішення, наукове рішення, мистецтво. Що є що.

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

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

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

У середовищі програмістів як мистецтва слід розглядати саме відмінності в методиках та їх комбінуванні. Тобто це і слід виділяти як мистецтво програмування.

Все вищевикладене можна уявити в графічному вигляді:

А як-же зниження вартості?

Вартість кінцевого рішення залежить в першу чергу від трудомісткості * наукоємність.

висновок

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

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

Power Ant це програмне керування через RS-232 порт 14 і більше зовнішніми пристроями за допомогою комп'ютера. Відкритий, текстовий, добре задокументований протокол управління. Управління електроприладами з потребяемой потужністю до 200Вт. Хочете управляти Реальним Світом навіть з MS Excel.