|
Re: Portability
|
Posted: Jan 5, 2004 12:24 PM
|
|
> This enforces Matz's comment about learning lots of > languages and environments. Far too many "developers" > cast everything in terms of how its like or not like Java > - as if Java were the ideal somehow. The reality is that > Java is a collection of compromises - some good, many not > so good, and a lot of it is more primitive that what came > before.
I've found that Matz's recommendation to learn a language a year to be a good one. Like he (and the pragmatic programmers) says, it helps by exposing you to new ideas and new ways of thinking about problems. That's the real key for me. Depending on your point of view, any language can be viewed favorably or poorly. It all depends on your experience and your needs.
I've had some real world experience with java, C/C++, VB in its various flavors, C#, Python, awk, a touch of perl, javascript and even Pascal. In school I did some work with a few other languages like assembler and LISP, but nothing beyond the course work I had to do. They all have their good and bad points and as such, it's hard to read the 'my language is better than your language' shouting matches. They are almost meaningless unless you get a good description of the problem domain or if you are talking about a specific feature that is important to you like object orientedness, performance, ease of debugging or typing lots of parentheses.
I think that idea can be extended to learning different paradigms as well. For example, I've started to take an interest in AI and game programming after being away from it for many years (I really haven't done any AI stuff since school) and in looking at the stuff that is out there, it is light years ahead of where it was a few years ago and it is radically different than what I do now, which is enterprise application programming.
I was thinking one neat really off the wall project would be to do a small simulator like Weta's massive (not as big or detailed of course, I don't have 3-4 years to work on this thing), for input have it read in finanacial data from various sources, whether they be companies, divisions in a single company, etc. and then have that data create AI agents that fight each other. Thus you can do a 'my company can beat up your company' analysis and have a neat representation of it that would be pretty to look at. Companies/divisions that create a ton of revenue would have great offensive capabilities, those with low debt and solid cost controls would have great defensive capabilities, etc.
Anyway, instead of learning another language this year, I'll be exploring a programming paradigm that is almost completely foreign to me. It should be fun. Time to dust off that OpenGL book I haven't touched in 8 years ;-) Last time I touched that, I was working on a 3D charting engine that, alas, didn't get used by the company I was working for. Who wouldn't want a chart you could rotate in 3 dimensions and do fancy lighting on?
By the way, if anybody knows of any good resoures on the subject, I would be happy to hear about them. I've been looking at picking up Game Programming With Python and AI Game Programming Wisdom. If anybody has an opinion about those books or others, please share. As I said, this sort of thing is pretty foreign to me and these looked like the most comprehensive starting points I could find. They've gotten good reviews from a variety of sources.
I've got a pretty good OpenGL book and have worked with that a little bit, so I'm not too worried about the graphics end of things. I basically need a good primer on the sort of AI things the better strategy and RPG games do. Those books looked like they had that and more, and in a general enough sense where I wouldn't have information that was useless after, say, DirectX 9 was obsolete. I'm not interested in the platform specific stuff. I would like information that could be applied to a wide variety of problem domains and used as a base for working with a wide variety of languages, tools and development kits.
|
|