Александр Чистяков, git in sky — Современные тенденции в...

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

Upload: devparty

Post on 17-Mar-2018

96 views

Category:

Software


3 download

TRANSCRIPT

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

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

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

Git in Sky

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

Несколько слов о себе

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

• Главный инженер в Git in Sky

• Преподаватель в avalon.ru

• Researcher @ ISST Lab, ITMO

• Координатор встречDevOps-инженеров в Петербурге

• Пишу код

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

Слово «современные»

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

Что изображено на картинке?(Мы будем говорить о вещах, придуманных 30 и более лет назад)

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

Немного истории

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

Носитель информации 30 лет назад(Емкость примерно 200 килобайт)

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

ALGOL-60 и далее

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

Структурное ипроцедурноепрограммирование

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

Корень всех зол (нет, не goto)

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

Как C-программистпод DSP пишет на C#?В C# нет goto, но это не беда!

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

Зачем нужно OOP?

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

• Инкапсуляция, наследование,полиморфизм!

• Пенсия Гради Буча

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

Зачем на самом деле OOP?

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

• Инкапсуляция, наследование,полиморфизм!

• Пенсия Гради Буча

• Кошелек Миллера (спасибо ГригориюПетрову)

• Закон Деметры

• SOLID

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

SOLID

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

• Single responsibility principle

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

SOLID

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

• Single responsibility principle

• Open/closed principle

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

SOLID

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

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

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

SOLID

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

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

• Interface segregation principle

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

SOLID

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

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

• Interface segregation principle

• Dependency inversion principle

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

Что-то пошло не так

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

Objects have failed* (OOPSLA 2002)* на самом деле нет

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

2002+15

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

Python - lingua franca индустрииВ Python есть всё

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

В Python есть всё

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

Зачем тогда что-то еще?

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

Отнять и поделить

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

Почему не декриминализуют легкиенаркотики?

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

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

Опциональная типизация

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

• PHP: type declarations, 5.0 => 7.0

• Python: type hints, PEP-484

• Python: mypy

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

Статические анализаторы

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

• mypy - статический анализатор кода

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

Статические анализаторы

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

• mypy - статический анализатор кода

• статический анализатор работает дозапуска программы

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

Статические анализаторы

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

• mypy - статический анализатор кода

• статический анализатор работает дозапуска программы

• статический анализатор обобщаетидею статической типизации

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

Анализаторы разных языков

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

• Ruby: RuboCop

• Perl: Perl::Critic

• Python: Coala, Pylama, mypy

• PHP: PHPLint, PHP Mess Detector

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

Static Analysis Symposium

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

• Научная конференция

• Проходила уже 23 раза

• 23 сборника статей примерно по 400страниц

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

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

Package managers

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

• PHP: Composer

• Python: pip

• Perl: cpanminus

• Ruby: bundler

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

• Иммутабельность

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

Хороший Язык Будущего

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

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

• Иммутабельность

• Null-safety

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

Метапрограммирование

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

• Было в C - #ifdef

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

Метапрограммирование

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

• Было в C - #ifdef

• Было в Java - аннотации

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

Метапрограммирование

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

• Было в C - #ifdef

• Было в Java - аннотации

• Было в LISP - макросы

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

Сферический в вакууме

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

• Языку нужна среда исполнения

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

Сферический в вакууме

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

• Языку нужна среда исполнения

• JVM

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

Сферический в вакууме

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

• Языку нужна среда исполнения

• JVM

• V8

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

Сферический в вакууме

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

• Языку нужна среда исполнения

• JVM

• V8

• BEAM

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

Сферический в вакууме

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

• Языку нужна среда исполнения

• JVM

• V8

• BEAM

• Golang runtime (not a VM, but...)

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

A quest for my next PL

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

https://goo.gl/MS1UfBНе надо всматриваться в скриншот сейчас!

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

Буду гиперполиглотом

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

http://hyperpolyglot.org

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

• Из Golang легко сделать Python

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

Почему не Golang?

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

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

• Из Golang легко сделать Python

• С вендорингом какая-то боль

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

Что реально успел?

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

• Clojure: dynamic, strong

• Elixir: dynamic, strong

• Nim: static, strong, null-unsafe

• Rust: static, strong, null-safe

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

Как ощущения?

Александр Чистяков, 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

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

Haskell

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

Как открыть ВАЗ 2101 без ключа?(Гораздо легче, чем пройти курс по Haskell*)

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

Выводы

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

• Я не знаю, что будет дальше

• Я не знаю, какой язык лучший

• Поэтому писать надо на всем

• Но, если можете, не пишите на COBOL

• BTW, death can be by TEX too!

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

Вопросы, пожалуйста?

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

• ...?

• ...?

• ...?

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

That’s all, folks!

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

[email protected]

• https://telegram.me/lhommequipleure