onixred
7 лет назадОсновы программирования #3.1 Парадигмы программирования
Прочитал пост и решил написать свою точку зрения.
источник
Из доклада прозвучал тезис типа ООП это тоже самое что и СП но сложнее. Категорический не согласен с этим.
Я решил перечислить свои ключевые моменты по каждой из парадигм:
- Императивное программирование
- оперируем состоянием и инструкциями
- языки: ассемблер, Fortran, Cobol, C,C++ и тд
Пример кода
a = 12.0
b = 15.0
result = a + b
print *, 'The total is ', result
- Структурное программирование
- оперируем состоянием и инструкциями
- блока - составная инструкция
- ветвления - условия если то иначе
- цикл -повторение одного блока N раз
- языки: Fortran, Pascal и C.
Пример кода
PROGRAM Simple;
VAR
k : integer;
BEGIN
k := 1;
while k <= 100 do
begin
writeln (k);
k := k + 1;
end;
writeln (k);
END.
- Процедурное программирование
- процедура (дочь блока) которая может принимать параметры и возвращать параметр. Процедура обычно независимая операция и выполняется как одна большая инструкция.
- декомпозиция - разбивать большую задачу на простые
- языки: C, C++, Pascal, Object Pascal
Пример кода
PROGRAM Simple;
VAR
a, b, c: integer;
procedure sum(x, y: integer; var z: integer);
BEGIN
z := x + y;
END;
BEGIN
write('Введите 2 числа: ');
readln(a, b);
sum(a, b, c);
writeln(c);
END.
- Объектно-ориентированное программирование.
- Объект - сущность, с определенным набором состояний, предоставляющая набор операций, по изменению этих состояний.
- инкапсуляция механизм сокрытия операций над объектом
- наследование механизм позволяет переиспользовать базовые свойства объекта(лучше не использовать)
- полиморфизм - механизм позволяет объединить управление над объектами.
- делегирование - объект что бы предоставить функции использует другой объект.
- пространство имен (namespace);
- языки: Java C#
Пример кода
public class Switch implements Serializable, Node {
/**
* Состояние коммутатора "работает" (1)
*/
public static final int STATE_WORKS = 1;
/**
* Состояние коммутатора "не работает" (0)
*/
public static final int STATE_NOT_WORKS = 0;
/**
* Имя коммутатора
*/
private String name;
/**
* IP коммутатора (строка)
*/
private String ipAddress;
/**
* Состояние коммутатора.
*
* @see #STATE_WORKS
* @see #STATE_NOT_WORKS
*/
private Integer state;
public Switch() {
}
/**
* Состояние коммутатора.
*/
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
/**
* @return название коммутатора
*/
public String getName() {
return name;
}
}
Если коротко, то как-то так. Конечно это моя точка зрения и возможно есть луди которые скажут что это не так. Но я готов обсудить это в комментариях.