Пользователь
0,0
рейтинг
28 октября 2014 в 14:37

Разработка → Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» tutorial

imageПривет, Хабр!

Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.

О чём?

В учебнике подробно рассматриваются, объясняются и анализируются наиболее часто используемые структуры данных и алгоритмы. Изложение идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом. В качестве языка программирования выбран Python, а для тех, кто с ним плохо знаком, в первой главе есть большой раздел с его концентрированным описанием.

Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.

Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».

Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.

Для кого?

Учебник предназначен в первую очередь для старшеклассников и студентов, а также «плавающих» в теории программистов-практиков. Кода много, и чем ближе к последним главам, тем меньше он разжёвывается. Поэтому стоит быть готовыми к вдумчивому чтению листингов. Однако, учебник не зря назван «интерактивным». В тексте содержатся вставки с так называемым ActiveCode, который можно запускать прямо на странице, чтобы в живую «пощупать» программу. Плюс для более сложного материала есть CodeLens — этакий отладчик, в котором можно просмотреть работу кода построчно. В большинстве разделов есть тесты для самопроверки, а в конце каждой главы идут два блока заданий для самостоятельной работы: по теории и по практике.

Технические подробности

Учебник реализован на sphinx с использованием расширений, которые добавляют в него интерактивность (например, расширение, позволяющее исполнять исходных код на Python в броузере). Как и оригинальный проект, перевод является open source. Все исходники книги выложены на github-е. Поэтому если вы нашли опечатку, смысловую или стилистическую ошибку, то присоединяйтесь! Так же вы можете сделать клон репозитория учебника и читать его локально. Инструкцию по сборке можно найти по тут.

И ещё раз ссылки

Оригинал: http://interactivepython.org/courselib/static/pythonds/index.html

Перевод: http://aliev.me/runestone/

Репозиторий перевода на github-е: https://github.com/aliev/runestone
@AveNat
карма
209,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +1
    Отлично, спасибо!
    Как раз недавно искал что бы такого почитать по алгоритмам простого и понятного — кроме Седжвика ничего и не нашел.
    А теперь вот такое есть, еще и на python.
    Еще бы про динамическое программирование что-нибудь — было бы полностью круто.
  • 0
    а есть ли где PDF версия?
    • 0
      нет, это интерактивный учебник
      • +5
        Жалко :( pdf, fb2 очень удобны для чтения в метро с читалки, как раз когда есть куча времени на самообразование…
        • +1
          Ога. Много. Жалко что достаточно часто попадаются люди сидящие или стоящие неподалеку и так громко обсуждающие что-нибудь. Либо некоторые общаются по телефону и таким вроде не громким но монотонно-бубнящим голосом не дающим сконцентрироваться.
  • +2
    Большое спасибо за труд.
  • +1
    Благодарю, отличная работа!
    Подскажите, а как работает интерпретатор Питона на веб-странице? Он обменивается через Ajax с интерпретатором на сервере?
    • +3
      нет, все работает на стороне клиента. есть такая вот замечательная штука: www.skulpt.org/
      • 0
        Не очень удобно, когда демонстрация проводится в небольшом ограниченном поле и появляются большие горизонтальные и вертикальные полосы прокрутки. Можно ли здесь как-то улучшить удобство пользования Codelens?
        • 0
          можно, но все силы шли на перевод учебника. исходный код открыт и если у вас есть готовые мысли по этому поводу то можете отправлять пул запросы. авторы оригинального учебника исправлениям тоже будут рады
  • 0
    Крайне рекомендую перевести в Gitbook. Уж очень удобно.
  • 0
    Отличная работа, авторам -искренняя благодарность за труд.
    У меня небольшая просьба к авторам-не могли бы вы более подробно (м.б. даже в стиле for dummies)описать процедуру сборки учебника,
    чтобы можно было читать локально.
    (У меня Win 7, до этого никогда с Git работать не приходилось, поэтому сразу собрать учебник не получилось- репозиторий скачал в виде Zip-архива, а далее в Вашей инструкции следует:
    «Предварительно установите пакет python-virtualenv (если вы работаете в Debian based дистрибутивах).»
    и мне не очень понятно, что делать дальше, если не Debian).
    Заранее благодарен за помощь.
    • 0
      если вам нужна готовая сборка учебника просто сделайте клон репозитория с веткой gh-pages:

      git clone git@github.com:aliev/runestone.git -b gh-pages
      


      (объем учебника достаточно большой, из за большого количества иллюстраций)

      Затем просто открывайте index.html из корня репозитория и будет вам счастье :)

      По мере нахождения багов и неточностей в переводе мы обновляем основную ветку, а затем готовую сборку книги льем в ветку gh-pages (для чтения онлайн). Так что, вы можете обновлять свой учебник регулярно просто делая git pull в директории с репозиторием.
    • 0
      забыл добавить, если у вас нет желания клонировать репозиторий можно скачать готовый архив: github.com/aliev/runestone/archive/gh-pages.zip должно сработать
      • 0
        Спасибо за помощь, все работает.Надо будет освоить работу с Git.:)
  • 0
    Колоссальный труд! Спасибо!
  • 0
    Очень круто! А еще что то похожее по интрективности у кого то есть для других языков? К примеру, PHP, MySQL? )

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