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

GNUのジョーク集「Hello World!」という面白い記事があったので、少しだけ邦訳して、コメントを添えて掲載します。

中高生

 10 PRINT "HELLO WORLD"
 20 END

まずは基本のBASICです。

大学生(初年度)

 program Hello(input, output)
 begin
 writeln('Hello World')
 end.

Pascalを覚えたようです。

大学生(卒業年)

 (defun hello
 (print
 (cons 'Hello (list 'World))))

Lispを使えるようになりました。

新人プログラマー

 #include <stdio.h>

 void main(void)
 {
  char *message[] = {"Hello ", "World"};
  int i;
  for(i = 0; i < 2; ++i)
  printf("%s", message[i]);
  printf("\n");
 }

Cを覚えました。ポインタも配列も使えます。

ベテランプログラマー

 #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);
 }

クラスを用いて、C++を使いこなせていますね。

システム管理者

 #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);
 }

Cですが、コメントを見るとフランス人のようです。
まわりくどいことをやっている例でしょうか。

見習いハッカー

 #!/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は、ハッカーの基本言語ですね。

上級ハッカー

 #include <stdio.h>
 #include <string.h>
 #define S "Hello, World\n"
 main(){exit(printf(S) == strlen(S) ? 0 : 1);}

CでPerlのような読みにくいコードをガリガリ書けるようになり、
書いた本人も空気のように読めるようになってきます。

熟練ハッカー

 % cc -o a.out ~/src/misc/hw/hw.c
 % a.out
 Hello, world.

熟練になると、よく使うコードはコンパクトに持ち歩けるようにしておき、
必要な時にコンパイルして動かします。コーディングはしません。

グル・ハッカー

 % cat
 Hello, world.

プログラミングの神様は、コーディングどころかコンパイルすらしません。
(catコマンドは引数を与えないと、標準入力に入ったものを標準出力に吐きます)

新人マネージャ

 10 PRINT "HELLO WORLD"
 20 END

上の覚えてます? ;-)

中間管理職マネージャ

 % mail -s "Hello, world." bob@b12
 Bob, could you please write me a program that prints "Hello, world."?
 I need it by tomorrow.
 ^D

「明日までに必要なんだ!」

上級マネージャ

 % zmail jim
 I need a "Hello, world." program by this afternoon.

「今日の午後、必要なんだ!」

経営責任者

 % letter
 letter: Command not found.
 % mail
 To: ^X ^F ^C
 % help mail
 help: Command not found.
 % damn!
 !: Event unrecognized
 % logout

「使い方が分からん、畜生!」

科学研究者

	PROGRAM HELLO
	PRINT *, 'Hello World'
	END

科学分野で人気のFortran90です。

熟練科学研究者

	WRITE (6, 100)
    100 FORMAT (1H ,11HHELLO WORLD)
	CALL EXIT
	END

さらに古いFORTRAN77です。

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

投稿者:

dyama

システムエンジニアです。佐世保に住んでいます。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください