Парадигма програмування: відмінності між версіями

[очікує на перевірку][очікує на перевірку]
Вилучено вміст Додано вміст
Немає опису редагування
Рядок 34:
|author= Peter Van Roy |publisher= info.ucl.ac.be
}}</ref><ref name="Van-RoyHaridi2004">{{cite book|author1=Peter Van-Roy|author2=Seif Haridi|title=Concepts, Techniques, and Models of Computer Programming|url=https://books.google.com/books?id=_bmyEnUnfTsC|year=2004|publisher=MIT Press|isbn=978-0-262-22069-9}}</ref>]]
Подібно до того, як розробка програмного забезпечення (як процес) визначається різними методологіями, так і мови програмування (як моделі обчислень) визначаються різними парадигмами. Деякі мови розроблені для підтримки однієї парадигми (Smalltalk підтримує об'єктно-орієнтоване програмування, Haskell підтримує функціональне програмування), тоді як інші мови програмування підтримують кілька парадигм (такі як Object Pascal, C++, Java, JavaScript, C#, Scala, Visual Basic, Common Lisp, Scheme, Perl, PHP, Python, Ruby, Oz, and F#). Наприклад, програми, написані на C++, Object Pascal або PHP, можуть бути чисто процедурними, суто об'єктно-орієнтованими або можуть містити елементи обох або інших парадигм. Розробники програмного забезпечення та програмісти вирішують, як використовувати ці елементи парадигми.
В об'єктно-орієнтованому програмуванні програми розглядаються як набір взаємодіючих об'єктів. У функціональному програмуванні програми розглядаються як послідовність оцінок функції без стану. Під час програмування комп’ютерів або систем із багатьма процесорами в процесно-орієнтованому програмуванні програми розглядаються як набори одночасних процесів, які діють на логічні спільні структури даних.
Багато парадигм програмування добре відомі техніками, які вони забороняють, та дозволяють. Наприклад, чисте функціональне програмування забороняє використання побічних ефектів, тоді як структурне програмування забороняє використання оператора goto. Частково з цієї причини нові парадигми часто вважаються доктринними або занадто жорсткими для тих, хто звик до попередніх стилів. Тим не менш, уникання певних методів може полегшити розуміння поведінки програми та доведення теорем про її коректність.
Парадигми програмування також можна порівняти з моделями програмування, які дозволяють викликати модель виконання за допомогою лише API. Моделі програмування також можна розділити на парадигми на основі особливостей моделі виконання.
Для паралельних обчислень використання моделі програмування замість мови є звичайним. Причина полягає в тому, що деталі паралельного апаратного забезпечення просочуються в абстракції, які використовуються для програмування апаратного забезпечення. Це змушує програміста відображати шаблони в алгоритмі на шаблони в моделі виконання (які були вставлені через витік апаратного забезпечення в абстракцію). Як наслідок, жодна з паралельних мов програмування не відповідає всім проблемам обчислення. Таким чином, зручніше використовувати базову послідовну мову та вставляти виклики API до моделей паралельного виконання через модель програмування. Такі моделі паралельного програмування можна класифікувати відповідно до абстракцій, які відображають апаратне забезпечення, наприклад, спільної пам’яті, розподіленої пам’яті з передачею повідомлень, уявлення про місце, видиме в коді, і так далі. Це можна вважати різновидами парадигми програмування, які застосовуються лише до паралельних мов і моделей програмування.
 
== Історія терміна ==