Это вольный перевод курса статей за авторством Jeffrey Dege.

Содержание

  1. Введение
  2. Python
  3. Криптография
  4. Класс Text
  5. Класс Encryption
  6. Криптоанализ I - Числа
  7. Криптоанализ II - Фокус
  8. Криптоанализ III - Точность
  9. Программирование

Python — скриптовый язык. На практике, это во-первых значит что он интерпретируем. Во-вторых что язык заточен для быстрой автоматизации “бытовых” программистских задач. История Unix пестрит такими языками: от Bourne Shell к AWK и затем к PERL или TCL. Есть сикриптовые языки и на других платформах: JCL и REXX для мейнфреймах IBM, AppleScript на Macintosh, PowerShell на Windows и другие.

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

Литература

Повторюсь, этот курс не концентрируется на базовых основах языка Python. Если вы не знакомы с этим языком, стоит посмотреть специальные курсы, многие из которых доступны в сети. Jeffrey советует такие:

  • Swaroop C H “A Byte of Python”
  • Allen B. Downey “Think Python, How to think like a Computer Scientist”

От себя добавлю “Dive into Python”, частично переведенный на русский и “Язык программирования Python”, в создании которого участвовал Гвидо ван Россум, создатель языка.

Три способа запуска кода

  1. Напечатать в интерпретаторе
  2. Сохранить в файл и передать интерпретатору
  3. Сохранить в файл и вызвать сохраненное из другой программы

Первый способ — могучая способность Python’а и многих других интерпретируемых языков. В миру это приятная возможность выдрать кусок кода и рассмотреть под лупой как он работает (или не работает, да).

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

Существует широкий класс задач, общий для разных программ. Отсюда необходимость в возможности писать код, обслуживающий такие задачи, и использовать его в других приложениях без применения копипаста.

Большинство компилируемых языков предлагают последние два способа и ни один первый (это можно смело утверждать, не смотря на техническую возможность некоторых IDE для компилируемых языков отлаживать код по кускам). Большинство же интерпретируемых языков умеют только первые два, и лишь некоторые третий. Python покрывает все три и в довесок позволяет использовать сохраненный код не только как приложение или библиотеку, но и вызвать его из интерпретатора. Что, кстати, мы и будем заниматься в этом курсе.