Warum sind viele DLLs, die Windows zur Verfügung stellt, Bibliotheken, die nur von C / C++ gelesen werden können?

Ich probiere gerade alles mit statischen / dynamischen Bibliotheken zu verstehen (wir haben das in der Vorlesung nur kurz überflogen) und frage mich jetzt, warum die DLL-Dateien, die man auf Windows findet, überwiegend für C / C++ geschrieben sind.

Den Sinn hinter DLLs habe ich kapiert. Das sind im Prinzip Programmteile, auf die viele verschiedene Programme zugreifen können. Anstatt dass jedes Programm immer wieder seine Bibliotheken selbst mitbringt und dann lädt, kann man darüber eine Bibliothek von Windows aus laden und im Programm strenggenommen nur einen Pointer verwenden, um auf Funktionen der Fall zuzugreifen. Das spart dann eine Menge Speicherplatz.

Jedoch verstehe ich nicht so ganz, warum all diese Bibliotheken C- / C++-DLLs sind, die also ohne weiteres nur von diesen zwei Sprachen benutzt werden können. Ich habe jetzt schon viel gelesen, wo Leute z.B. in Java oder Python einige Windows-Bibliotheken (wie z.B. zipfldr.dll, was die Anweisung enthält, wie man in ZIP-Pakete, ohne sie zu entpacken, hineinschauen kann) nutzen wollten und das aber nur über Umwege funktioniert hat (wo im Übrigen auch C- / C++-Code benutzt werden musste).

Warum ist das so?

Ist das nicht ziemlich unpraktisch? Ich meine, dann müssten doch quasi alle Programme, die nicht in C oder C++ geschrieben wurden, entweder immer ihre eigenen DLLs beim Download mitbringen, was sehr speicherintensiv wäre oder man müsste, wenn man eine Windows-DLL z.B. in Java nutzen möchte, für jede Funktion, die man aus dieser nutzen wollte, sich in C eine Konvertierungsmöglichkeit zusammenbasteln. Und C / C++ wird zwar für viel Anwendungsprogrammierung verwendet, aber andere Sprachen sind doch weiter verbreitet, oder?

Ich hätte nur ein paar Ideen, warum das so ist:

  1. Windows wurde selbst zu großen Teilen in C(++) programmiert und bringt die DLL-Dateien nur mit, weil es die selber braucht.
  2. C(++) ist die bekanntere Sprache, die sehr hardwarenah noch vor Assembler funktioniert.
  3. C(++) wird mit Abstand am meisten für Anwendungsprogrammierung verwendet und die meisten Programme die man installiert sind somit in C(++) erstellt worden. Python z.B. nutzt man ja eher für Dinge wie KI oder Data Science, weil Python nicht so schnell ist.

Aber was ist der richtige Grund? Und gäbe es nicht eine Möglichkeit, dass alle Programme irgendwie auf die System-DLLs von Windows zugreifen könnten?

Computer, Technik, programmieren, Informatik, Technologie

Meistgelesene Beiträge zum Thema Technologie