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