Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

My talk on programming languages at SPbLUG Mar 2017

245 views

Published on

My talk on programming languages at SPbLUG Mar 2017

Published in: Technology
  • Be the first to comment

  • Be the first to like this

My talk on programming languages at SPbLUG Mar 2017

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

×