Python, also my noobish take on hg vs. git
June 28, 2011
At work I am getting a chance to write a piece of software dealing with HTTP traffic. My workmate and I decided that Python would be the language of choice. Up until now I hadn’t programmed anything in the language beyond simple shell commands. However, we rather quickly designed and implemented a decent objected-oriented, multi-threaded HTTP client. Although I am not sure what I can say about the software (probably more than I will), the creation process was nothing short of a wonderful learning experience. Although it seemed that Python didn’t have an architecture with OO in mind, the process of creating a fairly abstracted piece of software was relatively painless. Abstract classes can be created using ABCMeta libraries. A couple small syntax errors still get me every time ( like referencing to global variables with ‘self’), but with practice I feel myself becoming more versed in the language. Now I can add Python to that all-import CS student’s known languages list.
On a different note, I would like to comment on something I have seen being debated recently. I don’t know if it was by chance, but in the last couple days I have seen an increase in the ‘git versus hg’ posts and comments all over the net. Although the reader must promise to take my statement with a grain of salt, I thought I would give my short take on Mercurial and Git. I use a Mercurial repository for work-related things, and in-fact was the first version control system I used on a frequent basis, besides when working on class assignments (RCS) and team class projects (SVN). At first I found the whole concept of pushing and committing very odd (Eclipse SVN plugins did everything for me before!), but I don’t attribute that to Mercurial at all. After a couple days, I was fairly confident that I wouldn’t do something wrong and mess up a revision, or remove the repository. Once I had been working in hg for a bit, I decided to take a closer look at git. The online repo github is really what pulled me in. I must applaud at how easy it was to get the hang of working around repositories and branched in Git. Demonstrations of the idea of a revision’s bench or index and the difference between fetch and pull. I remember reading that a reason to favor Mercurial over Git is how much simpler Mercurial is. To be honest, I really don’t see that much of a difference. Actually, I really don’t see a large difference in anything I do as a novice revisioner. I can see how Git (or even Mercurial) would allow some pretty fancy things to be done, but I feel that if I was so inclined to perform any of these advanced features, I would lookup the process online – and that goes for either Git or Mercurial. Maybe when I get to using both of them for a long period of time I will start to retain more of a side on the matter, but from what I can tell so far, I believe either solution is completely viable for anyone who is new to version control systems.