So, it appears as though I have broken my long GUI drought by writing my first functional Mac OS X app in Objective C. In the process I have also discovered why GUI programming used to be so easy for me when I was younger: I was less picky. The app I have written is a really small thing that calculates pace and speed. However, the amount of duplicate and ugly code in there to get it to work is mind-blowing after having spent some time programming in more dynamic languages.
I guess a part of it is that I don’t know the language very well, but a lot of it is just that Objective C is a very small extension of C, and that lacks the kind of mechanisms I have become used to. In another post, I’ll elaborate on how the different languages one uses informs how you think about programming as an activity. I am definitely feeling the blub effect (read that link – it’s really worth it), in that I’m missing a lot of features from other languages in Objective C.
The other interesting thing I’m noticing is how the tool (XCode) that you use to program is a part of the programming experience. I am discovering first hand how little many people feel the pinch of verbosity in their languages due to good tools. Even though this article is pretty old, I still feel it rings true. In the language of that article, I am a language maven rather than a tool maven. When I start learning a language I imagine writing code in a simple text editor. It’s then that typing and elaborate method names really seem like they’re a pain. In an environment that automates a lot of that stuff for you, you’re less aware of the language and more of the overall tool experience. I still can’t say that Objective C is a beautiful language, even with XCode. But then, I’ve never been a fan of the curly-brace languages in general other than a couple of years of loving C when I was in high school. I’ve kind of migrated to languages that scan more like spoken language.
Well – no-one said that blogging had to be deep all the time right? What do you guys think about the language vs tool debate? Just to get things started, I’ve noticed that most of the people who absolutely love static typing are tool users. Static typing makes the tools more useful, as they can figure out the types of things while you’re typing and suggest completions of methods and so on. Obviously this is significantly harder for dynamically typed languages, so the tools seem much less capable. Maybe I should learn more tools.
Leave a Reply