It was a piece of piss (as they say in Australia) to set up a jabber server on my machine. (But I used the FreeBSD port which may partly explain why it was so easy.) I don't recall there being any confusing DNS issues beyond the fact that DNS is always confusing unless you know what you are doing (but can hardly be jabber's fault). The man on the street shouldn't need to set up a server anyway.
I found a nice way to deal with iterative things like fibonacci in The Functional Approach to Programming by Cousineau and Mauny. First define a general purpose iteration function (in OCaml notation, same as F# I gather):
let rec iter n f x = if n = 0 then x else f (iter (n-1) f x);;
where n is the number of iterations, f is the function to iterate, and x is the starting value. For example:
# iter 25 (fun x -> x + 1) 0;; - : int = 25
Now fibonacci just looks like this:
let fib n = fst (iter n (fun (x, y) -> (x + y, x) ) (1, 0) );;
Let's try it:
# fib 70;; - : int = 696897233
iter is tail recursive, so it's space efficient; it's O(n), so it's nice and fast. No problems. In some ways, that fib function is even easier to understand than an imperative one, I think, depending I guess on how mathematically minded you are.
Language isn't so important, but Universal Modelling Language is. That seems a bit contradictory to me. Okay, so now we have a design langauge and an implementation language both describing the exact same software at the same time. It sounds like there's a lot of potential for impedance mismatches between those two right there.
He backs up his assertion that programming languages aren't important by saying there is lots of good software written in different languages. But there is lots of good software written without UML. In fact most good software would fall under that heading. Does that mean UML is not important?
The Adobe viewer seems to work fine in my Mozilla browser, Phoenix 0.5 (er, Firebird that is, as it's now known.) I don't remember if I had to do anything special to install it or not -- probably had to copy some DLLs to the plugin directory.
I hate getSomething() methods. Yuck. They lack declarativeness. Which reads better, banana.getColor() or banana.color()? The latter naturally; you don't say "what it the get color of that banana" after all. And while we are at it, let's lose the brackets: banana.color. (Presumably that's what they mean by properties. I didn't bother to read the article.) Most people don't realize it yet, but declarative programming is the way of the future.
You might like to try a graphics tablet. I've got a Wacom Graphire II, and it works well. You do move your fingers, and there is not much repetative motion. You can use it with your hand very relaxed (assuming you hold a pen properly -- many people don't); so it's pretty easy on the hands. There are some bad points: you need a decent level of fine motor control to use it. A lot of that come with practice though. But I always wince when my friend uses my computer because he is likely to accidentally and randomly drag-and-drop stuff all over the place.
* It does what I thought ML did -- each function acts like a templated function, and when you use a function, it instantiates a new appropriate template automatically. Very, very cool.
I think ML is more 'templated' than Eiffel in the sense that all functions in ML are generic as possible, whereas in Eiffel, like in C++, you have to explicitly specify which parameters are generic.
It was a piece of piss (as they say in Australia) to set up a jabber server on my machine. (But I used the FreeBSD port which may partly explain why it was so easy.) I don't recall there being any confusing DNS issues beyond the fact that DNS is always confusing unless you know what you are doing (but can hardly be jabber's fault). The man on the street shouldn't need to set up a server anyway.
Language isn't so important, but Universal Modelling Language is. That seems a bit contradictory to me. Okay, so now we have a design langauge and an implementation language both describing the exact same software at the same time. It sounds like there's a lot of potential for impedance mismatches between those two right there.
He backs up his assertion that programming languages aren't important by saying there is lots of good software written in different languages. But there is lots of good software written without UML. In fact most good software would fall under that heading. Does that mean UML is not important?
The Adobe viewer seems to work fine in my Mozilla browser, Phoenix 0.5 (er, Firebird that is, as it's now known.) I don't remember if I had to do anything special to install it or not -- probably had to copy some DLLs to the plugin directory.
I hate getSomething() methods. Yuck. They lack declarativeness. Which reads better, banana.getColor() or banana.color()? The latter naturally; you don't say "what it the get color of that banana" after all. And while we are at it, let's lose the brackets: banana.color. (Presumably that's what they mean by properties. I didn't bother to read the article.) Most people don't realize it yet, but declarative programming is the way of the future.
You might like to try a graphics tablet. I've got a Wacom Graphire II, and it works well. You do move your fingers, and there is not much repetative motion. You can use it with your hand very relaxed (assuming you hold a pen properly -- many people don't); so it's pretty easy on the hands. There are some bad points: you need a decent level of fine motor control to use it. A lot of that come with practice though. But I always wince when my friend uses my computer because he is likely to accidentally and randomly drag-and-drop stuff all over the place.
* It does what I thought ML did -- each function acts like a templated function, and when you use a function, it instantiates a new appropriate template automatically. Very, very cool.
I think ML is more 'templated' than Eiffel in the sense that all functions in ML are generic as possible, whereas in Eiffel, like in C++, you have to explicitly specify which parameters are generic.