Перейти к содержанию

Парадигмы программирования

Парадигма программирования - это фундаментальный стиль или подход к решению задач с использованием языка программирования. Различные парадигмы программирования предоставляют разные способы организации и структурирования кода и имеют разные сильные и слабые стороны. Некоторые из наиболее распространенных парадигм программирования включают:

  • Императивное программирование
  • Функциональное программирование
  • Объектно-ориентированное программирование
  • Логическое программирование
  • Декларативное программирование

Парадигмой также можно назвать метод решения некоторой проблемы или выполнения некоторой задачи. Парадигма программирования - это подход к решению проблемы с использованием некоторого языка программирования, или также мы можем сказать, что это метод решения проблемы с использованием инструментов и техник, которые доступны нам после определенного подхода. Известно множество вариантов языка программирования, но все они должны следовать определенной стратегии при их реализации, и эта методология / стратегия называется paradigms. Помимо разновидностей языков программирования существует множество парадигм для удовлетворения всех без исключения требований.

Они обсуждаются ниже:

1. Парадигма императивного программирования

Это одна из старейших парадигм программирования. Она имеет тесную связь с машинной архитектурой. Она основана на архитектуре Фон Неймана. Он работает путем изменения состояния программы с помощью операторов присваивания. Он выполняет пошаговую задачу путем изменения состояния. Основное внимание уделяется тому, как достичь цели. Парадигма состоит из нескольких инструкций, и после выполнения всех результат сохраняется.

Преимущества:

  • Очень проста в реализации
  • Содержит циклы, переменные и т.д.

Недостаток:

  • Сложная проблема не может быть решена
  • Менее эффективна и менее производительна
  • Параллельное программирование невозможно

Examples of Imperative programming paradigm:

C : developed by Dennis Ritchie and Ken Thompson Fortran : developed by John Backus for IBM Basic : developed by John G Kemeny and Thomas E Kurtz

// average of five number in C

int marks[5] = { 12, 32, 45, 13, 19 } int sum = 0;
float average = 0.0;
for (int i = 0; i < 5; i++) {
    sum = sum + marks[i];
}
average = sum / 5;

Императивное программирование делится на три широкие категории: процедурное, ООП и параллельная обработка.

Эти парадигмы следующие:

Процедурное программирование

В этой парадигме упор делается на процедуру с точки зрения лежащей в основе модели машины. Нет разницы между процедурным и императивным подходом. У него есть возможность повторного использования кода, и это было благом в то время, когда он использовался, из-за его возможности повторного использования.

Examples of Procedural programming paradigm:

C : developed by Dennis Ritchie and Ken Thompson C++ : developed by Bjarne Stroustrup Java : developed by James Gosling at Sun Microsystems ColdFusion : developed by J J Allaire Pascal : developed by Niklaus Wirth

#include <iostream>
using namespace std;
int main()
{
    int i, fact = 1, num;
    cout << "Enter any Number: ";
    cin >> number;
    for (i = 1; i <= num; i++) {
        fact = fact * i;
    }
    cout << "Factorial of " << num << " is: " << fact << endl;
    return 0;
}

Объектно-ориентированное программирование

Программа написана как набор классов и объектов, которые предназначены для обмена данными. Наименьшей и базовой сущностью является object, и все виды вычислений выполняются только с объектами. Больше внимания уделяется данным, а не процедурам. Он может решать практически все виды реальных жизненных проблем, которые сегодня находятся в сценарии.

Преимущества:

  • Безопасность данных
  • Наследование
  • Возможность повторного использования кода
  • Гибкость и абстракция также присутствуют

Examples of Object Oriented programming paradigm:

Simula : first OOP language Java : developed by James Gosling at Sun Microsystems C++ : developed by Bjarne Stroustrup Objective-C : designed by Brad Cox Visual Basic .NET : developed by Microsoft Python : developed by Guido van Rossum Ruby : developed by Yukihiro Matsumoto Smalltalk : developed by Alan Kay, Dan Ingalls, Adele Goldberg

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;

// Class Signup
class Signup {
    int userid;
    string name;
    string emailid;
    char sex;
    long mob;

public:
    // Function to create and object using
    // the parameters
    void create(int userid, string name, string emailid,
                char sex, long mob)
    {
        cout << "Welcome to GeeksforGeeks\nLets create "
                "your account\n";
        this->userid = 132;
        this->name = "Radha";
        this->emailid = "radha.89@gmail.com";
        this->sex = 'F';
        this->mob = 900558981;
        cout << "your account has been created" << endl;
    }
};

// Driver Cpde
int main()
{
    cout << "GfG!" << endl;

    // Creating Objects
    Signup s1;
    s1.create(22, "riya", "riya2@gmail.com", 'F', 89002);

    return 0;
}

Результат

GfG!
Welcome to GeeksforGeeks
Lets create your account

your account has been created

Подход параллельной обработки

Параллельная обработка - это обработка программных инструкций путем их разделения между несколькими процессорами. Система параллельной обработки располагает большим количеством процессоров с целью выполнения программы за меньшее время за счет их разделения. Этот подход, похоже, похож на разделяй и властвуй. Примерами являются NESL (один из старейших) и C / C ++, которые также поддерживаются из-за некоторой библиотечной функции.

Декларативная парадигма программирования

Она подразделяется на логическую, функциональную и базы данных. В информатике декларативное программирование - это стиль построения программ, который выражает логику вычислений, не говоря о потоке управления ими. В нем программы часто рассматриваются как теории некоторой логики.Это может упростить написание параллельных программ. Основное внимание уделяется тому, что должно быть сделано, а не тому, как это должно быть сделано, в основном акцент делается на том, что на самом деле делает код. В нем просто объявляется желаемый результат, а не то, как он был получен. Это единственное различие между императивной (как делать) и декларативной (что делать) парадигмами программирования. Углубляясь, мы увидим логику, функционал и базу данных.

Парадигмы логического программирования

Это можно назвать абстрактной моделью вычислений. Это позволило бы решать логические задачи, такие как головоломки, серии и т.д. В логическом программировании у нас есть база знаний, которую мы знаем раньше, и вместе с вопросом и базой знаний, которые передаются машине, она выдает результат. В обычных языках программирования такая концепция базы знаний недоступна, но при использовании концепции искусственного интеллекта, машинного обучения у нас есть некоторые модели, такие как модель восприятия, которая использует тот же механизм. В логическом программировании основной упор делается на базу знаний и проблему. Выполнение программы очень похоже на доказательство математического утверждения, например, Prolog.

predicates
  sumoftwonumber(integer, integer).

clauses
  sumoftwonumber(0, 0).
  sumoftwonumber(N, R) :-
    N > 0,
    N1 is N - 1,
    sumoftwonumber(N1, R1),
    R is R1 + N.

Парадигмы функционального программирования

Парадигмы функционального программирования уходят корнями в математику и не зависят от языка. Ключевым принципом этих парадигм является выполнение ряда математических функций. Центральной моделью абстракции являются функции, предназначенные для некоторых конкретных вычислений, а не структура данных. Данные слабо связаны с функциями.Функции скрывают свою реализацию. Функции можно заменить их значениями без изменения смысла программы. Некоторые языки, такие как perl, javascript, в основном используют эту парадигму.

Examples of Functional programming paradigm:

JavaScript : developed by Brendan Eich Haskell : developed by Lennart Augustsson, Dave Barton Scala : developed by Martin Odersky Erlang : developed by Joe Armstrong, Robert Virding Lisp : developed by John Mccarthy ML : developed by Robin Milner Clojure : developed by Rich Hickey

База данных / подход к программированию, основанный на данных

Эта методология программирования основана на данных и их перемещении. Программные инструкции определяются данными, а не жестко запрограммированной серией шагов. Программа базы данных является сердцем бизнес-информационной системы и обеспечивает создание файлов, ввод данных, обновление, функции запроса и отчетности. Существует несколько языков программирования, которые разрабатываются в основном для применения в базах данных. Например, SQL. Он применяется к потокам структурированных данных, для фильтрации, преобразования, агрегирования (например, вычисления статистики) или вызова других программ. Таким образом, он имеет свое собственное широкое применение.

CREATE DATABASE databaseAddress;
CREATE TABLE Addr (
    PersonID int,
    LastName varchar(200),
    FirstName varchar(200),
    Address varchar(200),
    City varchar(200),
    State varchar(200)
);