модульне програмування

Модуль - функціонально закінчений фрагмент програми. У багатьох мовах (але далеко не обов'язково) оформляється у вигляді окремого файлу з вихідним кодом або пойменованої безперервної її частини. Деякі мови передбачають об'єднання модулів в пакети.

Модульність програмного коду

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

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

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

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

Одним з методів написання модульних програм є об'єктно-орієнтоване програмування. ООП забезпечує високу ступінь модульності завдяки таким властивостям, як інкапсуляція. поліморфізм і пізніше зв'язування.

Модульна система модулів

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

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

Історія концепції модулів

Історія концепції модулів як одиниць компіляції сходить до мов Фортран II і Кобол. тобто, до кінця 1950-х роківA brief history of FORTRAN COBOL Subprograms . У 1976 році з'явилася публікація, в якій було розбудовано концепція модульності - про мову

Термін «модуль» в програмуванні почав використовуватися в зв'язку з впровадженням модульних принципів при створенні програм. У 1970-х роках під модулем розуміли якусь процедуру або функцію, написану відповідно до визначених правилами. Наприклад: «модуль повинен бути простим, замкнутим (незалежним), доступним для огляду (від 50 до 100 рядків), які реалізують тільки одну функцію завдання, які мають одну вхідну і одну вихідну точку».

Першим основні властивості програмного модуля більш-менш чітко сформулював Д. Парнас (David Parnas) в 1972 році. «Для написання одного модуля має бути досить мінімальних знань про текст іншого». Таким чином, відповідно до визначення, модулем могла бути будь-яка окрема процедура (функція) як самого нижнього рівня ієрархії (рівня реалізації), так і самого верхнього рівня, на якому відбуваються тільки виклики інших процедур-модулів. D. L. Parnas >>

Цей шаблон використовує застарілий параметр «назва». Будь ласка, внесіть цю статтю, замінивши «назва» на «назву».

Цей шаблон використовує застарілий параметр «місто». Будь ласка, внесіть цю статтю, замінивши «місто» на «місце».

Таким чином, Парнас першим висунув концепцію приховування інформації (англ. Information hiding) в програмуванні. Однак існували в мовах 70-х років тільки такі синтаксичні конструкції, як процедура і функція, не могли забезпечити надійного приховання інформації, через повсюдного застосування глобальних змінних.

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

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

Вперше спеціалізована синтаксична конструкція модуля була запропонована Н. Віртом в 1975 р і включена в його нову мову Modula. Наскільки сильно змінюються властивості мови, при введенні механізму модулів, свідчить наступне зауваження Н.Вірта, зроблену ним з приводу більш пізнього мови Модула-2: «Модулі - найважливіша риса, яка відрізняє мова Модула-2 від його попередника Паскаля».

Реалізація в мовах програмування

Модульне програмування може бути здійснено, навіть коли синтаксис мови програмування не підтримує явне завдання імен модулів.

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

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

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

Модулі являють собою прекрасний інструмент для розробки бібліотек прикладних програм і потужний засіб модульного програмування. Важлива особливість модулів полягає в тому, що компілятор розміщує їх програмний код в окремому сегменті пам'яті. Довжина сегмента не може перевищувати 64 Кбайт, однак кількість одночасно використовуваних модулів обмежується лише доступною пам'яттю, що дозволяє створювати великі програми.

Примітки

Невідомий тег розширення «references»

Схожі статті