Разработка на софтуер: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Ред 103:
 
=== Програмни парадигми ===
[[:en:programming paradigm|Програмна парадигма]] е фундаментален стил на компютърно програмиране, който като цяло не е воден от методология за управление на проекта. Парадигмите се различават в концепциите и абстракциите, използвани за представяне на елементите в една програма (като обекти, функции, променливи, ограничения) и в изчислителните стъпки (като оценяване, продължения, поток от данни). Понякога утвърдените от парадигмата концепции, биват използвани кооперативно в архитектурния дизайн на високо ниво в една система, в други случаи обхватът на програмната парадигма е ограничен до вътрешната структура на конкретната програма или модул.
 
Един програмен език може да поддържа [[:en:multi-paradigm programming language|повече от една парадигми]]. Например програми писани на [[:en:C++|C++]] или [[:en:Object Pascal|Object Pascal]] може да са изцяло [[:en:procedural programming|процедурни]], изцяло обектно-ориентирани, или да съдъжат елементи и от двете парадигми. Софтуерните дизайнери и програмисти решават как да бъдат използвани тези елементи. В [[:en:object-oriented programming|обектно-ориентираното програмиране]] програмистите могат да гледат на една програма, като колекция от взаимодестващи си обекти, докато във [[:en:functional programming|функционалното програмиране]] програмата може да се разглежда като поредица от функции. Когато програмни компютри или системи с много процесори, [[:en:process-oriented programming|процесно-ориентираното програмиране]] позволява на програмистите да гледат на апликациите като комплект от конкурентни процеси, действащи върху логически свързани [[:en:data structures|структури от данни]].
 
Както различни групи софтуерно инженерство застъпват различни методологии, така и различните програмни езици застъпват различни парадигми. Някои езици са направени да поддържат само една парадигма ([[:en:Smalltalk|Smalltalk]] поддържа обектно-ориентирано програмиране, [[:en:Haskell (programming language)|Haskell]] поддържа функционално програмиране), докато други поддържат повече от една (например [[:en:Object Pascal|Object Pascal]], [[:en:C++|C++]], [[:en:C Sharp (programming language)|C#]], [[:en:Visual Basic|Visual Basic]], [[:en:Common Lisp|Common Lisp]], [[:en:Scheme (programming language)|Scheme]], [[:en:Python (programming language)|Python]], [[:en:Ruby (programming language)|Ruby]] and [[:en:Oz (programming language)|Oz]]).
 
Много парадигми са добре познати както с методите, които забраняват, така и с тези, които позволяват. Например чистото функционално програмиране забранява използването на [[:en:side-effect (computer science)|side-effects]], а [[:en:structured programming|структурното програмиране]] забранява използването на [[:en:goto|goto]] изявления.
 
Примери за парадигми на високо ниво включват:
* [[:en:Aspect-oriented software development|Aspect-oriented software development]]
* [[:en:Domain-specific modeling|Domain-specific modeling]]
* [[:en:Model-driven engineering|Model-driven engineering]]
* [[:en:Object-oriented programming|Object-oriented programming]] methodologies
* [[:en:Search-based software engineering|Search-based software engineering]]
* [[:en:Service-oriented modeling|Service-oriented modeling]]
* [[:en:Structured programming|Structured programming]]
* [[:en:Top-down and bottom-up design|Top-down and bottom-up design]]
 
=== Софтуерна платформа ===