Vergleich Programmiersprachen
Entspricht dem Modul 2.2 Programmiersprachen – Vergleich
Entspricht dem Modul 2.2 Programmiersprachen – Vergleich
Kartei Details
Karten | 27 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Andere |
Erstellt / Aktualisiert | 03.02.2014 / 14.02.2020 |
Weblink |
https://card2brain.ch/box/vergleich_programmiersprachen
|
Einbinden |
<iframe src="https://card2brain.ch/box/vergleich_programmiersprachen/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
Was ist ein Programm
Ein Computerprogramm oder kurz Programm ist eine den Regeln einer bestimmten Programmiersprache genügende Folge von Anweisungen (bestehend aus Deklarationen und Instruktionen), um auf einem Computer eine bestimmte Funktionalität, Aufgaben- oder Problemstellung bearbeiten/lösen zu können.
Was ist eine Programmiersprache
Eine Programmiersprache ist eine formale Sprache zur Formulierung von Datenstrukturen und Algorithmen, d. h. von Rechenvorschriften, die von einem Computer ausgeführt werden können. Sie setzen sich aus Anweisungen nach einem vorgegebenen Muster zusammen, der sogenannten Syntax.
Was ist eine Assemblersprache
Eine Assemblersprache ist eine Programmiersprache, welche die Maschinensprache einer spezifischen Prozessorarchitektur in einer für den Menschen lesbareren Form repräsentiert. Jede Prozessorarchitektur hat ihre eigene Assemblersprache.
Was sind Hochsprachen
Eine Hochsprache oder auch höhere Programmiersprache (engl. high level programming language) ist eine Programmiersprache, deren Befehlsnamen und Syntax der menschlichen Sprache angenähert und dadurch vergleichsweise leicht erlernbar sind.
Was versteht man unter Maschinensprache
Als Maschinensprache bezeichnet man den binär ausgedrückten Befehlssatz eines Prozessors.
Was ist Maschinencode
Als Maschinencode bezeichnet man lückenlose, binär dargestellte Codes, welche sowohl Befehle als auch speicherinterne Daten repräsentieren und direkt von einem Prozessor verarbeitet werden können.
Was versteht man unter Syntax
Die Syntax einer Programmiersprache beschreibt die gültigen Folgen von Zeichenketten. Die Syntax regelt also die "Rechtschreibung" einer Programmiersprache. Sie lässt sich formal festlegen, z.B. mit Syntaxdiagrammen oder in einer Grammatik.
Semantik
Die Semantik beschreibt, welche Bedeutung die einzelnen Sprachelemente der Syntaxdefinition besitzen. Die Semantik wird in der Regel textuell beschrieben.
Was ist die Erweiterte Backus-Naur Form
Die Backus Naur Form ist eine Variante von Syntaxdiagrammen.
Unterschied zwischen Backus Nauer Form und Syntaxdiagrammen
Die Backus Nauer Form erlaubt nicht alle Verbindungen, hat strengere Auflagen. Deshalb ist jede EBNF als Syntaxdiagramm darstellbar, aber nicht umgekehrt.
Produktion in EBNF
- Eine EBNF besteht aus einer Liste von Produktionen.
- Jede Produktion beschreibt die Syntax eines bestimmten Grammatikfragmentes.
- Produktionen werden als eine Art Gleichungen geschrieben. Auf der linken Seite steht ein Name für das definierte Grammatikfragment, auf der rechten Seite eine Folge von Symbolen, die den Aufbau des Grammatikfragmentes festlegen.
- Zwischen linker und rechter Seite wird das Trennzeichen ::= gesetzt.
- Das Ende einer Produktion wird mit einem Punkt gekennzeichnet, also schematisch:
linke Seite ::= rechte Seite.
– Wenn mehrere Symbolfolgen auf der rechten Seite einer Produktion zur Auswahl stehen, werden die Möglichkeiten nacheinander aufgeführt und mit senkrechten Strichen getrennt. integer ::= [sign] digit {digit}. sign ::= "+" | "-". digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". integer ::= [sign] ("0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9") {digit}. sign ::= "+" | "-". digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".Symbole EBNF
Definition =
Aufzählung ,
Endezeichen ;
Alternative |
Option [ … ]
Optionale Wiederholung { … }
Gruppierung ( … ) Anführungszeichen, 1. Variante " … "
Anführungszeichen, 2. Variante ' … '
Kommentar ("…")
Spezielle Sequenz ? … ?
Ausnahme -
Was geschieht beim Compilieren
Der Quelltext des Programms wird vor der ersten Ausführung durch einen Compiler in Maschinencode übersetzt.
Beim Ausführen des compilierten Programms wird eine hohe Ausführungsgeschwindigkeit erreicht.
Während des Compilierens wird der Quelltext durch den Compiler auf syntaktische Fehleruntersucht.
Compilierte Sprachen sind meistens typsicher.
Vertreter: C, C++, Smalltalk, Objective-C
Interpretierende Programmiersprachen
Der Quelltext des Programms wird zur Laufzeit von einem Interpreter eingelesen und Anweisung für Anweisung abgearbeitet
Dei Ausführung eines interpretierten Programms ist langsamer als diejenige eines compilierten Programms.
Bei kleinen Programmen kann bei kleinen Programmen auf den Edit-Compile-Test-Zyklus verzichtet werden.
Der Interpreter überwacht die Ausführung des Programms während der Laufzeit.
Vertreter: VBA, ASP, JavaScript, LISP, MATLAB
Mischformen Compiliert, Interpretiert
Moderne Programmiersprachen wie z.B. Java oder C# compilieren das auszuführende Programm zunächst in einen Zwischencode (bei Java «Bytecode», in .NET IML genannt), der zur Laufzeit durch einen Interpreter in Form einer virtuellen Maschine ausgeführt wird. In Java werden zur Laufzeit so genannte „Hotspots“ (häufig benutzte Programmsegmente) erkannt und während des Programmlaufs in ein Maschinenprogramm übersetzt. Dadurch können Java-Programme eine – verglichen zu compilierten Programmen – ebenfalls gute Performance erreichen.
Java Virtual Machine
Die Java Virtual Machine (abgekürzt Java VM oder JVM) ist Teil der Java-Laufzeitumgebung (JRE) • Die JVM ist für die Ausführung des Java-Bytecodes verantwortlich • Die JVM dient als Schnittstelle zur Maschine und zum Betriebssystem und ist für die meisten Plattformen verfügbar (z.B. Linux, Mac, Solaris, Windows, usw.) • Die JVM selbst ist oft in C und/oder C++ geschrieben
Programmiersprachen 1. Generation (Maschinensprache)
Ab 1941.
Als Sprachen der 1. Generation werden die Maschinensprachen bezeichnet. Anweisungen werden binär (mit 0 oder 1) oder hexadezimal codiert. Der Code kann vom Prozessor ohne vorhergehende Umwandlung durch einen Assembler oder Compiler abgearbeitet werden. Erlaubt die Erstellung von Effizientem und schnellem Code. Schwierige Fehlersuche. Aufwändige Programmierung, da jede Maschinenanweisung einzeln programmiert werden muss. Auf spezifische Maschinen und CPU‘s zugeschnitten und deshalb nicht portierbar.
Programmiersprachen 2. Generation (Assemblersprachen)
1949/1952
Als Sprachen der 2. Generation werden die Assemblersprachen bezeichnet. Anstelle von binärem Code werden Mnemonische Symbole verwendet. Von Menschen lesbarer Code. Der Assemblercode wird von einem Assembler in Maschinencode umgewandelt. Computer und CPU spezifisch und somit nicht portierbar. Leichteres Debugging im Vergleich zu Maschinencode. Erlaubt bereits Makro- und Strukturierte Programmierung. Wird in der Regel bei Performancekritischen Anwendungen verwendet.
Programmiersprachen 3. Generation (Höhere Programmiersprachen)
1952/1957
• Sprachen der 3. Generation werden auch als Höhere Programmiersprachen bezeichnet. • Syntax weist Ähnlichkeit zur menschlichen Sprache auf (Grammatik). • Zu den 3GL Sprachen werden die problemorientierten / imperativen Sprachen gezählt. • Code einer 3GL Programmiersprache beschreibt die Problemlösung mittels Algorithmen. • Der Code wird mittels eines Compilers in Maschinencode umgewandelt oder zur Laufzeit durch einen Interpreter ausgeführt. • Einführung von Kontrollstrukturen, Befehlen, Variablennamen, Subroutinen.
Programmiersprachen 4. Generation
1970
• Weitere Abstraktion zu 3GL Programmiersprachen, hin zu Programmiersprachen die noch näher bei der menschlichen Sprache und Denkweise sind. • Bezieht sich eher auf Softwaresysteme als auf eine einzelne Programmiersprache. • Mit dem Code wird das zu erreichende Resultat / Ziel beschrieben und nicht die Problemlösung. • Anwendungsprogrammentwicklung: Die zur Problemlösung nötigen Algorithmen sind in der Programmiersprache integriert und brauchen durch den Softwareentwickler nicht codiert zu werden. • Ziel ist es den Aufwand und die Kosten der Softwareentwicklung zu reduzieren. • Generierung von Code mit CASE-Tools (Computer Aided Software Engineering). • Anwendungsbereiche: Datenbankabfragen, Erzeugen von Reports, Webentwicklung etc.Programmiersprachen 5. Generation (A.I.)
1972
• Programmiersprachen mit der Prämisse dass ein Problem gelöst werden kann, und eine Applikation dafür gebaut werden kann, in dem man die für die Lösung notwendigen Bedingungen und Einschränkungen logisch beschreibt. • Die Eigenschaften einer zu erreichende Lösung werden logisch beschrieben und das System erzeugt danach die für die Problemlösung geeigneten Algorithmen. • Anwendungsbereich: Artifizielle Intelligenz.
Programmierparadigma
Als Programmierparadigma einer Programmiersprache bezeichnet man die Sichtweise auf und den Umgang mit den zu verarbeitenden Daten und Operationen.
Prozedurales Paradigma
Abfolge von Befehlen
Kontrollstrukturen (Folge, Auswahl, Wiederholung)
Aufruf von Unterprogrammen und das Durchleiten und die Rückgabe von Parameterwerten
Programme in kleinere Teilaufgaben aufzuspalten
+Leicht verständlich
+Einfache Lösungen mit geringem Aufwand umsetzbar
- Umfangreiche Applikationen schwer übersichtlich
Objektorientiertes Paradigma
Basiert auf Klassen und Objekten
Die Prgrammlogik ist in Methoden abgebildet
Ein Objekt kapselt Daten und Methoden
Unterstützung von Vererbungsmechanismen, Polymorphie
Vorteile:
+Wiederverwendbarkeit ist sehr hoch
+Übersichtlichkeit und Granularität sind hoch
+Probleme lassen sich aus dem Verständnis der realen Welt lösen
- Ein schlechtes Design kann grossen Schaden anrichten
- hoher Initialaufwand für die Architektur
Funktionales Paradigma
Programme bestehen ausschliesslich aus Funktionen
Die Programmlogik ergibt sich aus den funktionalen Zusammenhängen
Fehlen von imperativen Sprachelementen
+ Wenige, einfache, transparente Befehle
+ Ergibt kurzen und prägnanten Code
- Lernkurve ziemlich steil
- geringe Verbreitung
Imperativ
Imperative Programmierung ist ein Programmierparadigma. Danach werden Programme so entwickelt, dass „ein Programm (Anm.: der Quellcode) aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll. Die Bezeichnung geht auf lateinisch 'imperare' = 'anordnen, befehlen' zurück.
Deklarativ
Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann automatisch ermittelt.
-
- 1 / 27
-