Is Python a Scripting Language or a Full Development Language?
When considering the role of Python in the wider IT community, I'm sometimes reminded of how we thought of Java in the late 1990s. Back in those days, many people (including me) were a bit critical of Java and its (then) interpreted runtime behavior. Also, some critics more familiar with procedural languages were at odds with the object-oriented nature of Java and the associated issues of memory allocation, garbage collection, and so on. As time passed, the advantages of Java became widely appreciated, and it soon became—and remains—a mainstream language.
In some respects, Java has become a victim of its success, as numerous frameworks (such as Spring, Struts, and so on) have sprung up with Java as the core language. These frameworks aim to provide a de facto standard environment and to assist in enhancing the programmer's language productivity. Although the frameworks provide certain advantages, they may also present a barrier to entry for newcomers. I'm sure I'm not the only person who has struggled with getting a Spring-Struts project to build!
I've always tried to adopt a pragmatic approach to programming language use. If one language is better for a specific type of development, it makes sense to use that language. Back in the late 1990s, nobody would have considered using C++ for embedded system development! C was the dominant embedded language in those days. But times have changed, and C++ is now generally considered a good candidate language in embedded system development.
Why is Python suddenly so popular? I think one reason for the growth in interest and adoption of Python is its simplicity. You can get started developing in Python very quickly—much like the way Java used to be! Also, Python supports many development options, such as object relational mapping, multiprocessor support, front-end development, and so forth. But is Python a development language?
My own experience of Python suggests that it definitely can be used as a development language. Indeed, Python has been warmly embraced in a number of major industries. However, my preference would be to use Python as a means of tying together different languages. In other words, if you have legacy code, Python is an excellent vehicle for invoking that code in a fairly lightweight fashion. The latter is also a useful way of trying to preserve legacy investment in a more modern context.
So, though Python can be used as a full development language now, keep in mind that in a few years other new languages will be available. At that time, your Python code will be the legacy stuff, and you'll have the headache of protecting your Python and C++ investments! Lightweight integration with Python today might pay dividends tomorrow.