Überbrückung Der Lücke Zwischen Hardware- Und Softwareentwicklung

Softwareentwicklung ist ein überraschend undefiniertesGebiet. Für Außenstehende scheint es oft recht stark geschichtet zu sein. Menschen mit Branchenkenntnissensehen normalerweise, wie stark Software nachPlattformen und Programmiersprachen kategorisiert ist. Dies wiederum wird die Menschen zu der Annahmeveranlassen, dass die Personen, die an diesenProgrammen arbeiten, wahrscheinlich genau so in bestimmten Entwicklungsbereichen angesiedelt sind.

Es gab eine Zeit, in der diese Art der Kategorisierung die Norm war. Vor vielen Jahrzehnten waren die verschiedenen Computerplattformen so unterschiedlich, dass sie nicht viel gemeinsam hatten. Die Plattform-API oder Programmiersprachen waren auf verschiedenenKontinenten so weit entfernt wie gesprochene Sprachen.

Wir sehen auch heute noch einige gravierendeUnterschiede in unseren Hardware-Plattformen. Beispielsweise unterscheiden sich ein ARM-Prozessorund ein x64-basiertes System deutlich voneinander. Ein Teil davon hängt von der typischen Geschwindigkeit der Prozessoren ab. Ein Teil des Unterschieds hängt damitzusammen, wie sich die Plattformen auf das Multicore-Design beziehen. Aber es gibt eine wichtige Ähnlichkeit, die dazu dient, diese und die meisten anderenUnterschiede zu beseitigen. Sie und andere beliebteProzessoren bieten Unterstützung für höhereProgrammiersprachen wie Python und Java.

Auch aus der Sicht von außen mag dies nicht viel zubedeuten haben. Aber Menschen im Inneren, die wissen, wie man diese einzelne Tatsache richtig nutzt, könneneinige bedeutende Vorteile erzielen. Einer der wichtigstenGründe ist, dass Bauträgersoftware ihre Arbeit ohne großeBedenken hinsichtlich der Kompatibilität problemloszwischen mehreren Systemen verschieben können.

Dies ist hauptsächlich auf etwas zurückzuführen, das alsAbstraktion bekannt ist. Programmiersprachen werdennormalerweise in nativen Computercode für einenbestimmten Prozessortyp kompiliert. ÜbergeordneteSprachen abstrahieren jedoch die zugrunde liegendenKomponenten eines Systems. Anstatt für bestimmteHardware zu schreiben, zielt man im Wesentlichen auf eine simulierte Umgebung ab, die auf der Basishardwaredes Systems ausgeführt wird. Die simulierte Umgebungwird normalerweise als virtuelle Maschine bezeichnet.

Wie zu erwarten ist, ist dies nicht ohne Preis. Das Ausführen einer virtuellen Maschine erfordert einigezusätzliche Ressourcen. Und dies war ein oder zweiJahrzehnte zuvor ein großes Problem. Hier kommen aberdie oben genannten Vorteile zum Tragen. Wenn man alteAnnahmen fallen lässt, wird etwas leichter ersichtlich. Es ist einfacher zu erkennen, dass selbst die langsamstenMaschinen heutzutage virtuelle Maschinen ausführenkönnen, ohne die Gesamtgeschwindigkeit zubeeinträchtigen. Tatsächlich wird auf allen Handys, auf denen Android ausgeführt wird, standardmäßig eine Java-basierte virtuelle Maschine im Hintergrund ausgeführt.

Dies bedeutet, dass sich ein Softwareentwickler auf das konzentrieren kann, was er am besten weiß. Wir sindimmer noch an einem Punkt angelangt, an dem vieleEntwickler gezwungen sind, sowohl Hardware als auchSoftware gleichzeitig in Angriff zu nehmen. Dies teilt ihreZeit und Energie im Wesentlichen in mehrere Richtungenauf. Ein Umdenken in dieser Methodik bietet ihnen jedochdie Möglichkeit, die gesamte Anstrengung auf die Software-Seite der Dinge zu konzentrieren. Durch die Ausrichtung auf eine virtuelle Maschine anstelle der eigentlichen Maschine werden sie von allen Bedenkenhinsichtlich der Besonderheiten bestimmter Prozessorenoder anderer plattformspezifischer Anforderungen befreit.