text:
99 Bottles of beer, 99 languages
The goal is to write a simple "99 Bottles of Beer" program .. that is valid in at least 2 distinct languages (e.g. not Python 2 and Python 3). It must be a complete file that will run or compile.
Interesting answers should be up-voted, but compactness also counts. (Of course, language diversity is the main goal.)
EDIT: I would say that to have normal C code that does the same thing with C++ and Objective-C counts as derivative. The code should do clever stuff so that lines have different meanings with different languages.

@m.buettner I wouldn't call derivatives of HQ9 distinct though.

@m.buettner I very deliberately chose 99 Bottles because print statements/functions are so similar. Also, I agree with that HQ9 derivatives are not distinct.

maybe change this to a [tag:code-challenge] where the highest number of languages wins? or a [tag:popularity-contest]?

@professorfish OK, I think that a popularity-contest might be good anyway to resolve issues like C / C++

I object to the duplicate mark! I saw the hello world question, but it is boring because too many languages use print("Hello World"). A loop makes the whole thing a lot more interesting.

Damn, time to brush up on my Whitespace!

99 logical bugs in the code / 99 logical bugs / Take one down, patch it around / 117 logical bugs in the code...

Is for example coffeescript/typescript and javascript ok?

@Knerd See my note at the bottom of the question. I don't even know coffeescript or typescript at all, but as long as it isn't just a bog standard X program that works exactly the same way in Y because they are so similar, it should be OK :)

I think I'll accept the highest voted answer if I don't get any new ones for at least a week. Any objections?

@MadTux TypeScript and CoffeeScript crosscompile to JavaScript ^^ thats why I ask :)

99 threading bugs in the code / 98 threading bugs / 97 threading bugs in the code / take one down, patch it around

@Timwi  Do  it. Really.

This gives a brand new meaning to "Write once, compile/run anywhere"

Funny, when I first read the title, I thought the code had to produce the rhyme in global languages (e.g,. English and French).

PHP seems like a bit of a cheat since they hacked loads of other languages' syntaxes into it, there is a reason it's in nearly every answer!

C, Perl, PHP, Python, Ruby
Update: I've put together a jsfiddle that helps visualize the path through the code for each of the five languages: http://jsfiddle.net/wK6bD/4/embedded/result/
An alternative version, that removes all comments, and compresses all insignificant strings, regex and replacement patterns: http://jsfiddle.net/wK6bD/5/embedded/result/
And I saved a byte while I was at it. Turns out C had an unnecessary semi-colon ;)
#/*<?php ob_clean();"
s='''*/include<stdio.h>
main($y){char*$s,$t[3],$u[3]/*';'''
def printf(a,*b):import sys;sys.stdout.write(a%b)
for y in range(99,-1,-1):
  '''
99.downto(0){|y|$y=y;"/*=;#*/;
for($y=100;$y--;){
  #/*"
  $u=(($t=$y)+99)%100;'*/
  sprintf($t,"%d",$y);sprintf($u,"%d",($y+99)%100);
  #//';#'''
  printf("%s bottle%s of beer on the wall, %s bottle%s of beer.\n%s",
    #/* -- THIS LINE ENDS WITH CR --
    y//1or'No more','s'[:y!=1],y or'no more','''s*/
    +$y>0?$t:"No more",$s=$y!=1?"s":"",$y>0?$t:"no more",$s,$y>0?
    #//'''[:y!=1],y and'''
    "Take one down and pass it around":
    #//'''[6:38]or
    "Go to the store and buy some more");
  printf(", %s bottle%s of beer on the wall.\n\n",
    #/* -- THIS LINE ENDS WITH CR --
    y//1-1and~-y%100or'no more','''s*/
    +$y!=1?$u:"no more",$y!=2?"s":"");}
    #/*?><?php "
    %w;q(*/
    }//";#'''[:y!=2])

Please Note: This file needs to be saved with mixed line endings. All lines should be terminated with LF (char 10, a.k.a. unix-style), except for the two lines marked -- THIS LINE ENDS WITH CR --, which should be terminated with CR (char 13, a.k.a. mac-style). I recommend using notepad++, or other text editor which allows you to manually edit line endings.
For PHP, it is assumed that output_buffering is enabled. According to the documentation, this is hardcoded to be Off when using the CLI, regardless of ini settings, so it needs to be explicitly (re)enabled:
$ php -d output_buffering=4096 bottles.pl.php.py.rb.c

This enables a 4kb buffer, which is the 'recommended' value. If you're using one of the supplied inis this will already be set, so it should run as-is from any web server.
The total file size is 823 bytes (not counting the comments about the line endings), an average of 164.6 bytes per language.
Versions Tested
C - gcc 4.8.1, cl 15.00
Perl - 5.16.2
PHP - 5.4.16
Python - 2.7.6, 3.3.4
Ruby - 1.8.7, 1.9.3
Output is identical for all five languages (see below).

Perl, PHP
<?php '>#'
;for($i='no more';100>($a="$i bottle".(2^($i+=1)?'s':'').' of beer');$o="
Take one down and pass it around, $b.

".ucfirst($f="$b, $a.$o")){$b="$a on the wall";}print"$f
Go to the store and buy some more, $b.";

I like this one because of how short it is, so I'm leaving it. It also demonstrates how much of a Perl-wanna-be PHP is ;)
Sample Usage:
$ perl bottles
99 bottles of beer on the wall, 99 bottles of beer.
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.
Take one down and pass it around, 97 bottles of beer on the wall.

...

2 bottles of beer on the wall, 2 bottles of beer.
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.
Take one down and pass it around, no more bottles of beer on the wall.

No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.

My new favourite. If I wasn't so selfish, I would give you a bounty. I would change Python to Python 2, though.

@MadTux Now Python 3 compatible.

... or that, I guess x)

Mixed line endings? You are an evil, twisted, sadistic person. +1

@primo In a bit over 23 hours, you will be receiving a 50 point bounty. I guess I'm not so selfish after all.

@MadTux If you have any feature requests for the fiddles, let me know. ;)

@primo Yeah! I totally think that your answer deserves the bounty. It's very complex and clever. The Perl/PHP thing is awesome, but I think PHP wants to be Perl and not the opposite :)

@core1024 I agree. That's acually what I meant to convey (PHP is a Perl-wanna-be => PHP wishes it  were Perl) ;)

@primo Sorry. It's my bad English here.

I'm not experienced enough for code golf, but I created an account to say as an interface designer, I like the visual implementation of the first JS Fiddle. Who knew you code geeks could make things both work and look pretty. +1

Since the js code doesn't really matter, linking to http://jsfiddle.net/wK6bD/1/embedded/result/ gives a better user experience

@slebetman Thanks for the suggestion, I wasn't aware that was possible.

C + Ruby
#define do {
#define then {
#define end }
#define def int
#define nil {
#define print(a,b) printf("%d%s", a, b)

def bottle(i)
    nil

    print(i, (i==1)?" bottle":" bottles");
end

i=0;

def main()
    nil

    i = 99;
    while(i>=1) do
        bottle(i);
        puts(" of beer on the wall, ");
        bottle(i);
        puts(" of beer.\nTake one down and pass it around,");
        if(i==1) then
            break;
        end
        bottle(i-1);
        puts(" of beer on the wall.");
        puts("");
        i-=1;
    end
    puts("no more bottles of beer on the wall.");
    puts("");
    puts("No more bottles of beer on the wall,");
    puts("no more bottles of beer.");
    puts("Go to the store and buy some more,");
    puts("99 bottles of beer on the wall.");

end

#if 0
main
#endif

They're actually pretty similar once you normalize the syntax! :P

This is brilliant.

This is also valid C++ I think.

This makes me wonder how many languages could be implemented entirely with C compiler directives.

@Vortico: sadly, no. The C code here declares variables and arguments without naming their types, which is (barely) legal in C, but illegal in C++.

JavaScript (SpiderMonkey/NodeJS), Perl, PHP, Ruby
EDIT: Added and Ruby
EDIT 2:

Prints a title;
Consistent output in all languages;
No warnings.

The Code:
//#<?php
;
$i = 99;
$php = ![];
$o = 'of beer';
$ruby = 0x0 != '';
$t = $php ? '' : '//#';
$js = !$ruby && 1 + '0' == '10';
$s = 'Go to the store and buy some more, 99 bottles of beer on the wall.';
$c = 'print($t ." 99 BOTTLES OF BEER #\\\\\\\\\\n"); while($i>=0) {  $j = $i; $k = ($i-1); $b = $i!=1 ? " bottles " : " bottle "; print("\\n" .($i > 0 ? $j : "No more") .$b .$o ." on the wall, " .($i > 0 ? $j : "no more") .$b .$o .".\\n" .($i > 0 ? "Take one down and pass it around, " .($i > 1 ? $k : "no more") ." bottle" .($i != 2 ? "s " : " ") .$o ." on the wall." : $s) ."\\n"); $i-=1; }';
$c = $js ? $c.replace('."\\n"','').replace(RegExp(' [.]','g'),'+').replace(RegExp('print','g'), typeof(console) != 'undefined' ? 'console.log' : 'print') : $c;
$c = $ruby ? $c.gsub('{',"do\n").gsub('}',"\nend").gsub(' .',' << ').gsub('$i;','$i.to_s;').gsub('1)','1).to_s') : $c;
eval($c);

The output:
D:\>node polyglot
//# 99 BOTTLES OF BEER #\\

99 bottles of beer on the wall, 99 bottles of beer.
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.
Take one down and pass it around, 97 bottles of beer on the wall.
* * *
2 bottles of beer on the wall, 2 bottles of beer.
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.
Take one down and pass it around, no more bottles of beer on the wall.

No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.

My favourite up till now :) It looks really clever, although I don't speak any of the languages.

Why does spidermoneky accept that as JS :O

@DavidMulder Because the line just above the for loop turns it into valid JS! All .'s become +'s. Oh my.

If you use a HQ9+ specification that only includes capitals (so the <?php doesn't output Hello World), you could add another language by only using the 9 once

@professorfish Easy enough: $i = 9*11;

@primo or just 98+1,but I think that this is silly :) I added Ruby instead.

"spidermonkey-1.8.5.zip is harmful and has been blocked by Chromium." o.O;;

I don't use Chrom(e|ium) so I can't verify this, but I'll remove the link and rescan my PC with another AV. Feel free to apt-get install spidermonkey-bin and use smjs as an alternative in Linux.

I supposed there's a good argument to be made for always building from source.

Now that you have fixed it, +1 for the impressive work.

C++ and PHP
I thought I'd give it a go.
EDIT: Compacted it a bit.
//99 BOTTLES OF BEER\\

<?PHP function cat($a,$b){return $a.$b; }/*
#include<iostream>
#include<string>
#define echo(a) std::cout << a
#define cat(a,b) a< 0 ){
    echo(cat(cat($bottles, $bottlesname ), " of beer on the wall, "));
    echo(cat(cat(cat(cat($bottles, $bottlesname ), " of beer."), $endline), "Take one down and pass it around, "));

    $bottlesname = --$bottles==1?" bottle":" bottles";
    if( $bottles == 0 )
        echo("no more");
    else
        echo($bottles);
    echo(cat(cat(cat($bottlesname," of beer on the wall."),$endline),$endline));
}
echo(cat("No more bottles of beer on the wall, no more bottles of beer.",$endline));
echo(cat(cat("Go to the store and buy some more, 99 bottles of beer on the wall.",$endline),$endline));;
}

This will compile fine as C++ and it will spit out some nice HTML if run through PHP. Either way, the output is:
//99 BOTTLES OF BEER\\

99 bottles of beer on the wall, 99 bottles of beer.
Take one down, pass it around, 98 bottles of beer on the wall.

98 bottles of beer on the wall, 98 bottles of beer.
Take one down, pass it around, 97 bottles of beer on the wall.

...

3 bottles of beer on the wall, 3 bottles of beer.
Take one down, pass it around, 2 bottles of beer on the wall.

2 bottles of beer on the wall, 2 bottles of beer.
Take one down, pass it around, 1 bottle of beer on the wall.

1 bottle of beer on the wall, 1 bottle of beer.
Take one down and pass it around, no more bottles of beer on the wall.

No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.

Haskell, PHP
Combining a functional and an imperative language!

{-0;}
function cast($x){ return $x; }
function bottle($n){
/*-}
import Prelude hiding ((.)){-*///-};(*/) = ($){-
/*-}
(.) = (++)
cast f = show $ f id
f :: Int -> [String]
f n = id */ return (cast($n) . " bottles of beer on the wall, " . cast($n) . "  bottles of beer.\nTake one down and pass it around, " . cast($n-1) . " bottles of beer on the wall.\n\n");
{-0;}};echo"
";for($x=99;$x>1;$x-=1)echo bottle($x);echo/*-}
main = (\x->putStr$(concat$[99,98..2]>>=f)++x)*/"1 bottle of beer on the wall, 1 bottle of beer.\nTake one down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n\n";

In Haskell, I defined the function */ that made working with PHP comments a lot easier!

Brainfuck, English
Source for BF: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
++>+>++>>+>>>++++++++++[->+>+>++++++++++<<<]>>>>++++++++++[->+++++>++++++++++>++
+++++++++>++++++++>++++++++>+++>++++>+<<<<<<<<]+>--+>+++>++++++>--+>+++++>+++>++
+++>+>+>+>+>++>+>+>++[-<]<<<<<<<[->>[>>>>>>>>[<<<<<<<[->[-]>>>>>>>>>>>.<----.>>>
.<<<--.++.+++.+<-.+<<+<<<<<<<<]+>[-<[-]>>>>>[>>>+<<<<+<+<+>>>-]<<<[->>>+<<<]>[>>
>>>>+<<<<<<-]>>>>>[[-]>.<]<<<<[>>>>>-<<<<<-]>>[<<+<+<+>>>>-]<<<<[->>>>+<<<<]>[>>
>>>>+<<<<<<-]>>>>>>.<<<<<[>>>>>-<<<<<-]>>>[-<<<+<+>>>>]<<<<[->>>>+<<<<]>-[[-]>>>
>+<<<<]<<<]+>>>>>>>>>>>>>.<<<<----.>----.+++++..-<++++++++++.-------.<<[[-]>>>.<
<<]>>>>>>.<<<----.<+.>>>>.<<<<----.+++..+>+++.+[>]+>+>[->+<<-<-<<<.<<<----.-.>>>
.<<<++++++.<++.---.>>>>.<<<+++.<----.+++++++++++..------>---->------------------
-------------->>>++.-->..>>>]>>>[->[-]<<<<<<<[<]<[-]>>[>]>>>>>]+>[-<[-]<<<<[->>[
->+<<<<-<<<.<<<----.-.>>>.<<<++++++.<++.---.>>>>.<<<+++.<----.+++++++++++..-----
->---->++++++++++++++++++++++++++++++++>>>.<.>>>>>>]<<]<[->>>>[-<<+<<<<++.-->.[<
]<<<<<<<<[->[-]<]+>[-<[-]>>>>>>>>>>>>>.<<<-----.++++++++++.------.>>>>.<<<----.-
.<.>>>>.<<<<-.>+.++++++++.---------.>>>.<<<<---.>.<+++.>>>>.<<<++.<---.>+++..>>>
.<<<<++++++++.>+.>>>.<<<<--------.>--.---.++++++.-------.<+++.++>+++++>>>>.<.[<]
<<<<<<<]+>>>>>>-<<<+>>[<<[-]<+<+>>>>-]<<<<[>-<[-]]>[->>>+<<<]>[->->+++++++++<<]>
>>>>[>]>>>>]<<<<]>>>>>>]+<<<<<<<[<]<]+<+<<<<<<+<-]>>>>>>>>>>[>]>>>>>[->[-]<]+>[-
<[-]<<<<<<<<<-------------.<<----.>>>.<<<+++++.-----.>>>.<<<+++++.<++.---.>>>>.<
<<-.+.-----.+++.<.>>>>.<<<<----.>----.<+++.>>>>.<<<<--.>+++++++.++++.>>>.<<<----
--.----.--.<+++.>>>>.<<<.++.+++.+<.+>>>>>.<.>>>>>>>>>]+<[-]+<[-]<[-]<[-]+<<<[<]<
[-]<[-]<[-]<[-]++++++++++[->+>+>++++++++++<<<]>->->-<<<<<<[-]+<[-]<+<<]

[99 bottles of beer on the wall, 99 bottles of beer.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Take one down and pass it around, no more bottles of beer on the wall.

No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.]

If you want to really cheat, it's also PHP!

Won't the dots and comma's cause problems when running as Brainf***?

Absolutely. Those , and . will cause problems. Fix this by adding [ before the English part, and ] at the end.

I tested with beef and they don't cause problems.

, reads a NULL character (U+0000).

PHP and 아희(Aheui)
<?php
$b = 99;
while(true) {
    echo ($b==0 ? "No more" : $b)." bottle".($b==1 ? "" : "s")." of beer on the wall, ".($b==0 ? "no more" : $b)." bottle".($b==1 ? "" : "s")." of beer.\n";
    if($b == 0) {
        echo "Go to the store and buy some more";
        $b = 99;
    }
    else {
        echo "Take one down and pass it around";
        $b--;
    }
    echo ", ".($b==0 ? "no more" : $b)." bottle".($b==1 ? "" : "s")." of beer on the wall.\n\n";
    if($b == 99) break;
}
/*
발발따밤따박박나타삭밤밣따산박밦따밞뚜
우어어어어어어어어어어어어어어어어어어
아우
오사뺘뿌처밞밞따받타맣산빠받다맣삭빠맣산빠박박나다맣빠받다맣빠밦다맣빠밝타맣수
오우어명여어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어
오삭빠맣산빠발타발타맣빠받다맣빠밣다빠맣맣빠맣빠밝타맣수
오우어어어어어어어어어어어어어어멓더벍뻐선처우텨너벅벅뻐
오우어어어어어어어어어어어어어어어어어어어어어
오아삭빠맣산빠받다맣빠밦타맣삭빠맣산빠발타발타맣빠밝타빠맣맣빠밦다맣삭빠맣산빠받다맣빠박다뭏
오뭏뻐멓더벖더벖뻐석멓뻐멓뻐멓터벖터벌뻐멓더벖더벌뻐선멓뻐석멓터벍뻐멓터범뻐멓더벓뻐선멓뻐석
오사뺘뿌처산빠박다맣빠받다맣삭빠맣산빠박박나다맣빠받다맣빠밦다맣빠밝타맣수
오우어명여어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어
오삭빠맣산빠발타발타맣빠받다맣빠밣다빠맣맣빠맣빠밝타맣수
오우어어어어어어어어어어어어어어멓더벍뻐선처우텨너벅벅뻐
오우어어어어어어어어어어어어어어어어어어어어어
오삭빠맣산빠받다맣빠밦타맣삭빠맣산빠발타발타맣빠밝타빠맣맣빠밦다맣밦밝따밤다맣발발다뭏
오우어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어
오사뺘우차박밦따밝따맣산빠발타밦타맣빠박박나타맣빠밝타맣삭빠맣산빠받다맣빠박다맣빠밝타뮿
오ㅇㅇ아아밣밣따밝다맣산빠받다맣삭빠맣산빠밣다맣빠받다맣삭빠맣산빠밣다맣빠밤타맣빠밝타뮿
오뮿뻐석멓터벓뻐멓더벅뻐멓터벖터벌뻐선멓뻐석멓더벅뻐멓더벖더벌뻐멓더벋뻐멓터벓뻐선멓뻐석
오유멓터벓뻐멓더벅뻐멓터벖터벌뻐선멓뻐석멓터벍뻐멓더벖뻐멓더벋뻐멓더벓뻐멓더벍뻐선멓뻐석
오삭산빠밤다맣빠발타밦타맣빠밝다빠맣맣삭빠맣산빠받타맣빠밣다맣삭빠뮿
초삭빠맣산빠발타발타맣빠밞다빠맣밤다맣삭빠맣산빠밝다맣빠받다맣빠박박나다맣빠밝타뮿
희유어어어어어멓터벓뻐멓더벅뻐멓더벎뻐멓더벋뻐멓더벖뻐멓터벖터벌뻐선
툐우어어어어어어어어어어어어어어어어어멓터벍뻐멓더벖뻐멓더벅멓뻐더너벅벅뻐선멓뻐석
토삭빠밦다밦다맣빠뭏
노우터너벅벅처불뼈서
복우더터너벅벅뱔뗘따볌
복사뺘뿌처산빠박다맣빠받다맣삭빠맣산빠박박나다맣빠받다맣빠밦다맣빠밝타맣수
또우어명여어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어어
봄삭빠맣산빠발타발타맣빠받다맣빠밣다빠맣맣빠맣빠밝타맣수
또우어어어어어어어어어어어어어어멓더벍뻐선처우텨너벅벅뻐
볼우어어어어어어어어어어어어어어어어어어어어어
볼아삭빠맣산빠받다맣빠밦타맣삭빠맣산빠발타발타맣빠밝타빠맣맣빠밦다맣삭빠맣산빠받다맣빠박다뭏
뽀불벌멓더벍더벍뻐석멓뻐멓뻐멓터벖터벌뻐멓더벖더벌뻐선멓뻐석멓터벍뻐멓터범뻐멓더벓뻐선멓뻐석
소댜몋빠몋

Aheui was tested with naheui.
I know it's cheating, but it works anyway.

This will work in Python 3 and in Julia.
[[print(b, " bottles of beer on the wall, ", b, " bottles of beer.\nTake one down and pass it around, ", b-1, " bottles of beer on the wall.\n" ) for b in l] for l in [[12 * i + j + 4 for j in [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]] for i in [7, 6, 5, 4, 3, 2, 1, 0]]]
print("3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n")
print("2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n")
print("1 bottle of beer on the wall, 1 bottle of beer.\nTake one down and pass it around, no more bottles of beer on the wall.\n")
print("No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n")

BrainFuck and Python 2
This will compile and run under CPython2.7 (and probably others) as well as a BrainFuck interpreter.  These are two distinct languages, with very little overlap, and this answer is totally cheating.
# Thanks to Raphael Bois for the code (taken from http://goo(dot)gl/GddKtS)
# ++>+>++>>+>>>:++++++++++[->+>+>++++++++++<<<]>>>>++++++++++[->+++++>++++++++++>+++++++++++>++++++++>++++++++>+++>++++>+<<<<<<<<]+>--+>+++>++++++>--+>+++++>+++>+++++>+>+>+>+>++>+>+>++[-<]<<<<<<<[->>[>>>>>>>>[<<<<<<<[->[-]>>>>>>>>>>>.<----.>>>.<<<--.++.+++.+<-.+<<+<<<<<<<<]+>[-<[-]>>>>>[>>>+<<<<+<+<+>>>-]<<<[->>>+<<<]>[>>>>>>+<<<<<<-]>>>>>[[-]>.<]<<<<[>>>>>-<<<<<-]>>[<<+<+<+>>>>-]<<<<[->>>>+<<<<]>[>>>>>>+<<<<<<-]>>>>>>.<<<<<[>>>>>-<<<<<-]>>>[-<<<+<+>>>>]<<<<[->>>>+<<<<]>-[[-]>>>>+<<<<]<<<]+>>>>>>>>>>>>>.<<<<----.>----.+++++..-<++++++++++.-------.<<[[-]>>>.<<<]>>===>>>>.<<<----.<+.>>>>.<<<<----.+++..+>+++.+[>]+>+>[->+<<-<-<<<.<<<----.-.>>>.<<<++++++.<++.---.>>>>.<<<+++.<----.+++++++++++..------>---->-------------------------------->>>++.-->..>>>]>>>[->[-]<<<<<<<[<]<[-]>>[>]>>>>>]+>[-<[-]<<<<[->>[->+<<<<-<<<.<<<----.-.>>>.<<<++++++.<++.---.>>>>.<<<+++.<----.+++++++++++..------>---->++++++++++++++++++++++++++++++++>>>.<.>>>>>>]<<]<[->>>>[-<<+<<<<++.-->.[<]<<<<<<<<[->[-]<]+>[-<[-]>>>>>>>>>>>>>.<<<-----.++++++++++.------.>>>>.<<<----.-.<.>>>>.<<<<-.>+.++++++++.---------.>>>.<<<<---.>.<+++.>>>>.<<<++.<---.>+++..>>>.<<<<++++++++.>+.>>>.<<<<--------.>--.---.++++++.-------.<+++.++>+++++>>>>.<.[<]<<<<<<<]+>>>>>>-<<<+>>[<<[-]<+<+>>>>-]<<<<[>-<[-]]>[->>>+<<<]>[->->+++++++++<<]>>>>>[>]>>>>]<<<<]>>>>>>]+<<<<<<<[<]<]+<+<<<<<<+<-]>>>>>>>>>>[>]>>>>>[->[-]<]+>[-<[-]<<<<<<<<<-------------.<<----.>>>.<<<+++++.-----.>>>.<<<+++++.<++.---.>>>>.<<<-.+.-----.+++.<.>>>>.<<<<----.>----.<+++.>>>>.<<<<--.>+++++++.++++.>>>.<<<------.----.--.<+++.>>>>.<<<.++.+++.+<.+>>>>>.<.>>>>>>>>>]+<[-]+<[-]<[-]<[-]+<<<[<]<[-]<[-]<[-]<[-]++++++++++[->+>+>++++++++++<<<]>->->-<<<<<<[-]+<[-]<+<<]

dot = chr(46)
comma = chr(44)

for x in range(99, 2, -1):
    print """%d bottles of beer on the wall%s %d bottles of beer%s
Take one down and pass it around%s %d bottles of beer on the wall%s
""" % (x, comma, x, dot, comma, x - 1, dot)

print """2 bottles of beer on the wall%s 2 bottles of beer%s
Take one down and pass it around%s 1 bottle of beer on the wall%s

1 bottle of beer on the wall%s 1 bottle of beer%s
Take one down and pass it around%s no more bottles of beer on the wall%s

No more bottles of beer on the wall%s no more bottles of beer%s
Go to the store and buy some more%s 99 bottles of beer on the wall%s""" % (comma, dot, comma, dot, comma, dot, comma, dot, comma, dot, comma, dot)

The second line is the BrainFuck-run code.  BrainFuck interpreters should ignore the rest of the code, and online interpreters will run it.
The rest of the code is the Python code.  Originally it was just going to print the entire set of lyrics, but that's not as fun.  The same was also going to be done for the BrainFuck code, but it blew by the character restrictions in posts (by about 270,000 characters).

I don't think the Python output is correct.

@TheRare You're right, just fixed that (99 was hardcoded)

You just added the brainfuck code as a comment... Disappointed :'(

first you say it's awful then you remark it's from someone else. seriously?

@bebe Looks like I forgot to remove that, my bad.  That was added for the original version (300k characters), but that blew by the restrictions (as noted in the post).

Lua and (F)ASM
S=10;--[[
irp x,<display 'The beer song:',13,10>,<rept 101 d:0\{reverse match,\\{j equ 'If one bottle of beer should accidently fall ...',13,10\\}match,\\{p equ 's'\\}match,\\{q equ \`d\\}match=1,d\\{p equ ''\\}match=0,d\\{q equ 'no'\\}match=0,d\\{j equ 'Who drunk all the beer!',13,10\\}match f,q\\{display q,' bottle',p,' of beer on the wall, ',q,' bottle',p,' of beer,',13,10,j\\}\}>{x}
S=10;]]--
S=10; beer=99
S=10; repeat
S=10; print(beer.." bottles of beer on the wall, "..beer.." bottles")
S=10; beer=beer-1
S=10; print("Take one down and pass it around, "..beer.." bottles of beer on the wall.")
S=10; print()
S=10; until beer==1
S=10; print("1 bottle of beer on the wall, 1 bottle of beer.")
S=10; print("Take one down and pass it around, no more bottles of beer on the wall.")
S=10; print()
S=10; print("No more bottles of beer on the wall, no more bottles of beer.")

Credits to Revolution for the Fasm one liner, even though everything in between line 1 and 3 is ignored by Lua so I could have writte an aribitrary long fasm program in there.
The trick is that in lua you can use a semicolon to separate instruction, to write multiple instructions on the same line, while in fasm a semicolon is the beginning a comment.
S=10; is a valid assignement in both languages, everything else is fairly obvious

J, Python 2.x
I'm a little late to the party, but oh well. Nothing too fancy here, because it's my first time polyglotting. Python is quite impossible to be properly mixed with J; so I basically commented J out in Python and made Python a string literal in J. I'll probably add more languages later.
(''''"_)`(''"_)@.(1) 1
number =: 'No more'"_`('no more'"_)@.([ = 0:)`(":@])@.(] > 0:)
bottle =: number , {.&' bottles'@(8: - =&1@])
verse1 =: 1&bottle, ' of beer on the wall, '"_, bottle, ' of beer.'"_
verse2 =: 'Take one down and pass it around, '"_, bottle@<:, ' of beer on the wall.'"_
verse  =: verse1 ,: verse2
song   =: (<:@[ $: ] , verse@[ , ''"_)`(] , verse1@[)@.([ < 1:)
sing   =: (] song ''"_) , 'Go to the store and buy some more, '"_ , bottle , ' of beer on the wall.'"_
sing ". 2 {. 0 : 0
99''')
print(lambda x:x(x,99,lambda c,w=1,p=0:"%s %s of beer%s"%(c or"nN"[p]+"o more","bottle"+"s"*(c!=1)," on the wall"*w)))(lambda x,c,y:c+1and"%s, %s.\n%s"%(y(c,1,1),y(c,0),"Take one down and pass it around, %s.\n\n"%y(c-1)*(c>0))+x(x,c-1,y)or"Go to the store and buy some more, %s.\n"%y(99)
)

C# + Ruby
using System;

namespace bottles
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 99; i >= 0; i--)
                Console.WriteLine("{0} bottles", i);
        }
    }
}

/*
#!/usr/bin/ruby

99.downto(0){|i|
print i.to_s+" bottles\n"
}

__END__
*/

to run (Ruby):
ruby -x script.cs

This should work in C, C++ and Objective-C. Objective-C++ has not been tested but will probably work:
#include <stdio.h>

int main(void)
{
        int b;

        for (b = 99; b >= 0; b--) {
                switch (b) {
                case 0:
                        printf("No more bottles of beer on the wall, no more bottles of beer.\n");
                        printf("Go to the store and buy some more, 99 bottles of beer on the wall.\n");
                        break;
                case 1:
                        printf("1 bottle of beer on the wall, 1 bottle of beer.\n");
                        printf("Take one down and pass it around, no more bottles of beer on the wall\n");
                        break;
                default:
                        printf("%d bottles of beer on the wall, %d bottles of beer.\n", b, b);
                         printf("Take one down and pass it around, %d %s of beer on the wall.\n" ,b - 1,((b - 1) > 1)? "bottles" : "bottle");
                        break;
                }
        }

        return 0;
}

is valid in at least 2 distinct languages (e.g. not Python2 and Python3) - I would say this absolutely doesn't pass that requirement. OP's call though.

@TheRare You sayin' C++ and C aren't two different languages?

Python2 and Python3 are incompatible, as are C++ and C. Still you can write code that works by itself on both. That makes them NOT distinct. For example, Python, Ruby and C are all distinct from eachother.

Well, you do have a point, I'll leave for the OP to decide then...

@TheRare It just occured to me, but the challenge is to write code that works in both ;)

Both what exactly?

In multiple languages (at least two), and you said, "Still you can write code that works by itself on both. That makes them NOT distinct." So to write an answer according to the rules, you state the languages have to have code that doesn't run in two languages?!;)

Doesn't run or doesn't behave the same way. Yes.

I didn't clarify it in the question/challenge, but I think that is just a bit boring, and it relies on the fact that all those languages derive from C.

This is clearly C only code.  It doesn't use any features of C++, Objective C or Objective C++ that aren't already built into C.  Those other three compilers will compile normal C code.  So, as far as I can tell, this isn't written in C++, ObjC, or ObjC++.  It's just simple enough C that those other compilers will also compile it since they are backwards compatible.

@AdamDavis I think it is unfair to say that this is not C++ or Objective C, neither C++ or Objective C are 100% backward compatible with C, it is possible to write software which will compile in C but not the others. Thus they seem distinct languages, though this answer is a little boring it seems perfectly valid to me... If one cannot use languages which can parse the same code files this challenge is impossible.

@Vality: Actually, Objective-C is a strict superset of C; so it's not (supposed to be) possible to write C code that does not compile cleanly as Objective-C.

@WillihamTotland That is mostly correct, however by virtue of defining some extra keywords it breaks some valid C programs, see this question: http://stackoverflow.com/questions/9941842/if-objective-c-is-a-strict-superset-of-c-then-why-doesnt-this-compile

@Vality: That's a serious edge case, and one that varies with compilers. id used to be a simple typedef; and if LLVM/Clang makes it a built-in type, that could be characterized as a bug.

Ruby, Golfscript
"#{File.write('out.txt', "99 bottles of beer on the wall,
99 bottles of beer.
Take one down, pass it around,
98 bottles of beer on the wall.

98 bottles of beer on the wall,
98 bottles of beer.
Take one down, pass it around,
97 bottles of beer on the wall.

97 bottles of beer on the wall,
97 bottles of beer.
Take one down, pass it around,
96 bottles of beer on the wall.

96 bottles of beer on the wall,
96 bottles of beer.
Take one down, pass it around,
95 bottles of beer on the wall.

95 bottles of beer on the wall,
95 bottles of beer.
Take one down, pass it around,
94 bottles of beer on the wall.

94 bottles of beer on the wall,
94 bottles of beer.
Take one down, pass it around,
93 bottles of beer on the wall.

93 bottles of beer on the wall,
93 bottles of beer.
Take one down, pass it around,
92 bottles of beer on the wall.

92 bottles of beer on the wall,
92 bottles of beer.
Take one down, pass it around,
91 bottles of beer on the wall.

91 bottles of beer on the wall,
91 bottles of beer.
Take one down, pass it around,
90 bottles of beer on the wall.

90 bottles of beer on the wall,
90 bottles of beer.
Take one down, pass it around,
89 bottles of beer on the wall.

89 bottles of beer on the wall,
89 bottles of beer.
Take one down, pass it around,
88 bottles of beer on the wall.

88 bottles of beer on the wall,
88 bottles of beer.
Take one down, pass it around,
87 bottles of beer on the wall.

87 bottles of beer on the wall,
87 bottles of beer.
Take one down, pass it around,
86 bottles of beer on the wall.

86 bottles of beer on the wall,
86 bottles of beer.
Take one down, pass it around,
85 bottles of beer on the wall.

85 bottles of beer on the wall,
85 bottles of beer.
Take one down, pass it around,
84 bottles of beer on the wall.

84 bottles of beer on the wall,
84 bottles of beer.
Take one down, pass it around,
83 bottles of beer on the wall.

83 bottles of beer on the wall,
83 bottles of beer.
Take one down, pass it around,
82 bottles of beer on the wall.

82 bottles of beer on the wall,
82 bottles of beer.
Take one down, pass it around,
81 bottles of beer on the wall.

81 bottles of beer on the wall,
81 bottles of beer.
Take one down, pass it around,
80 bottles of beer on the wall.

80 bottles of beer on the wall,
80 bottles of beer.
Take one down, pass it around,
79 bottles of beer on the wall.

79 bottles of beer on the wall,
79 bottles of beer.
Take one down, pass it around,
78 bottles of beer on the wall.

78 bottles of beer on the wall,
78 bottles of beer.
Take one down, pass it around,
77 bottles of beer on the wall.

77 bottles of beer on the wall,
77 bottles of beer.
Take one down, pass it around,
76 bottles of beer on the wall.

76 bottles of beer on the wall,
76 bottles of beer.
Take one down, pass it around,
75 bottles of beer on the wall.

75 bottles of beer on the wall,
75 bottles of beer.
Take one down, pass it around,
74 bottles of beer on the wall.

74 bottles of beer on the wall,
74 bottles of beer.
Take one down, pass it around,
73 bottles of beer on the wall.

73 bottles of beer on the wall,
73 bottles of beer.
Take one down, pass it around,
72 bottles of beer on the wall.

72 bottles of beer on the wall,
72 bottles of beer.
Take one down, pass it around,
71 bottles of beer on the wall.

71 bottles of beer on the wall,
71 bottles of beer.
Take one down, pass it around,
70 bottles of beer on the wall.

70 bottles of beer on the wall,
70 bottles of beer.
Take one down, pass it around,
69 bottles of beer on the wall.

69 bottles of beer on the wall,
69 bottles of beer.
Take one down, pass it around,
68 bottles of beer on the wall.

68 bottles of beer on the wall,
68 bottles of beer.
Take one down, pass it around,
67 bottles of beer on the wall.

67 bottles of beer on the wall,
67 bottles of beer.
Take one down, pass it around,
66 bottles of beer on the wall.

66 bottles of beer on the wall,
66 bottles of beer.
Take one down, pass it around,
65 bottles of beer on the wall.

65 bottles of beer on the wall,
65 bottles of beer.
Take one down, pass it around,
64 bottles of beer on the wall.

64 bottles of beer on the wall,
64 bottles of beer.
Take one down, pass it around,
63 bottles of beer on the wall.

63 bottles of beer on the wall,
63 bottles of beer.
Take one down, pass it around,
62 bottles of beer on the wall.

62 bottles of beer on the wall,
62 bottles of beer.
Take one down, pass it around,
61 bottles of beer on the wall.

61 bottles of beer on the wall,
61 bottles of beer.
Take one down, pass it around,
60 bottles of beer on the wall.

60 bottles of beer on the wall,
60 bottles of beer.
Take one down, pass it around,
59 bottles of beer on the wall.

59 bottles of beer on the wall,
59 bottles of beer.
Take one down, pass it around,
58 bottles of beer on the wall.

58 bottles of beer on the wall,
58 bottles of beer.
Take one down, pass it around,
57 bottles of beer on the wall.

57 bottles of beer on the wall,
57 bottles of beer.
Take one down, pass it around,
56 bottles of beer on the wall.

56 bottles of beer on the wall,
56 bottles of beer.
Take one down, pass it around,
55 bottles of beer on the wall.

55 bottles of beer on the wall,
55 bottles of beer.
Take one down, pass it around,
54 bottles of beer on the wall.

54 bottles of beer on the wall,
54 bottles of beer.
Take one down, pass it around,
53 bottles of beer on the wall.

53 bottles of beer on the wall,
53 bottles of beer.
Take one down, pass it around,
52 bottles of beer on the wall.

52 bottles of beer on the wall,
52 bottles of beer.
Take one down, pass it around,
51 bottles of beer on the wall.

51 bottles of beer on the wall,
51 bottles of beer.
Take one down, pass it around,
50 bottles of beer on the wall.

50 bottles of beer on the wall,
50 bottles of beer.
Take one down, pass it around,
49 bottles of beer on the wall.

49 bottles of beer on the wall,
49 bottles of beer.
Take one down, pass it around,
48 bottles of beer on the wall.

48 bottles of beer on the wall,
48 bottles of beer.
Take one down, pass it around,
47 bottles of beer on the wall.

47 bottles of beer on the wall,
47 bottles of beer.
Take one down, pass it around,
46 bottles of beer on the wall.

46 bottles of beer on the wall,
46 bottles of beer.
Take one down, pass it around,
45 bottles of beer on the wall.

45 bottles of beer on the wall,
45 bottles of beer.
Take one down, pass it around,
44 bottles of beer on the wall.

44 bottles of beer on the wall,
44 bottles of beer.
Take one down, pass it around,
43 bottles of beer on the wall.

43 bottles of beer on the wall,
43 bottles of beer.
Take one down, pass it around,
42 bottles of beer on the wall.

42 bottles of beer on the wall,
42 bottles of beer.
Take one down, pass it around,
41 bottles of beer on the wall.

41 bottles of beer on the wall,
41 bottles of beer.
Take one down, pass it around,
40 bottles of beer on the wall.

40 bottles of beer on the wall,
40 bottles of beer.
Take one down, pass it around,
39 bottles of beer on the wall.

39 bottles of beer on the wall,
39 bottles of beer.
Take one down, pass it around,
38 bottles of beer on the wall.

38 bottles of beer on the wall,
38 bottles of beer.
Take one down, pass it around,
37 bottles of beer on the wall.

37 bottles of beer on the wall,
37 bottles of beer.
Take one down, pass it around,
36 bottles of beer on the wall.

36 bottles of beer on the wall,
36 bottles of beer.
Take one down, pass it around,
35 bottles of beer on the wall.

35 bottles of beer on the wall,
35 bottles of beer.
Take one down, pass it around,
34 bottles of beer on the wall.

34 bottles of beer on the wall,
34 bottles of beer.
Take one down, pass it around,
33 bottles of beer on the wall.

33 bottles of beer on the wall,
33 bottles of beer.
Take one down, pass it around,
32 bottles of beer on the wall.

32 bottles of beer on the wall,
32 bottles of beer.
Take one down, pass it around,
31 bottles of beer on the wall.

31 bottles of beer on the wall,
31 bottles of beer.
Take one down, pass it around,
30 bottles of beer on the wall.

30 bottles of beer on the wall,
30 bottles of beer.
Take one down, pass it around,
29 bottles of beer on the wall.

29 bottles of beer on the wall,
29 bottles of beer.
Take one down, pass it around,
28 bottles of beer on the wall.

28 bottles of beer on the wall,
28 bottles of beer.
Take one down, pass it around,
27 bottles of beer on the wall.

27 bottles of beer on the wall,
27 bottles of beer.
Take one down, pass it around,
26 bottles of beer on the wall.

26 bottles of beer on the wall,
26 bottles of beer.
Take one down, pass it around,
25 bottles of beer on the wall.

25 bottles of beer on the wall,
25 bottles of beer.
Take one down, pass it around,
24 bottles of beer on the wall.

24 bottles of beer on the wall,
24 bottles of beer.
Take one down, pass it around,
23 bottles of beer on the wall.

23 bottles of beer on the wall,
23 bottles of beer.
Take one down, pass it around,
22 bottles of beer on the wall.

22 bottles of beer on the wall,
22 bottles of beer.
Take one down, pass it around,
21 bottles of beer on the wall.

21 bottles of beer on the wall,
21 bottles of beer.
Take one down, pass it around,
20 bottles of beer on the wall.

20 bottles of beer on the wall,
20 bottles of beer.
Take one down, pass it around,
19 bottles of beer on the wall.

19 bottles of beer on the wall,
19 bottles of beer.
Take one down, pass it around,
18 bottles of beer on the wall.

18 bottles of beer on the wall,
18 bottles of beer.
Take one down, pass it around,
17 bottles of beer on the wall.

17 bottles of beer on the wall,
17 bottles of beer.
Take one down, pass it around,
16 bottles of beer on the wall.

16 bottles of beer on the wall,
16 bottles of beer.
Take one down, pass it around,
15 bottles of beer on the wall.

15 bottles of beer on the wall,
15 bottles of beer.
Take one down, pass it around,
14 bottles of beer on the wall.

14 bottles of beer on the wall,
14 bottles of beer.
Take one down, pass it around,
13 bottles of beer on the wall.

13 bottles of beer on the wall,
13 bottles of beer.
Take one down, pass it around,
12 bottles of beer on the wall.

12 bottles of beer on the wall,
12 bottles of beer.
Take one down, pass it around,
11 bottles of beer on the wall.

11 bottles of beer on the wall,
11 bottles of beer.
Take one down, pass it around,
10 bottles of beer on the wall.

10 bottles of beer on the wall,
10 bottles of beer.
Take one down, pass it around,
9 bottles of beer on the wall.

9 bottles of beer on the wall,
9 bottles of beer.
Take one down, pass it around,
8 bottles of beer on the wall.

8 bottles of beer on the wall,
8 bottles of beer.
Take one down, pass it around,
7 bottles of beer on the wall.

7 bottles of beer on the wall,
7 bottles of beer.
Take one down, pass it around,
6 bottles of beer on the wall.

6 bottles of beer on the wall,
6 bottles of beer.
Take one down, pass it around,
5 bottles of beer on the wall.

5 bottles of beer on the wall,
5 bottles of beer.
Take one down, pass it around,
4 bottles of beer on the wall.

4 bottles of beer on the wall,
4 bottles of beer.
Take one down, pass it around,
3 bottles of beer on the wall.

3 bottles of beer on the wall,
3 bottles of beer.
Take one down, pass it around,
2 bottles of beer on the wall.

2 bottles of beer on the wall,
2 bottles of beer.
Take one down, pass it around,
1 bottle of beer on the wall.

1 bottle of beer on the wall,
1 bottle of beer.
Take one down, pass it around,
No bottles of beer on the wall.

No bottles of beer on the wall,
No bottles of beer.
Go to the store, buy some more,
99 bottles of beer on the wall.")}"

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Fibonacci Sequenze without using loops!
Here is one more "Challenge"! Today i had a meeting with a friend, and mostly we are a little bit crazy.. He bets, that it is not possible to create a Fibonacci Sequence without using loops.
No static output like:
return "1, 2, 3, 5, 8, 13, ..";

GOAL / Requirements

Use only 1 int var
Return the first 5 (or more) numbers
Name your function "fibonacci"
Call no other functions except "fibonacci"
No loops are allowed
Have fun ;)

Scoring
Popularity contest (Most upvotes minus downvotes)
End Date
June 17. 2014
No special language required

Two days for the contest?

^ What do you think is okay?

Typically, 1 week is what is used.

^ thx. Let's raise the end date

When you say "Call no other functions", how do you define "function"? Is addition a function?

Like what? Only recursive calls are allowed - that must be enough.

@Tyralcori It's not. Recursion without any other functions can't do anything.

@Ypnypn sorry, but i think, you are pretty wrong.. Look at MT0's answer ;)

@Tyralcori That answer uses two functions: addition and subtraction.

@Ypnypn okay, this "function" / addition is allowed and important.

@Ypnypn: At least in JavaScript, + is an operator, not a function.

@Dennis my words, but i wanna point this out for Ypnypn

possible duplicate of Fibonacci function or sequence

Recursion is a loop. What does "use only 1 int var" mean a) for use of non-int variables? b) for stack-based languages? c) for languages whose only primitives are combinators?

Kona
fibonacci:{((x-1)(|+\)\1 1)[;1]}

Execute in shell as fibonacci 12 to get the first 12 Fibonacci numbers.
Explanation:

1 1 is a vector
(|+\)\ generates a vector of vectors by summing the elements of the vector
(x-1) reduces 12 to 11 (due to 0 indexing) which is applied to the summation to repeat x-1 times
[;1] returns/prints the second element of each vector in the larger vectors.

If I neglected the [;1] portion, you can see what happens to the vector:
> fib 1
,1 1
> fib 2
(1 1
 2 1)
> fib 3
(1 1
 2 1
 3 2)

And so on.

Explanation for those unfamiliar with this language? :)

@Jwosty: updated

Python
def fibonacci(n):
    if n > 1:
        return fibonacci(n-1) + [(1.618033988749895**n/2.23606797749979 + 0.2) // 1]
    else:
        return [1]

Call fibonacci(n) to generate a list up to the nth element of the Fibonacci series. Sample output of fibonacci(20):
>>> fibonacci(20)
[1, 1.0, 2.0, 3.0, 5.0, 8.0, 13.0, 21.0, 34.0, 55.0, 89.0, 144.0, 233.0, 377.0, 610.0, 987.0, 1597.0, 2584.0, 4181.0, 6765.0]

The correctness is limited by the precision of the double precision floating point.

EXCEL / NUMBERS / $spreadsheetapp
I think I saw this somewhere here, but I can't remember. Nevertheless, credits go to unknown author. Just Fill in the first 2 fields, do a simple addition and then it's time to drag, baby!

http://codegolf.stackexchange.com/a/1844/9498

Oh great, you found it :) Thank you, obviously I didn't look deep enough

I knew it. That's why it was easy for me.

JavaScript (ECMAScript 6)
fibonacci=n=>n<2?[0,1]:[...fibonacci(n-1),fibonacci(n-1)[n-1]+fibonacci(n-2)[n-2]]

or more efficiently
fibonacci=n=>n<2?[0,1]:(i=fibonacci(n-1),[...i,i[n-1]+i[n-2]])

or even more efficently (but with a loop instead of recursion)
fibonacci=n=>[i[m]=m<2?+m:i[m-1]+i[m-2]for(m in i=[...Array(n)])]

The point is to return the first n Fibonacci numbers, though, not just the nth number.

I wonder if array comprehension should count as a loop?

@nderscore That's why I put in the ones without array comprehension

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

authors: n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

sort: votes


text:
Fibonacci program lengths
Write a program with length n that outputs another program whose length is the next Fibonacci number after n. The new program must do the same thing - output another program whose length is the next Fibonacci number, etc.
n itself (the original program's length) does not have to be a Fibonacci number, although it would be nice if it is.
Shortest code wins.
No external resources, ASCII only, free compiler/interpreter required.
If your output ends in a newline, it is also counted.

Does this need to continue on forever? (int or BigInteger)

@Quincunx it's ok if it stops working at int's limit or compiler/interpreter's limit, whichever comes first. I expect it to get to 10000+ though.

Are there restrictions on use of whitespace or comments or arbitrarily long variable/function/class names in either the original or subsequently produced programs?

Can the program read its own source code, or are you looking for a true quasi-quine?

@JonathanPullano no restrictions, they just need to be valid programs

@histocrat I think reading own source is ok

CJam, 26 23
I just had a try with your language.
7{9\@5mq)2/*')*\"_~"}_~

9 is (22*0.618 + 0.5 - 1)/1.618 + 1.
It computes its own length*1.618 instead of repeatedly adding the two numbers. In the first version, it will fill the output before { like 1))))))))), which counts those characters themselves. Say the result n. The total length is n+22, and the new length before { should be (n+22)*1.618-22, rounded. Decrease it by one to count the number of )'s. Then it will be approximately equal to (n+8)*1.618.
Older version:
-3{1\@5mq)2/*E+')*\"_~"}_~

The number 14 is 24*0.618 + 0.5 - 1.

Very impressive!

I think we have a new winner :)

Python 2, 160 bytes
s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=1'
c=s
l=len(s%c)+4
a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1)
print s%`c`

This is a true quasi-quine; it doesn't read its own source, but it generates it. First output (has trailing newline):
s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=111111111111111111111111111111111111111111111111111111111111111111111';c=s;l=len(s%c)+4;a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1);print s%`c`;a=1

Second:
s='s=%s;c=s;l=len(s%%c)+4;a,b=1,1\nwhile b<l:a,b=b,a+b\nc+="1"*(b-l-1);print s%%`c`;a=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';c=s;l=len(s%c)+4;a,b=1,1
while b<l:a,b=b,a+b
c+="1"*(b-l-1);print s%`c`;a=111111111111111111111111111111111111111111111111111111111111111111111

Edit: Oops. Forgot to change the string when I changed from ;s to 1s, so the second output was outputting extra semicolons (which Python doesn't support). Fixed

I'm afraid it stops working after about 3 iterations...

@aditsu What? Python has a limit on the size of an integer?! (or is it that the count isn't a fibonacci / skips / something else?) Oh wait. Duh. I forgot to change the string XD

CJam, 41 31 bytes
{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~

Try it online.
Output
$ cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'); echo
{1$+S@]_1=4+1$`,-S*"2$~"}34 21 2$~
$ cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~') | wc -c
34
$ cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~')); echo
{1$+S@]_1=4+1$`,-S*"2$~"}55 34                      2$~
$ cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~')) | wc -c
55
$ cjam (cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))); echo
bash: syntax error near unexpected token `cjam'
$ cjam <(cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))); echo
{1$+S@]_1=4+1$`,-S*"2$~"}89 55                                                        2$~
$ cjam <(cjam <(cjam <(echo '{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~'))) | wc -c
89

How it works
{       "                                                   {…} 21 13                     ";
  1$+   " Duplicate the higher number and add.              {…} 21 34                     ";
  S@    " Push a space and rotate the lower number on top.  {…} 34 ' ' 21                 ";
  ]     " Wrap the stack into an array.                     [ {…} 34 ' ' 21 ]             ";
  _1=   " Push the second element of the array.             [ {…} 34 ' ' 21 ] 34          ";
  4+    " Add 4 to it.                                      [ {…} 34 ' ' 21 ] 38          ";
  1$`,  " Push the length of the stringified array.         [ {…} 34 ' ' 21 ] 38 37       ";
  -S*   " Subtract and push that many spaces.               [ {…} 34 ' ' 21 ] ' '         ";
  "2$~" " Push the string '2$~'.                            [ {…} 34 ' ' 21 ] ' ' '2$~'   ";
}       "                                                   {…}                           ";

21D     " Push 21 and 13.                                   {…} 21 13                     ";
2$~     " Copy the code block an evaluate.                  [ {…} 34 ' ' 21 ] ' ' '2$~'   ";

Nice, confirmed up to 1 million :) I think it's 37 instead of 39 though in the explanation.

@aditsu: Didn't notice you edited your comment until right now. It should be 37 indeed, thanks.

Python - 89
g="%(s,b,a+b);print o.ljust(b-1)";s,a,b="s,a,b=%r,%i,%i;o=s%"+g,89,144;exec("o=s"+g)#####

My perfect character count is gone. ;_; Thanks to TheRare for pointing out the newline thing and Quincunx for suggesting I use Python 2, shaving off 2 chars.
EDIT: Now just uses more #s instead of 1s; 12 chars shorter.
EDIT 2: 94 chars! Eliminated some repetition. >:3
EDIT 3: Shorter repr alternative for Python 2.
EDIT 4: Output is a character shorter now.
EDIT 5: The use of %r to shorten it was taken from an answer on another question by @primo.
EDIT 6: Shorter. :D
Here's a Python 3 version:
g="%(s,b,a+b);print(o.ljust(b-1))";s,a,b="s,a,b=%r,%i,%i;o=s%"+g,89,144;exec("o=s"+g)####

This answer is similar to the one by @Quincunx.

print always adds a newline, unless you specify end='' argument.

Why not use Python 2?: s,a,b="s,a,b=%s,%i,%i;o=s%%(`s`,b,a+b)+'#';print o+(b-len(o)-1)*'1'",89,144;o=s%(`s`,b,a+b)+'#';print o+(b-len(o)-1)*'1'

@Quincunx I shall! Thanks :D

Your 90-char program doesn't work with python 3, and has a 145-char output (not a Fibonacci number)

@aditsu Fixed. :3

Nice use of %r ;)

@primo I totally copied from you, lol. Lemme edit :3

With a program length of 84, I expect a first output of 89 characters.

@aditsu Imma just pad it with hashes. Not even worth it.

JavaScript, 94
(function q(w,e){return ('('+q+')('+e+','+(s=w+e)+')'+Array(s).join('/')).substr(0,s)})(55,89)

Based on a well-known JavaScript Quine, this returns almost the same function, only followed by amount of slashes, such that it sums up to 144 which is the next Fibonacci number after N. And so on...
N is not a Fibonacci number, but it was only "nice to have".

It doesn't seem to work correctly when it passes 1000

1000 what? Iterations?

No, program length

Hmm... I was testing it in Chrome's Console, using p = (my answer) and then p = eval(p) a couple of times, and got until 196418... after that processing time was > 1sec so I quit testing :P But I guess it can continue even more.

You don't understand.. I didn't say it stops working or it's too slow. I said it doesn't work correctly. Don't just do p=eval(p), also check p.length. After it gets to 987, I get length 1598, not a Fibonacci number.

Now I get it. You're right - I have a bug in there... I will fix it.

Let us continue this discussion in chat.

Python 3.8 (pre-release), 65 bytes
a,b=55,89;exec(s:="print((f'a,b={b,a+b};exec(s:=%r)#'%s*b)[:b])")

Try it online!

Pari/GP, 63 bytes
(f(a,b)=print1(s=Str("(f="f")("b","a+b");")10^(b-#s-1)))(55,89)

Try it online!

Mathematica
({0};
 With[{n = Ceiling[ InverseFunction[Fibonacci]@LeafCount@#0 ], l = Length[#0[[1, 1]]]},
    #0 /. {0..} -> ConstantArray[0, Fibonacci[n+1] - LeafCount[#0] + l]
 ]) &

This is a very straightforward implementation (i.e. no obfuscation here).  It is an anonymous function that returns itself with a bit of padding to achieve the correct length.  Mathematica is homoiconic: code and data are both represented as Mathematica expressions, which makes it realtively easy to modify/generate code on the fly.  This also means that character counts are not a natural measure of code length.  Epxression size ("leaf count") is.  This version is based on leaf counts as code length measure.
If we assign this anonymous function to a variable f (so I can show what happens in a readable manner), and keep calling it 1, 2, 3, ... times, each time measuring the length of the return value, this is what we get:
In[]:= f // LeafCount
Out[]= 42

In[]:= f[] // LeafCount
Out[]= 89

In[]:= f[][] // LeafCount
Out[]= 144

In[]:= f[][][] // LeafCount
Out[]= 233

Regarding the free interpreter requirement: Mathematica is free for the Raspberry Pi.  Otherwise this code should be straightforward to port to Mathics (open source).  The only thing missing from Mathics is InverseFunction, which can be replaced as here (but I'm lazy :).

Wow, I didn't know Mathematica was free for the Pi, I should check it out. However, the program is supposed to print characters to the standard output, and that's what should be counted.

@aditsu Actually I did this more for fun than to compete in the challenge, and using LeafCount seemed much more interesting than using character counts (which would imply boring code-manipulation as string-manipulation). :-) I'm not going to change it to use character counts, but I can delete it without any bad feelings if you wish.

Oh, I see. Just leave it then, no need to delete.

Python 3.8 (pre-release), 78 bytes
p,c=55,89;exec(s:="print((a:=f'p,c={c},{p+c};exec(s:=%r)'%s)+'#'*(c-len(a)))")

Try it online!

Python 2, 79 bytes
p,c,s=55,89,"a='p,c,s=%d,%d,%r;exec s'%(c,p+c,s);print a+'#'*(c-len(a))";exec s

Try it online!

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/