Source: Стили программирования
← Renderedmarkdown 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"