Hui, da haben aber ein paar Leute ein bisschen was durcheinandergebracht. ^^ Ich werd mal versuchen, etwas Ordnung zu schaffen. Nicht dass hier zig Leute sich etwas völlig Falsches merken. Also:
1. HTML ist keine Programmiersprache sondern eine Layoutsprache. Der Ursprung war, dass man Text hat und festlegen kann, wie dieser aussieht. Extras wie Bilder oder gar Frames sind noch nicht sehr alt. HTML ist die Sprache, aus der Internetseiten tatsächlich bestehen.
2. CGI ist überhaupt keine Sprache sondern eine Schnittstelle. Diese Schnittstelle liest Code aus und gibt das, was normalerweise auf dem Bildschirm stehen würde, als Text an den Client weiter (der Computer, der die Seite vom Server angefordert hat). Man kann Webseiten theoretisch in jeder Programmiersprache schreiben, also auch in C++, Pascal oder sogar Basic. Da diese Lösung aber mega-ineffizient ist, haben sich geeignetere Sprachen durchgesetzt. Der Programmcode, der an die CGI-Schnittstelle geschickt wird, muss also den HTML-Code ausgeben! Wenn man CGI nutzt, werden zwei Codes verarbeitet: Als erstes wird auf dem Server aus dem Programmcode, der Variablen, Schleifen und Datenbankzugriffe (Stichwort MySQL) enthalten kann, funktionierender HTML-Code erstellt. Dieser wird dann an den Client geschickt, dessen Browser ihn auswertet und visualisiert, wie bei jeder anderen statischen Webseite auch. Der Client hat also den Eindruck, dass es sich um ein statisches Dokument handelt und weiß nichts von den CGI-Aktivitäten des Servers.
3. PHP ist speziell auf CGI ausgelegt und kann nicht für Programme genutzt werden. Als solche Spezialisierung arbeitet PHP perfekt und mit dem geringsten Aufwand mit CGI zusammen.
4. Perl ist eine sehr textnahe Programmiersprache und deshalb für CGI prädestiniert, man kann aber auch Programme damit schreiben wenn man einen Compiler hat (nein, ich kenne keinen).
5. C++ ist eine Programmiersprache, die für Vielseitigkeit erstellt wurde und mit der man deshalb auch ziemlich viel machen kann, man kann auch CGI-Scripts in C++ schreiben, das ist aber ein zu großer Aufwand um sich zu lohnen.
6. MySQL ist weder eine Layout- noch eine Programmiersprache, sondern eine Möglichkeit, reine Daten (Text) in Tabellenform platzsparend zu speichern. Mit deiner gewählten CGI-Sprache kannst du auf SQL-Tabellen zugreifen, sie editieren etc. MySQL eignet sich somit besser zum Speichern von Daten (etwa immer "Name;Mailadresse;Punkte" in einer Zeile) als eine fest formatierte Textdatei.
7. ASP (der Vollständigkeit halber) ist ebenfalls eine auf CGI ausgelegte Sprache, die, soweit ich gehört habe, erhebliche Nachteile gegenüber PHP oder Perl besitzt und am Aussterben ist. Die Info muss aber nicht stimmen, da kannst du dich ja selbst drüber informieren wenn's dich noch interessiert.
Das nur so zum besseren Verständnis. Es gibt übrigens auch eigentlich keine CGI-Scripts obwohl der Begriff immer wieder fällt (es sind in Wirklichkeit meist Perl-Scripts oder PHP-Scripts)