Source: Стили программирования

← Rendered

markdown source:

---
description: Стили программирования в python
tags: programming
title: Стили программирования
---
**Процедурное_программирование** - процедурное ПО использует процедурные вызовы или функции. Функции не инкапсулирвоаны в классы и опираются толькор на свои входные данные и иногда на глобальные состояния.

**Функциональное программирование** - ПО представляет из себя композицию функций. Функции иногда принимаются в качестве аттрибутов функций и возвращаются в результате операций.

Пример в python

```python
# procedure
numbers = [1, 2, 3, 4, 5]
for i in numbers:
    print(i * i)

# functional
print(map((i) => i * i, [1, 2, 3, 4, 5]))
```

**Декларативное программирование** сосредоточено на объявлении параметров задачи без указания способа ее выполнения. Детали решения абстрагируются от разработчика.

Примером реализации являются DSL (domain specific languages), к примеру #sql или #html или [[gherkin]]

Примером в python является `plotly`. В данном случае объявляется намерение построить шрафик (инстанс класса) и в нем объявляются параметры.

```python
import plotly.graph_objects as plotly.graph_objects

tracer1 = go.Scatter(
    x=[1, 2, 3],
    y=[4, 5, 6],
    marker={'color': 'red', 'symbol': 104},
    mode='markers+lines',
    text=['one', 'two', 'three'],
    name='1st Trace',
)
```

Для сравнения, процедурный подход:

```python
trace1 = go.Scatter()
trace1.set_x_data([1, 2, 3])
trace1.set_y_data([4, 5, 6])
...
```


[gherkin]: gherkin "Gherkin"