世代や職業によって変化する”Hello World”プログラム

投稿者: | 2013年2月16日

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です。

これらはジョークなので、本当にこれらの人が上のようなコーディングをしているわけではありませんが、スキルや考え方、他業種から見たイメージなどを上手く皮肉っていますね。

コメントを残す

メールアドレスが公開されることはありません。