Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Почему Python

No description
by

Nikolay Telepenin

on 24 April 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Почему Python

Почему Python?
Телепенин Николай
Обо мне
опыт в python'e более 4-х лет
опыт в разработке ПО более 7 лет
по совместительству ведущий архитектор в БАРС Груп
Python WTF?
Colt Python
шестизарядный револьвер калибра .357 Magnum
http://ru.wikipedia.org/wiki/Colt_Python
Python 4 и Python 5
израильская ракета класса «воздух-воздух»
Основные технические характеристики:
Масса БЧ — 11 кг
Скорость — 4 М
Дальность — 20 км
Высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода
Гвидо ван Россум
Работал в Google, в данный момент работает в Dropbox. Половину времени посвещает развитию языка.
Комик-группа из Великобритании, состоявшая из шести человек
Кто использует python?
4 млрд просмотров в день
60 часов видео загружается ежеминутно
350+ миллионов устройства работают с YouTube
Количество видео выросло в 9 раз, а количество разработчиков при этом лишь в 2 раза
1 миллион строк кода на Python
http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html
Cервис хостинга сайтов и web-приложений на серверах Google
Инструменты, которые вы знаете и любите: Python, Java, PHP, Go.
Используется миллионами: например, Snapchat, Rovio, и Khan Academy работает на Google App Engine.
Создание и развертывание: не беспокойтесь о администраторах баз данных, серверах, шардинге и балансировки нагрузки.
Масштабирование: автоматическое до 7 млрд. запросов в день.
https://developers.google.com/appengine/
И сервер Dropbox и клиент в основном написаны на Python. Настольный клиент использует в качестве GUI WxWidgets и Cocoa. Другие известные библиотеки Python - Twisted, ctypes и pywin32. Dropbox поставляется и зависит от librsync, который написан на C.
http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-how-dropbox-did-it-and-how-python-helped-4896698
Популярные проекты:
Популярные сервисы:
http://askubuntu.com/questions/319930/is-ubuntu-more-suited-for-python-based-apps
https://launchpad.net/
FriendFeed - агрегатор информации из различных социальных сетей, блогов, микроблогов и прочих сервисов, работающий в реальном времени.
FriendFeed использует собственный, не блокирующий веб-сервер, написанный на языке Python — Tornado. Исходный код открыт под свободной лицензией Apache License.
https://wiki.python.org/moin/OrganizationsUsingPython
Основные черты
строгая динамическая типизация
автоматическое управление памятью
полная интроспекция
механизмы обработки исключений
поддержка многопоточных вычислений
удобные высокоуровневые структуры данных
PEP
Python Enhancement Proposals
PEP's
import this
ABC
— отступы для группировки операторов, высокоуровневые структуры данных (map)(Python фактически создавался как попытка исправить ошибки, допущенные при проектировании ABC);
Modula-3
— пакеты, модули, использование else совместно с try и except, именованные аргументы функций (на это также повлиял Common Lisp);
С
,
C++
— некоторые синтаксические конструкции;
Smalltalk
— объектно-ориентированное программирование;
Lisp
— отдельные черты функционального программирования (lambda, map, reduce, filter и другие);
Fortran
— срезы массивов, комплексная арифметика;
Miranda
— списочные выражения;
Java
— модули logging, unittest, threading (часть возможностей оригинального модуля не реализована), xml.sax стандартной библиотеки, совместное использование finally и except при обработке исключений, использование @ для декораторов;
Icon
— генераторы.
Влияние других языков
Кроссплатформенность
http://blogs.msdn.com/b/windowsazure/archive/2012/07/02/python-on-windows-azure-a-match-made-in-the-clouds.aspx
Индекс удовлетворенности
Красивое лучше, чем уродливое
Явное лучше, чем неявное
Простое лучше, чем сложное
Плоское лучше, чем вложенное
Читаемость имеет значение
Должен существовать один — и, желательно, только один — очевидный способ сделать что-то
Хотя он поначалу может быть и не очевиден, если вы не голландец
Если реализацию сложно объяснить — идея плоха
KISS - keep it simple, stupid
Жизненное
"You have a problem and decide to use Java.
Now you have a ProblemFactory, ProblemFactoryConfigurator and ProblemFactory.xml"
public class HelloWorld
{
public static void main (String[] args)
{
System.out.println("Hello, world!");
}
}
print "Hello, world!"
Java
Python
Java
Python
Hello world!
Чтение файла
import java.io.*;
class ReadFile {
public static void main(String args[]){
try {
FileInputStream fstream =
new FileInputStream("somefile.txt");
DataInputStream in =
new DataInputStream(fstream);
BufferedReader br = new BufferedReader(
new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
System.out.println (strLine);
}
in.close();
}catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
}
}
with open("somefile.txt") as file:
for line in file:
print line
Вам понадобится:
Реализация JAX-RS (Jersey, RESTEasy) +зависимости
Конфигурация (web.xml)
Скрипты для сборки (Ant, Maven, Gradle)
Application сервер (Tomcat, Glassfish, JBoss)
Веб сервис на Java
Структура проекта
Веб сервис на Java
Веб сервис на Java
Конфигурация
Веб сервис на Java
Конфигурация
Веб сервис на Java
Код
from bottle import route, run

@route("/hello/:msg")
def hello(msg):
return "Python say : " + msg

run(host='localhost', port=8080)
Веб сервис на Python
$ pip install bottle
Python легко учить
Python легко читать
На Python задача часто решается быстрее и проще
Python старается решить задачу красиво и при этом не стоит у вас на пути
Пишите на Python!
Итого:
Вопросы?
ФЮ
mailto: telepenin.nikolay@gmail.com
twitter: @_prefer
skype: aka_prefer
SI
Не каждое оценочное суждение должно служить модификатором поведения
Kazan Python DevDay 2014
Python People
"I will always feel a strong affection to the community around Python. This is interesting for me because I feel a lot less of an attachment to Python itself these days then I did a few years ago."
http://lucumr.pocoo.org/2014/2/13/programming-communities/
Python сообщество
Сообщество в интернетах
http://www.pythonweekly.com/
http://stackoverflow.com/questions/tagged/python
http://habrahabr.ru/hub/python/
etc.
Full transcript