my talk on programming languages at spblug mar 2017

Post on 12-Apr-2017

140 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

• alex@gitinsky.com

• https://telegram.me/lhommequipleure

top related