GNUのジョーク集に「Hello World!」という面白い記事があったので、少しだけ邦訳して、コメントを添えて掲載します。
中高生
[vb]
10 PRINT "HELLO WORLD"
20 END
[/vb]
まずは基本のBASICです。
大学生(初年度)
[perl]
program Hello(input, output)
begin
writeln(‘Hello World’)
end.
[/perl]
Pascalを覚えたようです。
大学生(卒業年)
[perl]
(defun hello
(print
(cons ‘Hello (list ‘World))))
[/perl]
Lispを使えるようになりました。
新人プログラマー
[cpp]
#include <stdio.h>
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
[/cpp]
Cを覚えました。ポインタも配列も使えます。
ベテランプログラマー
[cpp]
#include <iostream.h>
#include <string.h>
class string
{
private:
int size;
char *ptr;
public:
string() : size(0), ptr(new char(‘\0’)) {}
string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}
string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}
int main()
{
string str;
str = "Hello World";
cout << str << endl;
return(0);
}
[/cpp]
クラスを用いて、C++を使いこなせていますね。
システム管理者
[cpp]
#include <stdio.h>
#include <stdlib.h>
main()
{
char *tmp;
int i=0;
/* on y va bourin */
tmp=(char *)malloc(1024*sizeof(char));
while (tmp[i]="Hello Wolrd"[i++]);
/* Ooopps y’a une infusion ! */
i=(int)tmp[8];
tmp[8]=tmp[9];
tmp[9]=(char)i;
printf("%s\n",tmp);
}
[/cpp]
Cですが、コメントを見るとフランス人のようです。
まわりくどいことをやっている例でしょうか。
見習いハッカー
[perl]
#!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can’t write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can’t close $arg: $!\n";
}
} else {
print ($msg);
}
1;
[/perl]
書き易くて読みにくいPerlは、ハッカーの基本言語ですね。
上級ハッカー
[cpp]
#include <stdio.h>
#include <string.h>
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}
[/cpp]
CでPerlのような読みにくいコードをガリガリ書けるようになり、
書いた本人も空気のように読めるようになってきます。
熟練ハッカー
[shell]
% cc -o a.out ~/src/misc/hw/hw.c
% a.out
Hello, world.
[/shell]
熟練になると、よく使うコードはコンパクトに持ち歩けるようにしておき、
必要な時にコンパイルして動かします。コーディングはしません。
グル・ハッカー
[shell]
% cat
Hello, world.
[/shell]
プログラミングの神様は、コーディングどころかコンパイルすらしません。
(catコマンドは引数を与えないと、標準入力に入ったものを標準出力に吐きます)
新人マネージャ
[vb]
10 PRINT "HELLO WORLD"
20 END
[/vb]
上の覚えてます? ;-)
中間管理職マネージャ
[shell]
% mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world."?
I need it by tomorrow.
^D
[/shell]
「明日までに必要なんだ!」
上級マネージャ
[shell]
% zmail jim
I need a "Hello, world." program by this afternoon.
[/shell]
「今日の午後、必要なんだ!」
経営責任者
[shell]
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout
[/shell]
「使い方が分からん、畜生!」
科学研究者
[vb]
PROGRAM HELLO
PRINT *, ‘Hello World’
END
[/vb]
科学分野で人気のFortran90です。
熟練科学研究者
[vb]
WRITE (6, 100)
100 FORMAT (1H ,11HHELLO WORLD)
CALL EXIT
END
[/vb]
さらに古いFORTRAN77です。
これらはジョークなので、本当にこれらの人が上のようなコーディングをしているわけではありませんが、スキルや考え方、他業種から見たイメージなどを上手く皮肉っていますね。