SlideShare a Scribd company logo
1 of 35
Download to read offline
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

What's hot

Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
 
Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"
Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"
Никита Цуканов - "Avalonia UI Cross-platform Open Source UI Framework"Elias Fofanov
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)Alexander Gornik
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
Actors for fun and profit
Actors for fun and profitActors for fun and profit
Actors for fun and profitcorehard_by
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программированияConstantin Kichinsky
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruAlex Chistyakov
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке Evgeny Borisov
 
введение в Javascript
введение в Javascriptвведение в Javascript
введение в Javascriptinqubick
 

What's hot (20)

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

Viewers also liked

Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "Krivoy Rog IT Community
 
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушекkranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушекKrivoy Rog IT Community
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutAudrey Roy
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Paige Bailey
 
Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesMatt Harrison
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonNowell Strite
 

Viewers also liked (10)

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

Similar to Kranonit s16 (python). sergey burma

Python для системного администратора
Python для системного администратораPython для системного администратора
Python для системного администратораYandex
 
Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)Разработка декстопных приложений для linux (Владимир Яковлев)
Разработка декстопных приложений для linux (Владимир Яковлев)IT-Доминанта
 
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...
Code Sharing - Как мы пришли к Unity Package Manager / Станислав Коротаев (Ba...DevGAMM Conference
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромKirill Kovalchuk
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложномуIlya Bolkhovsky
 
Инструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаИнструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаcorehard_by
 
Завершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомбиЗавершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомбиAlexey Vasyukov
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) АксеновAlex Chistyakov
 
Кирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеКирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеDaria Oreshkina
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Nikita Baksalyar
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...SQALab
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Старый Android на новый лад
Старый Android на новый ладСтарый Android на новый лад
Старый Android на новый лад0leGG
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobАліна Шепшелей
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"Inhacking
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияnomoretears
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPyNSK
 

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

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

More from Krivoy Rog IT Community

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

More from Krivoy Rog IT Community (17)

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