Python: A Good Implementation Lanauge

It is now the three year anniversary of starting the store, forward, and receive system for our town’s water AMR system, which handles water endpoint/meter configuration and daily reads. In 2009, I started looking at implementation languages, and settled on Python at the time.

Since the summer of 2011, I had focused mainly on learning and implementing Clojure applets in a responsible way. By responsible way, I wanted to make sure I could recover from any mistakes I might be making, and also not leave my anyone following me a huge mess, something I inherited by my predecessor’s untimely death nine years ago. The Clojure efforts have gone well, because I wrote modules that could easily be replaced by Python or Perl. Well, perhaps not easily, but at least replaced in a reasonable time frame.

As with any application, I have recently gone back to the AMR system to fix things that were rushed, and actually add functionality that was planned but forgotten. I realize now that having chosen Python as the AMR’s implementation was not a bad decision.

Here were the reasons I used to justify the decision to use Python both to my boss and my self. It had a lot of support and the likelihood a temporary or permanent person could be found to work on this code base was good. After all, Python is being taught to freshmen in our high school.

I find Python can be sustained well, especially if you follow the old C/Unix (and perhaps many other languages’ styles) of small, concise, well-written functions, Python code refactors well, and a programmer’s being encouraged to use a lot of exception handling has its place.

If I were to start writing our AMR system today, I cannot say everything would be written in Python. I would probably use JavaScript and PHP for the web piece, rather than Django. I did not make good enough use of what Django can do to warrant its use, and I have found Django’s upgrade path acceptable, though not overly pleasant. Perhaps some of the reports would be written in Clojure, but there is something to be said for nearly 90% (aside from MySQL queries and bash shell scripts) written in one language.

I can at least keep things running without creating spaghetti code and can do so at the speed of an IT staff member, not a developer.

Advertisements

Leave a comment

Filed under Automated Meter Reading, python

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s