Tryo Labs опубликовали ежегодный обзор "Top Python Libraries 2022". Обзор несколько субъективный и смещен в сторону анализа данных/машинного обучения, но все равно но его интересно посомтреть с точки зрения " какие из этих библиотек я знаю/пробовал?". Мне было интересно пробежаться по предыдущим выпуска - самый ранний вышел в 2015 году. https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022
Tryolabs
Top Python libraries of 2022
There are so many amazing Python libraries and tools out every year that it's hard to keep track of them all. That's why we share with you our hand-picked selection of our best picks.
👍12🔥6
Послезавтра, 19 января в 14:00 МСК будем в прямом эфире записывать очередной Moscow Python Podcast.
В гости к нам придет Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудим опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Ссылка https://www.youtube.com/watch?v=1mpHfaxy104
В гости к нам придет Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудим опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Ссылка https://www.youtube.com/watch?v=1mpHfaxy104
YouTube
Куда расти разработчику: взгляд из-за рубежа
В гостях у Moscow Python Podcast Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудили опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
00:00 - разница…
00:00 - разница…
🔥13👍5
В качестве пятничного чтения рекомендую большую статью про состояние и перспективы менеджмента пакетов в Питоне. На мой взгляд это одно из самых проблемных мест в экосистеме языка. Есть много инструментов, у каждого из которых свой подход. Нет единого лидера - судя по опросам, top3 самых популярных менеджера, одинаково популярны. Проблемы со стандартизацией - тот же PEP 582 уже несколько лет как завис в непонятном состоянии.
В статье довольно много личного авторского отношения и статья довольно длинная. Но если вы интересуетесь тем, что происходит в экосистеме это прямо must read https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
В статье довольно много личного авторского отношения и статья довольно длинная. Но если вы интересуетесь тем, что происходит в экосистеме это прямо must read https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
Chris Warrick
How to improve Python packaging, or why fourteen tools are at least tw
A journey to the world of Python packaging, a visit to the competition, a hopeful look at the future, and highlights from a disappointing discussion.
👍15🔥2
Я довольно мало работаю с данными, но, когда возникает задача, привычно беру pandas. Про polars, конечно, слышал но никогда его не использовал. Сегодня наткнулся на подробное сравнение синтаксиса этих библиотек, и мне прямо очень понравился синтаксис выборок в полярсе. В следующий раз, когда надо будет покрутить набор данных, я попробую взять для этого polars - https://kevinheavey.github.io/modern-polars/
Modern Polars
A side-by-side comparison of the Polars and Pandas libraries.
👍16🔥1
Если вы еще не смотрели проект
А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/
msgspec
(https://jcristharif.com/msgspec/index.html) - очень рекомендую взглянуть. Это сериализатор для json/msgpack
, у него удобный синтаксис, похожий на pydantic
и по тестам скорости сериализации/десериализации он обгоняет orjson
. В общем, быстрая и удобная штука.А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/
Reddit
From the Python community on Reddit
Explore this post and more from the Python community
👍19
Послезавтра, 27 января в 13:15 по Москве проведем прямую трансляцию очередного Moscow Python Podcast. В гости придет Иван Самсонов, продакт-менеджер в прикладных исследованиях ИИ во ВКонтакте.
Обсудим:
• философию работы в команде;
• можно ли научить бизнес ставить ML задачи;
• тренды прикладного ИИ;
• исследования и продуктовую разработку в ML;
• этичность применения технологий;
• настала ли эра ИИ.
В ходе трансляции будем отвечать на вопросы и комментарии с Ютуба в прямом эфире. Присоединяйтесь https://youtu.be/K8gDQykx25Q
Обсудим:
• философию работы в команде;
• можно ли научить бизнес ставить ML задачи;
• тренды прикладного ИИ;
• исследования и продуктовую разработку в ML;
• этичность применения технологий;
• настала ли эра ИИ.
В ходе трансляции будем отвечать на вопросы и комментарии с Ютуба в прямом эфире. Присоединяйтесь https://youtu.be/K8gDQykx25Q
🔥5👍4
Вышел релиз SQLAlchemy 2.0, получается довольно интересно:
- Полная поддержка типов: ORM-модели теперь можно делать полностью типизированные, результаты запросов тоже типизированы
- Теперь ORM-модели можно объявлять как MappedAsDataclass и в этом случае на выходе получатся полноценные датаклассы
- Для массовых добавлений/изменений вместо bulk_* методов теперь можно использовать insert-ы и update-ы, которые стали достаточно умными, чтобы делать это одним запросом и поддерживать .returning()
- C-расширения переписали на Cython и обещают повышение их производительности
- Поддержка нового psycopg3 (aka "просто psycopg")
Резюмируя - очень здорово, что в довольно "олдскульный" SQLAlchemy затащили поддержку всяких современных фич языка. Будет интересно попробовать это все.
Статья про изменения в 2.0 https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html
QuickStart, в котором показан новый подход к объявлению моделей https://docs.sqlalchemy.org/en/20/orm/quickstart.html
- Полная поддержка типов: ORM-модели теперь можно делать полностью типизированные, результаты запросов тоже типизированы
- Теперь ORM-модели можно объявлять как MappedAsDataclass и в этом случае на выходе получатся полноценные датаклассы
- Для массовых добавлений/изменений вместо bulk_* методов теперь можно использовать insert-ы и update-ы, которые стали достаточно умными, чтобы делать это одним запросом и поддерживать .returning()
- C-расширения переписали на Cython и обещают повышение их производительности
- Поддержка нового psycopg3 (aka "просто psycopg")
Резюмируя - очень здорово, что в довольно "олдскульный" SQLAlchemy затащили поддержку всяких современных фич языка. Будет интересно попробовать это все.
Статья про изменения в 2.0 https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html
QuickStart, в котором показан новый подход к объявлению моделей https://docs.sqlalchemy.org/en/20/orm/quickstart.html
🔥26👍14
YAML
в последние годы набрал огромную популярность, но наверное самая большая проблема с ним в том, что он выглядит просто, но на самом деле формат очень замороченный. Спецификация состоит из 10-и глав https://yaml.org/spec/1.2.2/. Честно признаюсь - я не осилил прочитать ее полностью, думаю, как и большинство людей, активно использующих yaml
.И вот тут мы подходим к теме сегодняшней статьи. Из-за того, что формат сложный, но с ним пытаются работать как с простым, есть много неочевидных способов поломать
yaml-документ. Например, ключи словаря в `yaml
` могут быть любого типа, не только строками. Если это совместить с тем, что yaml
считает, что on
— это True
, а off
— это False
, то вот этот пример из Quickstart-а Github Actions:
on: [push]
будет прочитан как:
True: ['push']
Интересно, в Github Actions свой, пропатченый парсер или они
on
и True
в ключах считают одним и тем же?В общем вот хорошая статья, в которой разбирается этот и многие другие неочевидные ловушки формата. Очень рекомендую всем, кто сталкивается с необходимостью писать/править YAML https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
Ruudvanasseldonk
The yaml document from hell
As a data format, yaml is extremely complicated and it has many footguns. In this post I explain some of those pitfalls by means of an example, and I suggest a few simpler and safer yaml alternatives.
👍22
Кстати, в эту пятницу в 14:00 МСК будет новый стрим python-подкаста. В этот раз мы пробуем новый формат, вместе с Ильей Лебедевым обсудим, что интересного произошло в python-экосистеме за месяц. В темах:
- что интересного происходит в разработке веб-фреймворков
- обсудим выход SQLAlchemy 2.0
- свежие PEP и особенно возможность собирать python без GIL (и другие новые pep-ы)
и другие новости, связанные с python. Приходите на стрим на ютуб и задавайте вопросы в комментариях! https://www.youtube.com/live/wZ8PMWtRCe4?feature=share
- что интересного происходит в разработке веб-фреймворков
- обсудим выход SQLAlchemy 2.0
- свежие PEP и особенно возможность собирать python без GIL (и другие новые pep-ы)
и другие новости, связанные с python. Приходите на стрим на ютуб и задавайте вопросы в комментариях! https://www.youtube.com/live/wZ8PMWtRCe4?feature=share
YouTube
Выход SQLAlchemy 2.0 / сборка Python без GIL / топ Python библиотек 2022 и другие новости Python
0:00 - интро
1:03 - фреймворк Robin c Rust-рантаймом и его связь с искусством
6:31 - PEP 703 или Python без GIL
10:43 - запуск SQLAlchemy 2.0 или алхимия для дедов
13:48 - ответ на вопрос, перспективно ли учить FastAPI или углубляться в Django
14:00 - ответ…
1:03 - фреймворк Robin c Rust-рантаймом и его связь с искусством
6:31 - PEP 703 или Python без GIL
10:43 - запуск SQLAlchemy 2.0 или алхимия для дедов
13:48 - ответ на вопрос, перспективно ли учить FastAPI или углубляться в Django
14:00 - ответ…
🔥16👍4
Еще одна интересная статья из серии "как все устроено под капотом". В общем случае отдавать файлы с помощью питоновских фреймоврков идея не очень хорошая - это будет не очень производительно, гораздо лучше файлы раздавать с какого-нибудь S3-хранилища, использовать CDN или хотя-бы Nginx (или аналог). Тем не менее, иногда это нужно и оправданно.
И дальше идет интересное, оказывается
А вот aiohttp поступает умнее - он использует
В общем, если вы генерируете и отдаете в браузер файлы питоном и делаете это часто - посмотрите, как это реализовано в используемом вами фреймворке, возможно вы сможете сэкономить ресурсы. Оригинальная статья https://medium.com/@alsadi/secret-sauce-is-zero-copy-single-context-switching-b749bd614dca
И дальше идет интересное, оказывается
FastAPI
(а точнее Starlette
на которой он основан) читает файл чанками(кусочками) и отдает браузеру. И чтение файла по кусочку в цикле - очевидно не самая эффективная операция.А вот aiohttp поступает умнее - он использует
loop.sendfile
, который в свою очередь использует os.sendfile()
который использует доступную на Linux и MacOS функцию ядра sendfile()
, которая позволяет отправить файл в сокет максимально эффективно. И судя по тестам вариант с sendfile
в 7 раз быстрее.В общем, если вы генерируете и отдаете в браузер файлы питоном и делаете это часто - посмотрите, как это реализовано в используемом вами фреймворке, возможно вы сможете сэкономить ресурсы. Оригинальная статья https://medium.com/@alsadi/secret-sauce-is-zero-copy-single-context-switching-b749bd614dca
GitHub
starlette/starlette/responses.py at ea70fd57b286824350da88c6d484c32bdf31627a · encode/starlette
The little ASGI framework that shines. 🌟. Contribute to encode/starlette development by creating an account on GitHub.
🔥28👍11
Вышел MyPy 1.0.0, из интересных изменений:
- На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя
- Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно
- Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions)
- Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612
И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂
Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html
- На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя
- Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно
- Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions)
- Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612
И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂
Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html
Python Enhancement Proposals (PEPs)
PEP 612 – Parameter Specification Variables | peps.python.org
There currently are two ways to specify the type of a callable, the Callable[[int, str], bool] syntax defined in PEP 484, and callback protocols from PEP 544. Neither of these support forwarding the parameter types of one callable over to another calla...
👍18🔥5
10 февраля в 14:00 МСК на очередном эфире будем обсуждать: Что нового в Python 3.12 с Никитой Соболевым, CTO wemake.services.
Обсудим:
• обновленную реализацию виртуальной машины;
• новые typing PEPs;
• Unstable C-API tier;
• начало большой чистки stdlib;
• C-API Watchers.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
Обсудим:
• обновленную реализацию виртуальной машины;
• новые typing PEPs;
• Unstable C-API tier;
• начало большой чистки stdlib;
• C-API Watchers.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
YouTube
Новинки в Python 3.12 / Опять переписали виртуальную машину / Большая чистка stdlib
В гостях у Moscow Python Podcast Никита Соболев, CTO wemake.services. Обсудили обновления в Python 3.12.
00:00 - интро
1:18 - «в Python уже все есть, но все время хочется что-то сделать»
3:35 - переписали виртуальную машину на DSL
10:20 - Гриша делится…
00:00 - интро
1:18 - «в Python уже все есть, но все время хочется что-то сделать»
3:35 - переписали виртуальную машину на DSL
10:20 - Гриша делится…
🔥16👍10
32 года назад, 20 февраля 1991 года Гвидо запостил в мейллист alt.sources исходники питона 0.9.1 - это считается первым релизом языка:
Если интересно, можно посмотреть ветку сообщений с исходниками тут (да, исходники просто текстом в 21 письме) - https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html
This is Python, an extensible interpreted programming language that combines remarkable power with very clear syntax.
Если интересно, можно посмотреть ветку сообщений с исходниками тут (да, исходники просто текстом в 21 письме) - https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html
🔥30👍6
Завтра, 23 февраля в 14:00 будет очередной прямой эфир Moscow Python Podcast. Будем обсуждать Copilot - какая от него польза и вред, лайфхаки по использованию и какие есть аналоги.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть https://www.youtube.com/live/lKnMBGqguRo?feature=share
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть https://www.youtube.com/live/lKnMBGqguRo?feature=share
YouTube
Copilot для Python-разработчика. Почему AI не изменил разработку?
В гостях у Moscow Python Podcast Арсений Сапелкин, тимлид, KasperskyOS и Никита Соболев, CTO wemake.services. Обсудим лайфхаки по использованию Copilot, почему вся разработка еще не автоматизирована, пользу инструмента для разработчиков и опасности Copilot…
👍10🔥2
Phylum обнаружили, что в pypi залита большая пачка (1 138 штук!) пакетов с малварью внутри. Выглядит так, что атака направлена на windows-машины, но это не тайпсквотинг (когда название пакета с малварью похоже на название популярного пакета). Сами пакеты с pypi выпилили очень оперативно. Вот тут можно почитать подробности - https://blog.phylum.io/phylum-discovers-another-attack-on-pypi
Это уже третий раз в этом месяце, когда на pypi выкладывают пакеты "с подвохом", поэтому на всякий случай напомню правила:
1. Прежде чем ставить пакет, зайдите на его страницу на pypi и убедитесь, что вы ставите именно тот пакет, который планируете. Сравните название с названием в официальном репозитории/документации — это поможет не попасть на "тайпсквоттинг"-пакеты
2. Пиньте зависимости — это может уберечь в ситуации, если злоумышленник каким-то образом сможет пропихнуть опасный код в релиз используемого вами пакета
3. Лично я предпочитаю пинить хеши пакетов, в этом случае если кто-то сумеет подменить пакет, то образ в ci просто не соберётся и я об этом узнаю
Ссылки на предыдущие атаки на pypi: раз и два
Это уже третий раз в этом месяце, когда на pypi выкладывают пакеты "с подвохом", поэтому на всякий случай напомню правила:
1. Прежде чем ставить пакет, зайдите на его страницу на pypi и убедитесь, что вы ставите именно тот пакет, который планируете. Сравните название с названием в официальном репозитории/документации — это поможет не попасть на "тайпсквоттинг"-пакеты
2. Пиньте зависимости — это может уберечь в ситуации, если злоумышленник каким-то образом сможет пропихнуть опасный код в релиз используемого вами пакета
3. Лично я предпочитаю пинить хеши пакетов, в этом случае если кто-то сумеет подменить пакет, то образ в ci просто не соберётся и я об этом узнаю
Ссылки на предыдущие атаки на pypi: раз и два
Phylum Research | Software Supply Chain Security
Phylum Discovers Aggressive Attack on PyPI Attempting to Deliver Rust Executable
Phylum discovers ~6,000 malicious packages published to PyPI shipping Rust stage 1 executables in ongoing malware campaign.
👍22
Вышел большой отчет про то, как python используется в блокчейн-разработке. И выглядит так, что таки используется. Из интересного, оказывается есть целая конференция PyChain и доклады выложены на ютубе - может быть интересно тем, кто интересуется темой.
В остальном, отчет просто перечисляет популярные библиотеки/тулы/sdk на питоне, связанные с блокчейном. Предсказывают, что в этом году разработка начнет больше уходить от доминирования Etherium/bitcoin и python-а в блокчейн-разработке станет больше Я от этой тематики далек, но посмотреть было интересно.
Ссылка на отчет https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023
В остальном, отчет просто перечисляет популярные библиотеки/тулы/sdk на питоне, связанные с блокчейном. Предсказывают, что в этом году разработка начнет больше уходить от доминирования Etherium/bitcoin и python-а в блокчейн-разработке станет больше Я от этой тематики далек, но посмотреть было интересно.
Ссылка на отчет https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023
Trading Strategy
The state of Python in blockchain - 2023 report
An overview of Python programming language technologies in blockchain software development ecosystems in 2023.
🔥10👍4
Хороший пост про проблему, про которую довольно легко забыть. Если делать просто
В документации это поведение отражено только с 3.9, хотя сама функция появилась в 3.7. Сейчас даже в примере хорошо показали "как правильно", тем не менее думаю многие и не помнят про такое поведение (я вот не помнил). Вот тут расписано подробнее https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/
asyncio.create_task()
не сохраняя ссылку на результат в переменную, то сборщик мусора может прибить задачу до того, как она будет исполнена и получится очень сложно отлавливаемый баг.В документации это поведение отражено только с 3.9, хотя сама функция появилась в 3.7. Сейчас даже в примере хорошо показали "как правильно", тем не менее думаю многие и не помнят про такое поведение (я вот не помнил). Вот тут расписано подробнее https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/
Textual Documentation
Textual - The Heisenbug lurking in your async code
Textual is a TUI framework for Python, inspired by modern web development.
👍18🔥8
Привет, приближается первая пятница месяца, а значит 3 марта в 14:00 по Москве мы снова соберемся онлайн, чтобы обсудить новости python за февраль. В этом выпуске:
• 32 года Python;
• три больших атаки на pypi за месяц, и что с этим собираются делать?;
• три главных тренда 2023 в Python;
• вышел отчет по Python в блокчейне, оказывается python там тоже используют;
• вышел mypy 1.0;
и другие новости.
В ходе трансляции Moscow Python Podcast будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке https://www.youtube.com/watch?v=36APuXAnSoo
• 32 года Python;
• три больших атаки на pypi за месяц, и что с этим собираются делать?;
• три главных тренда 2023 в Python;
• вышел отчет по Python в блокчейне, оказывается python там тоже используют;
• вышел mypy 1.0;
и другие новости.
В ходе трансляции Moscow Python Podcast будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке https://www.youtube.com/watch?v=36APuXAnSoo
YouTube
Python-тренды в 2023 году, атаки на PyPI и релиз Mypy 1.0
00:00 - интро
1:32 - про день рождения Python и самые интересные вехи в языке за 32 года
13:00 - Phylum отловили три атаки на PyPI
15:05 - ответ на вопрос про перспективы FastAPI и Django
22:00 - про безопасность разработки
27:00 - ответ на вопрос про…
1:32 - про день рождения Python и самые интересные вехи в языке за 32 года
13:00 - Phylum отловили три атаки на PyPI
15:05 - ответ на вопрос про перспективы FastAPI и Django
22:00 - про безопасность разработки
27:00 - ответ на вопрос про…
🔥10👍4
Короткая статья с примером того, как с помощью nox и pyenv гонять тесты на разных версиях питона. Полезно, если вы пишете, к примеру, библиотеку.
Последнее время часто вижу, что люди переходят с
https://sethmlarson.dev/nox-pyenv-all-python-versions
Последнее время часто вижу, что люди переходят с
tox
на nox
, в основном потому что его удобнее конфигурировать.https://sethmlarson.dev/nox-pyenv-all-python-versions
GitHub
GitHub - pyenv/pyenv: Simple Python version management
Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.
👍11🔥1
Наткнулся на редите на пост об игре Software Engineering Simulator. Идея проста - пишем код на питоне, чтобы управлять различными механизмами и проходить уровни. Графика, прямо скажем, не некстген, но выглядит любопытно, пока у подобные игрушки/тренажеры я только с мультяшной графикой видел. Добавил себе в вишлист - посмотрю на релизе и возможно куплю ребенку, надеюсь его больше чем Codecombat заинтересует https://store.steampowered.com/app/2216770/JOY_OF_PROGRAMMING__Software_Engineering_Simulator/
Steampowered
Save 30% on JOY OF PROGRAMMING - Software Engineering Simulator on Steam
Use real Python code to automate machines, robots, drones and more: Program self-driving vehicles; crack passwords; apply machine learning; automate logistics; use image processing to guide missiles. Gain real coding skills and solve exciting bite-sized programming…
👍10🔥4