Your SlideShare is downloading. ×
0
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
About Python
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

About Python

761

Published on

Small presentation about Python in generic with separate accents for managers and developers.

Small presentation about Python in generic with separate accents for managers and developers.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
761
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Юревич Юрий [email_address] http://pyobject.ru 2009, Equelli
  • 2. Для менеджеров
  • 3. Кратко <ul><li>Python </li><ul><li>Общего назначения
  • 4. Кроссплатформенный (*nix, Mac, Windows, Nokia S60)
  • 5. Популярный (но не в СНГ)
  • 6. Свободный
  • 7. Легкий и продуктивный
  • 8. Проверенный </li></ul></ul>
  • 9. Общего назначения <ul><li>«Battaries included» обширная стандартная библиотека
  • 10. Web (Django, TurboGears, Pylons, Zope)
  • 11. GUI (wxPython, PyGTK, PyQt4, Tkinter)
  • 12. Сеть (stdlib: socket, smtplib, httplib, urlib, ...; twisted)
  • 13. БД (MySQLdb, psycopg2, sqlite3, couchdb, mongodb, zodb)
  • 14. Научное ПО (scipy, numpy, biopython)
  • 15. Gamedev (PyGame, PyKyra, PyOpenGL) </li></ul>
  • 16. Популярен? <ul><li>TIOBE Index — 2009-08 ( http://tr.im/tpci200908 ) </li></ul>
  • 17. Популярен? (2) <ul><li>Анализ StackOverflow.com ( http://tr.im/soanalysis ) </li></ul>
  • 18. Майнстрим? <ul><li>Среди динамических языков </li><ul><li>Да </li></ul><li>Среди непрофильных инженеров </li><ul><li>Да </li></ul><li>В пром-разработке (ынтырпрайз) </li><ul><li>Нет </li></ul></ul>
  • 19. Свободен <ul><li>Свободная лицензия (Python license)
  • 20. MIT/BSD-like </li><ul><li>Продажа модифицированного кода
  • 21. Продажа без исходников
  • 22. Нет отчислений
  • 23. Копирайт PSF нужно оставить </li></ul><li>GPL-совместимое </li><ul><li>Совместно с GPL-кодом </li></ul></ul>
  • 24. Легкий и продуктивный <ul><li>Создавался как учебный язык
  • 25. Быстрый старт
  • 26. Простой, но не упрощенный </li></ul>«Python has the potential of being an exceptionally productive language» Bruce Eckel, author of «Thinking in Java» and «Thinking in C++»
  • 27. Проверен <ul><li>Не новичок (публичный релиз — 1991)
  • 28. Полная документация
  • 29. Книги (хотя могли быть и лучше)
  • 30. Коммунити (с недавних пор — и русскоязычное)
  • 31. Развивается: </li><ul><li>2.5 — 2006
  • 32. 2.6 — 2008
  • 33. 3.0 — 2008
  • 34. 3.1 — 2009 </li></ul></ul>
  • 35. Проверен (2) - http://python.org/about/success
  • 36. Не серебряная пуля <ul><li>Python не подходит для: </li><ul><li>Системного ПО
  • 37. Embedded devices </li><ul><li>Py60S </li></ul><li>Интенсивных вычислений </li><ul><li>Numpy </li></ul></ul></ul>
  • 38. Для разработчиков
  • 39. Метрики <ul><li>Высокоуровневый
  • 40. Динамический
  • 41. Строго типизированный
  • 42. Мультипарадигменный </li><ul><li>Ненавязчивый ООП
  • 43. Функциональный стиль </li></ul></ul>A = 9 A = 'str' A = 9 + 'str'
  • 44. Почему Python? <ul><li>Простота (76 встроенных функций)
  • 45. Читабельность
  • 46. Стиль
  • 47. Ненавязчивый ООП
  • 48. Скорость разработки
  • 49. Богатая стандартная библиотека
  • 50. Дзэн ;) </li></ul>
  • 51. Простота abs, all, and, any, apply , as, assert, basestring, bin, bool, break, buffer, bytearray, bytes, callable, chr, class, classmethod, cmp, coerce, compile, complex, continue, copyright , credits , def, del, delattr, dict, dir, divmod, elif, else, enumerate, eval, except, exec, execfile, exit, file, filter, finally, float, for, format, from, frozenset, getattr, global, globals, hasattr, hash, help, hex, id, if, import, in, input, int, intern, is, isinstance, issubclass, iter, lambda, len, license , list, locals, long, map, max, min, next, not, object, oct, open , or, ord, pass, pow, print, print, property, quit , raise, range, raw_input, reduce, reload, repr, return, reversed, round, set, setattr, slice, sorted, staticmethod, str, sum, super, try, tuple, type, unichr, unicode, vars, while, with, xrange, yield, zip
  • 52. Читабельность <ul><li>Perl cookbook на различных языках http://pleac.sf.net/
  • 53. Alioth shootout — бенчмарки для различных языков http://shootout.alioth.debian.org/ </li></ul>
  • 54. Пример: mercurial def findpossible(cmd, table, strict=False): &quot;&quot;&quot; Return cmd -> (aliases, command table entry) for each matching command. Return debug commands (or their aliases) only if no normal command matches. &quot;&quot;&quot; choice = {} debugchoice = {} for e in table.keys(): aliases = e.lstrip( &quot;^&quot; ).split( &quot;|&quot; ) found = None if cmd in aliases: found = cmd elif not strict: for a in aliases: if a.startswith(cmd): found = a break if found is not None: if aliases[0].startswith( &quot;debug&quot; ) or found.startswith( &quot;debug&quot; ): debugchoice[found] = (aliases, table[e]) else : choice[found] = (aliases, table[e]) if not choice and debugchoice: choice = debugchoice return choice
  • 55. Стиль x = [1, 2, 3, 4] y = [ 'first' , 'second' , 'third' , 'forth' ] # желаем получить z = {1: 'first', 2: 'second', ...} z = {} for i in range ( len (x)): z[x[i]] = y[i] Но лучше так: z = {} for key, value in zip (x, y): z[key] = value А еще лучше: z = dict ((key, value) for key, value in zip (x, y))
  • 56. Ненавязчивый ООП class Foo: &quot;&quot;&quot; Description of class &quot;&quot;&quot; def __init__( self , arg): &quot;&quot;&quot; Foo constructor: `arg`: some arg &quot;&quot;&quot; self.value = arg def method(self, value=None): &quot;&quot;&quot; Foo method: `value` (optional), default is None &quot;&quot;&quot; return self.value*5 def __str__(self): return str (self.value)
  • 57. Скорость разработки Программирование со скоростью мысли. Ты не продумаешь отдельно алгоритм, отдельно как изобразить в коде. Алгоритм сразу формулируется в виде кода, тебе остается просто записать его.
  • 58. Богатая стандартная библиотека <ul><li>~250 пакетов
  • 59. Почти всё что нужно для почти счастья
  • 60. Различный стиль кода </li><ul><li>Неравномерное качество
  • 61. Непоследовательные name conventions </li></ul></ul>
  • 62. Дзэн: import this <ul><li>Красивое лучше уродливого.
  • 63. Явное лучше неявного.
  • 64. Простое лучше сложного.
  • 65. Сложное лучше усложнённого.
  • 66. Плоское лучше вложенного.
  • 67. Разрежённое лучше плотного.
  • 68. Удобочитаемость важна.
  • 69. Частные случаи не настолько существенны, чтобы нарушать правила.
  • 70. Однако практичность важнее чистоты.
  • 71. Ошибки никогда не должны замалчиваться.
  • 72. За исключением замалчивания, которое задано явно.
  • 73. В случае неоднозначности сопротивляйтесь искушению угадать.
  • 74. Должен существовать один — и, желательно, только один — очевидный способ сделать это.
  • 75. Хотя он может быть с первого взгляда не очевиден, если ты не голландец.
  • 76. Сейчас лучше, чем никогда.
  • 77. Однако, никогда чаще лучше, чем прямо сейчас.
  • 78. Если реализацию сложно объяснить — это плохая идея.
  • 79. Если реализацию легко объяснить — это может быть хорошая идея.
  • 80. Пространства имён — великолепная идея, их должно быть много! </li></ul>
  • 81. Ссылки <ul><li>Для начала </li><ul><li>Dive into Python, http://diveintopython.org
  • 82. Документация, http://docs.python.org
  • 83. Луц «Изучаем Python», http://tr.im/lutz3ed </li></ul><li>Python-идиомы </li><ul><li>«Белая магия Python», http://tr.im/pymagic </li></ul></ul>

×