53
Современные тенденции в разработке ПО Александр Чистяков Git in Sky

My talk at DevParty 2017

Embed Size (px)

Citation preview

Современные тенденции вразработке ПО

Александр Чистяков

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

[email protected]

• https://telegram.me/lhommequipleure