SlideShare a Scribd company logo
kranonit S16 02.11.2013
Сергей Бурма
Python-разработчик
Полтора года с Python на фрилансе.
Год до этого - как любитель.
Люблю:
● Django;
● Tornado;
● Redis;
● Черную магию (Gevent, ФП);
● Инди-игры;
● Хорошо приготовленный кофе:)
Факториал на Python
reduce(lambda x, y: x * y, xrange(1, x+1))
Факториал 10 000:
● ~200 мс;
● около ТРИДЦАТИ ПЯТИ ТЫСЯЧ знаков.
Гвидо Ван Россум
Кто использует?
●
●
●
●
●
●
●
●

NASA
Google
Yahoo
Yandex
Dropbox
IBM
Bitbucket
…и все остальные;)
The Zen of Python
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one - and preferably only one - obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea - let's do more of those!
Простота и понятность!
Да-да, именно он будет
поддерживать ваш код!
Говорить легко, но как делать?
●
●
●
●

PEP8;
функция должна вмещаться в экран;
одна операция на строку;
правильные задачи.

Неправильно:
reduce(lambda x, y: x * y, xrange(1, x+1))
Правильно:
def multiply(x, y):
return x * y
def factorial(x):
numbers = xrange(1, x + 1)
result = reduce(multiply, numbers)
return result
Возможности
● На самом деле, как писать код говорит вам только
совесть - язык мультипарадигменный.
● ООП реализовано ненавязчиво, хоть все и говорят,
что так не тру.
● Очень приятная реализация механизма исключений.
● Продуманная система типов и структур данных. Того
что есть хватит надолго, работает все к тому же
быстро.
● Продвинутые неизменяемые типы, такие как string,
tuple, frozen set, которые можно использовать,
например, как хеши в словаре.
● Продвинутая работа с функциями, но от этого
страдает простота кода, так что не рекомендуется.
2 или 3?
● Огромное количество библиотек еще не
портировано.
● Большинство относится скептически.
Но:
● Версия 2.7.5 уже больше года не развивается.
● В 3.3 есть много новых интересных решений.
● Есть библиотеки для автоматического
портирования. Работают не везде.
Плюшки
●
●
●
●
●
●
●
●
●
●

PEP8;
Global Interpreter Lock;
динамическая типизация;
куча интересных идей с асинхронностью;
очень крутая реализация REPL;
быстрая реализация и исполнение КОРРЕКТНЫХ
задач;
батарейки, очень много батареек, сразу;
огромное сообщество с пожизненным диктатором во
главе;
очень подробная документация, касающаяся всего;
PyPi.
Неплюшки
●
●
●
●
●
●
●
●
●
●

PEP8;
Global Interpreter Lock;
динамическая типизация;
куча интересных идей с асинхронностью;
очень крутая реализация REPL;
быстрая реализация и исполнение КОРРЕКТНЫХ
задач;
батарейки, очень много батареек, сразу;
огромное сообщество с пожизненным диктатором во
главе;
очень подробная документация, касающаяся всего;
PyPi.
И что с этим всем делать?
● Web-сайты, серверные приложения;
● парсеры;
● нетребовательные к вычислениям десктопные
приложения;
● системные скрипты;
● мобильные приложения;
● игры, в особенности рогалики;
● разного рода прототипы, от идей до программ.
С кем дружить?
Интерпретаторы
●
●
●
●
●
●

CPython;
Stackless Python;
RPython;
PyPy;
IronPython;
Jython.
REPL
●
●
●
●

Python;
IPython;
DreamPie;
REPL в PyCharm.
Редакторы
●
●
●
●

VIM, Emacs...;
Sublime Text Editor;
IDLE;
Geany.
IDE
●
●
●
●

Eclipse;
NetBeans;
PyCharm;
Eric и многие другие.
Отдельные инструменты
● Mercurial;
● PDB;
● PyFlakes, PyLint, PEP8.
На что стоит посмотреть?
(субъективное мнение докладчика, которое может не совпадать с
реальностью)
● крутая IDE в стиле IntelliJ IDEA;
● продвинутая поддержка очень многих важных и
интересных решений;
● интеграция всего, о чем вы даже не мечтали;
● Community Edition.
Но:
● неисправляемые от версии к версии баги, к счастью,
таких немного;
● требовательность к ресурсам, настроение
разработчика будет зависеть от их количества.
● The Web framework for perfectionists (with deadlines)
● Models Views Templates
● Просто делай, как тебе говорят, и у тебя будет
отличный код.
● Множество батареек, встроенных тоже хватит
надолго.
Но:
● Кое-какие моменты могут стать сюрпризом.
● Очень прагматичное сообщество, да и сам django.
● Тормознутость на сложных проектах, тут лучше
взять что-то другое или разбить на несколько.
kivy
● Чудо. Вообще не представляю, как такое кому-то
пришло в голову.
● Родные приложения под Windows, Linux, Mac OS X,
Android, iOS. Но со встроенным Python’ом.
● Пиши-раз-компилируй-под-что-угодно. Почти
правда.
● Куча готовых компонентов.
Но:
● Новые компоненты нужно писать с учетом всех
поддерживаемых систем.
● Сторонних библиотек мало.
gevent
● Просто черная магия.
Но:
● Есть шанс, что использовав раз, после смерти
можно попасть в ад.
● Микрофреймворк, но с асинхронностью.
● А еще веб-сервер и просто хорошая библиотека.
● Можно прикрутить к django, чтобы тот мог думать не
только в пределах одного запроса.
● Очень элегантная замена колбэкам, которую, кстати,
хотят внести в стандартную библиотеку. В стиле:
result = yield db.read()
вместо:
db.read(onComplete)
Но:
● Мало асинхронных драйверов к базам данных. Есть
шанс упустить все плюсы.
Взгляните еще на эти проекты:
●
●
●
●
●
●
●
●
●
●
●

NumPy
lxml
requests
flask
bottle.py
Syte
django-tastypie
dajax
pygame
libtcod
cython
…и на эти:
●
●
●
●
●
●

Bitbucket.org
python.org
learnpython.org
checkio.org
heroku.com
appengine.google.com
Вопросы?
Спасибо! Ищите меня здесь:
●
●
●
●

https://bitbucket.org/batment
https://github.com/SergeyBurma
https://twitter.com/SergeyBurma
skype: s_burma

More Related Content

PDF
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
PDF
Opensource на .NET
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
специализированные http-демона (Сергей Боченков, Александр Панков)
PPTX
История развития и применения CMS: Drupal и другие
PPTX
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
PDF
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
Opensource на .NET
Как мы делаем модули PHP в Badoo – Антон Довгаль
специализированные http-демона (Сергей Боченков, Александр Панков)
История развития и применения CMS: Drupal и другие
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...

What's hot (20)

PDF
Инструментируй это
PDF
Remote Highload
PPTX
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
PPTX
Chef @DevWeb
PDF
Rethinking low-code
PDF
Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"
PDF
D2D Pizza JS Илья Беда "Куда мы все катимся?"
PPTX
разработка бизнес приложений (8)
PDF
Why it is not working
PDF
SPA инструменты
PPT
Генерация программы поведения игрового персонажа по естественно-языковой спец...
PDF
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
PDF
Фронтенд разработка без боли
PDF
Actors for fun and profit
PDF
Конструктор / Денис Паясь (Яндекс)
PPT
Cтиль программирования
PDF
My talk on Graphite stack on 58it.ru
PDF
мифы о спарке
PPTX
введение в Javascript
Инструментируй это
Remote Highload
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Chef @DevWeb
Rethinking low-code
Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
разработка бизнес приложений (8)
Why it is not working
SPA инструменты
Генерация программы поведения игрового персонажа по естественно-языковой спец...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
JavaScript завтра / Сергей Рубанов (Exante Limited)
Фронтенд разработка без боли
Actors for fun and profit
Конструктор / Денис Паясь (Яндекс)
Cтиль программирования
My talk on Graphite stack on 58it.ru
мифы о спарке
введение в Javascript
Ad

Viewers also liked (10)

PPT
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
PPT
Kranonit S18 Pavlov Evgeniy
PPTX
Kranonit S18 Lobova Elena
PDF
Kranonit s16 (python). dmitry furzenko
PDF
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
PPTX
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
PDF
Python Tricks That You Can't Live Without
PPTX
Python 101: Python for Absolute Beginners (PyTexas 2014)
PDF
Learn 90% of Python in 90 Minutes
PPT
Introduction to Python
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Pavlov Evgeniy
Kranonit S18 Lobova Elena
Kranonit s16 (python). dmitry furzenko
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
Python Tricks That You Can't Live Without
Python 101: Python for Absolute Beginners (PyTexas 2014)
Learn 90% of Python in 90 Minutes
Introduction to Python
Ad

Similar to Kranonit s16 (python). sergey burma (20)

PDF
Python для системного администратора
PDF
Разработка декстопных приложений для linux (Владимир Яковлев)
PDF
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
PPTX
Как писать на PHP и не стать быдло-кодером
ODP
Python & Web: От простого к сложному
PPTX
Инструменты профайлинга С++ кода
PDF
Завершающая лекция - часть 1 - информатика и зомби
PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
PDF
Jupyter - дополнительные главы
PDF
Кирилл Мокевнин — Ментальное программирование
PDF
Rust - GDG DevFest Siberia 2016
PDF
Презентация про DTrace на ADDconf в Минске
PDF
Применение DTrace для оптимизации производительности на примере двух больших ...
PDF
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
PDF
Старый Android на новый лад
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
PDF
Maksym Antipov Hardware development as a hobby and a job
PDF
Интернет в помощь команде разработчиков культурно массового мероприятия
PDF
Python, Django и корпоративные информационные системы
Python для системного администратора
Разработка декстопных приложений для linux (Владимир Яковлев)
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Как писать на PHP и не стать быдло-кодером
Python & Web: От простого к сложному
Инструменты профайлинга С++ кода
Завершающая лекция - часть 1 - информатика и зомби
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Jupyter - дополнительные главы
Кирилл Мокевнин — Ментальное программирование
Rust - GDG DevFest Siberia 2016
Презентация про DTrace на ADDconf в Минске
Применение DTrace для оптимизации производительности на примере двух больших ...
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Старый Android на новый лад
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
Maksym Antipov Hardware development as a hobby and a job
Интернет в помощь команде разработчиков культурно массового мероприятия
Python, Django и корпоративные информационные системы

More from Krivoy Rog IT Community (17)

ODT
Kranonit sponsorskoe predlozhenie
PDF
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
PDF
kranonit S14E01 Эдуард Лобас Management & IT Industry
PDF
kranonit S12E02 Артур Титов: Юзабилити форм
PDF
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
PDF
kranonit S10E01 Андрей Бабак- Запускаем стартап
PDF
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
PDF
kranonit S06E01 Игорь Цинько: High load
PDF
kranonit S05E01 Sergey Burma: Welcome to cloud!
PDF
kranonit S04E02 Кирил Jstor: Hacking .NET applications
PDF
kranonit S04E01 Антон: Защита от Master Boot Record Locker
PDF
kranonit S03E01 Эдуард Лобас: Freelance
PDF
kranonit S07E02 nixoid: Будущее электронных денег
PDF
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
PDF
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
PDF
kranonit S01E02 Игорь Цинько: Как искать работу
PDF
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
Kranonit sponsorskoe predlozhenie
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E01 Эдуард Лобас Management & IT Industry
kranonit S12E02 Артур Титов: Юзабилити форм
kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java
kranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
kranonit S06E01 Игорь Цинько: High load
kranonit S05E01 Sergey Burma: Welcome to cloud!
kranonit S04E02 Кирил Jstor: Hacking .NET applications
kranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S03E01 Эдуард Лобас: Freelance
kranonit S07E02 nixoid: Будущее электронных денег
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
kranonit S01E02 Игорь Цинько: Как искать работу
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1

Kranonit s16 (python). sergey burma

  • 2. Сергей Бурма Python-разработчик Полтора года с Python на фрилансе. Год до этого - как любитель. Люблю: ● Django; ● Tornado; ● Redis; ● Черную магию (Gevent, ФП); ● Инди-игры; ● Хорошо приготовленный кофе:)
  • 3. Факториал на Python reduce(lambda x, y: x * y, xrange(1, x+1)) Факториал 10 000: ● ~200 мс; ● около ТРИДЦАТИ ПЯТИ ТЫСЯЧ знаков.
  • 6. The Zen of Python ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one - and preferably only one - obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea - let's do more of those!
  • 8. Да-да, именно он будет поддерживать ваш код!
  • 9. Говорить легко, но как делать?
  • 10. ● ● ● ● PEP8; функция должна вмещаться в экран; одна операция на строку; правильные задачи. Неправильно: reduce(lambda x, y: x * y, xrange(1, x+1)) Правильно: def multiply(x, y): return x * y def factorial(x): numbers = xrange(1, x + 1) result = reduce(multiply, numbers) return result
  • 11. Возможности ● На самом деле, как писать код говорит вам только совесть - язык мультипарадигменный. ● ООП реализовано ненавязчиво, хоть все и говорят, что так не тру. ● Очень приятная реализация механизма исключений. ● Продуманная система типов и структур данных. Того что есть хватит надолго, работает все к тому же быстро. ● Продвинутые неизменяемые типы, такие как string, tuple, frozen set, которые можно использовать, например, как хеши в словаре. ● Продвинутая работа с функциями, но от этого страдает простота кода, так что не рекомендуется.
  • 13. ● Огромное количество библиотек еще не портировано. ● Большинство относится скептически. Но: ● Версия 2.7.5 уже больше года не развивается. ● В 3.3 есть много новых интересных решений. ● Есть библиотеки для автоматического портирования. Работают не везде.
  • 15. ● ● ● ● ● ● ● ● ● ● PEP8; Global Interpreter Lock; динамическая типизация; куча интересных идей с асинхронностью; очень крутая реализация REPL; быстрая реализация и исполнение КОРРЕКТНЫХ задач; батарейки, очень много батареек, сразу; огромное сообщество с пожизненным диктатором во главе; очень подробная документация, касающаяся всего; PyPi.
  • 17. ● ● ● ● ● ● ● ● ● ● PEP8; Global Interpreter Lock; динамическая типизация; куча интересных идей с асинхронностью; очень крутая реализация REPL; быстрая реализация и исполнение КОРРЕКТНЫХ задач; батарейки, очень много батареек, сразу; огромное сообщество с пожизненным диктатором во главе; очень подробная документация, касающаяся всего; PyPi.
  • 18. И что с этим всем делать?
  • 19. ● Web-сайты, серверные приложения; ● парсеры; ● нетребовательные к вычислениям десктопные приложения; ● системные скрипты; ● мобильные приложения; ● игры, в особенности рогалики; ● разного рода прототипы, от идей до программ.
  • 26. На что стоит посмотреть? (субъективное мнение докладчика, которое может не совпадать с реальностью)
  • 27. ● крутая IDE в стиле IntelliJ IDEA; ● продвинутая поддержка очень многих важных и интересных решений; ● интеграция всего, о чем вы даже не мечтали; ● Community Edition. Но: ● неисправляемые от версии к версии баги, к счастью, таких немного; ● требовательность к ресурсам, настроение разработчика будет зависеть от их количества.
  • 28. ● The Web framework for perfectionists (with deadlines) ● Models Views Templates ● Просто делай, как тебе говорят, и у тебя будет отличный код. ● Множество батареек, встроенных тоже хватит надолго. Но: ● Кое-какие моменты могут стать сюрпризом. ● Очень прагматичное сообщество, да и сам django. ● Тормознутость на сложных проектах, тут лучше взять что-то другое или разбить на несколько.
  • 29. kivy ● Чудо. Вообще не представляю, как такое кому-то пришло в голову. ● Родные приложения под Windows, Linux, Mac OS X, Android, iOS. Но со встроенным Python’ом. ● Пиши-раз-компилируй-под-что-угодно. Почти правда. ● Куча готовых компонентов. Но: ● Новые компоненты нужно писать с учетом всех поддерживаемых систем. ● Сторонних библиотек мало.
  • 30. gevent ● Просто черная магия. Но: ● Есть шанс, что использовав раз, после смерти можно попасть в ад.
  • 31. ● Микрофреймворк, но с асинхронностью. ● А еще веб-сервер и просто хорошая библиотека. ● Можно прикрутить к django, чтобы тот мог думать не только в пределах одного запроса. ● Очень элегантная замена колбэкам, которую, кстати, хотят внести в стандартную библиотеку. В стиле: result = yield db.read() вместо: db.read(onComplete) Но: ● Мало асинхронных драйверов к базам данных. Есть шанс упустить все плюсы.
  • 32. Взгляните еще на эти проекты: ● ● ● ● ● ● ● ● ● ● ● NumPy lxml requests flask bottle.py Syte django-tastypie dajax pygame libtcod cython
  • 35. Спасибо! Ищите меня здесь: ● ● ● ● https://bitbucket.org/batment https://github.com/SergeyBurma https://twitter.com/SergeyBurma skype: s_burma