Рубрики
Без рубрики

Как я пошел от C ++ в Python: концептуальные изменения

Автор оригинала: FreeCodeCapm Team.

Асья Ф.

Вступление

Люди говорят, что кодирование в Python так легко, что даже 6-летний может это сделать. Это была мысль, которую я имел в виду, когда я начал кодировать в Python на работе. В то время я был разработчиком программного обеспечения в полный рабочий день в течение 4 лет, в основном в C ++ в Linux, сильно используя библиотеку Qt. Тем не менее, я сначала писал плохой Python код.

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

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

C ++ – дайвинг, Python сноркелинг

C ++ чувствует себя как погружение в волшебные загадки моря – красиво, но требует большего обучения и практики, а в целом, расстояние, которое вы охватываете, не так много. Python немного похоже на подводное плавание – вы видите красоту, как только вы торшите голову в воду, но вы не идете дальше вниз. Вы продолжаете плавать в мелководье и можете покрыть дальние расстояние легко. Из этого описания ясно, что каждый из этих языков должен использоваться в его правильном месте и времени.

Дайвинг в C ++ и выжив

C ++ более строгим и озадачивает вам более резко на своих ошибках. Это не эффективный кодирующий сеанс, если вы не получили удивительного Ошибка сегментации Хотя бы один раз. Поэтому требуется более глубокое понимание компьютера, компилятора и языка. Когда вы идете глубже, вы действительно можете увидеть и быть впечатлен красивыми вещами, такие как процесс компиляции и управление памятью.

Как программист C ++, я заботился о Syntax Tweaks и странные примеры. Я всегда знал, где я выделил память и как я его выпустил. Программы, которые я написал, были более автономными, когда я предпочел знать, что происходит внутри моего кода. Основная идея была, что код, который кто-то еще написал, был менее надежен, более подвержен ошибкам, и может взорвать ваше использование памяти.

Мои главные повседневные инструменты были Vim С многочисленными плагинами для записи кода, GDB Для отладки и Valgrind для анализа использования моего памяти и ошибок. Я скомпилировал с G ++ и написал свой собственный Makefiles Отказ Вернувшись тогда, я не чувствовал, что IDE принесет мне пользую мне, но предпочел бы медленным и заставить меня потерять связь с моим кодом. При ретроспективе я сильно полагался на компилятор для поиска ошибок моего типа Отказ

Неглубокое плавание в Python

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

Когда я начал кодировать в Python, сначала написал код C ++ в Python. Работал, но я не получил никакой выгоды от языка. Мое кодирование улучшилось, когда я начал писать в более «питон» моде и начал использовать библиотеки, а более продвинутые концепции, такие как Генераторы , Декораторы и контексты Отказ

В качестве разработчика Python я склонен сначала смотреть в библиотеку, которая решает проблему под рукой. У Питона богата Библиотека экосистемы и сообщество, которая поддерживает это. Есть библиотеки для практически ничего. Вот несколько удобных, которые я ежедневно использую: Numpy Для численных расчетов Opencv Для компьютерного зрения, JSON Для чтения файлов JSON, Scipy Для научных расчетов SQLite3 Для баз данных.

Мой повседневный инструмент – Пычарм (да, IDE) с IDEAVIM плагин. Я начал использовать его в основном из-за того, что это мощный отладчик, который намного дружелюбие, чем отладчик Python по умолчанию, PDB Отказ Я также использую Пип Для установки библиотек, которые мне нужны. Я больше не контролирую мою память, если я действительно не должен.

Некоторые практические советы

Если вы являетесь разработчиком C ++, и вы считаете, что начать код в Python, вот мой совет для вас:

  • Избавиться от старых привычек – Остановитесь использованием компилятора C ++ в качестве отладчика. Не переполните оптимизировать использование памяти. Избегайте написания C ++ – как код. И все средства, старайтесь не полагаться на типы.
  • Получить новые привычки – Начните использовать библиотеки. Напишите код Pythonic (но не переусердствуйте). Держите вещи читаемыми. Используйте более сложные концепции, такие как генераторы/декораторы/контексты. Попробуйте пичай.
  • Используйте общие библиотеки C ++ и Python – Некоторые библиотеки C ++, такие как OpenCV и QT, имеют интерфейс Python. Легко начать использовать одну и ту же библиотеку в Python, а не изучать новую библиотеку с нуля.
  • Не забывай свое происхождение – Иногда Python просто слишком медленно или не является оптимальным для этой задачи. Это когда ваши знания C ++ пинают. То есть много способов ( SIP , Ctypes etc) Для использования кода C ++ внутри Python.

Нижняя граница

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

Удачи!