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
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
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
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
Не надо всматриваться в скриншот сейчас!
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!
53. That’s all, folks!
Александр Чистяков, Git in Sky Современные тенденции в разработке ПО 53 / 53
• alex@gitinsky.com
• https://telegram.me/lhommequipleure