Computers are so useful
How else could I have the patience for this?
99 bottles of beer on the wall,
99 bottles of beer
we take one down and pass it around…
98 bottles of beer on the wall98 bottles of beer on the wall,
98 bottles of beer
we take one down and pass it around…
97 bottles of beer on the wall97 bottles of beer on the wall,
97 bottles of beer
we take one down and pass it around…
96 bottles of beer on the wall96 bottles of beer on the wall,
96 bottles of beer
we take one down and pass it around…
95 bottles of beer on the wall95 bottles of beer on the wall,
95 bottles of beer
we take one down and pass it around…
94 bottles of beer on the wall94 bottles of beer on the wall,
94 bottles of beer
we take one down and pass it around…
93 bottles of beer on the wall93 bottles of beer on the wall,
93 bottles of beer
we take one down and pass it around…
92 bottles of beer on the wall92 bottles of beer on the wall,
92 bottles of beer
we take one down and pass it around…
91 bottles of beer on the wall91 bottles of beer on the wall,
91 bottles of beer
we take one down and pass it around…
90 bottles of beer on the wall90 bottles of beer on the wall,
90 bottles of beer
we take one down and pass it around…
89 bottles of beer on the wall89 bottles of beer on the wall,
89 bottles of beer
we take one down and pass it around…
88 bottles of beer on the wall88 bottles of beer on the wall,
88 bottles of beer
we take one down and pass it around…
87 bottles of beer on the wall87 bottles of beer on the wall,
87 bottles of beer
we take one down and pass it around…
86 bottles of beer on the wall86 bottles of beer on the wall,
86 bottles of beer
we take one down and pass it around…
85 bottles of beer on the wall85 bottles of beer on the wall,
85 bottles of beer
we take one down and pass it around…
84 bottles of beer on the wall84 bottles of beer on the wall,
84 bottles of beer
we take one down and pass it around…
83 bottles of beer on the wall83 bottles of beer on the wall,
83 bottles of beer
we take one down and pass it around…
82 bottles of beer on the wall82 bottles of beer on the wall,
82 bottles of beer
we take one down and pass it around…
81 bottles of beer on the wall81 bottles of beer on the wall,
81 bottles of beer
we take one down and pass it around…
80 bottles of beer on the wall80 bottles of beer on the wall,
80 bottles of beer
we take one down and pass it around…
79 bottles of beer on the wall79 bottles of beer on the wall,
79 bottles of beer
we take one down and pass it around…
78 bottles of beer on the wall78 bottles of beer on the wall,
78 bottles of beer
we take one down and pass it around…
77 bottles of beer on the wall77 bottles of beer on the wall,
77 bottles of beer
we take one down and pass it around…
76 bottles of beer on the wall76 bottles of beer on the wall,
76 bottles of beer
we take one down and pass it around…
75 bottles of beer on the wall75 bottles of beer on the wall,
75 bottles of beer
we take one down and pass it around…
74 bottles of beer on the wall74 bottles of beer on the wall,
74 bottles of beer
we take one down and pass it around…
73 bottles of beer on the wall73 bottles of beer on the wall,
73 bottles of beer
we take one down and pass it around…
72 bottles of beer on the wall72 bottles of beer on the wall,
72 bottles of beer
we take one down and pass it around…
71 bottles of beer on the wall71 bottles of beer on the wall,
71 bottles of beer
we take one down and pass it around…
70 bottles of beer on the wall70 bottles of beer on the wall,
70 bottles of beer
we take one down and pass it around…
69 bottles of beer on the wall69 bottles of beer on the wall,
69 bottles of beer
we take one down and pass it around…
68 bottles of beer on the wall68 bottles of beer on the wall,
68 bottles of beer
we take one down and pass it around…
67 bottles of beer on the wall67 bottles of beer on the wall,
67 bottles of beer
we take one down and pass it around…
66 bottles of beer on the wall66 bottles of beer on the wall,
66 bottles of beer
we take one down and pass it around…
65 bottles of beer on the wall65 bottles of beer on the wall,
65 bottles of beer
we take one down and pass it around…
64 bottles of beer on the wall64 bottles of beer on the wall,
64 bottles of beer
we take one down and pass it around…
63 bottles of beer on the wall63 bottles of beer on the wall,
63 bottles of beer
we take one down and pass it around…
62 bottles of beer on the wall62 bottles of beer on the wall,
62 bottles of beer
we take one down and pass it around…
61 bottles of beer on the wall61 bottles of beer on the wall,
61 bottles of beer
we take one down and pass it around…
60 bottles of beer on the wall60 bottles of beer on the wall,
60 bottles of beer
we take one down and pass it around…
59 bottles of beer on the wall59 bottles of beer on the wall,
59 bottles of beer
we take one down and pass it around…
58 bottles of beer on the wall58 bottles of beer on the wall,
58 bottles of beer
we take one down and pass it around…
57 bottles of beer on the wall57 bottles of beer on the wall,
57 bottles of beer
we take one down and pass it around…
56 bottles of beer on the wall56 bottles of beer on the wall,
56 bottles of beer
we take one down and pass it around…
55 bottles of beer on the wall55 bottles of beer on the wall,
55 bottles of beer
we take one down and pass it around…
54 bottles of beer on the wall54 bottles of beer on the wall,
54 bottles of beer
we take one down and pass it around…
53 bottles of beer on the wall53 bottles of beer on the wall,
53 bottles of beer
we take one down and pass it around…
52 bottles of beer on the wall52 bottles of beer on the wall,
52 bottles of beer
we take one down and pass it around…
51 bottles of beer on the wall51 bottles of beer on the wall,
51 bottles of beer
we take one down and pass it around…
50 bottles of beer on the wall50 bottles of beer on the wall,
50 bottles of beer
we take one down and pass it around…
49 bottles of beer on the wall49 bottles of beer on the wall,
49 bottles of beer
we take one down and pass it around…
48 bottles of beer on the wall48 bottles of beer on the wall,
48 bottles of beer
we take one down and pass it around…
47 bottles of beer on the wall47 bottles of beer on the wall,
47 bottles of beer
we take one down and pass it around…
46 bottles of beer on the wall46 bottles of beer on the wall,
46 bottles of beer
we take one down and pass it around…
45 bottles of beer on the wall45 bottles of beer on the wall,
45 bottles of beer
we take one down and pass it around…
44 bottles of beer on the wall44 bottles of beer on the wall,
44 bottles of beer
we take one down and pass it around…
43 bottles of beer on the wall43 bottles of beer on the wall,
43 bottles of beer
we take one down and pass it around…
42 bottles of beer on the wall42 bottles of beer on the wall,
42 bottles of beer
we take one down and pass it around…
41 bottles of beer on the wall41 bottles of beer on the wall,
41 bottles of beer
we take one down and pass it around…
40 bottles of beer on the wall40 bottles of beer on the wall,
40 bottles of beer
we take one down and pass it around…
39 bottles of beer on the wall39 bottles of beer on the wall,
39 bottles of beer
we take one down and pass it around…
38 bottles of beer on the wall38 bottles of beer on the wall,
38 bottles of beer
we take one down and pass it around…
37 bottles of beer on the wall37 bottles of beer on the wall,
37 bottles of beer
we take one down and pass it around…
36 bottles of beer on the wall36 bottles of beer on the wall,
36 bottles of beer
we take one down and pass it around…
35 bottles of beer on the wall35 bottles of beer on the wall,
35 bottles of beer
we take one down and pass it around…
34 bottles of beer on the wall34 bottles of beer on the wall,
34 bottles of beer
we take one down and pass it around…
33 bottles of beer on the wall33 bottles of beer on the wall,
33 bottles of beer
we take one down and pass it around…
32 bottles of beer on the wall32 bottles of beer on the wall,
32 bottles of beer
we take one down and pass it around…
31 bottles of beer on the wall31 bottles of beer on the wall,
31 bottles of beer
we take one down and pass it around…
30 bottles of beer on the wall30 bottles of beer on the wall,
30 bottles of beer
we take one down and pass it around…
29 bottles of beer on the wall29 bottles of beer on the wall,
29 bottles of beer
we take one down and pass it around…
28 bottles of beer on the wall28 bottles of beer on the wall,
28 bottles of beer
we take one down and pass it around…
27 bottles of beer on the wall27 bottles of beer on the wall,
27 bottles of beer
we take one down and pass it around…
26 bottles of beer on the wall26 bottles of beer on the wall,
26 bottles of beer
we take one down and pass it around…
25 bottles of beer on the wall25 bottles of beer on the wall,
25 bottles of beer
we take one down and pass it around…
24 bottles of beer on the wall24 bottles of beer on the wall,
24 bottles of beer
we take one down and pass it around…
23 bottles of beer on the wall23 bottles of beer on the wall,
23 bottles of beer
we take one down and pass it around…
22 bottles of beer on the wall22 bottles of beer on the wall,
22 bottles of beer
we take one down and pass it around…
21 bottles of beer on the wall21 bottles of beer on the wall,
21 bottles of beer
we take one down and pass it around…
20 bottles of beer on the wall20 bottles of beer on the wall,
20 bottles of beer
we take one down and pass it around…
19 bottles of beer on the wall19 bottles of beer on the wall,
19 bottles of beer
we take one down and pass it around…
18 bottles of beer on the wall18 bottles of beer on the wall,
18 bottles of beer
we take one down and pass it around…
17 bottles of beer on the wall17 bottles of beer on the wall,
17 bottles of beer
we take one down and pass it around…
16 bottles of beer on the wall16 bottles of beer on the wall,
16 bottles of beer
we take one down and pass it around…
15 bottles of beer on the wall15 bottles of beer on the wall,
15 bottles of beer
we take one down and pass it around…
14 bottles of beer on the wall14 bottles of beer on the wall,
14 bottles of beer
we take one down and pass it around…
13 bottles of beer on the wall13 bottles of beer on the wall,
13 bottles of beer
we take one down and pass it around…
12 bottles of beer on the wall12 bottles of beer on the wall,
12 bottles of beer
we take one down and pass it around…
11 bottles of beer on the wall11 bottles of beer on the wall,
11 bottles of beer
we take one down and pass it around…
10 bottles of beer on the wall10 bottles of beer on the wall,
10 bottles of beer
we take one down and pass it around…
9 bottles of beer on the wall9 bottles of beer on the wall,
9 bottles of beer
we take one down and pass it around…
8 bottles of beer on the wall8 bottles of beer on the wall,
8 bottles of beer
we take one down and pass it around…
7 bottles of beer on the wall7 bottles of beer on the wall,
7 bottles of beer
we take one down and pass it around…
6 bottles of beer on the wall6 bottles of beer on the wall,
6 bottles of beer
we take one down and pass it around…
5 bottles of beer on the wall5 bottles of beer on the wall,
5 bottles of beer
we take one down and pass it around…
4 bottles of beer on the wall4 bottles of beer on the wall,
4 bottles of beer
we take one down and pass it around…
3 bottles of beer on the wall3 bottles of beer on the wall,
3 bottles of beer
we take one down and pass it around…
2 bottles of beer on the wall2 bottles of beer on the wall,
2 bottles of beer
we take one down and pass it around…
1 bottle of beer on the wall1 bottle of beer on the wall,
1 bottle of beer
we take one down and pass it around…
0 bottles of beer on the wall
If you've made it all the way down here- and actually read all the lyrics (or even worse, sang them), you have too much time on your hands- and are probably stone drunk. The lyrics were written by a very simple Ruby program. This language is so damn simple I'm teaching JAM how to do it. Here's the code:
numBeers=99
while numBeers > 0
if numBeers == 1
iD='bottle'
else
iD='bottles'
end
puts numBeers.to_s + ' ' + iD + ' of beer on the wall,'
puts numBeers.to_s + ' ' + iD + ' of beer'
puts 'we take one down and pass it around…'
numBeers = numBeers-1
if numBeers == 1
iD='bottle'
else
iD='bottles'
end
puts numBeers.to_s + ' ' + iD + ' of beer on the wall'
puts ''
end
It would be much simpler if I didn't worry about depluralizing 'bottles' when there is only one. The savvy programmer will also note that I have some hideously unnecessary redundancy in repeating the conditional bottle vs bottles clause twice. I haven't reached the point in the tutorial where it explains how to make and call reusable procedures.
The delightfully clear and easy beginner's tutorial in Ruby comes from Learn to Program.
Note: no beers were consumed in the process of creating this post- but now I'm thirsty.
My programming peers are batty about Ruby. I’ll have to give it a look.
However, for serious work, I’m in the smae camp as Joel (no, not you, Max): http://www.joelonsoftware.com/items/2006/09/01.html
Comment on December 23, 2006 @ 12:01 pm
I love joelonsoftware, been subscribing since that hilarious bad review for a cell phone I think it was you pointed me to.
I really appreciate the link to the language wars essay. Ruby sure seems simple, but not that different from the Javascript I’m used to. I don’t know much about Rails yet, or whether it makes sense to consider using it for what I’ll be doing at Mediaplex. I figure my first task will be to get a good understanding of what technologies they’re invested heavily into. Kind of like the serenity prayer, eh? Accept the things I can’t change…
I know they use the latest Oracle backend database and they have some kind of middleware that exports XHTML components that can be assembled in various ways to build the web client UI. I know also that my boss is interested in developing AJAX features in the newest renditions of the software which is one of the things that drew me to the position. What I don’t know is what are the realistic options for gettinng started down that path. Ruby might end up being only an interesting little diversion of no use in the long run. For now it’s a great way to introduce Jeremy to basic programming concepts. He seems to be having fun with it.
Comment on December 23, 2006 @ 1:34 pm
This line in particular is enough to scare me off…
“…for now, you can risk Ruby on your two-person dormroom startup or your senior project, not for enterprisy stuff where Someone is Going to Get Fired.”
Yikes! I haven’t even started the job yet.
Comment on December 23, 2006 @ 2:27 pm
The guys I work with use Ruby, PERL, TCL, etcetera for all manner of unit test infrastructure, script generation, and tool development; they simply reserve the production code that has to run 24/7 for C#, .net, or Java (or in the case of embedded) C/C++.
Ruby looks perfect for learning, and I might point Jonathan that way (except that I bougth a microcontroller card with pretty lights and motor controller I/O, and it only programs in assembler and C).
Comment on December 23, 2006 @ 3:56 pm