Start


Video-Bearbeitung gut für Windows 11 und auch Apple

Schlachter-Bibel-Playlist Neues Testament






Sehr gute christliche Musik9


Unter Media: Google-Suchen oder Anwendungen der G.-Suche









Meine eigene Playlist bei YouTube (am 28. 5. 2021 sind es 2434, am 27. 6. 2021 sind es nur noch 2386, weil ich was gelöscht habe) - am 20. 08. 2021 sind es schon wieder viel mehr, nämlich 2409. Und am xx. xx. 2022 sind es 2500! Das wird gefeiert!



http://he.net/3d-map/ dort "TOUR" wählen! Tolles Internet.













ASCII

Mit ASCII fing es an

Wenn man mit dem Computer und dem Internet arbeitet, begegnet man des Öfteren der Möglichkeit, die Zeichencodierung auswählen zu können, so z.B. im Browser oder im Email-Programm. Die Wenigsten kennen überhaupt den Unterschied, daher stelle ich auf dieser Seite einmal die verschiedenen Codierungen vor.

Zeichensatzcodierungen sind im Grunde nur Tabellen, die bestimmten Byte-Werten konkrete Zeichen zuordnen. Anfangs waren dies nur alphanumerische Zeichen, heutzutage umfassen Zeichensätze z.B. auch Runen oder kyrillische Zeichen.

ASCII: Der ASCII (American Standard Code for Information Interchange) entstand in den 60er Jahren, ist 7-Bit codiert, nutzt also nur die ersten 128 Kombinationsmöglichkeiten. Er umfasst alphanumerische, Sonder- und Steuerzeichen und ist von den verwendeten Zeichen her auf die englische Sprache ausgerichtet.

Neben dem Standard-ASCII-Code gibt es noch den erweiterten ASCII-Code, bei dem nicht nur die ersten 128 Möglichkeiten genutzt werden, sondern auch noch die "letzten" 128. Die Varianten des erweiterten ASCII-Codes nennt man ANSI und ISO-8859.

ANSI: ANSI ist eine Erweiterung des ASCII-Codes, er ist genormt vom American National-Standards Institute (daher der Name) und hat sich als Standard auf den Windows- und Macintosh-Betriebssystemen durchgesetzt.

ISO-8859: Bei diesem Zeichensatz handelt es sich erstmal um eine Normserie mit länderspezifischen Zeichensätzen der ISO (International Organization for Standardization). Der Zeichensatz ISO-8859-1 (Latin) ist der erste von insgesamt 16 ländereigenen Zeichensätzen und ist für Westeuropa gemacht, beinhaltet also z.B. deutsche, französische oder skandinavische Sonderzeichen.

Unicode: Entstanden Ende der 80er Jahre mit dem Ziel alle Sprachen der Welt in einem Zeichensatz zu vereinen, ist der Unicode der größte und umfassendste Zeichensatz. Anfangs 16-Bit codiert, allerdings 2001 umgestellt auf 32-Bit beinhaltete Unicode 4 im Jahre 2003 ca. 100000 verschiedene Zeichen. Der Unicode vereint tote wie auch lebende Sprachen, so sind z.B. auch Runen Bestandteil.

UTF-8: Im Grunde eine Unicode-Variante mit hohem ASCII-Anteil, die Abkürzung bedeutet Unicode Transformation Format 8-Bit. Dieser Zeichensatz ist besonders im Internet weit verbreitet. Es ist angestrebt, dass er sich zum Standard entwickelt, indem alle neuen Internetkommunikationsprotokolle sich auf UTF-8 verstehen sollen. Da dies allerdings keine Verpflichtung, sondern nur eine Empfehlung oder "Bitte" ist, sieht es mit diesem Standard aktuell (März 2007) eher mäßig aus.





Compiler, Interpreter

Der Compiler übersetzt den von Menschen lesbaren Quelltext für ein Programm, das man auch als Quell­programm bezeichnet, in für den Computer lesbare Zeichenfolgen (das ist Maschinensprache). Der Unterschied zum Interpreter ist, dass der Compiler die Übersetzung vor der Laufzeit des Programms beendet. Das Gegenteil von Compiler, der Interpreter, macht dies Hand in Hand. Also muss man beim Compiler mehr machen, wenn man Software entwickelt. Das hat aber auch den Vorteil, dass der Programmablauf schnell ist. Der Programmablauf ist langsamer, wenn der Interpreter arbeitet.

Compiler: Es ist wie eine Bestellung.

Es ist so ein Unterschied wie zwischen Einkaufen gehen und einen Einkauf bestellen, z. B. wenn bei der Bestel­lung ("Compilierung") nur eine Komplettlieferung zu­stande kommen soll, und vorher überprüft werden soll, ob auch alle bestellten Teile zueinander passen.

Interpreter:

Beim normalen Einkauf brauchst Du nicht schon vorher abzusichern, dass alles vorrätig ist - es kann aber passieren, dass Du nicht weiter einkaufen kannst, wenn irgendwas ausverkauft ist, oder Du bei fremdem Einkaufszettel nicht alles lesen kannst.


Compiler und Interpreter sind Implementierungsformen von Software. Generell geht es beim Compilieren und Interpretieren darum, den Quelltext, der mit einer höheren Programmiersprache (zum Beispiel C++, C# oder Java) geschrieben wurde, in Maschinenbefehle umzusetzen. Das bedeutet, die lesbaren Programmierbefehle müssen in weniger komplexe Instruktionen übersetzt werden, damit der Prozessor diese ausführen kann.

In der Theorie kann der Quelltext jeder Programmiersprache sowohl mit einem Compiler als auch mit einem Interpreter implementiert werden. In der Praxis ist die Implementierung trotzdem festgelegt. Die Verwendung einer Programmiersprache legt den Einsatz eines Compilers oder Interpreters fest.

Compiler

Der Compiler ist ein Programm, der aus dem Quelltext das eigentliche Programm erstellt. Der Quelltext könnte zum Beispiel in C oder C++ geschrieben sein. Einzelne Anweisungen aus dem Quelltext werden in Folgen von Maschinenanweisungen übersetzt. Nach dem Compilieren wird das Programm erzeugt, in dem sich ausführbarer Code befindet. Bei der Ausführung des Programms werden diese Anweisungen "direkt" vom Prozessor ausgeführt. Jede Maschinenanweisung entspricht dabei einer festgelegten Bitfolge. Innerhalb des Prozessors wird diese Bitfolge verarbeitet. Der ausführbare Code verarbeitet auch Eingaben und erzeugt die Ausgabe.

Beim Compilieren von Software legt der Compiler fest, welche Instruktionen in welcher Reihenfolge an den Prozessor geschickt werden. Wenn diese Instruktionen nicht auf andere warten müssen, kann der Prozessor sogar mehrere davon parallel verarbeiten.

Sobald ein neues Betriebssystem oder ein neuer Prozessor zum Einsatz kommt, muss der Quelltext neu compiliert werden. In der Praxis ist es so, dass Prozessoren und Betriebssysteme einen Kompatibilitätsmodus haben, so das alte Programme auch auf neuen Plattformen laufen. So müssen compilierte Programme nicht immer neu compiliert werden. Aber die Kompatibilität hat natürlich ihre Grenzen.

Für jede Programmiersprache (m) braucht es für jeden Prozessor (n) einen eigenen Compiler (m x n). Typische Programmiersprachen mit Compiler sind Pascal, Modula, COBOL, Fortran, C und C++.

Vorteile: Die Übersetzung in ausführbaren Code ist äußerst effizient und optimiert den generierten Code. Compilierte Programme arbeiten sehr schnell, was sich besonders bei lang laufenden Programmen lohnt.

Nachteile: Der Aufwand bei der Software-Entwicklung steigt durch das Compilieren, was einiges an Zeit und Ressourcen in Anspruch nimmt. So muss bei jeder Quelltext-Änderung erneut compiliert werden, wenn das Programm getestet werden soll.

Interpreter

Der Quelltext wird von der Programmiersprache in einen Hardware-unabhängigen Bytecode umgewandelt. Der Interpreter setzt diesen Bytecode in Maschinenanweisungen um. Den Interpreter muss man sich dabei als eine virtuelle Maschine (VM) vorstellen, in der das Programm läuft. Hierbei darf man den Interpreter nicht mit einer virtuellen Maschine der Virtualisierungstechnik verwechseln. Es handelt sich dabei um zwei unterschiedliche Techniken mit der gleichen Bezeichnung.

Der Interpreter ist eine Software-Bibliothek, die Eingaben und Bytecode entgegennimmt und zur Laufzeit interpretiert. Der Interpreter agiert als eine virtuelle Maschine, die den Bytecode ausführt. Der Interpreter nimmt dabei die Rolle des Prozessors ein. Die virtuelle Maschine ist als eine Zwischenschicht zwischen Programmiersprache und Prozessor zu verstehen. Es handelt sich um einen Software-Container. Jetzt braucht man nur noch einen Interpreter pro Prozessor.

Typische Programmiersprachen mit Interpreter sind BASIC, Smalltalk, LISP und Python.

Vorteile: Bei der Entwicklung der Software kann man sofort testen, was das Debugging (Fehlersuche) erleichtert. Der verwendete ausführbare Code wird erst zur Laufzeit generiert.

Nachteile: Generell sind interpretierte Programme langsamer und ineffizient. Es müssen immer die selben Programmteile, wie zum Beispiel Schleifen und Funktionen, erneut übersetzt werden.

Es gibt auch Programmiersprachen, wie zum Beispiel C# und Java, die Compiler und Interpreter kombinieren. Wie beim Interpreter wird der Quelltext in Hardware-unabhängige VM-Anweisungen (Bytecode) übersetzt. Bei der Ausführung dieser Anweisungen durch den JIT-Compiler werden die Anweisungen in Maschinencode übersetzt. Der JIT-Compiler berücksichtigt dabei die verschiedenen Eigenheiten des Prozessors.

Beim JIT-Compiler wird aus dem Bytecode der Programmiersprache der Maschinencode für den Prozessor generiert, weil das schneller ist, als wenn der Interpreter den Bytecode ausführt. Der Bytecode wird nach der Ausführung verworfen und muss bei nochmaliger Ausführung erneut übersetzt werden.

Typischerweise arbeitet man mit einem JIT-Compiler, wenn es um das Prinzip "write once, run anywhere" geht.

Wenn es also darum geht, den Quelltext auf unterschiedlichen Betriebssystemen und Hardware einzusetzen.

Eine Software wird einmal geschrieben und ist dann auf verschiedenen Plattformen lauffähig (Portabilität).