Менторская сессия для junior разработчиков #1
Программирование сильно шагнуло в перед за годы своего существования, но даже в современном программировании нам приходится возращаться к парадигмам и технологиям, которые уже считались устаревшими. Мы обсудим существующие парадигмы, разберемся в чем принципиальная разница, поймем когда какая более эффективна.
О спикере: Dmitry Moskalenko [CТО at WOXAPP]
● Опыт разработчика - 8 лет (web, Android, IoT)
● Опыт СТО - 4 года
● Основные языки программирования - Python, PHP,
Java
● Хобби - Machine learning, Deep learning, IoT, crossfit
● Глава орг. комитета IT Clubs Project (iOS, JS, PHP)
● Был ментором в IT школе
2. О себе
Компания - WOXAPP
Текущая должность - СТО
Опыт разработчика - 8 лет (web, Android, IoT)
Опыт СТО - 5 лет
Основные языки программирования - Python, PHP, Java, SQL, Go
Хобби - Machine learning, Deep learning, IoT
IT Clubs Project - advisor в: JS Club, PHP Club, iOS Club
3. Агенда
- какие парадигмы программирования есть
- отличия между парадигмами
- в чем связь между парадигмами
- что нам дает знание парадигм
- когда и как это используется на практике
4. Что такое парадигма программирования
Паради́ гма программи́ рования — это совокупность идей и понятий, определяющих стиль написания компьютерных программ
(подход к программированию). Это способ концептуализации, определяющий организацию вычислений и структурирование
работы, выполняемой компьютером.
(с) Википедия
5. Зачем это нужно?
- понимания структуры программного кода
- опыт для оценки качества кода
- опыт для выбора нужного подхода разработки
8. Императивное программирование
Основные понятия:
- инструкция
- состояние
Вспомогательные:
- присваивание
- переход
- указатель
Языки поддерживающие как основную:
- Assembler
- C
- C++
Языки поддерживающие как вспомогательную:
- Python
- Ruby
- Java
- PHP
10. Структурное программирование
Основные понятия:
- блок
- цикл
- ветвление
Языки поддерживающие как основную:
- C
Языки поддерживающие как вспомогательную:
- Python
- Ruby
- Java
- JavaScript
- С#
13. Определение чистой функции
1. Функция, вызывается от одних и тех же аргументов, всегда
возвращая одинаковое значение.
2. Во время выполнения функции не возникают побочные
эффекты.
14. Функции - первого класса и высшего
порядка
1. Если функцию возможно объявить в виде переменной она
считается первоклассной.
2. Функции высшего порядка - это функции принимающие
другую функцию как аргумент или возвращающие функцию.
16. Лямбда-исчисления
1. Все функции могут быть анонимные, поскольку единственная значимая часть
заголовка функции - это список аргументов.
2. Если функция вызывается с несколькими аргументами, то она сперва будет
выполнена с первым и вернет новую функцию, содержащую на 1 аргумент
меньше и немедленно выполнит ее.
18. Проблемы ООП
- тянет за собой все свое окружение
- это медленно
- запутанные связи (при не правильной реализации)
19. Программирование, управляемое
данными (data-driven)
Основная идея: важны в первую очередь данные, а
не то, как они между собой связаны.
Сфера применения:
- сервисы по агрегированию данных,
- админ панели,
- API
Проблемы:
- плохо совместим с концепциями ООП
- на больших проектах сложно поддерживать
20. Событийно-ориентированное
программирование (event-driven)
Основная идея: выполнение программы
определяется событиями. Логика построена на
двух базовых принципах: событие и обработка
события
Применение:
- серверные приложения
- игры
- пользовательские интерфейсы
Проблемы:
- проблемы с масштабированием
23. Проблемы DDD
- требует тщательной проработки, что ведет
к увеличению затраченного ресурса и
удорожанию проекта
- определенные части становятся сложнее
в поддержке