Методології програмування: основні поняття та визначення

10 0 Новини високих технологій

Спочатку було багато мов програмування. Вижили «правильні». Але не можна сказати, що Fortran, Algol, C/C++ та Pascal чим якісно відрізняються від Lisp або Prolog або інших мов: закладені різні ідеї, отримані еквівалентні результати. По суті, не важливо, як називати програмування, функціональним або процедурним. Завдання програми, яка може створити або як мінімум прочитати саму себе, не така вже й цікава. Але в далеких 80-х роках це все було жваво, актуально і дуже важливо.

Співвідношення початку і сучасного моменту

Створити компілятор в минулому столітті – робота досить великого колективу програмістів за певними методиками, математичними алгоритмами, з урахуванням накопиченого досвіду протягом досить тривалого часу. У процесі роботи колектив зростав у кількості, постійно випускалися оновлення, і робота знаходилася всім. Методологія програмування в кожній компанії відрізнялася, як кардинально відрізнявся менталітет кожного програміста в старі добрі часи.


Методології програмування: основні поняття та визначення
Сучасний світ програмування не змінився по суті, але суспільна свідомість в цій галузі стало фундаментом розуміння що робити, як робити, як супроводжувати, оновлювати і куди йти далі. Сьогодні зробити власний компілятор – пара днів роботи. Впорається навіть починаючий програміст. По суті, нічого не змінилося, але розумові здібності програмістів стали продуктивніше, компетентніше, і мислити вони стали «однаково». Принципово в цьому немає нічого нового. Кожне нове покоління (дітей) перевершує розумовими здібностями попереднє (батьків). У програмуванні наявність знань, зафіксованих у програмах, вкрай важливо.

Суть мови та методи роботи

Методології програмування розвивалися динамічно, агресивно по відношенню один до одного і ефективно за накопичуються знань. Технології розробки інструментального програмного забезпечення – компілятори, інтерпретатори, оболонки для розробки.


Методології програмування: основні поняття та визначення
Технології прикладного програмування істотно відрізнялися, і їм ця галузь зобов'язана поняттями:
  • пакет програм;
  • бібліотека математичних функцій;
  • модуль;
  • компонент та ін.
  • Системне і прикладне намагалися не перетинатися, у кожного напряму була свої філософія, сфера і методологія програмування. Проте термін «модуль» однаково зручно використовувати в компіляторах та графічних редакторах. Бібліотека математичних функцій не має нічого спільного з функціональним програмуванням. Пакет програм з тим же успіхом можна застосувати до розробки під android, хоча популярнішим термін «додаток».
    Методології програмування: основні поняття та визначення
    Все перемішалося, а значить, систематизировалось. Дійсно, немає різниці між компілятором C# і пасером HTML-коду, написаним на тому ж C#. В обох випадках йдеться про обробку інформації. Головне – якісний алгоритм, а не те, як він був виготовлений. Характерна риса процесу розвитку програмування: всі синтаксичні конструкції, визначені ще на стихійному етапі розвитку, залишилися в сучасних мовах програмування. Функціональне програмування має бути вдячна Lisp і Prolog за їх ідеї і запаморочливі синтаксичні конструкції. Але сьогодні важливіше уявлення про функції як методи об'єктів.

    Синтаксис мови програмування

    З одного боку, все, що використовується, зручно. Всі сучасні мови програмування пропонують еквівалентні синтаксичні конструкції, але філософія кожної мови відрізняється. Це саме той випадок, коли використання методології програмування має реальне значення. Блискучий приклад: javascript – мова браузера. Це невід'ємна частина DOM (дерева об'єктів) сторінки, завантаженої в браузер. Вимагати від подібності мови PHP безглуздо. Це мова сервера. Його турбота працювати зі сторінкою з метою її створення. javascript оживляє сторінку, наповнюючи її реальним функціоналом в браузері, під впливом дій конкретного відвідувача. Кожен програміст може формувати власну методологію програмування. Поєднуючи якості javascript і PHP, можна піти второваним шляхом використання JSON і AJAX, а можна зробити обмін сторінки з сервером по-своєму. Це інша філософія, яка не має нічого спільного з ідеями розробників цих інструментів.
    Методології програмування: основні поняття та визначення
    На самому низькому, логічному рівні можна виділити імперативне програмування. Коли ця парадигма була сформульована, було важливо зрозуміти, що таке програмування взагалі. Формулювання:
  • вихідний код – інструкції;
  • інструкції виконуються послідовно;
  • дані можуть записуватися/читатися в/з пам'яті.
  • Основні ознаки імперативних мов можна знайти в будь-якій сучасній мові програмування. У такому контексті ідеї багато методологій програмування розчинилися в достатку нових ідей.

    Стадії розвитку програмування

    Згадувати, як розвивалося програмування – данина пам'яті, будь курс по спеціальності починається з шанобливого перерахування:
  • стихійне;
  • імперативне;
  • структурний;
  • процедурне;
  • функціональний;
  • об'єктно-орієнтоване;
  • CASE-технології і т. п.
  • Кожен автор по-своєму розуміє шлях розвитку й час появи тих чи інших методів і способів, але в тому, що суть методології програмування з основних понять і визначень кардинально змінилася, ніхто не сумнівається. Як і раніше, йдеться про сукупності методів, філософії і стадіях життя програмного продукту. Але сьогодні поняття програмного продукту – це далеко не просто програма.
    Методології програмування: основні поняття та визначення
    Роботи з інтелектуальним і експертним системам стихли, всі погодилися, що програмісти просто працюють, створюють програми, алгоритми, обробляють інформацію, називаючи час від часу щось знаннями. Суть не в цьому. Важливий синтаксис і семантика мови, який дозволяє програмісту створювати свою методологію програмування. Це суттєво, адже програміст, а тим більше колектив програмістів з плином часу накопичують арсенал модулів, бібліотек, алгоритмів. Обмін знаннями, вміннями та напрацюваннями дозволяє формувати власну філософію і динамічно адаптувати свої розробки до річищі загальних тенденцій розвитку.

    Основні поняття області

    Програмний продукт, пакет програм або просто програми – ці поняття зіграли свою роль, але використовуються навіть сьогодні. Додаток – сучасне поняття. Хмарна або віртуальне середовище – це ознака особливостей роботи програмного виробу. Робота на фізичному комп'ютері або в контейнері віртуальної машини відрізняється, але тут виникає особлива філософія методології програмування. Види програм (послуг) придбали своєрідний статус. Раніше просто купив програму, встановив і використовуєш. Ліцензування доступу, придбання підписки на строк або кількість використань програми, невідомо де і як встановленою, що в минулому навіть не передбачалося. По суті, програмування залишилося в первозданному вигляді, але в сучасному виконанні. Програмування набуло інший статус завдяки хмарним і віртуальним технологіям. Питання безпеки, забезпечення роботи великих компаній призвели до формування реальної потреби в методології програмування співробітниками (користувачами, клієнтами). Соціальний фактор та досвід боротьби з кібератаками – це вже визнана і потрібна сукупність методів і технологій. Однак це не програмування в класичному значенні цього поняття.

    Експертні системи та бази знань

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

    Деякі філософські проблеми

    Розвиток методологій програмування кожен досвідчений програміст розуміє по-своєму. Класичне програмування істотно відрізняється, наприклад, від:
  • програмування віртуального середовища;
  • управління доступом до зовнішнього додатком;
  • дій адміністратора служби безпеки.
  • У кожному конкретному випадку своя філософія, свої методики, технології, прийоми роботи. Якщо підійти до історії розвитку «дзеркала інтелекту» з позицій здорового глузду, то не суть, ніж написати щось, важливо, наскільки зручно зробити це. Сумно, що сучасне програмування багаторазово змушувало програмістів переписувати старий код.
    Методології програмування: основні поняття та визначення
    Характерно: особливості «старих» мов програмування – сумісність знизу вверх (іноді і зверху вниз) пішла в історію. Показала свою живучість ідея нетипированных даних. Дійсно, чому потрібно в одному місці алгоритму говорити, що «X» – це число, а «Y» – це рядок, і потім триматися цієї ідеї на всьому протязі алгоритму. Методології програмування підійшли до необхідності кардинально нового рішення: програма повинна бути незалежна від автора і розроблена таким чином, щоб автор міг її розвивати як сукупність актуальних знань.

    Статика і динаміка

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