Pular para o conteúdo

Conheça Walt Disney World

A '''programming paradigm''' is a paradigmatic style of Programming (compare with a methodology, which is a paradigmatic style of doing Software_engineering). A programming paradigm provides (and determines) the view that the Programmer has of the execution of the program. For instance, in Object-oriented_programming, programmers can think of a program as a collection of interacting objects, while in Functional_programming a program can be thought of as a sequence of stateless function evaluations. Just as different groups in Software_engineering advocate different ''methodologies'', different Programming_languages advocate different ''programming paradigms''. Some languages are designed to support one particular paradigm (Smalltalk and Java support object-oriented programming while Haskell and Scheme support functional programming), while other programming languages support multiple paradigms (such as Common_Lisp, Python, and Oz.) Many programming paradigms are as well-known for what techniques they ''forbid'' as for what they enable. For instance, pure functional programming disallows the use of side-effects; Structured_programming disallows the use of goto. Partly for this reason, new paradigms are often regarded as doctrinaire or overly rigid by those accustomed to earlier styles. However, this avoidance of certain techniques can make it easier to prove theorems about a program's correctness—or simply to understand its behavior—without limiting the generality of the programming language. The relationship between programming paradigms and programming languages can be complex since a programming language can support multiple paradigms. For example, C++ is designed to support elements of Procedural_programming, Object-based_programming, Object-oriented_programming, and Generic_programming. However, designers and programmers decide how to build a program using those paradigm elements. One can write a purely procedural program in C++, one can write a purely object-oriented program in C++, or one can write a program that contains elements of both paradigms. == Examples == *Data-directed_programming *Structured_programming—compared to Unstructured_programming *Imperative_programming, compared to Declarative_programming *Message_passing_programming, compared to Imperative_programming *Procedural_programming, compared to Functional_programming *Value-level_programming, compared to Function-level_programming *Flow-driven_programming, compared to Event-driven_programming *Scalar_programming, compared to Array_programming *Class-based_programming, compared to Prototype-based_programming (within the context of Object-oriented_programming) *Constraint_programming, compared to Logic_programming *Component-oriented programming (as in OLE) *Aspect-oriented_programming (as in AspectJ) *Logic_programming (as in Mathematica) *Pipeline_Programming (as in the UNIX command line) *Subject-oriented_programming *Reflective_programming *Dataflow programming (as in Spreadsheets) *Policy-based programming *Tree_programming * Annotative programming—http://www.flare.org * Attribute-oriented programming (might be the same as annotative programming) (as in Java 5 Annotations, pre-processed by the XDoclet class; C# Attributes ) *Concept-oriented_programming is based on using concepts as the main programming construct. == See also == * Language-oriented_programming * ARS_based_programming * Memetics * Grammar-oriented_programming *Categories of Programming Languages. ! Category:Programming_language_topics Bg:Парадигма_на_програмиране Ca:Paradigma_de_programació Da:Programmeringsparadigme De:Programmierparadigma Es:Paradigma_de_programación Hu:Programozási_paradigmák Id:Paradigma_pemrograman It:Paradigma_di_programmazione Ja:プログラミングパラダイム Ko:프로그래밍_패러다임 Pl:Paradygmat_programowania Pt:Paradigma_de_programação Ru:Парадигма_программирования Ta:நிரலாக்க_கருத்தோட்டம் Zh:编程范型