CGI についての誤解

自分も今の会社に入るまでは完全に誤解していました。

Perl == CGI という誤解

そもそも最近では CGI といえば PHP のほうが有名ですが、私もずっと誤解していました。Perl を使うということは、結局

javac Hello.java
java Hello

とか、

gcc -o main main.c
./main

と、全く変わらないレベルで、

perl main.pl

をしているだけでした。

CGI についての誤解

上記の誤解とあわせて二重に誤解していました。CGI というのは何か特別なものだと思っていましたが、結局

#include <stdio.h>

int main(int argc, char* argv[]) {
  printf("Content-Type: text/html\n\n");
  printf("<html>....");
  return 0;
}

と、しているだけでした。この CGI の本質さえわかれば、Java だろうと C だろうと Basic だろうと Fortran だろうとどんな言語でも CGI を書けるようになります(参考:Javaで書いたCGICで書いたCGI)。プログラムの呼び出しと main 関数への引数渡しを apachetomcat が代わりに行っているだけのことです。