Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

84 views

Published on

Конференция Dev Party (http://devparty.ru).
Вологда, 25.03.2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

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

×