2. "Rust challenging python in AI/ML" (Part 2)
The ongoing debate between Rust and Python has garnered significant attention lately. While both of these languages can be used for general-purpose programming, one is better than the other in certain scenarios and niches.
Understanding the unique features and architectural differences between Rust and Python is crucial in determining the optimal choice for your project. Delving into this Rust vs Python article will equip you with the insights necessary for making informed decisions.
Why Python?
When delving deep into machine learning (ML) development workflows, it's evident that model training typically follows an explorative path. You have a set of data, you slice and dice it to get a better understanding, trying different approaches along the way to solve the particular problem you have set your eyes on (identifying kitties in Google Street View pictures? Weather forecasting? Crop yield optimisation? You name it!).
Given the iterative nature of ML development and the necessity for fast prototyping, a dynamic programming language like Python shines. This is especially true considering that many ML practitioners hail from backgrounds in statistics, mathematics, or physics, often lacking formal training in software engineering.
While Python supports both functional and object-oriented patterns, you can hit the ground running with its scripting capabilities using and imperative style. The barrier of entry is quite low and Python grows with you as your experience and mastery deepens.
Ease of use alone will not take you far though: training ML models requires a fair amount of heavy number crunching and Python is definitely not the fastest language out there.
This is where essential libraries like NumPy
, SciPy
, Pandas
, and Scikit-learn
come into play.
These libraries, founded on a powerful core of C and C++ routines, provide the
computational muscle necessary for efficient data processing and model training.
Nonetheless, if you look behind the surface, there is not that much Python in there: you are using Python to orchestrate and leverage
a powerful core of C and C++ routines.
In essence, Python serves as the frontend, providing a user-friendly interface for orchestrating ML workflows, while C and C++ form the backend, executing the heavy lifting behind the scenes. Together, they form a formidable combination that powers the advancement of machine learning and scientific computing.
Python's often overlooked feature is its easy interoperability using its Foreign Function Interface (FFI). In particular, Python libraries can delegate to C and C++. This is crucial for intensive number crunching tasks, utilized by foundational libraries in Python's scientific ecosystem. Additionally, Python was an opensource project (hiMATLAB!), its penetration level in academic institutions was non-negligible as well as the fact that most of its scientific ecosystem was already established when Deep Learning conquered the spotlight. In hindsight, it is not surprising to see Python as a strong candidate in the ML space, which it eventually dominated.
Is Python Still the Top Pick for Tomorrow?
We've touched upon some key attributes that have solidified Python's status as the top choice for Machine Learning development.
Shifts in trends and advancements in technology can reshape perceptions of the most suitable tools for the task at hand.
Some of the latest trends have, if possible, strengthened Python's position in the space.
So? Wasn’t a Rust article series?
Absolutely! It's important to clear up any confusion before we start. I don't think Rust will replace Python for machine learning. They're just not the same and they're good at solving different problems. They target different audiences and are optimized for addressing distinct problems within different limitations.
But yes, Rust has a part to play in the Machine Learning world. It could become more popular than C and C++ for running the behind-the-scenes parts of Python's machine learning.
To be continued…..