SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Современные тенденции в
разработке ПО
Александр Чистяков
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

Contenu connexe

Tendances

Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продуктыОлег Стрекаловский
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooТарасов Константин
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Ontico
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахAlex Chistyakov
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Badoo Development
 
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп ДельгядоСложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп ДельгядоOntico
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAlexander Lisachenko
 
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...Ontico
 
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"Lviv Startup Club
 
Кодогенерация в .NET: теория, практика и шаблоны T4
Кодогенерация в .NET: теория, практика и шаблоны T4Кодогенерация в .NET: теория, практика и шаблоны T4
Кодогенерация в .NET: теория, практика и шаблоны T4CUSTIS
 

Tendances (13)

Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продукты
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Python dependencies
Python dependenciesPython dependencies
Python dependencies
 
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп ДельгядоСложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHP
 
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
 
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"
Alexandr Grytsenko "Typical Mistakes - Expensive Outcomes"
 
Кодогенерация в .NET: теория, практика и шаблоны T4
Кодогенерация в .NET: теория, практика и шаблоны T4Кодогенерация в .NET: теория, практика и шаблоны T4
Кодогенерация в .NET: теория, практика и шаблоны T4
 

En vedette

Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалDev_Party
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Dev_Party
 
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...Dev_Party
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Dev_Party
 
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Dev_Party
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Dev_Party
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистDev_Party
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейDev_Party
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Dev_Party
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Dev_Party
 
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep DiveАнна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep DiveDev_Party
 
Игорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активностиИгорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активностиDev_Party
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Dev_Party
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСDev_Party
 

En vedette (14)

Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышал
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
Елена Никитина, Аналитический центр при Правительстве РФ — Путь питониста, ил...
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
 
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
 
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep DiveАнна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
Анна Крижановская, Playrix — Продвижение мобильных приложений: Deep Dive
 
Игорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активностиИгорь Иванов, Playrix — Статистические предсказания игровой активности
Игорь Иванов, Playrix — Статистические предсказания игровой активности
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
 

Similaire à Александр Чистяков, Git in Sky — Современные тенденции в разработке программного обеспечения

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда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
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
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
 

Similaire à Александр Чистяков, Git in Sky — Современные тенденции в разработке программного обеспечения (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 и сторонние инструменты". Ма...
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
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
 

Александр Чистяков, Git in Sky — Современные тенденции в разработке программного обеспечения

  • 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