====== Парадигма программирования ====== **Парадигмы программирования** – способ классификации языков программирования в зависимости от их ключевых особенностей, понятий и принципов. Это необходимо для сравнения языков и упрощения выбора подходящего языка программирования, когда он есть. ^ Промышленное название парадигмы ^ Русская парадигма программирования ^ Описание ^ Примеры ^ | Imperative (Императивное) | Процедурное п. | Код состоит из последовательных инструкций, изменяющих состояние программы. Инструкции могут группироваться в процедуры (или функции). | C, Pascal, 1С, Go, Ada, Fortran | | Imperative + Structured (Структурное) | Структурное п. | Код представлен иерархической структурой управляющих блоков | Verilog HDL, C | | Imperative + Stack-oriented (Стек-ориентированное) | П. стековой нотации | Код записывается в нотации для стековой машины (или компилируется в формат для стековой машины). | Forth, PostScript, S-Lang | | Imperative + OOP (ООП) | Объектно-ориентированное п. | Код записывается в виде манипуляций с объектами (экземплярами классов с полями и методами), отвечающим принципам абстракции, инкапсуляции, наследования и полиморфизма. Цель - повышение читабельности кода людьми, надежности и возможность многократного использования. | C++, Ojective-C, C#, Java, Smalltalk, Kotlin, Rust | | Applicative (Аппликативное) | Функциональное п. | Код записывается как набор функций, состоящих из композиции и/или вызова функций и данных. В отличие от императивного программирования, последовательность выполнения инструкций обычно не задается и функция не изменяет состояния данных, что решает проблему параллелизма вычислений на корню. | Common Lisp, F#, XSLT, Haskell, LINQ, Erlang, Rust | | Logic (Логическое) | Логическое п. | В основе просто автоматическое доказательство теорем дискретной математики и формальной логики, т.е. оперирование предикатами (фактами и правилами) над термами. | Prolog, Mercury, Planner, Oz, Standard ML | | Query language | Язык запросов | Искусственный язык запросов к информационным системам: базам данных, поисковым, структурированным документам. Главная особенность языка запросов - читабельность для человека, с сохранением строгости и однозначности получения результата. | SQL / DDL, XPath, XQuery, LINQ, HQL, JPQL | | Style sheet language | Язык стилей | Описывает стиль отображения пользователю интерфейса, структурированных данных или документов. Главная идея в возможности отображения одних и тех же данных в разных темах оформления или стилях для экранов разных устройств. Но на практике труден и запутан для дизайнеров, требует задействования специалиста верстальщика или программиста. | CSS, LESS/Sass, Qt Style Sheets (QSS), Windows theme files, XSL / XSLT | | Event-driven programming | Событийно-ориентированное п. | Выполнение программы определяется циклом событий: сигналами таймеров, сообщениями, действиями пользователя и другими прерываниями. | JavaScript, ActionScript, Lazarus / Delphi, C# | | Scripting language (скриптовый язык) | Скриптовое п. (Сценарный язык) | Изначально язык автоматизации задач от пользователя, с возможностью пошагового выполнения. В дальнейшем отличается от компилируемых языков лишь отсутствием предварительной полной компиляции в бинарный формат ОС для нативного выполнения на машине. | JavaScript / ECMAScript, Lua, Perl, Python, VBA, Tk / Tcl, sed+awk, Bash, PowerShell, PHP | | Markup language | Язык разметки | Язык разметки документа или отображения данных пользователю. | HTML, XHTML, XML, SVG, LaTeX / TeX, XUL / XULRunner, SGML, Markdown, SubRip SRT, Enriched text |