Согласно информации издания ZDNet, теперь начинающие разработчики Python могут ознакомиться с учебными материалами по этому языку программирования от Агентства национальной безопасности (АНБ, англ. National Security Agency, NSA) США.

Программист Крис Свенсон (Chris Swenson) подал в АНБ запрос, используя Закон о свободе информации, о предоставлении ему доступа к учебным материалам агенства по Python. Через некоторое время он получил в ответ немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ. После этого Крис Свенсон отсканировал эту документацию с использованием механизма распознавания текста, чтобы сделать его доступным для поиска. Потом Свенсон разместил этот курс обучения в Digital Oceans Spaces. В настоящее время этот обучающий материал также доступен в Архиве Интернета.

Крис Свенсон в начале февраля 2020 года рассказал об этом событии на своей страничке в твиттере. Чуть позже один из пользователей уменьшил размер pdf-файла с курсом до 18 МБ для удобства.

«Если вы еще не знаете никаких языков программирования, ��о Python хорошо подходит для начального обучения. Если вы уже знаете другой язык, то вам будет просто понять Python», — написано в введении курса от АНБ. Курс COMP 3321 рассчитан на две полные недели обучения. Курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований. В АНБ рекомендуют пройти этот курс всем начинающим разработчикам и будущим исследователем данных.

В процессе обучения используется версия 4.4.0 дистрибутива Anaconda3 Python, делается упор на запуск Python из командной строки, а также описана примеры по работе с инструментом Jupyter Notebook в браузере.

Свенсон рассказал в интервью ZDNet, что «в основном простое любопытство» побудило его отправить запрос в АНБ по учебному материалу по Python. Оказалось, что АНБ удалило или откорректировало некоторые материалы и даже абзацы в своем обучающем курсе COMP 3321 для внешнего использования. Крис Свенсон пообещал, что будет продолжать попытки получить дополнительную информацию по этому и другим курсам от агентства.

Разработчик Python Кушал Дас (Kushal Das) проанализировал курс обучения от АНБ. Он обнаружил, что:

  • у АНБ есть внутренняя индексация пакета Python (http://bbtux022.gp.proj.nsa.ip.gov/PYPI) — вероятно это сделано для обучающих целей;
  • isDivisibleBy7(), выглядит так, как будто это написал программист на java;
  • агентство использует GitLab по адресу gitlab.coi.nsa.ic.gov, а их галерея Jupyter работает по HTTPS;
  • предлагается использовать слишком много лишних скобок в условных операторах, тоже с while, например, while (i <= 20); while (True);
  • у них используется внутреннее облако под названием MACHINESHOP, где прорабатываются разные примеры в CentOS / RHEL (они используют команды yum);
  • обработка исключений была введена слишком поздно в этом курсе;
  • профилирование преподается с помощью cProfile, также АНБ учит использовать f-strings;
  • их инсталлер Python (pip mirror) размещен по адресу pip.proj.nsa.ic.gov/;
  • у них также есть внутренний дамп Википедии или это просто какой-то прокси-сервер для доступа к внешней версии — wikipedia.nsa.ic.gov/en/Colossally_abundant_number;
  • примечательно, что АНБ также опубликовало в курсе инструкции по установке Git для CentOS, Red Hat Enterprise Linux, Ubuntu и Windows, но не для Debian.