31
Не все технологии одинаково полезны. Как выбирать правильные. Тюменцев Евгений hwdtech.ru

HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Embed Size (px)

Citation preview

Page 1: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Не все технологии одинаково полезны. Как выбирать

правильные. Тюменцев Евгений

hwdtech.ru

Page 2: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

О себе

16 лет преподаю ИМИТ, ФКН ОмГУ ИТ-компании Школа программиста 12 лет разрабатываю ПО разработчик, архитектор, PM, руководство до 70человек

Тюменцев Евгений

Page 3: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны
Page 4: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Теоремы vs best practices

Формальное обоснование/описание

2014 SOLID

2015 абстракция, инкапсуляция, service locator не является анти- паттерном,

if нарушает инкапсуляцию

Page 5: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

1969 г. An Axiomatic Basis for Computer Programming

1971 г. Procedures and Parameters: An Axiomatic Approach

1980 г. премия Тьюринга

1990 г. Медаль “Пионер компьютерной техники”

2000 г. рыцарский титул за заслуги в области образования и компьютерной техники, премия Киото

Логика Хоара

Чарльз Хоар

Page 6: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны
Page 7: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны
Page 8: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Один из фактов о логике Хоара

Если использовать 1. статическое связывание

2. Рекурсию

3. Вложенные процедуры

4. Процедуры, принимающие в качестве параметров процедуры.

5. Глобальные переменные

то не существует полной системы аксиом.

Page 9: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Зависисмости

Page 10: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Зависимости

Page 11: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Изменения – это проблема!

int i = 0;

while( i < 100)

{

i = f();

}

int f()

{

return 20;

}

Page 12: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Зависимости

Page 13: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Зависимости

Page 14: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны
Page 15: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Так ли страшен hell …

24 марта https://habrahabr.ru/post/280099/

left-pad

«Многие разработчики не могли понять, что случилось: они никогда не использовали такой модуль. Однако его могли использовать другие модули, о чем можно просто не догадываться»

https://meduza.io/feature/2016/03/28/kak-slomat-internet

Page 16: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Растет стоимость изменений!!!

Page 17: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Что делать?

SOLID

Доказаны математически (2014 год)

Верны не только для ООП, но и для функционального, и процедурного

программирования!

Page 18: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Принцип открытости/закрытости

Программные сущности должны быть открыты для расширения, но закрыты для

изменения.

Page 19: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Если SOLID, то, скорее всего, нельзя

switch

enum

Приведение типов

new

Page 20: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Чем Pascal, С, C++ отличаются от…

Java, C#, Python, Scala, Javascript?

Page 21: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Главное отличие Pascal, C, C++ в том, что

они дают возможность работы с памятью на прямую =>

зависим от архитектуры процессора

Как развязать зависимость?

shared_ptr<T>

Умный указатель – это фасад (паттерн GoF)

Page 22: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Еще раз про скорость изменений

Синхронное Асинхронное взаимодействие взаимодействие

Page 23: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Еще раз про скорость изменений

(await) Scala (2003)

Отказываются от “без инверсии зависимостей” - сейчас

(Asynch pattern) .Net Framework 1.1 (2003)

(WCF) .Net Framework 3.0 (2006)

(Task Parallel Library) .Net Framework 4.0 (2010)

(await) .Net Framework 5.0 (2012)

Page 24: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

А в это время …

CompletableFuture

JDK 8 (2014)

https://habrahabr.ru/post/213319/

Page 25: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Хотя на самом деле

Douglas Shmidt

Asynchronous Completion Token

1996 год

http://www.dre.vanderbilt.edu/~schmidt/PDF/ACT.pdf

Page 26: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Еще раз про скорость изменений

Page 27: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Модели зрелости процессов управления

Page 28: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Ссылки

Обоснование SOLID http://goo.gl/MIIbbX

Как применять SOLID http://goo.gl/SDnUc5

Page 29: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Объявление №1

Стажировка совместно с 7bits

http://bit.ly/7bits-hwdtech-internship-2016

Прием заявок до 30 апреля

Начало 4 июля

Page 30: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Объявление №2

1. Курсовые и дипломные работы

Разработка платформы для серверных приложений

2. Курсовая

“Заказчик ” Дмитрий Завалишин

OS Фантом

Page 31: HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково полезны

Вопросы?

Тюменцев Евгений

Звоните: +7 913 150 22 04

Пишите: [email protected]

Hwdtech.ru