Замініть мову C! Багато розробників на Python приєднуються до команди Rust.

В майбутньому все більше бібліотек використовуватимуть Python як фронтенд (для покращення ефективності програмування) і Rust як бекенд (для покращення продуктивності).

python

Rust замінює C як “бекенд” для високопродуктивних Python бібліотек. В чому причина цього?

Спочатку давайте розглянемо мотивацію. Python легко писати, але він має проблему з повільною швидкістю виконання. Я особисто не можу писати бібліотеки для обробки даних, оскільки Python дуже повільний, і складно писати високопродуктивні бібліотеки на чистому Python. Однак Python є основною мовою для машинного навчання та обробки даних. Тому, коли ви намагаєтеся написати бібліотеку для інженерів з обробки даних або машинного навчання, ви стикаєтесь з наступними проблемами:

Хоча ми маємо писати API на Python, високопродуктивні завдання з обробки даних не можуть бути виконані тільки на Python.
Це означає, що у вас є наступні варіанти для написання бібліотеки:

Або ви вивчаєте і використовуєте C, або хтось інший вивчає C, пише бібліотеку, і ви покладаєтесь на цю бібліотеку для виконання низькорівневих операцій.
Той, хто знайомий з мовою C, може запитати: "Чи є в цьому щось неправильне? Багато авторів бібліотек можуть передавати свої числові обчислення до NumPy або SciPy. Ви можете подумати: “Я можу вивчити це.”

Однак ситуація не така ідеальна. Зручно передавати деякі завдання до бібліотек, таких як NumPy, SciPy тощо, але це вимагає, щоб усі функції були векторизовані, і ви не можете писати код в циклі for. Також потрібно переживати про те, що деякі операції блокуються через Global Interpreter Lock (GIL), і є інші проблеми. Не все, що ви хочете зробити, можна легко знайти в бібліотеці, яка вже існує.

Тому є інший метод. Що якщо написати бібліотеку з нуля на C і додати зв'язки з Python пізніше? Однак, якщо у вас є досвід роботи з Python, написання низькорівневого коду на C здається дуже примітивним, і навчання мови займає зусилля. Null pointer dereferences, buffer overflows, memory leaks… це пастки, з якими ви можете зіткнутися при використанні мови C, і вони незнайомі програмістам, які вперше вивчають Python.

Як було б чудово, якби існувала мова, яка була б такою ж швидкою і ефективною за використанням пам'яті, як C, але не вимагала б ручного управління пам'яттю або збору сміття? Було б добре, якби мова мала хорошу підтримку інструментів для Python та постійно зростаючу спільноту розробників.

pic

Rust

Rust швидкий і має ефективне управління пам'яттю. Тому паралельне і конкурентне програмування стає легшим. Rust має чудові інструменти, дружній компілятор і велику активну спільноту розробників. Rust робить ваші програми швидшими і дозволяє вам знаходити більше друзів під час навчання.

Найголовніше, що Rust легший для вивчення, ніж C для програмістів на Python.

Це покращує досвід на “першому рівні” і полегшує початківцям написання “безпечного” коду. Крива навчання є більш плавною, що дозволяє вам поступово опановувати більш складні функції мови з часом.

Саме тому останні кілька років все більше високопродуктивних бібліотек вибирають Python як фронтенд і Rust як бекенд. Приклад:

Lance: Високопродуктивна, економічна векторна база даних.
Засновники Чанг Ше та Лей Сю спочатку написали бібліотеки на C++, але вирішили перейти на Rust, коли більше не було потреби працювати з CMake. Ось чому Чанг прийняв це рішення.

“Рішення перейти з C++ на Rust було прийнято через те, що я міг працювати більш ефективно, не втрачаючи продуктивності, і не треба було мати справу з CMake. Я фактично почав вивчати Rust з нуля, і поки я його вивчав, Лей та я переписали близько 4 місяців коду з C++ на Rust, і кожного разу, коли ми пишемо і випускаємо нову функцію на Rust, ми стаємо все більш впевненими, що не отримаємо сегфолт кожного разу, коли запускаємо будь-яку команду.”
"Я більше не маю переживати, що це станеться."

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

Pydantic: Бібліотека верифікації Python для розробників.
Команда Pydantic переписала другу версію на Rust і досягла покращення продуктивності в 20 разів навіть для простих моделей. Окрім покращення продуктивності, Rust має кілька інших переваг. Засновник Pydantic, Семюел Колвін, наводить кілька переваг.

"Ще одна річ, яка стосується Rust, це те, що, крім швидкості, код, написаний на Rust, зазвичай легший для використання і підтримки. Зокрема, Rust вловлює і обробляє всі можливі помилки, в той час як система типів Python (і TypeScript) часто ігнорує ці помилки, тому я не знаю, які виключення можуть виникнути в яких ситуаціях при виклику ‘foobar()’. Я не маю жодного уявлення. В основному, мені доводиться пробувати по черзі, щоб знайти можливі помилки."

Комбінування Python і Rust

У майбутньому все більше бібліотек використовуватимуть Python як фронтенд, а Rust як бекенд. В цілому, розробники Python сьогодні мають кращий і плавніший підхід до створення високопродуктивних бібліотек.

Перекладено з: Replace C language! Many Python developers are joining the Rust team

Leave a Reply

Your email address will not be published. Required fields are marked *