(die genauen Unterschiede kennt irgendwie keiner, nur dass C++ auf C basiert).
C ist eine prozedurale Programmiersprache, C++ ist wohl von der Mächtigkeit wie von den Spracheigenarten C sehr verwandt, verfolgt aber den objektorientierten Ansatz.
C++ ist eine hybride Sprache, keine objekt-orientierte.
C# (sprich C-sharp) ist wohl C,
Nein, C# hat mit C nichts mehr gemeinsam.
Alle drei Sprachen sind gegenüber anderen Sprachen wie Java, Javascript oder Perl nicht Plattformunabhängig.
C# wird auch in Byte-Code übersetzt; das Runtime-Environment ist das .NET-Framework, dass unter Unix in der Implementation Mono zur Verfügung steht.
Aber natürlich kannst du auch Java zum erstellen von EXE-Dateien verwenden, das ist überhaupt kein Problem.
Du kannst nachdem du dein Java-Programm fertig hast zwar einen exe-Wrapper drum bauen, ist aber nie im Sinne des Erfinders gewesen und ist m.W. auch keine von Sun unterstützte Technik.
a) Musst du die JRE mit einpacken und blähst damit jedes Java-Programm und sei es 'hello world' um AFAIK mindest 11 MB auf.
Der gjc kann native Java-Binaries erstellen. Ohne, dass die JRE oder ähnliches notwendig ist.
Beachte aber: Einige Compiler reagieren anders auf Fehler als wieder andere Compiler. Also, es kann sein, dass dir ein Compiler einen Fehler ausgibt, ein anderer aber nicht.
Ähm, das versteh ich jetzt nicht, hast du da ein Beispiel zu? Ein Compiler führt eine lexikalische, syntaktische und semantische Analyse durch. Alle drei Eigenschaften sind im Sprachstandard festgelegt und lassen dem Compiler meinen Verständnis nach keinen Spielraum. Wie kann da ein Compiler Fehler verzeihen ein, anderer nicht?
Viele Compiler haben proprietäre Erweiterungen (clrscr() im Borland C), einige Compiler sind grosszügiger was die Auslegung des Sprach-Standards angeht als andere. Es gibt Unterschiede, und manche sind gar nicht so klein.