Computersprachtypen umfassen: 1. Hochsprache und Niedrigsprache; 3. Obligatorischer Typ und schwacher Typ; . Objektorientierter und prozessorientierter Typ. Unterscheiden Sie zwischen kompiliertem Typ und interpretiertem Typ.
Drei Hauptkategorien von Computersprachen (unterteilt nach Niveau)
Die Korrelation mit der Hardware nimmt allmählich ab
Es gibt viele Arten von Computersprachen; je nach Funktion und Implementierungsmethode können sie grob unterteilt werden in drei Hauptkategorien eingeteilt: Maschinensprache, Assemblersprache und Hochsprachen.
1. Maschinensprache, eine Sprache, die Computer ohne Übersetzung direkt erkennen können, wird Maschinensprache genannt (auch als Binärcodesprache bekannt). Diese Sprache ist eine Folge von Anweisungen, die aus Binärzahlen 0 oder 1 bestehen.
2. Die Assemblersprache verwendet englische Buchstaben oder Symbolzeichenfolgen, um Maschinensprache entsprechend der entsprechenden Beziehung umzuwandeln Sprache.
3. Hochsprache ist keine Sprache, sondern ein Sammelbegriff für eine Klasse von Sprachen. Sie ist der von Menschen verwendeten Sprache näher als die Assemblersprache und ist leicht zu verstehen, zu merken und zu verwenden. Da Hochsprachen nichts mit Computerarchitektur und Befehlssätzen zu tun haben, sind sie gut portierbar. Für die Programmentwicklung werden häufig Hochsprachen verwendet, darunter C, C+, Java, VB, C#, Python, Ruby usw.
Mehrere gängige Klassifizierungsmethoden
1. Hochsprachen und Niedrigsprachen
Gemeinsame Niedersprachen sind: Maschinencode, Assemblersprache
Gemeinsame Hochsprachen wie : C, C++, Java, Python, PHP, Ruby, Go, Kotlin, Swift.
Maschinencode, ein Sekundärcode, der vom Computer direkt erkannt werden kann. Unabhängig davon, wie fortgeschritten die Sprache ist, muss sie in eine Sekundärdatei konvertiert werden, damit der Computer sie erkennt und ausführen kann.
Assembly, Verwendung von Mnemoniken zum Ersetzen des Opcodes von Maschinenanweisungen, Verwendung von Adresssymbolen, Symbolen oder Beschriftungen zum Ersetzen der Adressen von Anweisungen oder Operanden. In verschiedenen Geräten gibt es unterschiedliche Befehlssätze.
Hochsprache, um Programmieraufwand zu sparen Eliminiert unnötige Betriebsdetails, spart Codemenge, ist gut lesbar und wartbar und benutzerfreundlicher.
Der Unterschied zwischen Hochsprachen und Niedrigsprachen: Die meisten Hochsprachen können nicht direkt mit der Hardware interagieren, was die Ausführungsgeschwindigkeit des Programms verlangsamt. Kurz gesagt, die Sprache ist näher Die menschliche Natur ist weiter fortgeschritten.
Sechs Prozesse der Kompilierung von Hochsprachen
Kompilierung ist der Prozess der Übersetzung von Quellprogrammen in Hochsprachen in Zielprogramme.
Der gesamte Prozess kann im Allgemeinen in sechs Phasen unterteilt werden: lexikalische Analyse, Syntaxanalyse, semantische Analyse, Zwischencodegenerierung, Codeoptimierung und Zielcodegenerierung.
Lexikalische Analyse, lexikalische Analyse ist die erste Stufe. Die Aufgabe dieser Stufe besteht darin, das Quellprogramm Zeichen für Zeichen von links nach rechts zu lesen, den Zeichenstrom, aus dem das Quellprogramm besteht, zu scannen und zu zerlegen und dadurch jedes Zeichen zu identifizieren . Wort.
Grammatische Analyse: Die Aufgabe der grammatikalischen Analyse besteht darin, Wortprogramme auf der Grundlage einer lexikalischen Analyse in grammatikalische Phrasen zu zerlegen.
Semantische Analyse, semantische Analyse besteht darin, das Quellprogramm auf semantische Fehler zu überprüfen und Typinformationen für die Codegenerierungsphase zu sammeln.
Zwischencodegenerierung: Nach der Durchführung der oben genannten Syntaxanalysephase und anderer Arbeiten wandeln einige Compiler das Quellprogramm in eine interne Darstellung um. Diese interne Darstellung wird als Zwischensprache oder Zwischencode bezeichnet. In der Zwischenphase der Codegenerierung wird das Quellprogramm basierend auf Syntax- und Semantikanalyse weiter in eine interne Darstellung umgewandelt. Es ist normalerweise einfach, diesen Schritt zu generieren und in Zielcode zu übersetzen.
Codeoptimierung: Die Aufgabe dieser Phase besteht darin, den in der vorherigen Phase generierten Zwischencode zu transformieren oder zu transformieren, um den generierten Zielcode effizienter zu machen. In der Codeoptimierungsphase ist es nicht erforderlich, den in der vorherigen Phase generierten Zwischencode zu transformieren oder zu transformieren, um beim Generieren des Zielcodes mehr Zeit und Platz zu sparen.
Zielcodegenerierung. Die Aufgabe dieser Phase besteht darin, den Zwischencode in einen absoluten Anweisungscode oder einen verschiebbaren Anweisungscode oder einen Montageanweisungscode auf einer bestimmten Maschine umzuwandeln.
2. Dynamischer Typ und statischer Typ
Dynamische Sprache bezieht sich auf die Angabe von Datentypen für Variablen während der Ausführung des Programms. Dies ist in Python und Ruby üblich, während beim Schreiben von Programmcode genau das Gegenteil der Fall ist Es ist notwendig, den Typ der Variablen anzugeben. Diese Sprache hat einen erzwungenen Typ und einen schwachen Typ. Wir wissen, dass eine Variable in der C-Sprache nur als ein Typ definiert werden kann, z. B. als Float-Typ. Dann kann es sich nur um einen Float-Typ handeln. Der Typ int kann nicht ohne Konvertierung zugewiesen werden. Dies ist die spezifische Ausführungsform des obligatorischen Typs.
Und Python ist keine Variable in Python, die ohne Typgrenzen beliebig kopiert werden kann. Das ist schwaches Tippen
Erzwungenes Tippen ist strenger und weniger fehleranfällig, aber schwach typisierte Sprachen sind eleganter und komfortabler zu schreiben
4 Kompiliert und interpretiert, halb kompiliert und halb interpretiert
Für Quellprogramme: Kompilierte Sprachen befinden sich im Ausführungsprogramm. Die Quelldatei wird gleichzeitig in Maschinencode konvertiert, während die interpretierte Sprache gleichzeitig kompiliert und interpretiert wird
Kompilierte Sprachen sind untrennbar mit Dolmetschern verbunden, was auch dazu führt, dass interpretierte Sprachen zur Laufzeit langsamer sind. Solange ein Dolmetscher vorhanden ist, sind interpretierte Sprachen bequemer zu übertragen, während kompilierte Sprachen kompiliert werden müssen Verschiedene Systeme. Die Arbeit beim Debuggen des Programms ist mühsam und langsam. Kompilierte Sprachen finden Sie in CC ++ usw Eine halbkompilierte und halbinterpretierte Sprache. Java konvertiert die Quelldatei in Bytecode, dh eine .class-Datei, und konvertiert sie in eine Binärdatei, wenn das Programm ausgeführt wird. Es unterscheidet sich ein wenig von .net in C#. Der von C# kompilierte .net-Zielcode kommt der Portabilität von Binärdateien nahe und ist nicht so gut wie Java und überall kompilieren".
5. Objektorientiert und prozessorientiert
Beim Prozessorientierten geht es darum, zu entscheiden, wie man einen Weg zum Ziel ebnet, während es beim objektorientierten darum geht, dafür Bilder mit bestimmten Funktionen zu verwenden.
C++ ist eine teilweise objektorientierte Java-Sprache mit Kapselung, eine vollständig objektorientierte C-Sprache und eine prozessorientierte Sprache.
Hier gibt es auch funktionale Typen
Das Konzept der dynamischen, statischen sowie starken und schwachen Typen von Programmiersprachenparadigmen – Der Wind ist klar und das Herz fliegt – Blog Park Das Konzept der dynamischen, statischen sowie starken und schwachen Typen von Beim Erlernen einer Sprache stößt man häufig auf verschiedene Konzepte wie Java ist eine objektorientierte Sprache, C ist eine prozessorientierte Sprache, Lisp ist eine funktionale Programmiersprache, Scala ist eine statische Sprache. Was bedeuten diese https: //www.cnblogs.com/binbinbin/articles/14012424.html
6. Unterscheiden Sie zwischen kompilierten und interpretierten Typen
1. Das kompilierte Programm wird als Ganzes kompiliert, um den Zielcode zu bilden, und dann sofort ausgeführt.
Der Dolmetscher wird gleichzeitig gedolmetscht und ausgeführt. Die Erklärung eines Satzes und die anschließende Übermittlung an den Computer zur Ausführung bilden kein Zielprogramm. Genau wie bei der „Dolmetschung“ bei der Fremdsprachenübersetzung wird dabei kein übersetzter Text erzeugt.
2. Kompilierung bedeutet, dass mit Ausnahme der ersten Kompilierung immer Zielcode + Maschinenausführung = Ergebnis ist
Und der Interpreter ist immer Code + Interpreter + Maschinenausführung = Ergebnis
Im Detail konvertiert der Compiler jeden Teil des Quellprogramm Jede Anweisung wird in Maschinensprache kompiliert und in einer Binärdatei gespeichert. Auf diese Weise kann der Computer das Programm zur Laufzeit direkt in Maschinensprache ausführen.
Der Interpreter interpretiert das Programm nur einzeln in Maschinensprache, damit es vom Computer ausgeführt werden kann, sodass die Laufgeschwindigkeit nicht so hoch ist wie die des kompilierten Programms. Dies liegt daran, dass der Computer die von uns geschriebenen Anweisungen nicht direkt erkennen und ausführen kann, sondern nur Maschinensprache (in binärer Form). Code-Prozess. Der sogenannte „Zwischencode“ ist ein Notationssystem mit einfacher Struktur und klarer Bedeutung. Die Komplexität dieses Notationssystems liegt zwischen der Quellprogrammsprache und der Maschinensprache und lässt sich leicht in den Zielcode übersetzen. Darüber hinaus können maschinenunabhängige Optimierungen auf der Zwischencodeebene durchgeführt werden.
Assembly-Code ist der Zielcode und der Zwischencode ist theoretisch maschinenunabhängig.
Im Kompilierungsprinzip stellen Wissen ternär, quartär, umgekehrtes Polnisch usw. Zwischencodes dar.
2. Objektcode; Objektcode bezieht sich auf den Code, der von einem Compiler oder Assembler nach der Verarbeitung von Quellcode generiert wird. Er besteht im Allgemeinen aus Maschinencode oder Code, der der Maschinensprache ähnelt. Eine Objektdatei ist eine Computerdatei, die Objektcode speichert. Sie wird oft als Binärdatei bezeichnet. Die Objektdatei enthält Maschinencode; Daten, die vom Zentralprozessor des Computers direkt ausgeführt und vom Code während der Laufzeit verwendet werden können, wie z. B. Verschiebungsinformationen wie Programmsymbole zum Verknüpfen oder Debuggen sowie andere Debugging-Informationen. Die Objektdatei ist ein Zwischenprodukt des Prozesses der Generierung von Programmdateien aus Quellcodedateien. Der Linker generiert eine ausführbare Datei oder Bibliotheksdatei, indem er die Objektdateien miteinander verknüpft. Das einzige Element in einer Objektdatei ist Maschinencode. Beispielsweise kann eine Objektdatei für ein eingebettetes System nur Maschinencode enthalten.
Der Zielcode hat normalerweise drei Formen: Maschinensprache, Assemblersprache und zu montierende Maschinensprachenmodule.
Probleme, die bei der Generierung von Zielcode berücksichtigt werden sollten
(1) Wie man den generierten Zielcode kürzer macht
(2) Wie man Register voll ausnutzt, um die Anzahl der Speicherzugriffe zu reduzieren
(3) So geht's Nutzen Sie die Systemeigenschaften voll aus.
In der Assemblersprache werden häufig Register AX, Befehlsregister IR usw. direkt verwendet. Verschiedene Registerparameter sind unterschiedlich, daher ist Assemblersprache eher Hardwaresprache.
Das obige ist der detaillierte Inhalt vonWelche Arten von Computersprachen gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!