[12]                            home                           [15]

 

 

 

 Message from Michael McLay: 12/13/2003 7:11 PM

 

 

Clearly there are many choices, Ruby, Perl, Tcl and other dynamic languages, but the following email gives some indication of why I think these higher-level languages are an important component in the architecture of systems in the future.

 

Languages must co-exist and Python does a very good job of bridging the objects found in Java, C++, .Net, Objective-C, FORTRAN, XML, etc. It's been used as a unifying wrapping language with tools like SWIG and SIP doing much of the heavy lifting.

 

Python isn't a perfect language, but it has a long history of improving over time. Andrew Kuchling's paper on the warts of Python is a good window into how the Python community goes about fixing problems.

 

I'll send references to some additional papers tomorrow.

 

Here is a email that covers some of the thoughts I have on how we need to rethink how software is developed for the FEA.

 

Basically I'm advocating the use of Agile Programming instead of the traditional prime contractor controlled methodology used by most government agencies.

 

 

 

---------- Forwarded Message ----------

 

Subject: Tim Berners-Lee's Semantic Web Application Platform - SWAP Date: Thursday 11 December 2003 01:22 pm

 

I mentioned Tim BL's semantic web software at then end of the workshop on Tuesday. Here's the reference to Tim's page on SWAP:

 

              http://www.w3.org/2000/10/swap/

 

If you scroll to the bottom of this page you will find a section titled:

 

              By the way... Python is cool.

 

Tim states: "I was happy to find that Python is a language you can get into on one battery! I have been happily hacking ever since."

 

Tim's mastery of computer science would allow him to select any language to write software but he likes Python because it is the most productive language available for translating his ideas into code. But Python isn't an arcane language that only super programmers can use. Python is being used as an introductory language for computer science because it makes it easy to teach the fundamentals of computer science. A paper on "Python as a First Language" [1] by John M. Zelle describes why Python is appealling for teaching.

 

I am not advocating the complete replacement of other languages with Python. I am just suggesting that the FEA should specify Python as a preferred technology to use for system integration. Section 4.3 of the paper discusses the relationship between system languages, such as C++ and Java and glue (scripting) languages like Python:

 

  It is true that no computer science major should graduate without learning at least one system programming language such as C++, Java, or Ada. In fact, it would be good to learn more than one. Scripting languages don’t replace system languages; rather, they are complementary. More and more software systems are built from components programmed in system languages and glued together with a scripting language. Therefore, it is equally true that students should also learn a scripting language. This way they are armed with a set of tools so that they can apply the one most appropriate to a given task.

 

Some other good papers that talk about the role of Python include one by Eric Raymond, a well known author and historian on computer science. His paper, "Why Python" [2], describes what makes Python is unique as a computer language. To summarize his evaluation; Python is easy to learn and it doesn't get in your way like other programming languages.

 

The ease with which Eric and Tim learned Python is an important consideration. Many systems-integration tasks are best performed by domain experts, not by computer scientists. As Tim demonstrates in SWAP, putting a powerful, and easy to learn, tool in the hands of a domain expert is a great way to maximize the use of their expertise.

 

Another article [3] that talks about the role Python plays in enterprise integration is by another well known computer science author, Cameron Laird. He presents an example from one company that using Python as a strategic tool. This strategic use of Python is quietly being repeated in many other organizations. I spoke with Michel Biezunski and Steven Newcomb about their use of Python after the workshop. They also see Python as giving them a strategic advantage. Peter Gallagher will tell you the same thing.

 

Python isn't an emerging technology. It's been in development since 1991. It is a stable and mature technology with a long history of reducing the cost of system maintenance. So why isn't Python more as well known as Java, C#, C++, and Visual Basic? Python simply lacks a major corporate backer to "sell" it. An approval of Python for use in the FEA from the architecture committee and the emerging technology committee could help change the perception of Python. Even without official approval Python will continue to be used by innovative companies, and I'm sure it will eventually become more widely known. Having it be recognized as a component of the FEA would help accelerate the process of adoption.

 

As I stated at the workshop, Python is a higher level language, just as SQL was a higher level database abstraction. Building the FEA with these higher level tools reduces the amount of software that needs to be written and maintained. Starting with higher level tools, like Python, will significantly reduce the TCO for the FEA. In a properly architected system the development process should be inverted and the initial work should all be done in the higher level language and performance tuning should only be done on an as needed basis. Historically the performance tuning of a typical Python application will be limited to a few percent of the total code. For the hot spots the system languages, e.g., C++ and Java, can be used to replace the hot spot where the performance of the high level language isn't sufficient.

 

Incidentally, while Python does have a rich native framework of components for systems integration, it can also be used with both J2EE (using jython) and with .Net (using one of the Python ports to .Net).

 

 [1] http://www.linuxjournal.com/article.php?sid=3882 [2] http://www.oetrends.com/cgi-bin/page_display.cgi?98 [3] http://mcsp.wartburg.edu/zelle/python/python-first.html

 

-------------------------------------------------------