В Интернете выложили курс АНБ по Python +22







Согласно информации издания 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.

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (9):

  1. raamid
    /#21286002

    Интересно было бы получить от них обучающие материалы по сетевой безопасности.

    • qwerstay
      /#21286370

      Судля по всему нужен гражданин США, который сможет подать аналогичный запрос в АНБ

  2. user52523
    /#21286230

    Полистал, ничего особенного

  3. transcengopher
    /#21289030

    предлагается использовать слишком много лишних скобок в условных операторах, тоже с while, например, while (i <= 20); while (True);

    Совершенно непонятный для меня пункт. Что значит "лишние скобки"? Для кого лишние — для интерпретатора? Но так код в первую очередь пишется так, чтобы его могли прочитать люди, и только потом — чтобы его могли прочитать и выполнить компьютеры. Если скобки помогают человеку отделить блоки кода друг от друга — это не лишние скобки, даже если их там ((((по четыре штуки)))) подряд.

    • eumorozov
      /#21289182

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


      Проблема в том, что когда кто-то приносит зачем-то свой индивидуальный стиль из C, Java, Javascript, и начинает использовать скобки там, где в Python их никогда не надо было ставить, читать такой код намного сложнее. Глаз привык к питоническому стилю и начинает спотыкаться об эти ненужные нагромождения скобок.

      • mickvav
        /#21299896

        Это зависит от организации. Если у вас большинство программистов — C/C++-native, то питонячье отбрасывание скобок будет резать им глаза. И соответственно, достаточно большая контора может позволить себе иметь линтер, настроенный на тот code style, который принят в этой конторе. И да (о ужас, святотатство-то-какое!) он может отличаться от общепринятого. Идея странная, согласен, но сколько нам открытий чудных…

        • eumorozov
          /#21301232

          Есть PEP-8, который давно стал стандартом в мире Python. Благодаря этому, любой код, написанный с соблюдением PEP-8 читается легко и просто. Во-первых, потому что в нем дельные предложения, во-вторых, потому что уже привыкаешь, что весь код в своем проекте и во всех проектах с PyPI/GitHub выглядит так же.


          Никто не запрещает иметь свой стиль, но по-моему, это только усложняет жизнь.

  4. postgres
    /#21289996

    Интересно, насколько «чист» их репозиторий)
    habr.com/ru/post/488460
    (в связи с недавними материалами о слежке)