Freedom To Think When Programming - UML
A couple of day ago, I wrote about my favourite programming languages over the years - and talked about the reasons why. The common theme was each subsequent “favourite” language had properties that increased my sense of freedom to think about the problems I was trying to solve, compared to the previous one. So, I preferred Java to C/C++; and C/C++ to FORTRAN.
This concept of “freedom to think when programming” is important, I think. Focussing more on the problem, and less on making sure the code works is a huge benefit if you’re tackling complex problems.
Let me take just one specific example about “freedom to think” to make that tangible. When C/C++ was my favourite language, I used to think pointers, and pointer arithmetic were great. Pointer arithmetic is really powerful, and at the time I couldn’t imagine managing without it. When we started getting really seriously into Java in 1997, it was as a replacement for Perl in developing web applications: you know the kind of thing - web front ends to server-side relational databases etc. At the time, Perl simply couldn’t cope with what we wanted to do. Now, I’d never really gotten attached to Perl as a language, ever since I got into Perl/CGI programming in the early days of the web in 1994. It wasn’t terrible - I certainly found it better than C or Unix shell scripts for CGI programming. And, one of my friends had written the first widely used Perl/CGI library, so I was kinda forced to use it! But - I didn’t really like it - my responses to the constant cries of “Hey look, I’ve written this as a one-line Perl script!”, had always been - So what?! Actually, my responses were less polite than that, but you get the idea
And my response to the object-orientated features of the language was - Ugh!! Anyway, I was happy that Java solved the problems for us that Perl could not; and we switched development focus for web apps from Perl to Java. To say that no-one in the team missed Perl was an understatement!
However, the question in my mind was: could Java replace C/C++ as my favourite language for developing software in general? One of the things that was bugging me about Java was that it didn’t have pointer arithmetic - how would I possibly be able to manage without it?! Well, as it turned out, the answer was: very easily indeed. The constraint of not having pointer arithmetic turned out to be a “freedom to think”: sure, I lost some performance; but what I gained was not having to think about pointer arithmetic - and importantly not having to think about fixing all the bugs that are introduced almost inevitably when dealing with points in complex data structures.
Java rapidly became my new preferred language for general software development. It freed me up to think about working on even more complex problems. However, the next acquisition to the toolbox that freed me up to think some more wasn’t a programming language. It was - The Unified Modeling Language (UML). Being able to model my software applications before and during coding was, I found, another significant step forward. If you enjoy object-orientated programming, I cannot recommend UML highly enough…
bad credit identity theft on 19 Oct 2007 at 2:08 pm
bad credit identity theft…
debuggers metaphorically liberalize …