35
kranonit S16 02.11.2013

Kranonit s16 (python). sergey burma

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Kranonit s16 (python). sergey burma

kranonit S16 02.11.2013

Page 2: Kranonit s16 (python). sergey burma

Сергей БурмаPython-разработчик

Полтора года с Python на фрилансе. Год до этого - как любитель.

Люблю:● Django;● Tornado;● Redis;● Черную магию (Gevent, ФП);● Инди-игры;● Хорошо приготовленный кофе:)

Page 3: Kranonit s16 (python). sergey burma

Факториал на Python

reduce(lambda x, y: x * y, xrange(1, x+1))

Факториал 10 000:● ~200 мс;● около ТРИДЦАТИ ПЯТИ ТЫСЯЧ знаков.

Page 4: Kranonit s16 (python). sergey burma

Гвидо Ван Россум

Page 5: Kranonit s16 (python). sergey burma

Кто использует?

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

Page 6: Kranonit s16 (python). sergey burma

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!

Page 7: Kranonit s16 (python). sergey burma

Простота и понятность!

Page 8: Kranonit s16 (python). sergey burma

Да-да, именно он будет поддерживать ваш код!

Page 9: Kranonit s16 (python). sergey burma

Говорить легко, но как делать?

Page 10: Kranonit s16 (python). sergey burma

● 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

Page 11: Kranonit s16 (python). sergey burma

● На самом деле, как писать код говорит вам только совесть - язык мультипарадигменный.

● ООП реализовано ненавязчиво, хоть все и говорят, что так не тру.

● Очень приятная реализация механизма исключений.● Продуманная система типов и структур данных. Того

что есть хватит надолго, работает все к тому же быстро.

● Продвинутые неизменяемые типы, такие как string, tuple, frozen set, которые можно использовать, например, как хеши в словаре.

● Продвинутая работа с функциями, но от этого страдает простота кода, так что не рекомендуется.

Возможности

Page 12: Kranonit s16 (python). sergey burma

2 или 3?

Page 13: Kranonit s16 (python). sergey burma

● Огромное количество библиотек еще не портировано.

● Большинство относится скептически.

Но:● Версия 2.7.5 уже больше года не развивается.● В 3.3 есть много новых интересных решений.● Есть библиотеки для автоматического

портирования. Работают не везде.

Page 14: Kranonit s16 (python). sergey burma

Плюшки

Page 15: Kranonit s16 (python). sergey burma

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

задач;● батарейки, очень много батареек, сразу;● огромное сообщество с пожизненным диктатором во

главе;● очень подробная документация, касающаяся всего;● PyPi.

Page 16: Kranonit s16 (python). sergey burma

Неплюшки

Page 17: Kranonit s16 (python). sergey burma

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

задач;● батарейки, очень много батареек, сразу;● огромное сообщество с пожизненным диктатором во

главе;● очень подробная документация, касающаяся всего;● PyPi.

Page 18: Kranonit s16 (python). sergey burma

И что с этим всем делать?

Page 19: Kranonit s16 (python). sergey burma

● Web-сайты, серверные приложения;● парсеры;● нетребовательные к вычислениям десктопные

приложения;● системные скрипты;● мобильные приложения;● игры, в особенности рогалики;● разного рода прототипы, от идей до программ.

Page 20: Kranonit s16 (python). sergey burma

С кем дружить?

Page 21: Kranonit s16 (python). sergey burma

Интерпретаторы

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

Page 22: Kranonit s16 (python). sergey burma

REPL

● Python;● IPython;● DreamPie;● REPL в PyCharm.

Page 23: Kranonit s16 (python). sergey burma

Редакторы

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

Page 24: Kranonit s16 (python). sergey burma

IDE

● Eclipse;● NetBeans;● PyCharm;● Eric и многие другие.

Page 25: Kranonit s16 (python). sergey burma

Отдельные инструменты

● Mercurial;● PDB;● PyFlakes, PyLint, PEP8.

Page 26: Kranonit s16 (python). sergey burma

На что стоит посмотреть?(субъективное мнение докладчика, которое может не совпадать с

реальностью)

Page 27: Kranonit s16 (python). sergey burma

● крутая IDE в стиле IntelliJ IDEA;● продвинутая поддержка очень многих важных и

интересных решений;● интеграция всего, о чем вы даже не мечтали;● Community Edition.

Но:● неисправляемые от версии к версии баги, к счастью,

таких немного;● требовательность к ресурсам, настроение

разработчика будет зависеть от их количества.

Page 28: Kranonit s16 (python). sergey burma

● The Web framework for perfectionists (with deadlines)● Models Views Templates● Просто делай, как тебе говорят, и у тебя будет

отличный код.● Множество батареек, встроенных тоже хватит

надолго.

Но:● Кое-какие моменты могут стать сюрпризом.● Очень прагматичное сообщество, да и сам django.● Тормознутость на сложных проектах, тут лучше

взять что-то другое или разбить на несколько.

Page 29: Kranonit s16 (python). sergey burma

● Чудо. Вообще не представляю, как такое кому-то пришло в голову.

● Родные приложения под Windows, Linux, Mac OS X, Android, iOS. Но со встроенным Python’ом.

● Пиши-раз-компилируй-под-что-угодно. Почти правда.

● Куча готовых компонентов.

Но:● Новые компоненты нужно писать с учетом всех

поддерживаемых систем.● Сторонних библиотек мало.

kivy

Page 30: Kranonit s16 (python). sergey burma

● Просто черная магия.

Но:● Есть шанс, что использовав раз, после смерти

можно попасть в ад.

gevent

Page 31: Kranonit s16 (python). sergey burma

● Микрофреймворк, но с асинхронностью.● А еще веб-сервер и просто хорошая библиотека.● Можно прикрутить к django, чтобы тот мог думать не

только в пределах одного запроса.● Очень элегантная замена колбэкам, которую, кстати,

хотят внести в стандартную библиотеку. В стиле:result = yield db.read()

вместо: db.read(onComplete)

Но:● Мало асинхронных драйверов к базам данных. Есть

шанс упустить все плюсы.

Page 32: Kranonit s16 (python). sergey burma

Взгляните еще на эти проекты:

● NumPy● lxml● requests● flask● bottle.py● Syte● django-tastypie● dajax● pygame● libtcod● cython

Page 34: Kranonit s16 (python). sergey burma

Вопросы?

Page 35: Kranonit s16 (python). sergey burma

Спасибо! Ищите меня здесь:

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