Содержание статьи
- Как все начиналось
- BASH vs Python
- И все-таки Python
- Как выучить Python за 3 недели и спать спокойно
Python — один из самых популярных языков программирования. Его используют не только разработчики, но и специалисты самых разных сфер: ученые, аналитики, тестировщики, медики, маркетологи и многие другие.
Мой путь к Python был тернист, зато и первые задачи на нем сразу пошли в продакшен. Но обо всем по порядку.
Как все начиналось
Давным-давно в мои руки попала инструкция от ZX Spectrum — популярного в восьмидесятых и начале девяностых 8-разрядного компьютера. Я читал ее ночами и поражался, насколько же это круто — знать специальный язык, с помощью которого можно управлять компьютером, буквально подчинить машину. С тех пор моя жизнь и карьера неразрывно связаны с программированием.
Первую программу я написал на языке Dark Basic в третьем классе. Компьютера у меня не было, зато были друзья. Поэтому программа сначала появилась на тетрадном листе, а затем перекочевала на компьютер друга. Ничего великого она не делала: сперва спрашивала имя собеседника, а затем оскорбительно о нем отзывалась. Зато не просто Hello, World! 😉
- Hello, World! — программа, результат работы которой — вывод на экран фразы «Hello, world!».
Моя первая программа. Не горжусь, но для третьеклассника неплохо
Смотреть программуАвтоматизация тестирования на PythonОнлайн-курс для тестировщиков
Затем был Visual Basic 6.5. Это было время расцвета локальных сетей, и я загорелся идеей написать сетевой чат. С ним я выступил на городской конференции для школьников. На презентации мой друг и ассистент, демонстрируя функции чата, словил все возможные баги. Надо узнать, не стал ли он тестировщиком 😉
В старших классах школы я начал изучать язык C. Это строгий и по-своему красивый язык, который требует большой вдумчивости и с завидной легкостью позволяет стрелять себе по ногам. В вузе были Pascal и Delphi, но лабы и курсовые я по возможности писал на C++. Не скажу, что очень нравилось: после C++ осталось послевкусие переусложненного С.
BASH vs Python
Тогда же я познакомился с Linux и почти сразу влюбился в BASH. Что я только на нем ни писал — от анализа логов сетевого шутера для автоматического бана читеров до автоматизации параллельной разработки доступной среды или ядра Linux для распределенных блокировок. При этом между процессами использовал именованные пайпы — ФИФО.
BASH — как глоток свежего воздуха после терминала Windows
- А еще я написал скрипт, который вытягивал рандом с Башорга и показывал по одной цитате. Кажется, он все еще работает.
Выбрал бы я сейчас Python для задач, которые когда-то решал на BASH? Пожалуй, да. Все, как обычно, зависит от задачи:
- Если нужно быстро обработать текст, переложить стопку файлов, найти что-то в логах, то связка BASH — grep — upset все еще хороша. Многие тестировщики и системные администраторы со мной согласятся, потому что пользуются этими инструментами, по крайней мере на Linux-серверах.
- Если нужна сложная логика, работа с сетью или структурированными данными вроде JSON и XML, Python — отличный помощник. В качестве развлечения это всё можно написать на BASH — будет весело и займет все выходные. Но если серьезно, то скрипт на Python прекрасно помогает справляться с рутиной при решении рабочих задач.
Из последних задач, которые не касались непосредственно разработки, был поиск устаревших зависимостей для библиотек в GitLab. Можно вручную посмотреть несколько десятков проектов, но я не надеюсь на собственную внимательность. Скрипт на Python отработает надежнее и быстрее даже с учетом времени, которое уйдет на его разработку. Особенно если счет источников данных идет на десятки.
И все-таки Python
Где-то между страданиями на С++ и BASH-безумием мне написал друг и спросил, не хочу ли я выучить Python. Я и не подозревал, на что подписываюсь, а когда спросил, что почитать, мне прислали две ссылки: на Dive Into Python и на официальную документацию языка.
И почти сразу дали задачу — написать высокоуровневый асинхронный драйвер для модема. Слово «асинхронный» для меня было новым. Дело в том, что модем — штука неторопливая, и в синхронном коде, пока он отвечает, придется ждать всей системе. Будет тормозить интерфейс и остальной ввод/вывод.
Читайте также: Как написать парсер телеграм-каналов на Python
Никакого asyncio тогда не было, зато были Python 2 и select — системный вызов Linux, который позволяет дождаться, когда будет готов ввод/вывод, и после этого приступать к чтению.
Через месяц я написал рабочий прототип. Это приблизительный тайминг, который позволяет освоить Python при большом желании.
Примитивный, но рабочий DNS-прокси-сервер на Python. К нему можно выполнить DNS-запрос, и он отдаст IP-адрес сервера
Это решение я переиспользовал, когда работал сисадмином в своем родном лицее. На его основе написал DNS-фильтр, чтобы дети не ходили куда попало через школьный интернет.
Вот так я за месяц с небольшим влился в разработку на Python. Это были сразу задачи в прод — сумасшедшая история. Чтобы быстро во всем разобраться, пришлось сидеть днями и ночами, при этом в помощь мне были только доки. Теперь, конечно, возможностей у новичков в сотни раз больше.
Как выучить Python за 3 недели и спать спокойно
Что читать
Рекомендую ту же книгу, с которой начинал я, — Dive into Python. В 2009 году вышла версия Dive into Python 3, имеет смысл начинать именно с нее. А еще важно не забывать о PEP — индексе предложений от сообщества Python для внесения изменений в язык — и документации к языку.
Где учиться
Вы можете превзойти мой результат и освоить Python за 3 недели на онлайн-курсе «Основы языка Python». Опытные преподаватели не оставят студентов один на один с компьютером. Вам не придется проводить ночи без сна, мучаясь над очередной задачкой, и развитие пойдет гораздо быстрее.
А если нужно обучить сразу нескольких сотрудников, выбирайте Годовую подписку. С ней вы сэкономите не только время, но и деньги. Эксперты подберут курсы для специалистов по всем направлениям обучения в Контур.Школе.
Кроме того, пользователи Годовой подписки получают безлимитный доступ к экспресс-курсам, вебинарам и рубрике «Вопросы экспертам». Приносите сложные рабочие кейсы — будем разбираться вместе 🤓