Computers are so useful

Max, December 20th, 2006 

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 wall

98 bottles of beer on the wall,
98 bottles of beer
we take one down and pass it around…
97 bottles of beer on the wall

97 bottles of beer on the wall,
97 bottles of beer
we take one down and pass it around…
96 bottles of beer on the wall

96 bottles of beer on the wall,
96 bottles of beer
we take one down and pass it around…
95 bottles of beer on the wall

95 bottles of beer on the wall,
95 bottles of beer
we take one down and pass it around…
94 bottles of beer on the wall

94 bottles of beer on the wall,
94 bottles of beer
we take one down and pass it around…
93 bottles of beer on the wall

93 bottles of beer on the wall,
93 bottles of beer
we take one down and pass it around…
92 bottles of beer on the wall

92 bottles of beer on the wall,
92 bottles of beer
we take one down and pass it around…
91 bottles of beer on the wall

91 bottles of beer on the wall,
91 bottles of beer
we take one down and pass it around…
90 bottles of beer on the wall

90 bottles of beer on the wall,
90 bottles of beer
we take one down and pass it around…
89 bottles of beer on the wall

89 bottles of beer on the wall,
89 bottles of beer
we take one down and pass it around…
88 bottles of beer on the wall

88 bottles of beer on the wall,
88 bottles of beer
we take one down and pass it around…
87 bottles of beer on the wall

87 bottles of beer on the wall,
87 bottles of beer
we take one down and pass it around…
86 bottles of beer on the wall

86 bottles of beer on the wall,
86 bottles of beer
we take one down and pass it around…
85 bottles of beer on the wall

85 bottles of beer on the wall,
85 bottles of beer
we take one down and pass it around…
84 bottles of beer on the wall

84 bottles of beer on the wall,
84 bottles of beer
we take one down and pass it around…
83 bottles of beer on the wall

83 bottles of beer on the wall,
83 bottles of beer
we take one down and pass it around…
82 bottles of beer on the wall

82 bottles of beer on the wall,
82 bottles of beer
we take one down and pass it around…
81 bottles of beer on the wall

81 bottles of beer on the wall,
81 bottles of beer
we take one down and pass it around…
80 bottles of beer on the wall

80 bottles of beer on the wall,
80 bottles of beer
we take one down and pass it around…
79 bottles of beer on the wall

79 bottles of beer on the wall,
79 bottles of beer
we take one down and pass it around…
78 bottles of beer on the wall

78 bottles of beer on the wall,
78 bottles of beer
we take one down and pass it around…
77 bottles of beer on the wall

77 bottles of beer on the wall,
77 bottles of beer
we take one down and pass it around…
76 bottles of beer on the wall

76 bottles of beer on the wall,
76 bottles of beer
we take one down and pass it around…
75 bottles of beer on the wall

75 bottles of beer on the wall,
75 bottles of beer
we take one down and pass it around…
74 bottles of beer on the wall

74 bottles of beer on the wall,
74 bottles of beer
we take one down and pass it around…
73 bottles of beer on the wall

73 bottles of beer on the wall,
73 bottles of beer
we take one down and pass it around…
72 bottles of beer on the wall

72 bottles of beer on the wall,
72 bottles of beer
we take one down and pass it around…
71 bottles of beer on the wall

71 bottles of beer on the wall,
71 bottles of beer
we take one down and pass it around…
70 bottles of beer on the wall

70 bottles of beer on the wall,
70 bottles of beer
we take one down and pass it around…
69 bottles of beer on the wall

69 bottles of beer on the wall,
69 bottles of beer
we take one down and pass it around…
68 bottles of beer on the wall

68 bottles of beer on the wall,
68 bottles of beer
we take one down and pass it around…
67 bottles of beer on the wall

67 bottles of beer on the wall,
67 bottles of beer
we take one down and pass it around…
66 bottles of beer on the wall

66 bottles of beer on the wall,
66 bottles of beer
we take one down and pass it around…
65 bottles of beer on the wall

65 bottles of beer on the wall,
65 bottles of beer
we take one down and pass it around…
64 bottles of beer on the wall

64 bottles of beer on the wall,
64 bottles of beer
we take one down and pass it around…
63 bottles of beer on the wall

63 bottles of beer on the wall,
63 bottles of beer
we take one down and pass it around…
62 bottles of beer on the wall

62 bottles of beer on the wall,
62 bottles of beer
we take one down and pass it around…
61 bottles of beer on the wall

61 bottles of beer on the wall,
61 bottles of beer
we take one down and pass it around…
60 bottles of beer on the wall

60 bottles of beer on the wall,
60 bottles of beer
we take one down and pass it around…
59 bottles of beer on the wall

59 bottles of beer on the wall,
59 bottles of beer
we take one down and pass it around…
58 bottles of beer on the wall

58 bottles of beer on the wall,
58 bottles of beer
we take one down and pass it around…
57 bottles of beer on the wall

57 bottles of beer on the wall,
57 bottles of beer
we take one down and pass it around…
56 bottles of beer on the wall

56 bottles of beer on the wall,
56 bottles of beer
we take one down and pass it around…
55 bottles of beer on the wall

55 bottles of beer on the wall,
55 bottles of beer
we take one down and pass it around…
54 bottles of beer on the wall

54 bottles of beer on the wall,
54 bottles of beer
we take one down and pass it around…
53 bottles of beer on the wall

53 bottles of beer on the wall,
53 bottles of beer
we take one down and pass it around…
52 bottles of beer on the wall

52 bottles of beer on the wall,
52 bottles of beer
we take one down and pass it around…
51 bottles of beer on the wall

51 bottles of beer on the wall,
51 bottles of beer
we take one down and pass it around…
50 bottles of beer on the wall

50 bottles of beer on the wall,
50 bottles of beer
we take one down and pass it around…
49 bottles of beer on the wall

49 bottles of beer on the wall,
49 bottles of beer
we take one down and pass it around…
48 bottles of beer on the wall

48 bottles of beer on the wall,
48 bottles of beer
we take one down and pass it around…
47 bottles of beer on the wall

47 bottles of beer on the wall,
47 bottles of beer
we take one down and pass it around…
46 bottles of beer on the wall

46 bottles of beer on the wall,
46 bottles of beer
we take one down and pass it around…
45 bottles of beer on the wall

45 bottles of beer on the wall,
45 bottles of beer
we take one down and pass it around…
44 bottles of beer on the wall

44 bottles of beer on the wall,
44 bottles of beer
we take one down and pass it around…
43 bottles of beer on the wall

43 bottles of beer on the wall,
43 bottles of beer
we take one down and pass it around…
42 bottles of beer on the wall

42 bottles of beer on the wall,
42 bottles of beer
we take one down and pass it around…
41 bottles of beer on the wall

41 bottles of beer on the wall,
41 bottles of beer
we take one down and pass it around…
40 bottles of beer on the wall

40 bottles of beer on the wall,
40 bottles of beer
we take one down and pass it around…
39 bottles of beer on the wall

39 bottles of beer on the wall,
39 bottles of beer
we take one down and pass it around…
38 bottles of beer on the wall

38 bottles of beer on the wall,
38 bottles of beer
we take one down and pass it around…
37 bottles of beer on the wall

37 bottles of beer on the wall,
37 bottles of beer
we take one down and pass it around…
36 bottles of beer on the wall

36 bottles of beer on the wall,
36 bottles of beer
we take one down and pass it around…
35 bottles of beer on the wall

35 bottles of beer on the wall,
35 bottles of beer
we take one down and pass it around…
34 bottles of beer on the wall

34 bottles of beer on the wall,
34 bottles of beer
we take one down and pass it around…
33 bottles of beer on the wall

33 bottles of beer on the wall,
33 bottles of beer
we take one down and pass it around…
32 bottles of beer on the wall

32 bottles of beer on the wall,
32 bottles of beer
we take one down and pass it around…
31 bottles of beer on the wall

31 bottles of beer on the wall,
31 bottles of beer
we take one down and pass it around…
30 bottles of beer on the wall

30 bottles of beer on the wall,
30 bottles of beer
we take one down and pass it around…
29 bottles of beer on the wall

29 bottles of beer on the wall,
29 bottles of beer
we take one down and pass it around…
28 bottles of beer on the wall

28 bottles of beer on the wall,
28 bottles of beer
we take one down and pass it around…
27 bottles of beer on the wall

27 bottles of beer on the wall,
27 bottles of beer
we take one down and pass it around…
26 bottles of beer on the wall

26 bottles of beer on the wall,
26 bottles of beer
we take one down and pass it around…
25 bottles of beer on the wall

25 bottles of beer on the wall,
25 bottles of beer
we take one down and pass it around…
24 bottles of beer on the wall

24 bottles of beer on the wall,
24 bottles of beer
we take one down and pass it around…
23 bottles of beer on the wall

23 bottles of beer on the wall,
23 bottles of beer
we take one down and pass it around…
22 bottles of beer on the wall

22 bottles of beer on the wall,
22 bottles of beer
we take one down and pass it around…
21 bottles of beer on the wall

21 bottles of beer on the wall,
21 bottles of beer
we take one down and pass it around…
20 bottles of beer on the wall

20 bottles of beer on the wall,
20 bottles of beer
we take one down and pass it around…
19 bottles of beer on the wall

19 bottles of beer on the wall,
19 bottles of beer
we take one down and pass it around…
18 bottles of beer on the wall

18 bottles of beer on the wall,
18 bottles of beer
we take one down and pass it around…
17 bottles of beer on the wall

17 bottles of beer on the wall,
17 bottles of beer
we take one down and pass it around…
16 bottles of beer on the wall

16 bottles of beer on the wall,
16 bottles of beer
we take one down and pass it around…
15 bottles of beer on the wall

15 bottles of beer on the wall,
15 bottles of beer
we take one down and pass it around…
14 bottles of beer on the wall

14 bottles of beer on the wall,
14 bottles of beer
we take one down and pass it around…
13 bottles of beer on the wall

13 bottles of beer on the wall,
13 bottles of beer
we take one down and pass it around…
12 bottles of beer on the wall

12 bottles of beer on the wall,
12 bottles of beer
we take one down and pass it around…
11 bottles of beer on the wall

11 bottles of beer on the wall,
11 bottles of beer
we take one down and pass it around…
10 bottles of beer on the wall

10 bottles of beer on the wall,
10 bottles of beer
we take one down and pass it around…
9 bottles of beer on the wall

9 bottles of beer on the wall,
9 bottles of beer
we take one down and pass it around…
8 bottles of beer on the wall

8 bottles of beer on the wall,
8 bottles of beer
we take one down and pass it around…
7 bottles of beer on the wall

7 bottles of beer on the wall,
7 bottles of beer
we take one down and pass it around…
6 bottles of beer on the wall

6 bottles of beer on the wall,
6 bottles of beer
we take one down and pass it around…
5 bottles of beer on the wall

5 bottles of beer on the wall,
5 bottles of beer
we take one down and pass it around…
4 bottles of beer on the wall

4 bottles of beer on the wall,
4 bottles of beer
we take one down and pass it around…
3 bottles of beer on the wall

3 bottles of beer on the wall,
3 bottles of beer
we take one down and pass it around…
2 bottles of beer on the wall

2 bottles of beer on the wall,
2 bottles of beer
we take one down and pass it around…
1 bottle of beer on the wall

1 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.

4 Comments »

  1. Senrab wrote,

    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

  2. Max wrote,

    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

  3. Max wrote,

    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

  4. Senrab wrote,

    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

Leave a comment

RSS feed for comments on this post. TrackBack URI

Powered by WordPress