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