Programming paradigms · Парадигмы программирования
What is a paradigm?
- A programming paradigm is a style of organising a program.
- The same problem can be solved in different styles.
- Python lets you mix several paradigms in one program.
Что такое парадигма?
- Парадигма программирования — это стиль организации программы.
- Одну и ту же проблему можно решить разными стилями.
- Python позволяет смешивать несколько парадигм в одной программе.
Imperative and procedural
- Imperative code is a list of steps that change the program's state.
- It says how to do something, step by step (loops, assignments).
- Procedural style groups those steps into reusable procedures and functions.
Императивное и процедурное программирование
- Императивный код — это список шагов, изменяющих состояние программы.
- Он говорит как делать что-то шаг за шагом (циклы, присваивания).
- Процедурный стиль группирует эти шаги в повторяемые процедуры и функции.
def total(nums):
result = 0
for n in nums:
result = result + n
return result
print(total([2, 4, 6]))
Object-oriented
- Object-oriented code bundles data and the methods that act on it into objects.
- You model the problem as a set of classes that talk to each other.
- It suits large programs because each class is a self-contained part.
Объектно-ориентированное программирование
- Объектно-ориентированный код объединяет данные и методы, действующие над ними, в объекты.
- Вы моделируете задачу как набор классов, которые общаются друг с другом.
- Оно подходит для больших программ, так как каждый класс является самодостаточной частью.
class Counter:
def __init__(self):
self.count = 0
def add(self):
self.count = self.count + 1
c = Counter()
c.add()
c.add()
print(c.count)
Declarative
- Declarative code says what you want, not how to compute it.
- The language or library works out the steps for you.
- Examples: a database query (SQL), or a Python list comprehension.
Декларативное программирование
- Декларативный код говорит что вы хотите, а не как это вычислить.
- Язык или библиотека сами определяют шаги за вас.
- Примеры: запрос к базе данных (SQL) или генератор списков Python.
nums = [1, 2, 3, 4, 5]
print(sum(nums)) # say WHAT: the total
print([n * n for n in nums]) # a list comprehension
Low-level
- Low-level code is close to the machine: assembly and machine code.
- The CPU runs it directly, so it is fast but hard to write.
- High-level languages like Python are translated down to it before running.
Низкоуровневое программирование
- Низкоуровневый код близок к машине: ассемблер и машинный код.
- Процессор выполняет его напрямую, поэтому он быстрый, но сложный для написания.
- Высокоуровневые языки, такие как Python, компилируются до него перед выполнением.
Common mistakes
- Procedural is steps; object-oriented is objects with data and methods; declarative describes the result.
- Match the paradigm to the problem.
Распространенные ошибки
- Процедурное — это последовательность шагов; объектно-ориентированное — это объекты с данными и методами; декларативное описывает результат.
- Выберите парадигму, соответствующую задаче.
Now you try
- Each task solves a small problem in a different paradigm.
- Press Check answer to test your code.
Теперь попробуйте сами
- Каждая задача решает небольшую проблему в другой парадигме.
- Нажмите Check answer (Проверить ответ), чтобы протестировать свой код.
Procedural style. Write sum_list(nums) that uses a loop and an accumulator to add up the list and return the total. · Процедурный стиль. Напишите sum_list(nums), которая использует цикл и аккумулятор для суммирования списка и возвращает общую сумму.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Declarative style. Write evens(nums) that returns a list of the even numbers, using a single list comprehension [... for ... if ...]. · Декларативный стиль. Напишите evens(nums), которая возвращает список четных чисел, используя одно списковое выражение [... for ... if ...].
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Object-oriented style. Write a class Bag whose __init__(self, items) stores a list, and whose method total(self) returns the sum of those items. · Объектно-ориентированный стиль. Напишите класс Bag, чей __init__(self, items) хранит список, а метод total(self) возвращает сумму этих элементов.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.