Почему с быстрее python
Перейти к содержимому

Почему с быстрее python

  • автор:

Python избавился от недостатка, над которым смеялись все программисты. Его научили работать со скоростью С и С++

Python получил сверхбыстрый компилятор. Производительность скомпилированных им программ оказалась в 10-100 раз быстрее в сравнении с приложениями на выходе традиционного интерпретатора CPython. Теперь по этому параметру Python ничуть не уступает, а в некоторых случаях даже превосходит С и C++, своих главных конкурентов среди языков программирования.

Python ускорился

Язык программирования Python, самый популярный и очень востребованный в мире, в одночасье стал в несколько раз лучше благодаря стараниям экспертов стартапа Exaloop и Массачусетского технологического института (MIT). Они создали компилятор Codon, существенно повышающий производительность скомпилированных приложений на фоне их аналогов, вышедших из-под стандартных интерпретаторов. По скорости работы они едва ли не быстрее программ на С и C++, пишет The Register.

Низкая производительность программ – то, за что Python, при всей простоте его освоения, ругают чаще всего. И нередко в этом плане его сравнивают именно с С и C++, притом не в его пользу. Codon устраняет это неравенство – по словам разработчиков, он способен генерировать на выходе чистый машинный код без привязки к среде выполнения Python Runtime.

Разработчики уверяют, что в сравнении с обычными интерпретаторами для Python новый Codon обеспечивает ПО в 10-100 раз более высокую производительность. В данном случае идет сравнение с интерпретатором CPython при в однопоточном режиме работы. «Производительность Codon обычно соответствует (а иногда и лучше) производительности компиляторов C/C++», – утверждают они.

Все бесплатно, но не совсем

Проект Codon распространяется по лицензии Business Source License (BSL), то есть по умолчанию все его компоненты доступны бесплатно при соблюдении ряда условий эксплуатации. Все без исключения файлы, необходимые для работы Codon, размещены в профиле стартапа Exaloop на GitHub (принадлежит Microsoft). В комплект входят компилятор, среда выполнения (runtime) для исполняемых файлов и отдельная библиотека функций на замену штатным библиотечным вызовам на Python.

pyn600.jpg

Python получил еще одно неоспоримое преимущество

Что немаловажно, исходные тексты самого компилятора, библиотеки и runtime написаны вовсе не на Python, как многие, вероятно, ожидали. Авторы использовали C++.

Ограничения, накладываемые лицензией BSL на бесплатное использование распространяемого под ней ПО, всегда имеют срок действия. В случае с Codon они продлялся до 1 ноября 2025 г., после чего весь проект будет переведен на лицензию Apache 2.0. А пока Codon распространяется под BSL, его код можно копировать и модифицировать, если в дальнейшем он не будет использоваться в коммерческих целях.

Плюсов без минусов не бывает

Codon разрабатывается как фреймворк для создания высокопроизводительных предметно-ориентированных языков (DSL) в Python. DSL — это языки, ориентированные на конкретную цель, в отличие от языка программирования общего назначения, которым относятся, например, Python или C. Примеры DSL – это CSS и SQL.

У истоков проекта стоят создатели Python-подобного языка программирования Seq, который и лежит в его основе. Авторы Codon позиционируют его как наследника Seq.

Как «большие данные» помогают оптимизировать затраты и увеличить эффективность – мнение Х5 Group
Цифровизация

К недостаткам Codon эксперты The Register относят в первую очередь выбор разработчиками лицензии BSL с ее ограничениями, и необходимость ждать два с половиной года до перехода на Apache 2.0. Также они упомянули отсутствие поддержки некоторых модулей Python. Например, компилятор пока не поддерживает функции динамической обработки типов, плюс для целых чисел в нем используется только 64-битный тип int. В CPython таких ограничений нет.

Плюсы Codon – это очень высокая производительность при однопоточном выполнении. Компилятор также снабжен возможностью работы в многопоточном режиме.

Почему именно C++

Python – это самый популярный язык программирования в мире, согласно рейтингу Tiobe. На первое место в нем он вырвался лишь в октябре 2021 г., хотя существует Python c середины 1980-х годов. Его популярность стремительно растет лишь в последние несколько лет, тогда как другие представители топ-3 Tiobe находятся на вершине этого рейтинга годами.

Основной конкурент Python – это С, с компилятором для которого авторы Codon сравнили свое детище в первую очередь. До октября 2021 г. именно он был первым в рейтинге Tiobe. В декабре 2022 г. в тройку лидеров, сместив Java, вошел C++ – еще один конкурент Python. Скорость компиляции всегда была их неоспоримым преимуществом перед Python, которого, благодаря Codon, больше нет.

Сравнение скорости Python и C++

Автор этой статьи делает сравнение скорости выполнения одной и той же программы на Python и C++. С++ естественно быстрее, но насколько?

Прим. ред. Это перевод статьи Назера Тамими. Мнение редакции может не совпадать с мнением автора оригинала.

Есть миллион причин любить Python (особенно если вы дата-сайентист). Но насколько Python отличается от низкоуровневых языков, таких как Си и C++? В этой статье я собираюсь сделать сравнение скорости Python и C++, на очень простом примере.

Мы будем генерировать все возможные k-меры ДНК, для фиксированного
значения “k”. О том, что такое k-меры, я расскажу чуть позже. Этот пример был выбран потому, что многие задачи обработки и анализа данных связанные с геномом, считаются ресурсоёмкими. Поэтому, многие дата-сайентисты связанные с биоинформатикой, интересуются C++ (в дополнение к Python).

Важное замечание: цель этой статьи не сравнить скорость С++ и Python когда они наиболее эффективны. Код предлагаемых программ можно сделать гораздо более быстрым. Цель этой статьи — сравнить два языка, используя один и тот же алгоритм и код.

Введение в k-меры ДНК

ДНК — это длинная цепь нуклеотидов. Эти нуклеотиды могут быть четырёх типов: A, C, G и T. У вида Homo Sapiens около 3 миллиардов пар нуклеотидов. Вот небольшой кусок ДНК человека:

ACTAGGGATCATGAAGATAATGTTGGTGTTTGTATGGTTTTCAGACAATT 

Чтобы получить из него k-меры нужно разбить строку на части:

ACTA, CTAG, TAGG, AGGG, GGGA и т. д. 

Эти последовательности из четырех символов называются k-меры длина которых равна четырём (4-меры).

Задача

Мы сгенерируем всё возможные 13-меры. Математически — это перестановка с проблемой замены. Следовательно мы имеем 4 в степени 13 (67 108 864) вариантов 13-меров.

Сравнение скорости Python и С++

Мы будем использовать один и тот же алгоритм для двух языков. Код на обоих языках намеренно написан аналогично и просто. Я не использовал сложные структуры данных и сторонние библиотеки. Вот код программы на Python:

def convert(c): if (c == 'A'): return 'C' if (c == 'C'): return 'G' if (c == 'G'): return 'T' if (c == 'T'): return 'A' print("Start") opt = "ACGT" s = "" s_last = "" len_str = 13 for i in range(len_str): s += opt[0] for i in range(len_str): s_last += opt[-1] pos = 0 counter = 1 while (s != s_last): counter += 1 # Следующая строка выводит результаты # print(s) change_next = True for i in range(len_str): if (change_next): if (s[i] == opt[-1]): s = s[:i] + convert(s[i]) + s[i+1:] change_next = True else: s = s[:i] + convert(s[i]) + s[i+1:] break # Следующая строка выводит результаты # print(s) print("Number of generated k-mers: <>".format(counter)) print("Finish!") 

Выполнение этой программы займет 61.23 секунды. За это время сгенерируется 67 миллионов 13-меров. Чтобы не увеличивать время работы программы я закомментировал код выводящий результаты (25 и 37 строки). Если вы захотите запустить этот код и отобразить результаты, имейте ввиду, что это будет очень долго. Чтобы остановить выполнение программы вы можете нажать на клавиатуре CTRL+С.

Теперь посмотрим тот же алгоритм на языке C++:

#include #include using namespace std; char convert(char c) < if (c == 'A') return 'C'; if (c == 'C') return 'G'; if (c == 'G') return 'T'; if (c == 'T') return 'A'; return ' '; >int main() < cout for (int i=0; i int pos = 0; int counter = 1; while (s != s_last) < counter ++; // Следующая строка выводит результаты

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

После компиляции, этот код выполнится за 2.42 секунды. Получается что Python требуется в 25 раз больше времени на эту задачу. Я повторил эксперимент с 14 и 15-мерами (это можно указать на 12 строке в Python и на 22 в C++) Теперь мы видим, что производительность этих двух языков, при выполнении одной и той же задачи, значительно различается.

Я повторюсь, обе программы далеки от идеала и могут быть значительно опимизированы. Например, мы не использовали параллельные вычисления на CPU или GPU. Но для таких задач это необходимо. Также мы не храним результаты. Хотя управление памятью в Python и C++ значительно влияет на производительность.

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

Следите за новыми постами по любимым темам

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

Топ 16 различий между Python и C++

Python и C++ — два очень разных языка программирования. У них разные особенности и предназначены они для разных задач. Однако у обоих есть одна общая черта: поддержка объектно-ориентированного программирования.

В этом руководстве рассмотрим особенности Python, и его ключевые отличия от C++.

Особенности C++

  • Компилируемый язык
  • Строго типизируемый с учетом регистра
  • Не зависит от устройства — портативный и модульный
  • Быстрый и эффективный
  • Мощный
  • Использует указатели и имеет огромную библиотеку функций
  • Поддерживает следующие особенности ООП:
    • Классы и объекты
    • Абстракция
    • Инкапсуляция
    • Полиморфизм
    • Наследование

    Особенности Python

    • Понятный синтаксис и простой в изучении
    • Легко масштабируемый
    • Бесплатный, с открытым исходным кодом и кроссплатформенный
    • Объектно-ориентированный с высоким уровнем надежности и отличной читаемостью
    • Может использоваться для прототипирования и тестирования, чтобы позже переходить к разработке на других высокоуровневых языках
    • Предлагается с крупной библиотекой, включающей XML-парсеры и многое другое

    Теперь посмотрим на основные отличия:

    Параметр C++ Python
    Компиляция Компилируемый Интерпретируемый
    Простота в использовании Писать код непросто Легко писать код
    Статическая/динамическая типизация Статически типизируемый Динамически типизируемый
    Портативность Не портативный Портативный
    Сборка мусора Не поддерживает сборку мусора Поддерживает сборку мусора
    Установка Простая установка Сложный в установке
    Типы Типы данных проверяются при компиляции Привязывается к значениям, проверяемым во время работы программы
    Область видимости переменных Ограничены в пределах блоков и циклов Доступны вне циклов или блоков
    Быстрое прототипирование Невозможно Возможно
    Функции Ограничены по типу параметров и возвращаемому типу Нет ограничений по типу параметров и возвращаемому типу
    Эффективность Сложно поддерживать Легко поддерживать
    Сложность синтаксиса Использует блоки и точки с запятой Нет блоков и точек с запятой (используются отступы)
    Скорость выполнения Быстрый Медленный
    Производительность Высокая производительность Низкая производительность
    Популярность Более популярный во встроенных и энтерпрайз-системах Наиболее популярен в машинном обучении
    Простота и удобство использования Сложен в изучении и используется в низкоуровневых приложениях Простой, используется в машинном обучении и веб-приложениях

    Ключевые отличия C++ и Python

    Дальше перечислены основные отличия C++ и Python с точки зрения языков программирования.

    Компиляция

    Python — интерпретируемый язык. Файлы с расширением .py не нужно компилировать. Можно передавать код прямо в интерпретатор Python и получать результат.

    C++ — это компилируемый язык. Компилятор создает код из написанного программистом, который потом выполняется для получения результата.

    Использование

    У C++ много разных функций и относительно сложный синтаксис. Код на этом языке писать не так просто.

    У Python синтаксис очень простой, поэтому программы выглядят намного проще и их легче писать.

    Статическая/динамическая типизация

    C++ — статически типизируемый язык. Таким образом типы данных проверяются во время компиляции. Благодаря этому исходный код при работе защищен от ошибок.

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

    Портативность

    Python портативен. Он также кроссплатформенный, что позволяет запускать код на разных устройствах.

    C++ не является портативным, поэтому для каждой платформы код нужно специально компилировать: «Написал код однажды, компилируй везде».

    Сборка мусора/управление памятью

    В C++ памятью нужно управлять вручную. Здесь нет автоматической сборки мусора.

    Python же поддерживает автоматическую сборку мусора. Управление памятью в нем осуществляется автоматически.

    Быстрое прототипирование

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

    Недоступно для C++.

    Область видимости переменных

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

    В Python область видимости переменных не ограничена ничем. Переменные доступны в рамках одной конструкции.

    Установка

    C++ можно легко установить на Windows, а вот с Python посложнее. Некоторые библиотеки не совместимы с Windows.

    Типы

    В C++ типы данных привязываются к именам и проверяются при компиляции. Это уменьшает количество возможных ошибок при работе.

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

    Функции

    Функции — это блоки кода с одним или несколькими параметрами и возвращаемым значением. У каждого параметра и возвращаемого значения есть свой тип.

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

    Эффективность

    Код на C++ сложнее поддерживать, поскольку он становится только сложнее с ростом размера приложений.

    У Python же наоборот более чистый код и понятный синтаксис. Его поддерживать значительно легче.

    Сложность синтаксиса

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

    В Python же нет ни скобок, ни точек с запятой. Там используются отступы.

    Скорость выполнения

    Программы на C++ работают быстрее. Именно поэтому этот язык используется в тех сферах, где скорость имеет значение, например, в играх.

    Python же медленнее. Код на Python работает даже медленнее Java-приложений.

    Производительность

    C++ — статически типизируемый язык, поэтому при работе с программой возникает меньше ошибок. Такой код работает быстрее. Это делает C++ высокопроизводительным языком.

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

    Зато в машинном обучении Python почти нет равных.

    Простота и удобство в использовании

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

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

    У Python в этом плане преимущество, особенности если говорить о приложениях для машинного обучения.

    Ключевые достоинства Python

    • Одно из главных достоинств Python — простой и понятный синтаксис. Программистам с C++ он будет понятен почти сразу, пусть изначально может и не хватать скобок и точек с запятой.
    • У Python огромная стандартная библиотека с ридерами/райтерами для CSV, ZIP и других форматов, XML-парсеры, инструменты для работы с сетью и так далее.
    • Язык подходит для создания веб-приложений.
    • Поддерживает duck-typing, когда можно создавать и вызывать объект, не волнуясь о том какого он типа.
    • Лучше всего подходит для машинного обучения.

    Преимущества C++ над Python

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

    Часто задаваемые вопросы

    Лучше учить C++ вместо Python?

    Программист должен выбрать, что ему учить. Это также зависит от потребностей. Если вас интересует системное или низкоуровневое программирование, то обратите внимание на C++.

    Если же ближе машинное обучение, то Python подойдет больше. Также можно познакомиться с веб-программированием на примере Ruby, JavaScript, Angular и так далее.

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

    Python лучше чем C++

    Да. Если говорить о простоте синтаксиса и легкости освоения. Python можно взять просто для того, чтобы познакомиться с программированием. Там нет точек с запятой, указателей, шаблонов, STL, типов и так далее.

    Если вы хотите познакомиться с основами программирования, то Python явно лучше C++. Однако последний выигрывает в плане производительности, скорости работы, широты применения и так далее.

    Может ли Python заменить C++

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

    Он может оказаться впереди в тех сферах, где нет взаимодействия с устройствами, производительности, серьезного управления ресурсами и так далее.

    Что лучше, если выбирать из C++, Python и Java

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

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

    Почему C++ быстрее Python

    По следующим причинам:

    • Хороший C++ код исполняется в CPU быстрее, чем Python
    • Нет этапа интерпретации, когда каждое выражение построчно оценивается
    • Нет постоянно работающего сборщика мусора
    • Есть больше контроля над системными вызовами
    • Можно запросто писать машинный код

    Это все и влияет на более высокую производительность кода C++. Вот что влияет на более медленную работу Python:

    • Язык интерпретируется, а не компилируется
    • В Python нет примитивов. Все представлено в виде объектов встроенных типов
    • Списки содержат объекты разных типов. Это требует дополнительного места для определения будущих элементов в списке

    Выводы

    C++ и Python — разные языки с разным набором функций и областями применения. У Python более простой синтаксис, хорошая читаемость, однако он проигрывает C++ в плане производительности и скорости.

    Python подходит для машинного обучения, а C++ — для широкого спектра приложений, включая системное программирование.

    Насколько С++ быстрее Python

    Есть миллион причин любить Python (особенно специалистам по данным). Но сильно ли он отличается от более профессиональных низкоуровневых языков программирования, таких как С или С++? Скорее всего, многие дата-специалисты или пользователи Python задавались этим вопросом или однажды задумаются об этом. Python и такие языки, как С++, во многом отличаются друг от друга. И в этой статья мы посмотрим, насколько С++ быстрее Python на очень простом примере.

    Я не стал брать выдуманное задание, а решил показать их различия на простой и практичной задаче. Заключается она в том, чтобы сгенерировать все возможные k-меры последовательности ДНК при указанном значении k (для тех, кто не знает, что такое k-мер ДНК, объясню простым языком в следующем разделе). Я выбрал этот пример, потому что многие задачи по обработке и анализу геномных данных (напр. генерация k-меры) требуют множество вычислительных работ. Именно поэтому многих специалистов по данным в биоинформатике привлекает С++ (в дополнение к Python).

    ВАЖНОЕ ПРИМЕЧАНИЕ: В этой статье не сравнивается С++ и Python в их самом эффективном использовании. Оба кода можно написать гораздо лучшем способом, применяя более продуманные подходы. Единственная цель статьи — сравнить два языка при использовании абсолютно одинаковых инструкций и одного алгоритма.

    Кратко о k-мер ДНК

    ДНК — это длинная цепь блоков, называемых нуклеотидами. В состав ДНК входит 4 типа нуклеотидов, которые обозначаются буквами A, C, G и T. Человек (а точнее Homo Sapiens) содержит 3 миллиарда нуклеотидных пар. Например, маленькая часть человеческого ДНК может выглядеть вот так:

    Если вы возьмёте из этой строки любую последовательность из 4 нуклеотидов (т.е. букв), то получите k-мер с длинною 4 (называемая 4-мер). Вот несколько примеров 4-мер, образованных из этой части ДНК.

    ACTA , CTAG , TAGG , AGGG , GGGA и т.д.

    Задача

    В этой статье мы сгенерируем все возможные 13-мер. С точки зрения математики, здесь нужно применить метод подстановки. Следовательно, получаем ⁴¹³ (=67,108,864) возможных 13-меров. Чтобы сгенерировать результаты в С++ и Python, я воспользуюсь простым алгоритмом. Посмотрим решения и сравним их.

    Сравнение решений

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

    def convert(c): 
    if (c == 'A'): return 'C'
    if (c == 'C'): return 'G'
    if (c == 'G'): return 'T'
    if (c == 'T'): return 'A'
    print("Start")opt = "ACGT"
    s = ""
    s_last = ""
    len_str = 13
    for i in range(len_str):
    s += opt[0]
    for i in range(len_str):
    s_last += opt[-1]
    pos = 0
    counter = 1
    while (s != s_last):
    counter += 1
    # Чтобы вывести все k-меры, уберите комментарий со следующей строки.
    # print(s)
    change_next = True
    for i in range(len_str):
    if (change_next):
    if (s[i] == opt[-1]):
    s = s[:i] + convert(s[i]) + s[i+1:]
    change_next = True
    else:
    s = s[:i] + convert(s[i]) + s[i+1:]
    break
    # Чтобы вывести все k-меры, уберите комментарий со следующей строки.
    # print(s)
    print("Number of generated k-mers: <>".format(counter))
    print("Finish!")

    Код на Python сгенерировал все 67 миллионов 13-меров за 61,23 секунд. Справедливости ради, я закомментировал строчки, которые выводили k-меры (строчки 25 и 37). Если же вы хотите видеть все k-меры во время генерации, уберите комментарий с этих двух строчек.

    Примечание. Для вывода всех k-мер потребуется много времени. При необходимости, воспользуйтесь CTRL+C для прекращения выполнения кода.

    Теперь посмотрим на тот же алгоритм в С++.

    #include 
    #include using namespace std;char convert(char c)
    if (c == 'A') return 'C';
    if (c == 'C') return 'G';
    if (c == 'G') return 'T';
    if (c == 'T') return 'A';
    return ' ';
    >
    int main()
    cout string opt = "ACGT";
    string s = "";
    string s_last = "";
    int len_str = 13;
    bool change_next;
    for (int i=0; i s += opt[0];
    >
    for (int i=0; i s_last += opt.back();
    >
    int pos = 0;
    int counter = 1;
    while (s != s_last)
    <
    counter ++;
    // Чтобы вывести все k-меры, уберите комментарий со следующей строки.
    // cout change_next = true;
    for (int i=0; i if (change_next)
    if (s[i] == opt.back())
    s[i] = convert(s[i]);
    change_next = true;
    > else s[i] = convert(s[i]);
    break;
    >
    >
    >
    >
    // Чтобы вывести все k-меры, уберите комментарий со следующей строки.
    // cout cout cout return 0;
    >

    После компиляции код сгенерировал все 67 миллионов 13-меров за 2,42 секунд. То есть, С++ выполняет один и тот же код в 25 раз быстрее, чем Python. Я повторил эксперимент с 14-мером и 15-мером (нужно изменить строчку 12 в Python и 22 в С++). Результаты приведены в Таблице 1.

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

    Ещё раз повторю, оба кода написаны самым простым способом (и возможно, самым неэффективным). В Python существует множество других подходов, улучшающих производительность кода, и вам стоит их опробовать.

    from itertools import product
    for i in product(['A', 'C', 'G'], repeat=10):
    print(''.join(i))

    Кроме того, в этом эксперименте не использовалось распараллеливание центрального (CPU) и графического (GPU) процессов, необходимое в подобных задачах (задачи чрезвычайной параллельности). Также мы почти не нагружали память. Если фиксировать результаты (для какой-либо цели), то процесс управления памяти приведёт к ещё большему “отрыву” между С++ и Python.

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

    • 4 совета по работе с потоками и мьютексами в C++
    • Распознаём 50 видов текста на C++ с Plywood
    • 9 Уровней применения функции zip в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *