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

Preview:

Citation preview

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

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

hwdtech.ru

О себе

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

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

Теоремы vs best practices

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

2014 SOLID

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

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

1969 г. An Axiomatic Basis for Computer Programming

1971 г. Procedures and Parameters: An Axiomatic Approach

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

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

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

Логика Хоара

Чарльз Хоар

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

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

2. Рекурсию

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

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

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

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

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

Зависимости

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

int i = 0;

while( i < 100)

{

i = f();

}

int f()

{

return 20;

}

Зависимости

Зависимости

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

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

left-pad

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

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

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

Что делать?

SOLID

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

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

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

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

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

изменения.

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

switch

enum

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

new

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

Java, C#, Python, Scala, Javascript?

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

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

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

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

shared_ptr<T>

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

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

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

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

(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)

А в это время …

CompletableFuture

JDK 8 (2014)

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

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

Douglas Shmidt

Asynchronous Completion Token

1996 год

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

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

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

Ссылки

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

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

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

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

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

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

Начало 4 июля

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

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

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

2. Курсовая

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

OS Фантом

Вопросы?

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

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

Пишите: etyumentcev@hwdtech.ru

Hwdtech.ru

Recommended