Upload
happydev-lite
View
144
Download
5
Embed Size (px)
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 Фантом