Well, the se12 python project officially ended today with the completion of the final report, fulfilling the last requirement of the project (apart from this, the “final” blog that is). Before I reflect on how the project has gone, I would like to reassure all those who have been testing TIM that development *will* continue! This is just an official end to the project as far as my course is concerned, but TIM will live on 🙂
One requirement of the project was to make a reflection on pair programming as well as the project as a whole. Always being one to break with convention, I did this near the start of the project, and it is here: https://www.kieranoshea.com/2006/01/29/pair-programming/
In terms of project reflection then, well so much to say! First off, like many other projects I have taken part in to develop something, I enjoyed it. Seeing something go from an idea into a working application is always an enjoyable experience, as is recieving feedback and being able to make further improvements. Far from simply enjoying it though, or successes with respect to the application compared with the project spec, there is the issue of using a brand new (to me) programming language.
The Python programming language is one I had only “heard” of before I embraked on this project, but on those occasions I had been told of it, all reviews pointed to it being a language very suitable for rapid development and creating portable applications. Before I could even attempt to test these reviews however, I needed to see if Python was as rapid to learn as it was to use. Not wishing to invest in expensive texts, I studied existing applications and online python documentation, immediately started to press into service core programming methods that I discovered; trying them out using the python interpreter and small python executable text files. This approach worked well, and within a few days I was actually remembering that curly brackets and semi-colons didn’t belong in python and that nicely indented code was no longer something that was done for ease of reading and fault-finding, but was an actual run-time requirement of the language.
If I had any problems with the language, it would have to be its differences compared with other languages. I will cite java and php here as those are the two languages that I am most familiar with. Curly brakets are nice; they help me see loops, see clearly where you jump out of them and where they are nested. Indentation is good, but I like to use both. Python not having these caused me some issues, but emacs came to my aid with its syntax highlighting and various python related tools for the unwary newbie to the language. I quickly got used to not using semi-colons. So used to it in fact that when I returned to java for some other work I had to do, I was annoyed I had to put them in. Other interesting syntax issues included the “elif” difference and the colon at the start of methods, if statements and loops.
Syntax aside though I like python. Quite a bit more than java in fact, mainly because I hate bloat, and python didn’t have any (or hardly any). I loved not having to declare the types on new variables, I liked being able to store most anything in arrays and the like. Object orientation is a whole different matter though. Java = Nice+Complete, Python = NASTY. I’m not saying that object orientation wasn’t possible, and I did implement it into the application, but the way some things are done makes you cringe after using java. The requirement to use “self.” is a notable example. In java you can use it or not and it makes little difference in an ordinary method. While I quickly realiased how python liked to work with respect to these things it didn’t stop it from being annoying 😉
So, back to if Python is a good language for rapid development…. yes it is! The speed with which I could write and test methods to do things was astounding. While this was purely down to less bloated syntax, it held speed improvements both in the time taken to write and the time taken to debug if there were problems. With less lines to look through, debugging is simply easier. The language was especially rapid for the GUI development in wxPython. Windows could be made to appear in a few lines, and getting them to contain what you wanted and appear when needed was just a few lines more. While some things in Python are a little complex and abstract, overall for speed its a great language to work with.
Something that is often asked about things in general is “Would you do it again?”, so in Python, would I code in in it again? Well, I have already answered that question at the start of this posting. I will indeed code in python again as I am going to continue the development of TIM. The application has real potential to be very useful as a complementary tool to all who listen to music on their computer systems, and so with a demand from users and the developer’s will to make it better, TIM will be taken forward (hopefully to an RC stage) in the near future 🙂