19 марта 2008 в 22:30

Доклад по Python

В докладе описаны основные возможности языка python.
Кратко, понятно, с примерами. Приведены некоторые сравнения с другими языками.
Этот доклад будет полезен начинающим программировать на python, а также тем, кто выбирает язык программирования для своей задачи.
Первая, вторая и третья части доклада.
Akademic @Akademic
карма
58,7
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (89)

  • +2
    От всей души, вам мегаспасибо!
  • +1
    Большое спасибо!
    Как раз думаю о переходе на Python :)
  • 0
    Да уж... Действительно как-то к стати... Последние несколько недель выбираю новый язык для изучения сравнивая плюсы и минусы мне доступных. Надеюсь этот доклад позволит мне более уверенно поставить "+" или "-".
  • +1
    Отлично, большое спасибо за полезный материал.
  • 0
    благодарю, имеется желание познакомиться с интерпретируемым языком, не могу , правда, определиться, что "лучше" - Perl, Python или Ruby
    • 0
      и Perl, и Python, и ROR - они все хороши, правда каждый для определенных задач.. нельзя сказать, этот лучше, а этот хуже.........
      • +4
        ROR - не язык, а фреймворк. Языком тут является Ruby.
        • 0
          да, да, простите невежу
          • +3
            не везёт вам) "невежа" - это невежливый человек. вы имели в виду "невежда"
      • +1
        можете "определенные задачи" раскрыть?
    • +3
      можете сузить выбор до Ruby vs Python, т.к. Perl ИМХО уже не имеет преимуществ
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        ваше ИМХО сильно ошибается :-)

        >> "благодарю, имеется желание познакомиться с интерпретируемым языком, не могу , правда, определиться, что "лучше" - Perl, Python или Ruby"
        учите все три, сильно не помешает ;) и пхп в придачу.
        • 0
          зачем человеку 4 идентичных по назначению языка? не хочется холиварить, но я действительно не вижу преимуществ перла перед Руби/Питоном, может быть, огласите?
          • –4
            к чему этот холивар? не видите, ну и не надо :)
            • –4
              точно-точно :) добавлю еще, что с момента рождения С вышло множество С-подобных языков, а С жив и по ныне. С момента выхода Perl та же ситуация, а Perl жив и легко даст фору многим интерпретируемым языкам. ;)
              • –4
                да, и совсем забыл, Perl далеко не идентичен Ruby/PHP (этим еще далеко до него), но во многом схож с Python-ом по применению на данный момент, просто Python еще не выкристаллизовался синтаксически и не оброс библиотеками.
                • –3
                  поправлю Python схож с Perl'ом, а не наоборот.
                  И Python'у ой как далеко до Perl. Пусть хотя бы UTF-поддержку сделают :)
                  • 0
                    Это что за поддержка такая?
                    • 0
                      UTF = уникод,
                      Питон отлично работает с уникодом.
                      • 0
                        Да вот и меня удивило, что это за поддержка UTF в Перле такая навороченная, что Питону ой как далеко до нее...
                        • 0
                          отвечаю всем - особенно минусовавшим :)
                          нормальная поддежка юникода реализована только в Java и Perl6!
                          • 0
                            Расскажите же, что такое "нормальная поддержка"? Мы тоже хотим порадоваться за Java и Perl6.
                • 0
                  ?
                  Питону уже 17 лет (первый релиз был в 1991 году), библиотек море для всех сфер человеческой жизнедеятельности, есть просто реально всё, а что вы имеете ввиду по поводу синтаксиса — разъясните.
                  • 0
                    давайте заведём тему Perl vs Python vs PHP vs Ruby и будем там вести жестокие холивары ;)
                    Пусть топик про питон им и останется, просто выше человек безосновательно пытался похоронить Perl из-за своей неосведеомленности в этом вопросе. Ответы были лишь в тему данной ветки обсуждения.
                    • 0
                      Библиотек действительно море. Вас задело, необоснованое с вашей точки зрение обвинения perl'a а питонеры сейчс обидятся если вы скажите что у них мало библиотек =)
                      Ребята, давайте жить дружно (с)
                      Вернемся к написанию кода и прекратим этот бессмысленный и жестокий холивор.
                  • 0
                    По поводу синтаксиса имелось ввиду, видимо, то, что в него до сих пор вносятся изменения (см. раздел "Что нового" в мануалах к 2.5.x), в том числе нарушающие обратную совместимость (см. то же для 3.0)
                    Не берусь судить, насколько выгодно отличаются от Питона в этом аспекте Perl, Ruby и PHP.
          • 0
            CPAN.
      • 0
        Как минимум одно преимущество - он всё еще гораздо распространённее, стоит чуть-чуть отойти от bleeding edge frontier'а :)
    • 0
      Когда я выбирал между питоном и руби, для меня перевесом послужило два фактора:
      1) огромное количество питоновских библиотек(мой знакомый пишуший Ph.D. по теоретической физике использует SciPy для расчетов, а расчеты там вееесьма специфичные, но даже для них уже есть готовый код)
      2) кристально чистый синтаксис питона.(должно было быть номером один в списке =) )

      Самый главный на мой взгляд недостаток питона и питон коммунити это то, что они мало пиарят свой язык и свои технологии. =( Они слишком заняты написанием когда.
      p.s. холивар разводить не хочу, просто сказал почему я сделал тот или иной выбор. Но к конструктивной беседе я всегда открыт.
      • 0
        1)Самый большой набор библиотек для научных исследований, которые до сих пор активно применяются – собрался за 50 лет у Фортрана – но его почему то ни кто не любит :) SciPy ужасно хорошая вещь – не тем, что там есть что то уникальное, а тем, что это много хороших инструментов собранных в один пакет.
        Но если не заниматься теоретической физикой – каких именно лично Вам не хватает библиотек – которые есть в Python но нет в Ruby?

        2) “кристально чистый синтаксис” – это больше эмоциональное описание чем техническая характеристика. Одним людям «кристально чистым синтаксисом» кажется одно – другим другое.
        • 0
          0) Фортран, как и языки разработанные математиками ужасен. Шучу, но тот же Matlab тоже не сахар =) . Я сам немного писал на фортране, но всегда стараюсь держаться от него подальше: я помню тот ужас отладки всего лишь 300-400 строчной мат модели %(.
          Блоки common переменных, фактически автоопределние переменных(да, я знаю что всегда есть соответствующие workarounds, но это не сильно облегчает боль)...
          Имеющийся код на фортране зачастую настолько ужасен, что его даже лучше не смотреть - много когда написано студентами, которых заставляли писать в университете(профессора изобретающие алгоритмы не любят сами эти же алгоритмы кодировать). Хотя это касается специализированных библиотек. Более часто используемые (LAPACK и компания) написаны гораздо качественней.
          0.5) из питона легко дерать фортановские библиотеки, ситуацию с руби здесь не знаю.
          1) мне бы хотелось работать с mp3 не науровне тегов но на уровне raw data не переходя на C.
          Судя по
          http://raa.ruby-lang.org/cat.rhtml?categ…
          ничего такого в rubyland нет. Про аналоги Twisted я тоже ни чего не слышал.
          Питоновскую http://pymedia.org/ пришлось конечно же доработать напильником, тем не менее... Посмотрите на feature list Python Imaging Library. Я с ходу не смог найти такие аналоги.
          Вы правда можете сказать, что среднему разработчику мол такие вещи все равно редко нужны, однако это то, что делает python прекрасным.
          2) Отнюдь. отсутсвие end, использования пунктуации в качестве синтаксиса(это не столько о ruby сколько о другом языке),идеология python: "по возможности один способ сделать это" обязательные скобки, принудительные отступы.
          В раби просто идеологически ближе к перлу - если есть какая то прикольная штука ее добавляют в синтаксис, а синтаксическое древо питона стараются не захламлять. Я надеюсь, что не сильно ошибаюсь в понимании как идеологии как ruby так и python в этом вопросе.
          3) на тему языков для научного компутинга, мне всегда непонятно почему линейка паскаль-обертрон не заняла там прочных позиций. Это было бы гораздо лучше чем фортран.
          • 0
            0.5) из питона легко дерать фортановские библиотеки, ситуацию с руби здесь не знаю.


            Из Ruby тоже дергаются фортрановские библиотеки – и многие другие. Даже питоновские библиотеки из Ruby дергаются :)


            мне бы хотелось работать с mp3 не науровне тегов но на уровне raw data не переходя на C. Судя по http://raa.ruby-lang.org/cat.rhtml?categ… ничего такого в rubyland нет.

            Смотрите в не правильном месте. Надо смотреть http://rubyforge.org/search/?type_of_sea…

            А еще более правильно смотреть раздел Multimedia-Sound/Audio 73 ruby проекта.
            Что значит работать «с mp3 не науровне тегов но на уровне raw data» без уточнения не понятно – но допустим кодировать WAV/AIFF/PCM в MP3/OGG, менять битрейт и частоту семплирования, из стерео делать моно – все делается на Ruby без проблем.

            Про аналоги Twisted я тоже ни чего не слышал.

            Зато я слышал :) Пожалуйста http://www.rubyeventmachine.com/"> EventMachine

            Посмотрите на feature list Python Imaging Library. Я с ходу не смог найти такие аналоги.

            Без проблем – с ходу скажу аналог RMagick - преобразования изображений/наложение эффектов/рисование – все что душе угодно.

            Вы правда можете сказать, что среднему разработчику мол такие вещи все равно редко нужны, однако это то, что делает python прекрасным.

            Да наверное – хоть среднему разработчику такие вещи нужны не так часто – именно эти вещи делают Ruby прекрасным :)


            Отнюдь. отсутсвие end, использования пунктуации в качестве синтаксиса(это не столько о ruby сколько о другом языке),идеология python: "по возможности один способ сделать это" обязательные скобки, принудительные отступы.


            Как я уже говорил «это больше эмоциональное описание чем техническая характеристика». Кому-то «обязательные скобки, принудительные отступы» кажутся верхом совершенства – а кому-то совсем наоборот. Это не может быть использовано как какое то положительное/отрицательное качество языка – это просто личные предпочтения разработчика.

            В раби просто идеологически ближе к перлу - если есть какая то прикольная штука ее добавляют в синтаксис, а синтаксическое древо питона стараются не захламлять.

            Вот этот момент я как то совершенно не понял. Создатели Ruby последовательно придерживаются изначально заданного общего направления развития языка в плане синтаксиса. Вас не затруднит привести пример какой ни будь «прикольной штуки» которой не было в Ruby, а потом ее взяли и добавили – и она захламила «синтаксическое древо»?
          • 0
            Фортран, как и языки разработанные математиками ужасен. Шучу, но тот же Matlab тоже не сахар =) . Я сам немного писал на фортране, но всегда стараюсь держаться от него подальше: я помню тот ужас отладки всего лишь 300-400 строчной мат модели %(.

            Да фортран – особенно по сравнению с современными высокоуровневыми языками выглядит устрашающе :) Мне – к счастью – не приходилось с ним сталкиваться в практической работе – но об ужасах я наслышан.

            3) на тему языков для научного компутинга, мне всегда непонятно почему линейка паскаль-обертрон не заняла там прочных позиций. Это было бы гораздо лучше чем фортран.

            Наследие уже написанных фортрановских библиотек. Если приложение есть, оно работает, и работает хорошо – зачем что то менять, тратя на это время – время которое можно с большей пользой посвятить самому исследованию? Вполне логичная, но конечно не радостная стратегия.
  • 0
    > Этот доклад будет полезен начинающим программировать на python,
    > а также тем, кто выбирает язык программирования для своей задачи.

    к сожалению, не увидел в статье того, где был бы Python более эффективен нежели другие языки, или говоря другими словами, для каких задач его было бы разумно использовать
    • 0
      > Этот доклад будет полезен начинающим программировать на python,
      > а также тем, кто выбирает язык программирования для своей задачи.

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

      кстати, вот тут еще больше полезного можно найти для тех, кто думает о питоне)) http://ru.wikipedia.org/wiki/Python
  • 0
    Спасибо, как раз в тему! Пока разрываюсь, что выбрать питон или яву? У кого какие мнения по этому поводу?
    • 0
      для каких целей?
      • 0
        Задача номер раз, написание демона для Линукса, который будет обрабатывать одновременные обращения от двух и более клиентов.

        Грубо говоря будет онлайн игра в крестики нолики, клиент написан на флеше (играют два человека сидящих за разными компьютерами), сервер на питоне или яве в виде демона. В реальном случае все будет немного сложнее, по этому сервер, например, на пхп однозначно не справится... По этому выбираю между явой и питоном.
        • 0
          если выберете питон, то Twisted вам в помощь
        • 0
          У Пайтона со средами проблемы, так что не рекомендую. По-моему у него там неправильный межпотоковый лок в интерпретаторе.

          А для задачи "выполнить героическую миссию и умереть" я бы скорее его рекомендовал, так как мне джава под**ела, да и она не по-современному многословна.
          • 0
            Долго думал над фразой "проблемы со средами", пока не дошло, что "среды" - это не "environments", а "threads"... А проблема такая есть, да (см. "GIL", он же "Global Interpreter Lock").
        • 0
          оффтоп
          учитывая "ЗВ реальном случае все будет немного сложнее, " легко советуеся С/С++, , даже .NET, Perl. В каждом из этих языков есть готовые библиотеки/модули для выполнения всего, что вам необходимо, даже в перспективе.
          • 0
            C/C++ понятно - для производительности, .NET тоже производительный и имеет большую библиотеку (хотя чем он лучше Java), но вот причём тут Perl? Кстати, для больших, высоконагруженных сетевых сервисов легко советуется Erlang, но это сильно специфический язык.
            • 0
              такое ощущение, что вам злой дядя сказал, что Perl - плохо и вы в каждом в каменте его слова афишируете.
            • 0
              вы сильно ошибаетесь на счет возможностей Perl ;)
              • 0
                вы хотите разжечь войну?
                давайте не будем здесь :)
                • 0
                  нет-нет, зачем? хотел указать сомневающимся в Perl пусть истинный! :)
  • +1
    питон неплох... мне понравилса при обозрении документации (в оф. доках на сайте можно скачать детальний мануал... там, в принципе, понятно написано...)
    • +1
      линки в студию:
      http://www.python.org/ftp/python/doc/2.5… - доки
      http://www.python.org/doc/2.5.2/tut/tut.… - тьюториал

      ... у меня где-то еще доки в chm есть... если в инете не найдете - могу дать... (считаю етот формат удобним, imho...)
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Сбросьте, пожалуйста, на phoenix.ukraine ат gmail.com chm-файлик.
        Собираюсь скоро взяться за Питон.
      • 0
        chm документация стандартно с дистрибутивом питина для Windows идет
        • 0
          ... я вроде качал отдельно... ставил питон для ознакомления, как дополнение к denwer...
      • 0
        а... забил еще сказать:
        у меня в chm есть книга Сузи Р.А.
        Язык программирования Python
        БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2006

        ... Интернет Университет... достаточно хорош курс етот там... для начинающих, тем более... + еще минимальную сертификацию пройти можно...
  • +1
    спасибо большое, как раз потихоньку вникаю в питон, материал пригоится
  • 0
    Питон хорош, но где ему жить?! Искал дешёвый хостинг - ситуация сильно хуже phpшной. Всё больше VMSы предлагают, а там и цены соответствующие.
    • 0
      Python через CGI многие хостеры предлагают, просто не всегда это афишируют, хотя да CGI - это прошлый век. А так впринципе цены на VDS упали достаточно, так что вполне приемлимое решение, учитывая что оно предоставляет полную свободу выбора
    • 0
      если не нужен FastCGI, то хостфабрика или вот тут например
      • 0
        спасибо :)
        цена сравнима с моим пхп-хостингом
    • 0
      http://tophost.com.ua/ могу посоветовать
      • 0
        Пробовал с ними работать, забивали на меня 3 дня подряд, перешел на http://webfaction.com.
        Из плюсов — деньги вернули по первому требованию :-)
    • –1
      http://www.webfaction.com/

      Отличные цены и поддержка. Я правда для руби он рейлс этот хостинг брал.
      Можете посмотреть мой отзыв http://habrahabr.ru/blog/ruby/37925.html . Но для джанго примерно так же.
      • +1
        Я брал для Pylons, впечатления — лучший shared из всех с которыми сталкивался.
    • 0
      Господа, а вот с этими firstvds кто нибудь дело имел? Уже собрался у них покупать VDS, но что то подозрительно дешево... Стоит с нии связываться? (честное [хабра]слово,что не реклама)

      Посоветуйте, где лучше VDS брать, пожалуйста.
      • 0
        пользуюсь их хостингом уже год:) всё устраивает.. единственное неприятно, что ребуты частенько бывают
        • 0
          Еще вопрос: на сколько сложно настроить VSD с нуля - т.е. почти ни чего не зная o *nix системах? нужен аппач, майскуль, питон, и еще пара демонов.
          Или стоит напрячься и работать с буржуинским webfaction?
          • 0
            лучше доплатить и их администраторы все нужное поставят.
          • 0
            можно взять шаблон, где уже стоит апач и мускул и куча прочего, а питон из портов элементарно ставится
            • 0
              простите мое невежество, а что такое шаблон? А то не знаю даже как гуглю вопрос задать.
              заранее благодарен.
              • 0
                Наборы предустановленного ПО
                http://firstvds.ru/ru/technology/software/index.html
  • 0
    /* мы "скармливаем" исходник интерпретатору; он генерирует байт-код, но оставляет его в памяти, а затем передает виртуальной машине (являющейся частью интерпретатора). Это ускоряет запуск программы за счет отсутствия необходимости записывать байт-код на диск. */

    ага! в следующий раз когда я захочу ускорить свою программу, я ничего не буду менять, а просто "сгенерирую какой-нибудь байт-код" - спасибо за новую технику!
  • 0
    Спасибо за пост, вы очень интересную тему затронули.
  • +2
    в статье помимо всяких "техник ускорения" (гы-гы, ускорение компиляцие "порадовало" ужасно) затронуты нешуточные холивары. Если автор так не любит С++ и обожает Яву, зачем же он открыто об этом пишет и вообще причем тут питон? Сравнивать питон и яву "почти на уровне" и говорить, что они работают "почти идентично", рассказывать, что "как жаль, что учат на С++", "нет всяких new[] delete[]" и т.п. - это достойный стиль описания интерпретируемого языка? К чему эти личные высказывания? Сто раз уже говорилось, с кривыми руками нечего лезть в С++ и пенять потом на язык, память дырявая и "забываете" о своих же переменных - лезьте в яву сразу и она вас вылечит от склероза, да и не в том суть. Срываюсь на холиварщину :(
    В целом описание языка неплохое, но личные субъективные вставки заставляют задуматься о качестве "программиста", как такового. Истинному программеру фиолетово на чем писать, каждой задаче свой язык, древний принцип работает и по ныне.
  • 0
    http://www.greenteapress.com/thinkpython/
    Еще один учебник, на этот раз более общего характера, чуть ли не с уклоном в Computer Science. Конечно обычно для таких целей используется Scheme, но уж больно книжка приятная)
  • 0
    Шикарная книжка от Bruce Eckel'я - Thinking in Python
    http://www.mindview.net/Books/TIPython

    В стиле "Философия С++/Java"
  • 0
  • +1
    Убило:

    "Главное в инкапсуляции, как мы увидим позже - не надо путать инкапсуляцию и сокрытие данных."

    Не то, чтобы я придирался к словам, но нельзя ж так писать :) Тем более, что инкапсуляция подразумевает сокрытие данных и реализации (в добавок к объединению данных и кода). В Питоне сокрытия реализации нет вовсе, что меня несколько настораживает. Возможно это инертность мышления, и отсутствие сокрытия не является минусом языка.

    Это не доклад - а его конспект (см. комментарии на второй странице доклада). Может, вынести это в описание?
  • +1
    Вот моя подборка:
    byteofpython_120.pdf.zip
    DefinitiveGuidetoDjango.rar
    diveintopython-pdf-5.4.zip
    diveintopython.pdf.zip
    EssentialsRapidPythonWebApplicationDevelopment.rar
    LearningPython3rd.rar
    O'Reilly - Python Programming on Win32.chm.zip
    OReilly.Python.in.a.Nutshell.2nd.Edition.Jul.2006.chm.zip
    Preiss B.R. Data structures and algorithms in Python (2004).chm.zip
    ProfPythonFrameworksWeb20Programming.rar
    Python Style Guide.htm.zip
    Python-Docs-2.5.zip
    PythonScriptingComputationalScience.rar
    python_cookbook.zip
    python_uchebnik_python.rar
    text processing.zip
    ThinkingInPython.zip
    Wrapping Your Brain Around Oracle + Python.mht.zip
    Г.Россум и др. - Язык программирования Python.zip
    Множественная диспечеризация.htm.zip
    Программирование метаклассов на Python.htm.zip
    Функциональное программирование.htm.zip
    Хроники пикирующего сисадмина- (Сайт Попова О_Б_).mht.zip
    Язык программирования Python.zip
    Хотел изучить но как-то не задалось. Тут все одним архивом. Если нужно что-то по отдельности - пишите письма.
  • 0
    доклад интересный. как раз как вводная часть по выбору языка.
    не нашел упоминания про
    - необязательность объявления переменных
    - чувствительность к регистру в именах переменных
    зы: говоря по Perl-овски - use strict отсутствует. pychecker ловит, но штучные опечатки.
  • 0
    Прочил половину первой части....

    Он пишет:

    В простейшем случае запуск программы происходит так: мы "скармливаем" исходник интерпретатору; он генерирует байт-код, но оставляет его в памяти, а затем передает виртуальной машине (являющейся частью интерпретатора). Это ускоряет запуск программы за счет отсутствия необходимости записывать байт-код на диск.


    Но простите, это же бред! А как же второй запуск, третий, четвертый? Время затрачиваемое на постоянную транслятцию кода не идет ни в какое сравнение с той ОДНОКРАТНОЙ задержкой, связанной с записью байт-кода на диск.

    и после этого идет следующее заключение

    ...только Питон чуть быстрее загружает программы за счет того, что не пишет байт-код на диск


    просто смешно....

    Автор явно чего-то недопонимает. Или, может, я?
    • 0
      Автор.
    • 0
      смысл в том что пайтон может запустить программу из исходника без компиляции (оч удобно например при разработке в текстовом редакторе), но вы всегда можете сказать чтоб откомпилировал, и будет запускаться байткод
      по поводу аргументации автора, согласен, не стоит это приводить как явный плюс в быстродействии и тд
  • +2
    Как сторониий наблюдатель, никогда не интересовавшийся питоном, могу сказать одно: Статья абсолютно бесполезная. Я не нашел там ничего, что помогло бы "начинающим программировать на python" или "тем, кто выбирает язык программирования для своей задачи". Автор приводит примеры кода, которые на его взгляд должны быть очевидными, пишет какую-то ересь про генерацию байт-кода, вставляет свое мнение о других языках, о которых он имеет ограниченное представление (уж не знаю что там у него с Жавой, но то что с плюсами не дружит - это точно). Вобщем мне бы было стыжно выносить такую писанину на суд общественности.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.