Programming paradigms · Paradigmas de programación
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.
¿Qué es un paradigma?
- Un paradigma de programación es un estilo para organizar un programa.
- El mismo problema puede resolverse con diferentes estilos.
- Python te permite combinar varios paradigmas en un solo programa.
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.
Imperativo y procedural
- El código imperativo es una lista de pasos que cambian el estado del programa.
- Indica cómo hacer algo, paso a paso (bucles, asignaciones).
- El estilo procedural agrupa esos pasos en procedimientos y funciones reutilizables.
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.
Orientado a objetos
- El código orientado a objetos agrupa datos y los métodos que actúan sobre ellos en objetos.
- Modelas el problema como un conjunto de clases que interactúan entre sí.
- Es adecuado para programas grandes porque cada clase es una parte autocontenida.
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.
Declarativo
- El código declarativo dice qué quieres, no cómo calcularlo.
- El lenguaje o la biblioteca determina los pasos por ti.
- Ejemplos: una consulta a base de datos (SQL), o una comprensión de listas en 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.
Bajo nivel
- El código de bajo nivel está cercano a la máquina: ensamblador y código máquina.
- La CPU lo ejecuta directamente, por lo que es rápido pero difícil de escribir.
- Los lenguajes de alto nivel como Python se traducen a este nivel antes de ejecutarse.
Common mistakes
- Procedural is steps; object-oriented is objects with data and methods; declarative describes the result.
- Match the paradigm to the problem.
Errores comunes
- El estilo procedural usa pasos; el orientado a objetos usa objetos con datos y métodos; el declarativo describe el resultado.
- Adapta el paradigma al problema.
Now you try
- Each task solves a small problem in a different paradigm.
- Press Check answer to test your code.
Ahora tú intentas
- Cada tarea resuelve un pequeño problema utilizando un paradigma diferente.
- Pulsa Comprobar respuesta para poner a prueba tu código.
Procedural style. Write sum_list(nums) that uses a loop and an accumulator to add up the list and return · retorno the total. · Estilo procedural. Escribe sum_list(nums) que utilice un bucle y un acumulador para sumar la lista y devolver el total.
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.
Declarative style. Write evens(nums) that returns · retornos a list of the even numbers, using a single list comprehension [... for ... if ...]. · Estilo declarativo. Escribe evens(nums) que devuelva una lista de los números pares, utilizando una única comprensión de lista [... for ... if ...].
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.
Object-oriented style. Write a class Bag whose __init__(self, items) stores a list, and whose method total(self) returns · retornos the sum of those items. · Estilo orientado a objetos. Escribe una clase Bag cuyo __init__(self, items) almacene una lista, y cuyo método total(self) devuelva la suma de esos elementos.
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.