Programmiersprachen entwickeln sich aufgrund geänderter Anforderrungen.
Aber Programmiersprachen entwickeln dann ein Eigenleben.
Ich will mal das Beispiel Java nehmen. Java wurde eigentlich entwickelt
um Kühlschränke, SetTop Boxen, Microwellen und was weiss ich noch
programmierbar zu machen.
Sprich eigentlich nicht grundsätzlich um ein neues Office, Grafikprogramm,
oder gar Server Anwendungen zu schreiben.
Es wurde also eine Sprache benötigt die auf diesen verschiedenen Geräten
eingesetzt werden kann, deshalb wurde das Prinzip der virtuellen Mashiene
für Java eingesetzt.
C++ erschien aufgrund seiner Möglichkeiten sich selber in den Fuss zu schiessen
für solche kleinen Geräte unpassend.
Diese ehemaligen Anforderrungen existieren noch immer( mann siehe Java auf
den Handys, PDAs, SmartCards usw) und sind mittlerweile ein wichtiger
Einsatzbereich von Java.
Aber im laufe der Jahre haben sich andere Einsatzgebiete gezeigt, die bei der
Entwicklung der Sprache nicht angedacht war. So war das Internet noch nicht
so wichtig wie jetzt als Java entwicklet wurde, aber das Internet puschte
auch Java.
So war früher es absolut üblich Applets einzusetzen (was heute gemieden wird,
und was gut so ist). Gleichzeit wurde Java auf dem Server immer wichtiger, und
ist mittlerweile Einsatzgebiet nr 1 (siehe Ebay).
Das Einsatzgebiet Java auf dem Desktop ist aufgrund trägem Swing gescheitert. Aber
ein neuer Anlauf (siehe IBM Lotus Workplace u. ähnlichem) kann diesmal sehr
wohl gelingen, nicht zuletzt dank Eclipse, SWT & JFace und den bemühungen
von Sun Swing performant zu bekommen.
Die Sprache ansich (Java ist Sprache und Technologie) entwickelt sich anhand
von Paradigmen und anhand der Technologie die sie bedienen muss.
So erlaubte die VM das sie sich darauf verlassen konnte das alle Objecte von
Object abgeleitet sind, und die Sprache hat um diese Eigenschaft "herumentwickelt".
Auch dinge wie das Dynamische Laden von Klassen und innere Klassen
wurde in die Sprache integriert weil die VM es erlaubte.
Sprachen ähneln sich weil sie alle mehr oder weniger Dinge von vergangene Sprachen
abschauen.
Weniger: Java schaute sich die Syntax bei C++ ab, ohne C++ zu gleichen. Die Technik ist Smalltalk sehr ähnlich.
Mehr: Microsofts C# ist in vielem syntaktisch fast gleich mit Java, und hat auch die Technik auf ziemlich gleiche Art und weise nachgebildet.
So kommt es das .net / C# auch ein Nachfahre (wenn nicht direkt) von Smalltalk ist.
Smalltalk hat wiederrum eigenschaften von Ada usw.