Software Programming Pattern: Difference between revisions

From GM-RKB
Jump to navigation Jump to search
m (Text replacement - " " to " ")
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
A [[Software Programming Pattern]] is a [[engineering pattern]] for [[software programming]] that a [[software programmer]] can use to develop a [[software program]].
A [[Software Programming Pattern]] is a [[software pattern]] that provides a reusable solution template for common [[software programming problem]]s (used by [[software programmer]]s to develop [[software program]]s with proven [[software implementation approach]]es).
* <B>Context</U>:</B>
* <B>AKA:</B> [[Programming Pattern]], [[Code Pattern]], [[Implementation Pattern]].
** It can be represented in a [[Programming Language]].
* <B>Context:</B>
** It can be adhered to during a [[Software Programming Task]].
** It can typically provide [[Software Programming Solution Template]]s through [[software programming best practice]]s and [[software programming design principle]]s.
** It can typically guide [[Software Programming Implementation]]s through [[software programming technique]]s and [[software programming methodology|software programming methodologies]].
** It can typically improve [[Software Code Quality]] through [[software programming readability enhancement]]s and [[software programming maintainability improvement]]s.
** It can typically reduce [[Software Programming Complexity]] through [[software programming abstraction]]s and [[software programming modularization]]s.
** It can typically enable [[Software Code Reusability]] through [[software programming template]]s and [[software programming framework]]s.
** ...
** ...
* <B>Example(s):</B>  
** It can often optimize [[Software Programming Performance]] through [[software programming algorithm optimization]]s and [[software programming resource management]]s.
** a [[Modular Programming Paradigm]], for a [[modular program]].
** It can often facilitate [[Software Programming Collaboration]] through [[software programming standard]]s and [[software programming convention]]s.
** a [[Object-Oriented Programming Paradigm]], for an [[object-oriented program]].
** It can often support [[Software Programming Testing]] through [[software programming testability pattern]]s and [[software programming debugging technique]]s.
** a [[Agent-Oriented Programming Paradigm]] for an [[Agent-Oriented Program]].
** It can often enhance [[Software Programming Security]] through [[software programming security pattern]]s and [[software programming vulnerability prevention]]s.
** a [[Data-Driven Programming Paradigm]], for a [[data-driven program]].
** ...
** a [[Constraint Programming Paradigm]], for a [[constraint program]].
** It can range from being a [[Simple Software Programming Pattern]] to being a [[Complex Software Programming Pattern]], depending on its [[software programming implementation complexity]].
** a [[Dataflow Programming Pattern]], such as:
** It can range from being a [[Language-Specific Software Programming Pattern]] to being a [[Language-Agnostic Software Programming Pattern]], depending on its [[software programming language applicability]].
*** a [[Reactive Programming Pattern]], for a [[reactive program]].
** It can range from being a [[Structural Software Programming Pattern]] to being a [[Behavioral Software Programming Pattern]], depending on its [[software programming pattern focus]].
*** a [[Flow-based Programming Pattern]].
** ...
** a [[Functional Programming Paradigm]].
** It can be represented in [[Programming Language]]s through [[software programming syntax]]es.
** an [[Event-Driven Programming Paradigm]].
** It can be applied during [[Software Programming Task]]s through [[software programming practice]]s.
** a [[Defensive Programming Pattern]].
** It can be documented in [[Software Programming Resource]]s through [[software programming pattern catalog]]s.
** [[Memoization]].
** ...
**
* <B>Examples:</B>
* <B>Counter-Example(s):</B>  
** [[Creational Software Programming Pattern]]s, such as:
** a [[Data Modeling Paradigm]] (that a [[data modeler]] can use use to develop [[data model]]s during [[data modeling]])
*** [[Singleton Software Programming Pattern]] for [[software programming single instance control]].
** a [[Data Model Pattern]].
*** [[Factory Method Software Programming Pattern]] for [[software programming object creation abstraction]].
** an [[Algorithm Pattern]].
*** [[Builder Software Programming Pattern]] for [[software programming complex object construction]].
* <B>See:</B> [[Dynamic Programming]], [[Creational Software Coding Pattern]], [[Software Programming Methodology]], [[Software Program Template]].
*** [[Prototype Software Programming Pattern]] for [[software programming object cloning]].
** [[Structural Software Programming Pattern]]s, such as:
*** [[Adapter Software Programming Pattern]] for [[software programming interface compatibility]].
*** [[Decorator Software Programming Pattern]] for [[software programming behavior extension]].
*** [[Facade Software Programming Pattern]] for [[software programming interface simplification]].
*** [[Proxy Software Programming Pattern]] for [[software programming access control]].
** [[Behavioral Software Programming Pattern]]s, such as:
*** [[Observer Software Programming Pattern]] for [[software programming event handling]].
*** [[Strategy Software Programming Pattern]] for [[software programming algorithm selection]].
*** [[Template Method Software Programming Pattern]] for [[software programming algorithm skeleton]].
*** [[Iterator Software Programming Pattern]] for [[software programming collection traversal]].
** [[Concurrency Software Programming Pattern]]s, such as:
*** [[Thread Pool Software Programming Pattern]] for [[software programming thread management]].
*** [[Producer-Consumer Software Programming Pattern]] for [[software programming concurrent processing]].
*** [[Read-Write Lock Software Programming Pattern]] for [[software programming concurrent access control]].
*** [[Monitor Object Software Programming Pattern]] for [[software programming synchronization]].
** [[Architectural Software Programming Pattern]]s, such as:
*** [[Model-View-Controller Software Programming Pattern]] for [[software programming separation of concerns]].
*** [[Model-View-ViewModel Software Programming Pattern]] for [[software programming data binding]].
*** [[Repository Software Programming Pattern]] for [[software programming data access abstraction]].
*** [[Dependency Injection Software Programming Pattern]] for [[software programming dependency management]].
** [[Functional Software Programming Pattern]]s, such as:
*** [[Memoization Software Programming Pattern]] for [[software programming computation caching]].
*** [[Monadic Software Programming Pattern]] for [[software programming computation composition]].
*** [[Map-Reduce Software Programming Pattern]] for [[software programming parallel processing]].
*** [[Continuation Software Programming Pattern]] for [[software programming control flow abstraction]].
** ...
* <B>Counter-Examples:</B>
** [[Software Programming Paradigm]], which defines fundamental programming approaches rather than specific [[software programming solution pattern]]s.
** [[Software Algorithm Pattern]], which focuses on computational strategies rather than [[software programming implementation pattern]]s.
** [[Data Model Pattern]], which addresses data organization rather than [[software programming technique]]s.
** [[Software Architecture Pattern]], which concerns system-level design rather than [[software programming-level solution]]s.
** [[Software Design Methodology]], which defines development processes rather than [[software programming pattern]]s.
* <B>See:</B> [[Software Design Pattern]], [[Software Anti-Pattern]], [[Software Programming Best Practice]], [[Software Programming Technique]], [[Design Pattern Catalog]], [[Software Pattern Language]].


----
----
Line 43: Line 80:


----
----
__NOTOC__
__NOTOC__
[[Category:Concept]]
[[Category:Concept]]
[[Category:Machine Learning]]
[[Category:Software Engineering]]
[[Category:Data Science]]
[[Category:Programming]]
[[Category:Quality Silver]]

Latest revision as of 21:25, 9 June 2025

A Software Programming Pattern is a software pattern that provides a reusable solution template for common software programming problems (used by software programmers to develop software programs with proven software implementation approaches).



References

2021

  • (Wikipedia, 2021) ⇒ https://en.wikipedia.org/wiki/programming_paradigm Retrieved:2021-2-23.
    • Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.

      Some paradigms are concerned mainly with implications for the execution model of the language, such as allowing side effects, or whether the sequence of operations is defined by the execution model. Other paradigms are concerned mainly with the way that code is organized, such as grouping a code into units along with the state that is modified by the code. Yet others are concerned mainly with the style of syntax and grammar.

      Common programming paradigms include: [1]

      • imperative in which the programmer instructs the machine how to change its state,
        • procedural which groups instructions into procedures,
        • object-oriented which groups instructions with the part of the state they operate on,
      • declarative in which the programmer merely declares properties of the desired result, but not how to compute it
        • functional in which the desired result is declared as the value of a series of function applications,
        • logic in which the desired result is declared as the answer to a question about a system of facts and rules,
        • mathematical in which the desired result is declared as the solution of an optimization problem
        • reactive in which the desired result is declared with data streams and the propagation of change
    • Symbolic techniques such as reflection, which allow the program to refer to itself, might also be considered as a programming paradigm. However, this is compatible with the major paradigms and thus is not a real paradigm in its own right.

      For example, languages that fall into the imperative paradigm have two main features: they state the order in which operations occur, with constructs that explicitly control that order, and they allow side effects, in which state can be modified at one point in time, within one unit of code, and then later read at a different point in time inside a different unit of code. The communication between the units of code is not explicit. Meanwhile, in object-oriented programming, code is organized into objects that contain a state that is only modified by the code that is part of the object. Most object-oriented languages are also imperative languages. In contrast, languages that fit the declarative paradigm do not state the order in which to execute operations. Instead, they supply a number of available operations in the system, along with the conditions under which each is allowed to execute. The implementation of the language's execution model tracks which operations are free to execute and chooses the order independently. More at Comparison of multi-paradigm programming languages.

  • Nørmark, Kurt. Overview of the four main programming paradigms. Aalborg University, 9 May 2011. Retrieved 22 September 2012.