今までいくつかの言語でFizzBuzzを書いてきた。その成果は id:eel3:19700104:1258419993 に一覧化してある。
これ、現時点でどれくらいの数の言語で書いているかカウントしようとしたのだけど、どうにも正解が分からない。
- C言語(ANSI C89)
- C++(多分C++98相当)
- GNU AWK(nawk相当)
- Perl(Perl 5.8)
- Ruby(Ruby 1.8.7)
- Objective Caml(OCaml 3.10.0)
- Lua(Lua 5.1.4)
- Tcl(Tcl/Tk 8.4)
- /bin/sh(bash 2.04)
- バッチファイル(Windows XP Pro SP3)
- Windows PowerShell(PowerShell 2.0 on Windows XP Pro SP3)
- REXX(Regina 3.5)
- JScript on WSH(WSH 5.7 on Windows XP Pro SP3)
- VBScript on WSH(WSH 5.7 on Windows XP Pro SP3)
- ActiveBasic(ActiveBasic 4.24.00)
- Hot Soup Processor(HSP 3.21a)
- 秀丸マクロ(秀丸エディタ 8.03)
- Vim script(香り屋版Vim 7.3.154)
- T4 Text Template(Visual Studio 2010付属)
- GNU m4(GNU m4 1.4.4)
- Objective-C(Objective-C 2.0; XCode 4.0.2, Mac OS X v10.6 SDK)
- make編(GNU Make 3.81 && NetBSD make 1.111)
- COBOL編(OpenCOBOL 1.0 + MinGW 5.0.3)
- Fortran 90〜95編(G95 4.1.2)
- bash編(bash 3.1.17, 4.1.5)
- CASL II編(JavaCASL2 2.0)
- JavaScript on Rhino編(Rhino 1.7R3、Node.js 0.6.15, 0.7.8、PhantomJS 1.4.1)
- CoffeeScript編(CoffeeScript 1.3.3 + Node.js 0.6.18)
- GNU Debugger編(GDB 7.2)
- bc編(GNU bc 1.06)
上記のカウント方法だと30言語になる。ただ、このカウントには何点か曖昧な部分がある。
- JScriptとJavaScriptを区別しているが、同一視するべきか?
- Bourne ShellとBashを区別しているが、同一視するべきか?
- makeと一括りにしているが、GNU MakeとNetBSD Makeを区別するべきか(各処理系の拡張ありありでFizzBuzzしているので)?
この解釈の差によって、最小で28言語、最大で33言語と5言語ぐらいの差異が生じてしまう。うーん、正解はどれなのだろう?