About Python

1,205 views

Published on

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
1,205
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

About Python

  1. 1. Юревич Юрий [email_address] http://pyobject.ru 2009, Equelli
  2. 2. Для менеджеров
  3. 3. Кратко <ul><li>Python </li><ul><li>Общего назначения
  4. 4. Кроссплатформенный (*nix, Mac, Windows, Nokia S60)
  5. 5. Популярный (но не в СНГ)
  6. 6. Свободный
  7. 7. Легкий и продуктивный
  8. 8. Проверенный </li></ul></ul>
  9. 9. Общего назначения <ul><li>«Battaries included» обширная стандартная библиотека
  10. 10. Web (Django, TurboGears, Pylons, Zope)
  11. 11. GUI (wxPython, PyGTK, PyQt4, Tkinter)
  12. 12. Сеть (stdlib: socket, smtplib, httplib, urlib, ...; twisted)
  13. 13. БД (MySQLdb, psycopg2, sqlite3, couchdb, mongodb, zodb)
  14. 14. Научное ПО (scipy, numpy, biopython)
  15. 15. Gamedev (PyGame, PyKyra, PyOpenGL) </li></ul>
  16. 16. Популярен? <ul><li>TIOBE Index — 2009-08 ( http://tr.im/tpci200908 ) </li></ul>
  17. 17. Популярен? (2) <ul><li>Анализ StackOverflow.com ( http://tr.im/soanalysis ) </li></ul>
  18. 18. Майнстрим? <ul><li>Среди динамических языков </li><ul><li>Да </li></ul><li>Среди непрофильных инженеров </li><ul><li>Да </li></ul><li>В пром-разработке (ынтырпрайз) </li><ul><li>Нет </li></ul></ul>
  19. 19. Свободен <ul><li>Свободная лицензия (Python license)
  20. 20. MIT/BSD-like </li><ul><li>Продажа модифицированного кода
  21. 21. Продажа без исходников
  22. 22. Нет отчислений
  23. 23. Копирайт PSF нужно оставить </li></ul><li>GPL-совместимое </li><ul><li>Совместно с GPL-кодом </li></ul></ul>
  24. 24. Легкий и продуктивный <ul><li>Создавался как учебный язык
  25. 25. Быстрый старт
  26. 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. 27. Проверен <ul><li>Не новичок (публичный релиз — 1991)
  28. 28. Полная документация
  29. 29. Книги (хотя могли быть и лучше)
  30. 30. Коммунити (с недавних пор — и русскоязычное)
  31. 31. Развивается: </li><ul><li>2.5 — 2006
  32. 32. 2.6 — 2008
  33. 33. 3.0 — 2008
  34. 34. 3.1 — 2009 </li></ul></ul>
  35. 35. Проверен (2) - http://python.org/about/success
  36. 36. Не серебряная пуля <ul><li>Python не подходит для: </li><ul><li>Системного ПО
  37. 37. Embedded devices </li><ul><li>Py60S </li></ul><li>Интенсивных вычислений </li><ul><li>Numpy </li></ul></ul></ul>
  38. 38. Для разработчиков
  39. 39. Метрики <ul><li>Высокоуровневый
  40. 40. Динамический
  41. 41. Строго типизированный
  42. 42. Мультипарадигменный </li><ul><li>Ненавязчивый ООП
  43. 43. Функциональный стиль </li></ul></ul>A = 9 A = 'str' A = 9 + 'str'
  44. 44. Почему Python? <ul><li>Простота (76 встроенных функций)
  45. 45. Читабельность
  46. 46. Стиль
  47. 47. Ненавязчивый ООП
  48. 48. Скорость разработки
  49. 49. Богатая стандартная библиотека
  50. 50. Дзэн ;) </li></ul>
  51. 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. 52. Читабельность <ul><li>Perl cookbook на различных языках http://pleac.sf.net/
  53. 53. Alioth shootout — бенчмарки для различных языков http://shootout.alioth.debian.org/ </li></ul>
  54. 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. 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. 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. 57. Скорость разработки Программирование со скоростью мысли. Ты не продумаешь отдельно алгоритм, отдельно как изобразить в коде. Алгоритм сразу формулируется в виде кода, тебе остается просто записать его.
  58. 58. Богатая стандартная библиотека <ul><li>~250 пакетов
  59. 59. Почти всё что нужно для почти счастья
  60. 60. Различный стиль кода </li><ul><li>Неравномерное качество
  61. 61. Непоследовательные name conventions </li></ul></ul>
  62. 62. Дзэн: import this <ul><li>Красивое лучше уродливого.
  63. 63. Явное лучше неявного.
  64. 64. Простое лучше сложного.
  65. 65. Сложное лучше усложнённого.
  66. 66. Плоское лучше вложенного.
  67. 67. Разрежённое лучше плотного.
  68. 68. Удобочитаемость важна.
  69. 69. Частные случаи не настолько существенны, чтобы нарушать правила.
  70. 70. Однако практичность важнее чистоты.
  71. 71. Ошибки никогда не должны замалчиваться.
  72. 72. За исключением замалчивания, которое задано явно.
  73. 73. В случае неоднозначности сопротивляйтесь искушению угадать.
  74. 74. Должен существовать один — и, желательно, только один — очевидный способ сделать это.
  75. 75. Хотя он может быть с первого взгляда не очевиден, если ты не голландец.
  76. 76. Сейчас лучше, чем никогда.
  77. 77. Однако, никогда чаще лучше, чем прямо сейчас.
  78. 78. Если реализацию сложно объяснить — это плохая идея.
  79. 79. Если реализацию легко объяснить — это может быть хорошая идея.
  80. 80. Пространства имён — великолепная идея, их должно быть много! </li></ul>
  81. 81. Ссылки <ul><li>Для начала </li><ul><li>Dive into Python, http://diveintopython.org
  82. 82. Документация, http://docs.python.org
  83. 83. Луц «Изучаем Python», http://tr.im/lutz3ed </li></ul><li>Python-идиомы </li><ul><li>«Белая магия Python», http://tr.im/pymagic </li></ul></ul>

×