SlideShare a Scribd company logo
1 of 61
Download to read offline
Страх и отвращение в
Санкт-Петербурге
Александр Чистяков
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

More Related Content

Viewers also liked

Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
My talk at DevParty 2017
My talk at DevParty 2017My talk at DevParty 2017
My talk at DevParty 2017Alex Chistyakov
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016Alex Chistyakov
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?Daniel Podolsky
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015Alex Chistyakov
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016Alex Chistyakov
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Alex Chistyakov
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Alex Chistyakov
 
Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Alex Chistyakov
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseAlex Chistyakov
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoAlex Chistyakov
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014Alex Chistyakov
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Alex Chistyakov
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyAlex Chistyakov
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016Alex Chistyakov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 

Viewers also liked (20)

Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
My talk at DevParty 2017
My talk at DevParty 2017My talk at DevParty 2017
My talk at DevParty 2017
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
 
Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFo
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
HBase on HappyDev 2013
HBase on HappyDev 2013HBase on HappyDev 2013
HBase on HappyDev 2013
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 

Similar to My talk on programming languages at SPbLUG Mar 2017

My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplantit-people
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned Alexander Syrotenko
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey Platonov
 
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС2ГИС Технологии
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NETlugnsk
 
Истина где-то рядом или как правильно писать код
Истина где-то рядом или как правильно писать кодИстина где-то рядом или как правильно писать код
Истина где-то рядом или как правильно писать кодSQALab
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньDevDay
 
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studioчто пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studiocorehard_by
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кодаКирилл Борисов
 

Similar to My talk on programming languages at SPbLUG Mar 2017 (20)

My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
 
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
«Реактивные грабли» — Дмитрий Кулижников, 2ГИС
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 
Истина где-то рядом или как правильно писать код
Истина где-то рядом или как правильно писать кодИстина где-то рядом или как правильно писать код
Истина где-то рядом или как правильно писать код
 
В поисках CI
В поисках CIВ поисках CI
В поисках CI
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый день
 
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studioчто пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Garbage collection in V8 VM
Garbage collection in V8 VMGarbage collection in V8 VM
Garbage collection in V8 VM
 

More from Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016Alex Chistyakov
 

More from Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016
 

My talk on programming languages at SPbLUG Mar 2017

  • 1. Страх и отвращение в Санкт-Петербурге Александр Чистяков Git in Sky
  • 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
  • 9. SOLID Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 9 / 61 • Single responsibility principle
  • 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
  • 21. Статические анализаторы Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 21 / 61 • 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 • Метапрограммирование • Иммутабельность
  • 31. Иммутабельность Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 31 / 61 Доклад Боба Ипполито в 2014-м верен и в 2017-м
  • 32. Хороший Язык Будущего Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 32 / 61 • Строгая типизация (PHP и JS - плохие) • (Опциональная) статическая типизация • Package/vendoring manager • Метапрограммирование • Иммутабельность • Null-safety
  • 33. Метапрограммирование Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 33 / 61 • Было в C - #ifdef
  • 34. Метапрограммирование Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 34 / 61 • Было в C - #ifdef • Было в Java - аннотации
  • 35. Метапрограммирование Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 35 / 61 • Было в C - #ifdef • Было в Java - аннотации • Было в LISP - макросы
  • 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
  • 42. Буду гиперполиглотом Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 42 / 61 http://hyperpolyglot.org
  • 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
  • 60. Вопросы, пожалуйста? Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 60 / 61 • ...? • ...? • ...?
  • 61. That’s all, folks! Александр Чистяков, Git in Sky Страх и отвращение в Санкт-Петербурге 61 / 61 • alex@gitinsky.com • https://telegram.me/lhommequipleure