When developing new software applications, it’s crucial to choose the right tool for the job. At Spry, we have a variety of front-end and back-end languages in our toolkit, and we’re committed to matching our clients’ needs to the most effective language.
In this post, the first in a series on the developer tools that help us do what we do, we’ll take a closer look at the Python language. We’ll discuss what makes Python different from other programming languages, and why it suits our needs.
Where did Python come from?
The version of Python we use today is the third generation of the language, but it’s still shaped by the values that Guido van Rossum had in mind when he created Python in 1991. Van Rossum wanted a language that was intuitive without sacrificing power, that was open-source and fostered community, and that could cut down development times to address real-world problems.
The language that van Rossum (and the open-source community that formed around Python) created was a real departure from many of its peers. Python is an interpreted language, more like a conductor than a virtuoso. It connects and coordinates existing scripts to greater effect than they could have on their own. Python is able to do this part thanks to its focus on its software libraries.
What makes Python different?
While languages like C++ support a limited standard library that includes only those functionalities that would be generally useful to all programmers, Python’s standard library is much more extensive. Van Rossum calls this the “[batteries included] (https://docs.python.org/3/tutorial/stdlib.html#batteries-included)” approach, and it’s a good indicator of how much value Python and its community place on being able to link together different capabilities with ease.
This focus on libraries means that Python sacrifices some finesse when it comes to tweaking functionalities. Much as the conductor can’t step in during a performance to tighten a musician’s strings, a program scripted in Python is determined by the specific routines contained in its libraries. But this resilience to tinkering at the organizational level also makes Python a faster, more forgiving language for developing projects. It has fewer gears exposed, and so fewer opportunities to jam up.
Why do we use Python at Spry?
Python has some truly awesome traits that have given it a permanent home in our toolkit. First and foremost, we love the community that has grown up around it. There are other open-source languages with enthusiastic communities, but the Python community is exceptional. The Python Software Foundation, an organization dedicated to advancing Python as an open source language, lays out its values in a simple code of conduct: openness, consideration, and respect.
This is more than just a sentimental thing. When an open source community upholds its values, there are tangible benefits for the language and for everyone who uses it. We see the code of conduct reflected all the time in the Python community’s cooperative atmosphere. This makes for a smaller number of mature, well-developed libraries for specific applications, rather than a fractured field of competing ones. The interdependence that the community fosters encourages stability and long-term maintenance for libraries, and an emphasis on backward compatibility, giving software scripted with Python a longer expiration date.
For us at Spry Group, finding reliable software libraries for specific tasks like statistical analysis and data visualization is easier with Python. Its popularity as a research language gives us access to cutting-edge work by extremely bright people in the form of packages designed for data visualization or machine learning. Python’s robust libraries also give us a lot of options for developing web applications, allowing us to put these packages to work meeting our clients’ needs.
What’s the catch?
Despite its awesome animating spirit, built-in advantages, and strong community, Python can’t meet all our needs at The Spry Group. As mentioned above, sometimes Python’s position as a conductor makes it a bad fit for very precise tasks. Sometimes you really do have to go tighten the cello string yourself. Sometimes a library doesn’t exist for a specific function we need, or those that do exist don’t give us results we can use. Other languages can sometimes outperform Python when it comes to integrating multiple web services into a single interface.
”Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered.” - Guido van Rossum
Fortunately, Spry Group has a whole kit of programming languages at our disposal when developing projects for clients, which we’ll explore in more detail soon in future posts.