C / C ++ для разработчика Python: Введение

Первая статья из серии о том, как познакомить разработчиков Python с миром C / C ++.

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

C / C ++ с точки зрения Python

Для многих разработчиков Python C / C ++ может показаться чрезвычайно сложным и чуждым. Они привыкли слышать, как их товарищи-программисты говорят о его сложности, сложности и, возможно, даже о его возрасте. Даже когда программисты на python соглашаются с тем, что скорость C / C ++ выкидывает python из воды, ее быстро преуменьшают, утверждая, что время разработки значительно больше по сравнению с python. Не говоря уже о заявлениях о том, что язык устарел, а не «современный».

Python с точки зрения C / C ++

Для многих разработчиков C / C ++ Python может показаться игрушкой. Они привыкли слышать, как другие программисты говорят о его скорости (или ее отсутствии), простоте и странном синтаксисе. Даже когда программисты на C / C ++ соглашаются с тем, что python может делать невероятные вещи, это преуменьшается такими утверждениями, как: «это не настоящее программирование», «это возможно только благодаря библиотеке xyz» и «он слишком медленный».

Другая точка зрения

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

Целевая аудитория этой серии - разработчики Python, желающие окунуться в мир C / C ++. Я предполагаю, что читатель имеет твердое представление об основах Python, таких как: переменные, функции, классы, система импорта модулей и т. Д. На основе этих основ я планирую обучать C ++, используя python в качестве системы отсчета. Первой вехой в этой серии станет практическое знание C ++; второй вехой станет возможность расширять, встраивать и, возможно, вносить свой вклад в сам python.

Первая веха: практическое знание C ++

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

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

Вторая веха: расширение / встраивание интерпретатора Python

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

Начало работы

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

Для первых нескольких статей я рекомендую использовать https://www.onlinegdb.com/ как для кода Python, так и для кода C ++. Веб-сайт бесплатный, и вы можете переключаться между разными языками. Мы будем использовать Python3 и C ++ 17.

Избиение мертвой лошади: Привет, мир

По традиции, я начну с примера hello world:

Вывод:

Hello World

На данный момент нужно обратить внимание только на три вещи:

  1. Операторы заканчиваются точкой с запятой вместо новой строки.
  2. Для печати на консоли на C ++ необходимо иметь #include ‹iostream› в верхней части файла, а печать на консоль выполняется с помощью вызова std :: cout ‹< x где x - это элемент, который вы хотите распечатать.
  3. В отличие от python, каждая программа на C ++ должна иметь точку входа, которая представляет собой функцию с именем main, которая возвращает int. Мы рассмотрим функции и типы в следующей статье.

Хотя этот пример тривиален, на самом деле здесь происходит гораздо больше, о чем мы поговорим позже. Например, что такое std :: cout? А что с синтаксисом ‹<? Что такое #include ‹iostream› и то же самое, что и импорт модуля Python? На эти вопросы мы ответим в следующих статьях.

Резюме

Теперь, когда вводный материал закончен. Мы можем начать самое интересное ... в следующей статье. В следующей статье мы начнем разбирать систему типов и функции. Если вам интересна эта серия и ее направление, обращайтесь!

Спасибо за чтение.