Enterprise Grade Performance

Python is a general purpose, powerful object-oriented programming language. Favored by large, multi-national and successful organizations such as Google, NASA, Honeywell and Rackspace, it is suited for developing, maintaining and scaling Enterprise Class Applications.

Python is one of those intriguing anomalies of software development: a language that’s often viewed as strictly a “glue” scripting language despite the fact that it’s clearly powerful enough for industrial-strength software development. Python, which is older than Java, has developed quite a following among a small-but-growing cadre of self-described Pythonistas.While Python is often evaluated against Perl as a scripting language particularly suited to Internet applications, it’s building a buzz in the large-scale software development space. It can be characterized as:

  • Object-oriented
  • Interpreted
  • Interactive
  • Modular
  • Dynamic
  • High-level
  • Portable
  • Extensible in C and C++

Python incorporates modules, exceptions, dynamic typing, very high-level dynamic data types, and classes. It has interfaces to many system calls and libraries, as well as to various Windows-based systems.If Python has failed to penetrate any specific arena of computing, it’s in enterprise development shops, where Python is still viewed as just an alternative scripting language to Perl. This article provides a brief assessment of why Python may or may not work in the construction of enterprise-scale applications.

Why Python?

Some of Python’s features that make it a reasonable candidate for use in enterprise applications are:

  • Free availability (like Perl, Python is open source).
  • Stability (Python is in release 2.6 at this point and, as we noted earlier, is older than Java).
  • Good support for objects, modules, and other reusability mechanisms.
  • Easy integration with and extensibility using C and Java.

While these capabilities represent common arguments for using Python in the enterprise, there are some other sound reasons that receive less attention.

Cost Savings in Development and Maintenance

It's no secret that IT shops have more work to be done and fewer resources with which to do it. Any IT solution that promises to increase coder productivity and reduce the ongoing total cost of ownership of software merits careful consideration. Python makes a strong argument that it can save the enterprise money both in the software creation and the maintenance stage, where software spends 50 percent to 95 percent of its life cycle.  Python's clean, readable syntax makes code eminently readable, even by programmers other than those who worked on the original project. While some programmers object to the significant use of white space in Python code, almost everyone who sees Python code agrees that it’s far more readable than C or Java, which use special characters to mark the beginning and end of block structures, loops, functions, and other programming constructs. Python advocates say that the use of such characters can lead to noticeable style differences that make code less readable by those who must maintain it.Its clarity of syntax makes Python an approachable language with a relatively shallow learning curve.

An experienced programmer can probably pick up the basics of Python in a day, be productive in a week or less, and be relatively expert in the language many times faster than she could achieve equivalent fluency in C, C++, Java, or even Perl.Perhaps the most dramatic gains Python derives from its clean syntax come in greatly reduced development times. One developer of enterprise-class applications told me that the development time his shop saves with Python far offsets any software performance downside. “For our business, it's still more important to develop new products quickly than it is to develop products with screaming performance,” the developer said, “and developer time is by far more expensive (in value per hour) than putting hardware into the cage.”

While it’s always difficult to pin down specifics benchmarks on developer speed, there seems to be widespread agreement that developing Python applications is about five to 10 times faster than developing the same application in Java. Time savings are even greater when compared to C/C++.

Python in the Enterprise

Many large organizations have standardized their development on one of the two main "enterprise" platforms, Java or .Net, believing that doing so will improve interoperability and lower maintenance costs. Although Python does not quite operate with the same ubiquity or scale, it is a very useful complement, and Python is a solid alternative when such platforms are inappropriate.

The traditional enterprise platforms are by necessity large and complex. They depend on elaborate tools to manage code, builds and deployments. For many purposes, this is overkill. Any programmer should be able to reach for her favorite language when inspiration hits her, and Python's immediacy makes it well suited for simple automation tasks and quick prototyping. Developers usually also feel that Python gives them the headroom to move beyond a prototype without throwing away their previous work.

Indeed, Python can be used for large and complex software systems. YouTube, for instance, runs mainly on Python, and it is an oft-preferred language at organizations including Google, NASA and Industrial Light and Magic. Specialized Python libraries and frameworks exist for scientific programming, data manipulation, Web services, XML interchange and many other things.

The main disadvantage of using Python in an enterprise setting is that Python programmers can be harder to find than, say, Java developers. Python is easy to pick up for an experienced programmer, but the plethora of books, training courses and certifications in the Java world cannot be matched by Python.

Furthermore, the power and expressivity that Python offers means that it may require more skilled developers. Java or C# are more restrictive by design, forcing programmers to adhere to stricter rules around type safety and interface compliance. For some, that hinders productivity. For others, it reduces mistakes or accidents of design.

Finally, application integration concerns may dictate a certain language or platform. However, in today's service-oriented, heterogeneous systems landscape, it is entirely possible to—for example—write a Web service in Python that plugs into a Java service bus and is ultimately consumed by a Visual Basic program.

When to Consider Python?

As CTOs or Project Executives, we should consider Python when the project requires:

  • general-purpose, proven and reliable scripting language that comes with a rich standard library (in this aspect, Python is often more reliable compared to PHP, for example)
  • a language which is applicable across a range of programming tasks, from shell scripting to desktop applications to enterprise grade web applications.
  • Python's agile-oriented philosophies and its clean maintainable syntax
  • a fun and productive environment! (who would ever want to work on a painful, spaghetti code project?)

Python may not be an appropriate choice if the project:

  • involves building embedded or massively parallel systems for which a scripting language would be an inappropriate choice (due to concerns about execution speed)
  • involves building desktop-based applications, particularly for windows.  An exception to this rule is the use of IronPython on .NET framework, since .NET offers sophisticated tools and easier distribution of software builds
  • relies on teams of less experienced programmers.  Junior programmers often benefit from the wider availability of training for languages such as Java - and being subject to rigid compile-time, type-checked languages - they will be less likely to make costly mistakes.

Learn more about Python for your Enterprise?

Tell us about your organisation use case and we will be glad to get back to you.

Page generated in: 0.09s