61
Страх и отвращение в Санкт-Петербурге Александр Чистяков Git in Sky

My talk on programming languages at SPbLUG Mar 2017

Embed Size (px)

Citation preview

Page 1: My talk on programming languages at SPbLUG Mar 2017

Страх и отвращение вСанкт-Петербурге

Александр Чистяков

Git in Sky

Page 2: My talk on programming languages at SPbLUG Mar 2017

Несколько слов о себе

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 2 / 61

• Главный инженер в Git in Sky

• Преподаватель в avalon.ru

• Researcher @ ISST Lab, ITMO

• Координатор встречDevOps-инженеров в Петербурге

• Пишу код

Page 3: My talk on programming languages at SPbLUG Mar 2017

Слово «современные»

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 3 / 61

Что изображено на картинке?(Мы будем говорить о вещах, придуманных 30 и более лет назад)

Page 4: My talk on programming languages at SPbLUG Mar 2017

Немного истории

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 4 / 61

Носитель информации 30 лет назад(Емкость примерно 200 килобайт)

Page 5: My talk on programming languages at SPbLUG Mar 2017

ALGOL-60 и далее

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 5 / 61

Структурное ипроцедурноепрограммирование

Page 6: My talk on programming languages at SPbLUG Mar 2017

Корень всех зол (нет, не goto)

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 6 / 61

Как C-программистпод DSP пишет на C#?В C# нет goto, но это не беда!

Page 7: My talk on programming languages at SPbLUG Mar 2017

Зачем нужно OOP?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 7 / 61

• Инкапсуляция, наследование,полиморфизм!

• Пенсия Гради Буча

Page 8: My talk on programming languages at SPbLUG Mar 2017

Зачем на самом деле OOP?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 8 / 61

• Инкапсуляция, наследование,полиморфизм!

• Пенсия Гради Буча

• Кошелек Миллера (спасибо ГригориюПетрову)

• Закон Деметры

• SOLID

Page 9: My talk on programming languages at SPbLUG Mar 2017

SOLID

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 9 / 61

• Single responsibility principle

Page 10: My talk on programming languages at SPbLUG Mar 2017

SOLID

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 10 / 61

• Single responsibility principle

• Open/closed principle

Page 11: My talk on programming languages at SPbLUG Mar 2017

SOLID

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 11 / 61

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

Page 12: My talk on programming languages at SPbLUG Mar 2017

SOLID

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 12 / 61

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

• Interface segregation principle

Page 13: My talk on programming languages at SPbLUG Mar 2017

SOLID

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 13 / 61

• Single responsibility principle

• Open/closed principle

• Liskov substitution principle

• Interface segregation principle

• Dependency inversion principle

Page 14: My talk on programming languages at SPbLUG Mar 2017

Что-то пошло не так

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 14 / 61

Objects have failed* (OOPSLA 2002)* на самом деле нет

Page 15: My talk on programming languages at SPbLUG Mar 2017

2002+15

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 15 / 61

Python - lingua franca индустрииВ Python есть всё

Page 16: My talk on programming languages at SPbLUG Mar 2017

В Python есть всё

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 16 / 61

Зачем тогда что-то еще?

Page 17: My talk on programming languages at SPbLUG Mar 2017

Отнять и поделить

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 17 / 61

Почему не декриминализуют легкиенаркотики?

Page 18: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 18 / 61

• Строгая типизация (PHP и JS - плохие)

Page 19: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 19 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

Page 20: My talk on programming languages at SPbLUG Mar 2017

Опциональная типизация

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 20 / 61

• PHP: type declarations, 5.0 => 7.0

• Python: type hints, PEP-484

• Python: mypy

Page 21: My talk on programming languages at SPbLUG Mar 2017

Статические анализаторы

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 21 / 61

• mypy - статический анализатор кода

Page 22: My talk on programming languages at SPbLUG Mar 2017

Статические анализаторы

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 22 / 61

• mypy - статический анализатор кода

• статический анализатор работает дозапуска программы

Page 23: My talk on programming languages at SPbLUG Mar 2017

Статические анализаторы

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 23 / 61

• mypy - статический анализатор кода

• статический анализатор работает дозапуска программы

• статический анализатор обобщаетидею статической типизации

Page 24: My talk on programming languages at SPbLUG Mar 2017

Анализаторы разных языков

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 24 / 61

• Ruby: RuboCop

• Perl: Perl::Critic

• Python: Coala, Pylama, mypy

• PHP: PHPLint, PHP Mess Detector

Page 25: My talk on programming languages at SPbLUG Mar 2017

Static Analysis Symposium

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 25 / 61

• Научная конференция

• Проходила уже 23 раза

• 23 сборника статей примерно по 400страниц

Page 26: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 26 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

Page 27: My talk on programming languages at SPbLUG Mar 2017

Package managers

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 27 / 61

• PHP: Composer

• Python: pip

• Perl: cpanminus

• Ruby: bundler

Page 28: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 28 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

Page 29: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 29 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

Page 30: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 30 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

• Иммутабельность

Page 31: My talk on programming languages at SPbLUG Mar 2017

Иммутабельность

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 31 / 61

Доклад Боба Ипполито в 2014-мверен и в 2017-м

Page 32: My talk on programming languages at SPbLUG Mar 2017

Хороший Язык Будущего

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 32 / 61

• Строгая типизация (PHP и JS - плохие)

• (Опциональная) статическаятипизация

• Package/vendoring manager

• Метапрограммирование

• Иммутабельность

• Null-safety

Page 33: My talk on programming languages at SPbLUG Mar 2017

Метапрограммирование

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 33 / 61

• Было в C - #ifdef

Page 34: My talk on programming languages at SPbLUG Mar 2017

Метапрограммирование

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 34 / 61

• Было в C - #ifdef

• Было в Java - аннотации

Page 35: My talk on programming languages at SPbLUG Mar 2017

Метапрограммирование

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 35 / 61

• Было в C - #ifdef

• Было в Java - аннотации

• Было в LISP - макросы

Page 36: My talk on programming languages at SPbLUG Mar 2017

Сферический в вакууме

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 36 / 61

• Языку нужна среда исполнения

Page 37: My talk on programming languages at SPbLUG Mar 2017

Сферический в вакууме

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 37 / 61

• Языку нужна среда исполнения

• JVM

Page 38: My talk on programming languages at SPbLUG Mar 2017

Сферический в вакууме

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 38 / 61

• Языку нужна среда исполнения

• JVM

• V8

Page 39: My talk on programming languages at SPbLUG Mar 2017

Сферический в вакууме

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 39 / 61

• Языку нужна среда исполнения

• JVM

• V8

• BEAM

Page 40: My talk on programming languages at SPbLUG Mar 2017

Сферический в вакууме

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 40 / 61

• Языку нужна среда исполнения

• JVM

• V8

• BEAM

• Golang runtime (not a VM, but...)

Page 41: My talk on programming languages at SPbLUG Mar 2017

A quest for my next PL

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 41 / 61

https://goo.gl/MS1UfB

Page 42: My talk on programming languages at SPbLUG Mar 2017

Буду гиперполиглотом

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 42 / 61

http://hyperpolyglot.org

Page 43: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 43 / 61

• Очень простой: 25 ключевых слов

Page 44: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 44 / 61

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

Page 45: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 45 / 61

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

Page 46: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 46 / 61

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

Page 47: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 47 / 61

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

• Из Golang легко сделать Python

Page 48: My talk on programming languages at SPbLUG Mar 2017

Почему не Golang?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 48 / 61

• Очень простой: 25 ключевых слов

• Нет метапрограммирования

• Нет иммутабельности

• Нет null-safety

• Из Golang легко сделать Python

• С вендорингом какая-то боль

Page 49: My talk on programming languages at SPbLUG Mar 2017

Что реально успел?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 49 / 61

• Clojure: dynamic, strong

• Elixir: dynamic, strong

• Nim: static, strong, null-unsafe

• Rust: static, strong, null-safe

Page 50: My talk on programming languages at SPbLUG Mar 2017

Как ощущения?

Александр Чистяков, 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

Page 51: My talk on programming languages at SPbLUG Mar 2017

Use libraries, not frameworks!

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 51 / 61

• Везде генерируется scaffolding

• Везде есть порт Sinatra

• Везде есть ORM tool

Page 52: My talk on programming languages at SPbLUG Mar 2017

Use libraries, not frameworks!

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 52 / 61

Есть опасность написать свой фреймворк

Page 53: My talk on programming languages at SPbLUG Mar 2017

Чего еще нет в Python?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 53 / 61

Скорости!

Page 54: My talk on programming languages at SPbLUG Mar 2017

Что насчет скорости?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 54 / 61

Динамические языки

• JIT compilers

Page 55: My talk on programming languages at SPbLUG Mar 2017

Что насчет скорости?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 55 / 61

Динамические языки

• JIT compilers

• GraalVM

Page 56: My talk on programming languages at SPbLUG Mar 2017

Что насчет скорости?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 56 / 61

Динамические языки

• JIT compilers

• GraalVM

• Truffle framework

Page 57: My talk on programming languages at SPbLUG Mar 2017

Что насчет скорости?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 57 / 61

Статически типизированные языки

• Zero-cost abstractions

Page 58: My talk on programming languages at SPbLUG Mar 2017

Haskell

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 58 / 61

Как открыть ВАЗ 2101 без ключа?(Гораздо легче, чем пройти курс по Haskell*)

Page 59: My talk on programming languages at SPbLUG Mar 2017

Выводы

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 59 / 61

• Я не знаю, что будет дальше

• Я не знаю, какой язык лучший

• Поэтому писать надо на всем

• Но, если можете, не пишите на COBOL

Page 60: My talk on programming languages at SPbLUG Mar 2017

Вопросы, пожалуйста?

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 60 / 61

• ...?

• ...?

• ...?

Page 61: My talk on programming languages at SPbLUG Mar 2017

That’s all, folks!

Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 61 / 61

[email protected]

• https://telegram.me/lhommequipleure