And then, click your heels together three times, and you'll beback in the good old USSR, Petrograd to Leningrad...
So, I'm a little over halfway done with the Chaos book, and it lookslike my Philosophy term paper is likely to actually interesting, ifa bit rough (it's due Thursday, so it might not be as polished asit should be).. I really should've started on it earlier, but theideas wern't flowing.. My musical company this time is a mix ofRed Army Choir (yes, he's talking about them again! Sheesh) music anda Gypsy/Klezmer mix... That makes me curious -- why is it that thestylistic elements of Gypsy and Klezmer tend to get mixed together sooften? I initially speculated that it's because they're similar, butlistening to them, it's actually pretty clear that they're very distinct.Did the Gypsies and the Hebrews often inhabit the same areas? Bothof them have notions of ethnic purity, so any intermarrage was probablypretty rare, but perhaps they 'jammed' together. Anyhow, one of mycurrent favourites is a song called there's the village, inenglish at least. Troika is also nice..
The winter continues to take its toll on me -- I'm having a lot of troublewaking up in the morning, and my skin is getting very dry. All the betterfor thinking up a good fantasy.. and as per a recent IM conversation aboutoffice accomodations, let me present to you my programming environment fantasy.It's dark out, around 2 AM. There's a large picnic umbrella over me, keepingme, my laptop, and the equipment on the desk dry, for it is raining. Lightningcomes out of the sky frequently, thunder's pleasant sound washing away anystress that comes. About 20 feet outside the umbrella, in all directions,lie some (lit) torches on poles. There's a nice speaker system, and from it comethe sounds of the red army choir, klezmer, indian, or other 'low-attention'music. There are plenty of pens and paper on the desk, and the chair iscomfortable. I have plenty of tea and water in thermoses, and a lot of lightand healthy snacks. Another umbrella lies not far away, just covering adry patch of grass where I can take a nap when I wish. All of this is ona pretty mountain clearing. Yes, that's my programming fantasy.
Oddly, I remember there being a phrase on google going with theCluthlu fish, "Cluthlu: Our God Ate Yours".. but google doesn'teven know of the "our god ate yours" phrase anymore. So, let it be,Google, remember.
Tonight, I'm going to drop my car off at Fnord, for them to fix thestupid wipers. Not sure how I'm gonna get back yet, and the timing isreally bad -- I should be focusing on my term paper, not my car..But.. I do need to make it legal here, and that means getting it to whereit can pass inspection so I can register it and all that. I'm *really*kicking myself for not having them fix the wipers when it was in Columbusjust sitting there for weeks. Sure, they would've had to order a part, butit probably would've arrived in time. I am beginning to wonder, with how littleI use my car, if I wouldn't be better off just using public transport withinthe city for the things I currently drive for, and renting a car for tripselsewhere. What *do* I drive for? Currently, to go to whole foods marketand, .. hmm.. I don't really see movies anymore, but I might sometime hear abouta movie worth a trip to the waterfront again. Hmm.. With insurance and repairs..it might be cheaper not to have a car...
Incidentally, Fortran, the programming language, sucks. I recently dipped mytoe into it again to help someone out.. The default libraries are woefullyinadequate (yeah, getarg will get you commandline arguments, but what ifyou want something other than a string? Guess what? You get to write yourown function! No intrinsic or standard library call to do such a conversionexists in Fortran (portably, anyhow). C is a much-maligned programming language,as it makes you manage things that you really might not want to manage. However,if you're careful, it's a really nice language, with only a few thingsimpossible in the native idiom. More importantly, it's standard library isvery powerful. In C, when you're building custom code, you're doing one ofa few things:1) Project-specific stuff2) Something at least moderately esoteric3) Implementing your own custom framework/discipline
In Fortran, you're building custom code practically all the time becausethe standard library is so weak. There's a difference between project code,glue code, and foundational code.. Project code is core logic of yourapplication, isn't very useful outside (although this difference is sometimesblurry), and often takes a lot of domain knowledge to design and/or write.As a sidenote, some people seperate the design process from the implementationprocess. This is bloody stupid -- often the level of specificity needed to doa really good design crosses sufficiently into the place where programming anddesign are one. Glue code hooks together two pieces of code that arn't tunedto be particularly aware of each other. It's generally a pain to write, butoften doesn't require much deep thought, or when thought is required, it's of avery different type than project code, focusing on clean interfaces and meetingpolicies. Framework implementation is the most creative, open-ended task,where intuitions of good practice, the ability to set policy for users of thispart of the code, and all sorts of engineering desires compete on a relativelyempty field. Frameworks can layer too -- what must be maintained is a cleaninterface for the layer above to build on. The rich soil of C has providedfertile ground for a number of disciplines, and indeed a number of otherlanguages are interpreted in frameworks implemented in C. The only thingsimilar I can think of written on top of Fortran is GNU Octave. Thinking ofwriting something like Python or a LISP interpreter in Fortran? Call me whenyou get out of the asylum..
That reminds me of the software engineering folk back at OSU, who grafted theirown monstrosity on top of C++, called RESOLVE/C++. (note that on that page, they offer two evaluations of RESOLVE from (drumroll)REAL programmers. WOW! Amazing! Except...both of these people are CIS-OSU folk, one of whom was a former housemate ofmine. Dig hard enough in a really big CIS department, and you'll find somepeople willing to praise your system)Anyhow, the designers of RESOLVE are certainly nicepeople, who are trying to do good things, but they suffer from an excessivelyformal notion of programming, and have produced something noone in their rightmind would use. Their goal is simple -- promote the use of software reuse.Is this a bad goal? No -- people reuse code all the time, although usuallyjust what their programming language and OS provides (don't want to write anew windowing system or redo printf() in every program). They want toexpand reuse further. However, there are at least two problems in the wayBruce Weide/Tim Long/others are approaching it: It's mostly not a technicalproblem, and stuff that can be shared should generally be inserted into thefoundation. I'll use Perl (as it's the antithesis of the Bondage and Disciplinestyle of language they like)and Java (so their supporters can see that I do actually have a point) toillustrate how RESOLVE/C++ is the result of a fundamental misunderstanding ofthe problem of software reuse.
Wait.. no, I'll write this later (If I don't forget). I already have a termpaper to write, and if I really want to give this the treatment it deserves,I should wait until I can give it my undivided attention. Writing littlesnippets during times I need a break from work isn't a good way to do thiskind of thing :)
So, yes, coming soon, a criticism of RESOLVE. A smorgasboard of reminders tomyself..Software contractsCPAN, JFC class hierarchylanguage expressibility, static and partial/full constructors (database example)Bondage/Discipline and language usabilityOther usability issues (templates, debugging, errors)C++
And note that, all that being said, Bruce and Tim were excellent teachers, andwhile I already had enough experience that I didn't learn as much as I might'vefrom their classes, it was presented very well and a very novice programmerwould indeed learn a lot of important concepts (and a few strange ideas).RESOLVE is a toy, but not a terrible one, provided it's understood as such.As to whether it's better to teach with a toy or something more useful andusable or not, that can be addressed later.