SlideShare a Scribd company logo
1 of 53
Download to read offline
Современные тенденции в
разработке ПО
Александр Чистяков
Git in Sky
Несколько слов о себе
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 2 / 53
• Главный инженер в Git in Sky
• Преподаватель в avalon.ru
• Researcher @ ISST Lab, ITMO
• Координатор встреч
DevOps-инженеров в Петербурге
• Пишу код
Слово «современные»
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 3 / 53
Что изображено на картинке?
(Мы будем говорить о вещах, придуманных 30 и более лет назад)
Немного истории
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 4 / 53
Носитель информации 30 лет назад
(Емкость примерно 200 килобайт)
ALGOL-60 и далее
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 5 / 53
Структурное и
процедурное
программирование
Корень всех зол (нет, не goto)
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 6 / 53
Как C-программист
под DSP пишет на C#?
В C# нет goto, но это не беда!
Зачем нужно OOP?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 7 / 53
• Инкапсуляция, наследование,
полиморфизм!
• Пенсия Гради Буча
Зачем на самом деле OOP?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 8 / 53
• Инкапсуляция, наследование,
полиморфизм!
• Пенсия Гради Буча
• Кошелек Миллера (спасибо Григорию
Петрову)
• Закон Деметры
• SOLID
SOLID
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 9 / 53
• Single responsibility principle
SOLID
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 10 / 53
• Single responsibility principle
• Open/closed principle
SOLID
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 11 / 53
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
SOLID
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 12 / 53
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
• Interface segregation principle
SOLID
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 13 / 53
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
• Interface segregation principle
• Dependency inversion principle
Что-то пошло не так
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 14 / 53
Objects have failed* (OOPSLA 2002)
* на самом деле нет
2002+15
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 15 / 53
Python - lingua franca индустрии
В Python есть всё
В Python есть всё
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 16 / 53
Зачем тогда что-то еще?
Отнять и поделить
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 17 / 53
Почему не декриминализуют легкие
наркотики?
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 18 / 53
• Строгая типизация (PHP и JS - плохие)
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 19 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
Опциональная типизация
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 20 / 53
• PHP: type declarations, 5.0 => 7.0
• Python: type hints, PEP-484
• Python: mypy
Статические анализаторы
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 21 / 53
• mypy - статический анализатор кода
Статические анализаторы
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 22 / 53
• mypy - статический анализатор кода
• статический анализатор работает до
запуска программы
Статические анализаторы
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 23 / 53
• mypy - статический анализатор кода
• статический анализатор работает до
запуска программы
• статический анализатор обобщает
идею статической типизации
Анализаторы разных языков
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 24 / 53
• Ruby: RuboCop
• Perl: Perl::Critic
• Python: Coala, Pylama, mypy
• PHP: PHPLint, PHP Mess Detector
Static Analysis Symposium
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 25 / 53
• Научная конференция
• Проходила уже 23 раза
• 23 сборника статей примерно по 400
страниц
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 26 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
Package managers
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 27 / 53
• PHP: Composer
• Python: pip
• Perl: cpanminus
• Ruby: bundler
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 28 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 29 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
• Метапрограммирование
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 30 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
• Метапрограммирование
• Иммутабельность
Хороший Язык Будущего
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 31 / 53
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
• Метапрограммирование
• Иммутабельность
• Null-safety
Метапрограммирование
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 32 / 53
• Было в C - #ifdef
Метапрограммирование
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 33 / 53
• Было в C - #ifdef
• Было в Java - аннотации
Метапрограммирование
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 34 / 53
• Было в C - #ifdef
• Было в Java - аннотации
• Было в LISP - макросы
Сферический в вакууме
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 35 / 53
• Языку нужна среда исполнения
Сферический в вакууме
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 36 / 53
• Языку нужна среда исполнения
• JVM
Сферический в вакууме
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 37 / 53
• Языку нужна среда исполнения
• JVM
• V8
Сферический в вакууме
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 38 / 53
• Языку нужна среда исполнения
• JVM
• V8
• BEAM
Сферический в вакууме
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 39 / 53
• Языку нужна среда исполнения
• JVM
• V8
• BEAM
• Golang runtime (not a VM, but...)
A quest for my next PL
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 40 / 53
https://goo.gl/MS1UfB
Не надо всматриваться в скриншот сейчас!
Буду гиперполиглотом
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 41 / 53
http://hyperpolyglot.org
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 42 / 53
• Очень простой: 25 ключевых слов
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 43 / 53
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 44 / 53
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 45 / 53
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 46 / 53
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
• Из Golang легко сделать Python
Почему не Golang?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 47 / 53
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
• Из Golang легко сделать Python
• С вендорингом какая-то боль
Что реально успел?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 48 / 53
• Clojure: dynamic, strong
• Elixir: dynamic, strong
• Nim: static, strong, null-unsafe
• Rust: static, strong, null-safe
Как ощущения?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 49 / 53
Use libraries, not frameworks!
• Clojure: dynamic, strong
• Elixir: dynamic, strong
• Nim: static, strong, null-unsafe
• Rust: static, strong, null-safe
Haskell
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 50 / 53
Как открыть ВАЗ 2101 без ключа?
(Гораздо легче, чем пройти курс по Haskell*)
Выводы
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 51 / 53
• Я не знаю, что будет дальше
• Я не знаю, какой язык лучший
• Поэтому писать надо на всем
• Но, если можете, не пишите на COBOL
• BTW, death can be by TEX too!
Вопросы, пожалуйста?
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 52 / 53
• ...?
• ...?
• ...?
That’s all, folks!
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 53 / 53
• alex@gitinsky.com
• https://telegram.me/lhommequipleure

More Related Content

What's hot

Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Ontico
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Ontico
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и заAnton Patrushev
 
Релизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliveryРелизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliverySQALab
 
DevOps についてスライドつくってみた
DevOps についてスライドつくってみたDevOps についてスライドつくってみた
DevOps についてスライドつくってみたissei126
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 

What's hot (6)

Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и за
 
Релизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliveryРелизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous delivery
 
DevOps についてスライドつくってみた
DevOps についてスライドつくってみたDevOps についてスライドつくってみた
DevOps についてスライドつくってみた
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 

Viewers also liked

Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016Alex Chistyakov
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016Alex Chistyakov
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?Daniel Podolsky
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015Alex Chistyakov
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016Alex Chistyakov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Alex Chistyakov
 
Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Alex Chistyakov
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Alex Chistyakov
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseAlex Chistyakov
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoAlex Chistyakov
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014Alex Chistyakov
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Alex Chistyakov
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyAlex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 

Viewers also liked (20)

Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
 
Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFo
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
HBase on HappyDev 2013
HBase on HappyDev 2013HBase on HappyDev 2013
HBase on HappyDev 2013
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 

Similar to My talk at DevParty 2017

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кодаКирилл Борисов
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TKConf
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Yandex
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Nikita Baksalyar
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 

Similar to My talk at DevParty 2017 (20)

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
В поисках CI
В поисках CIВ поисках CI
В поисках CI
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
Ryazan
RyazanRyazan
Ryazan
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 

More from Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016Alex Chistyakov
 
My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016Alex Chistyakov
 

More from Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016
 
My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016
 

My talk at DevParty 2017

  • 1. Современные тенденции в разработке ПО Александр Чистяков Git in Sky
  • 2. Несколько слов о себе Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 2 / 53 • Главный инженер в Git in Sky • Преподаватель в avalon.ru • Researcher @ ISST Lab, ITMO • Координатор встреч DevOps-инженеров в Петербурге • Пишу код
  • 3. Слово «современные» Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 3 / 53 Что изображено на картинке? (Мы будем говорить о вещах, придуманных 30 и более лет назад)
  • 4. Немного истории Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 4 / 53 Носитель информации 30 лет назад (Емкость примерно 200 килобайт)
  • 5. ALGOL-60 и далее Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 5 / 53 Структурное и процедурное программирование
  • 6. Корень всех зол (нет, не goto) Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 6 / 53 Как C-программист под DSP пишет на C#? В C# нет goto, но это не беда!
  • 7. Зачем нужно OOP? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 7 / 53 • Инкапсуляция, наследование, полиморфизм! • Пенсия Гради Буча
  • 8. Зачем на самом деле OOP? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 8 / 53 • Инкапсуляция, наследование, полиморфизм! • Пенсия Гради Буча • Кошелек Миллера (спасибо Григорию Петрову) • Закон Деметры • SOLID
  • 9. SOLID Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 9 / 53 • Single responsibility principle
  • 10. SOLID Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 10 / 53 • Single responsibility principle • Open/closed principle
  • 11. SOLID Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 11 / 53 • Single responsibility principle • Open/closed principle • Liskov substitution principle
  • 12. SOLID Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 12 / 53 • Single responsibility principle • Open/closed principle • Liskov substitution principle • Interface segregation principle
  • 13. SOLID Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 13 / 53 • Single responsibility principle • Open/closed principle • Liskov substitution principle • Interface segregation principle • Dependency inversion principle
  • 14. Что-то пошло не так Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 14 / 53 Objects have failed* (OOPSLA 2002) * на самом деле нет
  • 15. 2002+15 Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 15 / 53 Python - lingua franca индустрии В Python есть всё
  • 16. В Python есть всё Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 16 / 53 Зачем тогда что-то еще?
  • 17. Отнять и поделить Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 17 / 53 Почему не декриминализуют легкие наркотики?
  • 18. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 18 / 53 • Строгая типизация (PHP и JS - плохие)
  • 19. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 19 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация
  • 20. Опциональная типизация Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 20 / 53 • PHP: type declarations, 5.0 => 7.0 • Python: type hints, PEP-484 • Python: mypy
  • 21. Статические анализаторы Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 21 / 53 • mypy - статический анализатор кода
  • 22. Статические анализаторы Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 22 / 53 • mypy - статический анализатор кода • статический анализатор работает до запуска программы
  • 23. Статические анализаторы Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 23 / 53 • mypy - статический анализатор кода • статический анализатор работает до запуска программы • статический анализатор обобщает идею статической типизации
  • 24. Анализаторы разных языков Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 24 / 53 • Ruby: RuboCop • Perl: Perl::Critic • Python: Coala, Pylama, mypy • PHP: PHPLint, PHP Mess Detector
  • 25. Static Analysis Symposium Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 25 / 53 • Научная конференция • Проходила уже 23 раза • 23 сборника статей примерно по 400 страниц
  • 26. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 26 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager
  • 27. Package managers Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 27 / 53 • PHP: Composer • Python: pip • Perl: cpanminus • Ruby: bundler
  • 28. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 28 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager
  • 29. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 29 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager • Метапрограммирование
  • 30. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 30 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager • Метапрограммирование • Иммутабельность
  • 31. Хороший Язык Будущего Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 31 / 53 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager • Метапрограммирование • Иммутабельность • Null-safety
  • 32. Метапрограммирование Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 32 / 53 • Было в C - #ifdef
  • 33. Метапрограммирование Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 33 / 53 • Было в C - #ifdef • Было в Java - аннотации
  • 34. Метапрограммирование Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 34 / 53 • Было в C - #ifdef • Было в Java - аннотации • Было в LISP - макросы
  • 35. Сферический в вакууме Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 35 / 53 • Языку нужна среда исполнения
  • 36. Сферический в вакууме Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 36 / 53 • Языку нужна среда исполнения • JVM
  • 37. Сферический в вакууме Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 37 / 53 • Языку нужна среда исполнения • JVM • V8
  • 38. Сферический в вакууме Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 38 / 53 • Языку нужна среда исполнения • JVM • V8 • BEAM
  • 39. Сферический в вакууме Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 39 / 53 • Языку нужна среда исполнения • JVM • V8 • BEAM • Golang runtime (not a VM, but...)
  • 40. A quest for my next PL Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 40 / 53 https://goo.gl/MS1UfB Не надо всматриваться в скриншот сейчас!
  • 41. Буду гиперполиглотом Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 41 / 53 http://hyperpolyglot.org
  • 42. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 42 / 53 • Очень простой: 25 ключевых слов
  • 43. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 43 / 53 • Очень простой: 25 ключевых слов • Нет метапрограммирования
  • 44. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 44 / 53 • Очень простой: 25 ключевых слов • Нет метапрограммирования • Нет иммутабельности
  • 45. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 45 / 53 • Очень простой: 25 ключевых слов • Нет метапрограммирования • Нет иммутабельности • Нет null-safety
  • 46. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 46 / 53 • Очень простой: 25 ключевых слов • Нет метапрограммирования • Нет иммутабельности • Нет null-safety • Из Golang легко сделать Python
  • 47. Почему не Golang? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 47 / 53 • Очень простой: 25 ключевых слов • Нет метапрограммирования • Нет иммутабельности • Нет null-safety • Из Golang легко сделать Python • С вендорингом какая-то боль
  • 48. Что реально успел? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 48 / 53 • Clojure: dynamic, strong • Elixir: dynamic, strong • Nim: static, strong, null-unsafe • Rust: static, strong, null-safe
  • 49. Как ощущения? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 49 / 53 Use libraries, not frameworks! • Clojure: dynamic, strong • Elixir: dynamic, strong • Nim: static, strong, null-unsafe • Rust: static, strong, null-safe
  • 50. Haskell Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 50 / 53 Как открыть ВАЗ 2101 без ключа? (Гораздо легче, чем пройти курс по Haskell*)
  • 51. Выводы Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 51 / 53 • Я не знаю, что будет дальше • Я не знаю, какой язык лучший • Поэтому писать надо на всем • Но, если можете, не пишите на COBOL • BTW, death can be by TEX too!
  • 52. Вопросы, пожалуйста? Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 52 / 53 • ...? • ...? • ...?
  • 53. That’s all, folks! Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 53 / 53 • alex@gitinsky.com • https://telegram.me/lhommequipleure