2. Несколько слов о себе
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 2 / 75
• Главный инженер в Git in Sky
• Преподаватель в avalon.ru
• Researcher @ ISST Lab, ITMO
• Координатор встреч
DevOps-инженеров в Петербурге
• Пишу код
3. О чем это доклад?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 3 / 75
• Я отвечу в самом конце
4. Что такое «DevOps»?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 4 / 75
• Отличный вопрос для собеседования!
5. Что такое «DevOps»?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 5 / 75
• Отличный вопрос для собеседования!
• Термин из прошлого десятилетия
6. Что такое «DevOps»?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 6 / 75
• Отличный вопрос для собеседования!
• Термин из прошлого десятилетия
• Набор практик
7. Что такое «DevOps»?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 7 / 75
• Отличный вопрос для собеседования!
• Термин из прошлого десятилетия
• Набор практик
• CAMS
12. CAMS(R)
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 12 / 75
R - Repeatability (плачет в углу)
https://www.opennet.ru/opennews/art.shtml?num=46338
14. Repeatability
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 14 / 75
Nixpkgs
(Nixpkgs + Docker)!
• Два варианта
• https://goo.gl/6uxL0M
• https://goo.gl/wkduPv
• Типичный случай аксиомы Эскобара
15. Немного истории
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 15 / 75
Что изображено на картинке?
(Поговорим о реальном старье)
16. Немного истории
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 16 / 75
Носитель информации 30 лет назад
(Емкость примерно 200 килобайт)
17. ALGOL-60 и далее
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 17 / 75
Структурное и
процедурное
программирование
18. Корень всех зол (нет, не goto)
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 18 / 75
Как C-программист
под DSP пишет на C#?
В C# нет goto, но это не беда!
19. Зачем нужно OOP?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 19 / 75
• Инкапсуляция, наследование,
полиморфизм!
• Пенсия Гради Буча
20. Зачем на самом деле OOP?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 20 / 75
• Инкапсуляция, наследование,
полиморфизм!
• Пенсия Гради Буча
• Кошелек Миллера (спасибо Григорию
Петрову)
• Закон Деметры
• SOLID
22. SOLID
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 22 / 75
• Single responsibility principle
• Open/closed principle
23. SOLID
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 23 / 75
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
24. SOLID
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 24 / 75
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
• Interface segregation principle
25. SOLID
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 25 / 75
• Single responsibility principle
• Open/closed principle
• Liskov substitution principle
• Interface segregation principle
• Dependency inversion principle
26. Что-то пошло не так
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 26 / 75
Objects have failed* (OOPSLA 2002)
* на самом деле нет
27. 2002+15
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 27 / 75
Python - lingua franca индустрии
В Python есть всё
28. В Python есть всё
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 28 / 75
Зачем тогда что-то еще?
29. Отнять и поделить
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 29 / 75
Почему не декриминализуют легкие
наркотики?
30. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 30 / 75
• Строгая типизация (PHP и JS - плохие)
31. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 31 / 75
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
32. Опциональная типизация
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 32 / 75
• PHP: type declarations, 5.0 => 7.0
• Python: type hints, PEP-484
• Python: mypy
34. Статические анализаторы
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 34 / 75
• mypy - статический анализатор кода
• статический анализатор работает до
запуска программы
35. Статические анализаторы
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 35 / 75
• mypy - статический анализатор кода
• статический анализатор работает до
запуска программы
• статический анализатор обобщает
идею статической типизации
36. Анализаторы разных языков
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 36 / 75
• Ruby: RuboCop
• Perl: Perl::Critic
• Python: Coala, Pylama, mypy
• PHP: PHPLint, PHP Mess Detector
37. Static Analysis Symposium
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 37 / 75
• Научная конференция
• Проходила уже 23 раза
• 23 сборника статей примерно по 400
страниц
38. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 38 / 75
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
39. Package managers
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 39 / 75
• PHP: Composer
• Python: pip
• Perl: cpanminus
• Ruby: bundler
40. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 40 / 75
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
41. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 41 / 75
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
• Метапрограммирование
42. Хороший Язык Будущего
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 42 / 75
• Строгая типизация (PHP и JS - плохие)
• (Опциональная) статическая
типизация
• Package/vendoring manager
• Метапрограммирование
• Иммутабельность
49. Сферический в вакууме
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 49 / 75
• Языку нужна среда исполнения
• JVM
50. Сферический в вакууме
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 50 / 75
• Языку нужна среда исполнения
• JVM
• V8
51. Сферический в вакууме
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 51 / 75
• Языку нужна среда исполнения
• JVM
• V8
• BEAM
52. Сферический в вакууме
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 52 / 75
• Языку нужна среда исполнения
• JVM
• V8
• BEAM
• Golang runtime (not a VM, but...)
53. A quest for my next PL
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 53 / 75
https://goo.gl/MS1UfB
55. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 55 / 75
• Очень простой: 25 ключевых слов
56. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 56 / 75
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
57. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 57 / 75
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
58. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 58 / 75
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
59. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 59 / 75
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
• Из Golang легко сделать Python
60. Почему не Golang?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 60 / 75
• Очень простой: 25 ключевых слов
• Нет метапрограммирования
• Нет иммутабельности
• Нет null-safety
• Из Golang легко сделать Python
• С вендорингом какая-то боль
61. Что реально успел?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 61 / 75
• Clojure: dynamic, strong
• Elixir: dynamic, strong
• Nim: static, strong, null-unsafe
• Rust: static, strong, null-safe
62. Как ощущения?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 62 / 75
Use libraries, not frameworks!
• Clojure: dynamic, strong
• Elixir: dynamic, strong
• Nim: static, strong, null-unsafe
• Rust: static, strong, null-safe
63. Use libraries, not frameworks!
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 63 / 75
• Везде генерируется scaffolding
• Везде есть порт Sinatra
• Везде есть ORM tool
64. Use libraries, not frameworks!
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 64 / 75
Есть опасность написать свой фреймворк
65. Чего еще нет в Python?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 65 / 75
Скорости!
66. Что насчет скорости?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 66 / 75
Динамические языки
• JIT compilers
67. Что насчет скорости?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 67 / 75
Динамические языки
• JIT compilers
• GraalVM
68. Что насчет скорости?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 68 / 75
Динамические языки
• JIT compilers
• GraalVM
• Truffle framework
69. Что насчет скорости?
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 69 / 75
Статически типизированные языки
• Zero-cost abstractions
70. Haskell
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 70 / 75
Как открыть ВАЗ 2101 без ключа?
(Гораздо легче, чем пройти курс по Haskell*)
71. Героическое фэнтези
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 71 / 75
Типичный состав команды
• Лоховатый главный герой (с
потенциалом)
• Дева в беде (муза героя)
• Болтливый друг героя (без
потенциала)
• Воительница
72. Мужские роли играю я
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 72 / 75
73. Выводы
Александр Чистяков, Git in Sky Постправда в пост-девопс мире 73 / 75
• DevOps - из прошлого десятилетия
• LISP - из 1958-го года
• Я не знаю, что будет дальше
• Я не знаю, какой язык лучший
• Поэтому писать надо на всем
• «Hо не пиши на Коболе, если можешь
этого избежать»