Wednesday, September 17th, 2014

Why Python?

Here is an interesting subject which I would love to bring up and share with everyone. This article is not meant to compare Python with any other language, and in fact I will not be mentioning any language in this article but Python. As Everyone reading this might know by now, Python is a very diverse language. It can be used for tasks such as web development to the development of a Geographical Information System, to even computational biology and bioinformatics. Python has a vast array of fully supported GUI and web frameworks. This makes it a snap to apply the Model-View-Controller programming methodology to an entire application's ecosystem of software. The same code that is used to generate data for a GTK or Windows-based GUI application can also be applied to displaying the same data in a web application on the Internet. It is absolutely astonishing on what Python is really capable of when it comes to full-stack development. A developer really only need to know Python, and then the possibilities of what she or he can do is limitless.

That is only the introduction to this article, and by now, regardless if you know or use Python or not, you should be at least somewhat impressed on it's capabilities. Python is so much more than a diverse language with limitless possibilities. Python is a vast community of developers from many backgrounds, ranging from computer science, to biology, to mathematicians, to even engineering. Python for many in the science community is the go-to language because of packages such as SciPy and Biopython.

Python is normally installed by default on most Linux distributions, if not all. Python is also pre-installed on Mac OS X, making it a very universal language in terms of install base. This makes it easy to share your programs with other developers and colleagues. Due to this type of default install base on these platforms, some of the operating system specific scripts are also made in Python, and thus there are more bindings to operating system specific services that work right out of the box. This makes Python ideal for system automation and a general shell scripting replacement.

If a developer knows Python, they are able to develop a wide array of applications, ranging from system automation, GUI applications, embedded development, web development, to even 3D modeling with Blender, all with a single language. This enables a developer to be extremely proficient in one language alone, as the developer doesn't need to worry about learning any additional languages to take on additional development tasks for their project. I personally distribute my Python knowledge throughout the Python ecosystem, I know how to build GUI applications, console application, system automation applications, network servers, and even web development. With Python, I am hardly limited to a single task, as just like Linux, Python is a general purpose. As with Linux, you aren't limited to just servers, you can deploy Linux on workstations, and embedded devices to even smartphones, as seen with Android. Knowing how to operate Linux in this day and age is starting to become critical due to the wide array of embedded devices and servers on the market today. Linux is only growing, and I believe it will play a vital role in the future of computing as we gravitate away from traditional PCs into the more mobile and embedded world. If Google and Apple have their way, PCs of the future will only be used for software development and PC gaming. I don't PC gaming dying, at least anytime soon.

Python in the future will have a similar role to that of Linux, it will be that universal language that every computer science major will know and understand. With the Raspberry Pi, and children learning Python at a young age because of it, Python will be everywhere in our next generation of offspring. When I was a kid, BASIC was all the rage, where every home computer manufacturer had to ship with BASIC in ROM or the unit wouldn't sell as good. Python is like the new BASIC. When I grew into my teens and early adulthood, guess what was one of the more popular and widespread development kits for desktop development? If you said VisualBasic, then you would be correct. VisualBasic was huge in the late 90s and early 2000s, it was everywhere in the media and lots of organizations used it for development of internal software tools. As a result, ASP/ASP.NET used VisualBasic at the primary language at first, and is still used in .NET programming today.

I believe Python is very critical for any developer to know and understand, or they will risk being left behind like FORTH and COBOL developers of the generation before BASIC. There are still some careers out there that require FORTH and COBOL, but for very old companies which have been around since the 70s and find it difficult to migrate away from their current solutions. If you understand how technology trends and have done research of how technology has trended since the 70s, it is difficult to not determine that Python is turning into the next hugely trending language and is only still growing. It is the language which our current offspring is learning that will be the next COBOL or BASIC in our technological world. Depending where some children grow up, you can also agree that Linux is also trending, especially in some European countries, and especially in communist countries where monopoly rule is banned. With the advent of Android, Ubuntu, Raspberry Pi, and the One-Laptop-per-Child project, children are seeing and using UNIX-like operating systems at a very young age. Also, the language shipped with the OLPC project is Python, with the entire Sugar desktop environment being made in Python. Another popular software product that teens and young adults are getting their hands on which uses Python is the Blender 3D modeling and animation software. One of my cousins has been learning Blender for her college degree as a 3D designer. In order to automate aspects of the 3D rendering software, and to enable game development, one can use Python. Python is literally everywhere, and in heavy use on popular software projects for the aspect of scripting and automation.

In conclusion, to why to use Python should be a simple answer for any developer now. It enables a single language and code-base to be used across multiple projects easily, and it might very well be the next big language of our technological future. It is always best to be ahead of the curve and to not be left behind.

Comment #1: Posted 2 years, 6 months ago by stf

See, Python as you put it is very useful and makes programming fun and entertaining. Now, for a langugae to be as general as you say, it needs to have some killer feature. COBOL was the only way to use big iron, Java had the JVM and J2EE which allowed big companies to structure themselves around it, JavaScript is king in browser land, Lisp/Haskell/Caml etc. are more confidential but have super powerful expressiveness. C is very good for system programming. Python has not much of a killer feature, except that it's extraordinarily battery-included. So you may count that as a feature. Unfortunately, python can hardly compete in the enterprise computing (which is, let's be honnest, the big part of the industry). The problem of a large python code base (say at least 200000 lines of code), is that it doesn't help the developper much.

* Lack of typing makes refactoring extremely tough if you work on a codebase you don't know (and no, large code base don't have 100% code coverage)).
* Lack of performance increases the need of performance-aware developpers (and the average developper is not). We know the GIL & the interpreter are often not much of a problem but that's only for a good enough developper who understands them.

Although I do use python professionally (and for actual application, not just some scripts here and there), I think it is useful only for small teams of good-enough developpers. Therefore, I'm under the impression that python will stay mostly a "small" language with a few exceptions (since with proper people, python is truly marvellous). stf

About Me

My Photo
Names Kevin, hugely into UNIX technologies, not just Linux. I've dabbled with the demons, played with the Sun, and now with the Penguins.




Kevin Veroneau Consulting Services
Do you require the services of a Django contractor? Do you need both a website and hosting services? Perhaps I can help.

This Month

If you like what you read, please consider donating to help with hosting costs, and to fund future books to review.

Python Powered | © 2012-2014 Kevin Veroneau