Was bedeutet es wenn eine Programmiersprache "Nativ" ist?

4 Antworten

Normalerweiße werden mit "nativ" Programmiersprachen bezeichnet die direkt zu Maschinencode kompiliert werden (z.B. C/C++), diese können dann nur auf der CPU-Architektur ausgeführt werden für die sie kompiliert sind. Der Gegansatz dazu sind interpretierte Sprachen, diese sind auf jeder Architektur lauffähig, benötigen aber einen entsprechenden Interpreter. Beispiele für interpretierte Sprachen sind Java, Python oder JavaScript.


martin7812  17.01.2015, 10:46

"+1", denn die Antwort ist richtig.

Vielleicht noch eine Anmerkung für nicht-Experten:

CPUs führen so-genannten Maschinencode aus. Dabei steht eine bestimmte Kombination von Zahlen für eine bestimmte Operation.

So steht auf einem PC die Kombination 1, 216 (mit der Bezeichnung "add eax, ebx") für die Addition zweier Zahlen. Auf einem iPhone würde die Kombination 1, 0, 144, 224 in etwa das gleiche machen, auf einem WLAN-Router mit MIPS-Prozessor die Kombination 33, 8, 34, 0.

Programmiersprachen, bei denen die Programme während der Programmentwicklung direkt in solche Zahlenkombinationen umgewandelt werden, nennen sich "nativ".

Der große Vorteil davon ist, dass die Programme direkt vom Prozessor "verstanden" werden und daher sehr schnell ablaufen und auch keine "Hilfsprogramme" notwendig sind, um diese Programme ausführen zu können.

Der Nachteil ist, dass solche Programme nur auf einem bestimmten Prozessortyp laufen (z.B. auf x86, also "PC-Prozessoren"), da für eine bestimmte Rechenoperation ja auf unterschiedlichen Prozessoren unterschiedliche Zahlenkombinationen verwendet werden.

Neben nativen Programmen sind noch zwei weitere Arten von Programmen und Programmiersprachen weit verbreitet: Interprätierter Code und Bytecode

Bei beiden Varianten wird ein Hilfsprogramm (das selbst ein natives Programm sein muss) dazu verwendet, das Programm auszuführen.

Diese beide Varianten haben den Vorteil, dass Programme unabhängig vom Prozessortyp sind; lediglich das Hilfsprogramm muss in unterschiedlichen Varianten für unterschiedliche Prozessoren existieren.

Der Nachteil ist, dass die Ausführungsgeschwindigkeit langsamer ist und dass das Hilfsprogramm (z.B. das .NET-Framework oder das JRE) auf dem Rechner installiert sein muss.

1

Oft hört man das Wort heutzutage im Bezug auf mobile Geräte. Hierbei bedeutet nativ, dass z.B. Objective-C für IPhones genutzt wird und Java für Android Geräte.

Eine Alternative wäre eine plattformübergreifende Webapp auf HTML5 Basis.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

martin7812  17.01.2015, 10:08

Bei Android und auch "normalem" Java bedeutet "nativ" allerdings etwas anderes:

Es bedeutet, dass die entsprechende Methode nicht in Bytecode, sondern in echtem, prozessorspezifischem Maschinencode vorliegt.

Dazu wird in Java das Java-Schlüsselwort "native" verwendet. Beispiel:

public static native void eineMethode();

Hinter so einer Zeile folgt dann ein Strichpunkt und keine Spitzklammern mit Code, da Java-Programme prinzipiell in Bytecode umgewandelt werden und solche Methoden daher in einer anderen Programmiersprache (typischerweise C++) geschrieben werden müssen.

Dazu gibt es dann das "Java Native Interface" von Oracle bzw. das "Android Native Interface" von Google, die alle möglichen Dateien enthalten, um C++ an das JRE bzw. an Android anbinden zu können.

1
apachy  20.01.2015, 17:34
@martin7812

Dann ist aber die Methode nativ, die Frage war was es im Bezug auf eine Programmiersprache bedeutet.

Trotzdem interessant zu wissen :)

0

Entgegen meiner ersten Vermutung bedeutet es wohl doch nicht, dass es die Sprache der eingeborenen Programmierer der jeweiligen Entwicklungsumgebung ist, sondern so was wie ein noch etwas menschenlesbarer gemachter Assembler, wenn ich

http://www.enzyklo.de/Begriff/Native%20Programmiersprache

glauben darf.

(ca. 1/2 Minute Google-Suche)

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Das heisst soviel wie für ein bestimmtes Gerät oder ein Betriebssystem.