[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki5\/2020\/12\/03\/faktor-programmiersprache-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki5\/2020\/12\/03\/faktor-programmiersprache-wikipedia\/","headline":"Faktor (Programmiersprache) – Wikipedia","name":"Faktor (Programmiersprache) – Wikipedia","description":"Faktor ist eine stapelorientierte Programmiersprache, die von Slava Pestov erstellt wurde. Factor ist dynamisch typisiert und verf\u00fcgt \u00fcber eine automatische","datePublished":"2020-12-03","dateModified":"2020-12-03","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki5\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki5\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":100,"height":100},"url":"https:\/\/wiki.edu.vn\/wiki5\/2020\/12\/03\/faktor-programmiersprache-wikipedia\/","wordCount":2895,"articleBody":"Faktor ist eine stapelorientierte Programmiersprache, die von Slava Pestov erstellt wurde. Factor ist dynamisch typisiert und verf\u00fcgt \u00fcber eine automatische Speicherverwaltung sowie leistungsstarke Metaprogrammierungsfunktionen. Die Sprache verf\u00fcgt \u00fcber eine einzige Implementierung mit einem selbst gehosteten Optimierungscompiler und einer interaktiven Entwicklungsumgebung. Die Faktorverteilung enth\u00e4lt eine gro\u00dfe Standardbibliothek. Table of ContentsGeschichte[edit]Beschreibung[edit]Implementierung und Bibliotheken[edit]Verweise[edit]Externe Links[edit]Geschichte[edit]Slava Pestov schuf Factor 2003 als Skriptsprache f\u00fcr ein Videospiel.[1] Die anf\u00e4ngliche Implementierung, die jetzt als JFactor bezeichnet wird, wurde in Java implementiert und auf der Java Virtual Machine ausgef\u00fchrt. Obwohl die fr\u00fche Sprache in Bezug auf die Syntax oberfl\u00e4chlich dem modernen Faktor \u00e4hnelte, unterscheidet sich die moderne Sprache in praktischer Hinsicht stark und die aktuelle Implementierung ist viel schneller.Die Sprache hat sich im Laufe der Zeit erheblich ver\u00e4ndert. Urspr\u00fcnglich konzentrierten sich Faktorprogramme auf die Bearbeitung von Java-Objekten mit den Reflexionsfunktionen von Java. Von Anfang an bestand die Designphilosophie darin, die Sprache an die darin geschriebenen Programme anzupassen. Als die Faktorimplementierung und die Standardbibliotheken detaillierter wurden, wurde die Notwendigkeit bestimmter Sprachfunktionen klar und sie wurden hinzugef\u00fcgt. JFactor hatte kein Objektsystem, in dem Sie Ihre eigenen Klassen definieren konnten, und fr\u00fche Versionen von nativem Faktor waren dieselben. Die Sprache war auf diese Weise dem Schema \u00e4hnlich. Heute ist das Objektsystem ein zentraler Bestandteil von Factor. Andere wichtige Sprachfunktionen wie Tupelklassen, Kombinator-Inlining, Makros, benutzerdefinierte Parsing-W\u00f6rter und das moderne Vokabelsystem wurden nur st\u00fcckweise hinzugef\u00fcgt, als ihre N\u00fctzlichkeit klar wurde. Die Fremdfunktionsschnittstelle war seit sehr fr\u00fchen Versionen von Factor vorhanden, und in JFactor gab es ein analoges System. Dies wurde gew\u00e4hlt, anstatt ein Plugin f\u00fcr den C-Teil der Implementierung f\u00fcr jede externe Bibliothek zu erstellen, mit der Factor kommunizieren soll, und hat den Vorteil, dass es deklarativer, schneller zu kompilieren und einfacher zu schreiben ist.Die Java-Implementierung bestand urspr\u00fcnglich nur aus einem Interpreter, sp\u00e4ter wurde jedoch ein Compiler f\u00fcr Java-Bytecode hinzugef\u00fcgt. Dieser Compiler hat nur an bestimmten Prozeduren gearbeitet. Die Java-Version von Factor wurde durch eine in C und Factor geschriebene Version ersetzt. Anfangs bestand dies nur aus einem Interpreter, aber der Interpreter wurde durch zwei Compiler ersetzt, die in verschiedenen Situationen verwendet wurden. Im Laufe der Zeit ist die Faktorimplementierung erheblich schneller gewachsen.[2]Beschreibung[edit]Factor ist eine dynamisch typisierte, funktionale und objektorientierte Programmiersprache. Code besteht aus kleinen Prozeduren, die als W\u00f6rter bezeichnet werden. Im typischen Code sind diese 1 bis 3 Zeilen lang, und eine Prozedur mit mehr als 7 Zeilen ist sehr selten. Etwas, das idiomatisch mit einer Prozedur in einer anderen Programmiersprache ausgedr\u00fcckt w\u00fcrde, w\u00fcrde als mehrere W\u00f6rter in Factor geschrieben.[3]Jedes Wort hat eine feste Anzahl von Argumenten und eine feste Anzahl von R\u00fcckgabewerten. Argumente zu W\u00f6rtern werden in umgekehrter polnischer Notation auf einem Datenstapel \u00fcbergeben. Der Stapel wird nur zum Organisieren von Wortaufrufen und nicht als Datenstruktur verwendet. Der Stapel in Faktor wird auf \u00e4hnliche Weise wie der Stapel in Forth verwendet. Aus diesem Grund werden beide als Stapelsprachen betrachtet. Im Folgenden finden Sie beispielsweise einen Codeausschnitt, der “Hallo Welt” in den aktuellen Ausgabestream druckt: \"hello world\" printprint ist ein Wort in der io Vokabular, das eine Zeichenfolge aus dem Stapel nimmt und nichts zur\u00fcckgibt. Es druckt die Zeichenfolge in den aktuellen Ausgabestream (standardm\u00e4\u00dfig das Terminal oder den grafischen Listener).[3]Nicht alle Daten m\u00fcssen nur mit dem Stack weitergegeben werden. Mit lokalen Variablen mit lexikalischem G\u00fcltigkeitsbereich k\u00f6nnen Sie in einer Prozedur verwendete Provisorien speichern und darauf zugreifen. Variablen mit dynamischem G\u00fcltigkeitsbereich werden verwendet, um Dinge zwischen Prozeduraufrufen zu \u00fcbergeben, ohne den Stapel zu verwenden. Beispielsweise werden die aktuellen Eingabe- und Ausgabestreams in Variablen mit dynamischem G\u00fcltigkeitsbereich gespeichert.[3]Faktor betont Flexibilit\u00e4t und die F\u00e4higkeit, die Sprache zu erweitern.[3] Es gibt ein System f\u00fcr Makros sowie f\u00fcr die willk\u00fcrliche Erweiterung der Faktorsyntax. Die Syntax des Faktors wird h\u00e4ufig erweitert, um neue Arten von Wortdefinitionen und neue Arten von Literalen f\u00fcr Datenstrukturen zu erm\u00f6glichen. Es wird auch in der XML-Bibliothek verwendet, um eine Literal-Syntax zum Generieren von XML bereitzustellen. Das folgende Wort nimmt beispielsweise eine Zeichenfolge und erzeugt ein XML-Dokumentobjekt, bei dem es sich um ein HTML-Dokument handelt, das die Zeichenfolge hervorhebt: : make-html ( string -- xml ) dup ;Das Wort dup dupliziert das oberste Element auf dem Stapel. Das steht f\u00fcr das Ausf\u00fcllen dieses Teils des XML-Dokuments mit einem Element aus dem Stapel.Implementierung und Bibliotheken[edit]Factor enth\u00e4lt eine gro\u00dfe Standardbibliothek, die vollst\u00e4ndig in der Sprache geschrieben ist. Diese beinhaltenEin plattform\u00fcbergreifendes GUI-Toolkit, das auf OpenGL und verschiedenen Fenstersystemen basiert und f\u00fcr die Entwicklungsumgebung verwendet wird.[4]Bindungen an mehrere Datenbankbibliotheken, einschlie\u00dflich PostgreSQL und SQLite.[5]Ein HTTP-Server und -Client mit dem Furnace-Webframework.[6]Effiziente homogene Arrays von Ganzzahlen, Floats und C-Strukturen.[7]Eine Bibliothek, die regul\u00e4re Ausdr\u00fccke implementiert und Maschinencode generiert, um den Abgleich durchzuf\u00fchren.[8]In Factor ist eine Fremdfunktionsschnittstelle integriert, die die Kommunikation mit C-, Objective-C- und Fortran-Programmen erm\u00f6glicht. Es gibt auch Unterst\u00fctzung f\u00fcr die Ausf\u00fchrung und Kommunikation mit in GLSL geschriebenen Shadern.[3][9]Factor ist in Factor und C ++ implementiert. Es wurde urspr\u00fcnglich von einer fr\u00fcheren Java-Implementierung gebootet. Heute sind der Parser und der Optimierungscompiler in der Sprache geschrieben. Bestimmte grundlegende Teile der Sprache sind in C ++ implementiert, z. B. der Garbage Collector und bestimmte Grundelemente.Factor verwendet ein bildbasiertes Modell, analog zu vielen Smalltalk-Implementierungen, bei denen kompilierter Code und Daten in einem Bild gespeichert werden.[10] Um ein Programm zu kompilieren, wird das Programm in ein Bild geladen und das Bild gespeichert. Ein spezielles Tool unterst\u00fctzt Sie beim Erstellen eines minimalen Images zum Ausf\u00fchren eines bestimmten Programms und verpackt das Ergebnis in etwas, das als eigenst\u00e4ndige Anwendung bereitgestellt werden kann.[3][11]Der Faktor-Compiler implementiert viele erweiterte Optimierungen und wurde als Ziel f\u00fcr die Erforschung neuer Optimierungstechniken verwendet.[3][12]Verweise[edit]^ Pestov, Slava. “Slava Pestovs Ecke des Netzes”.^ “Concatenative.org Wiki: Faktor \/ Implementierungsverlauf”.^ ein b c d e f G Pestov, Sviatoslav; Ehrenberg, Daniel (2010). “Faktor: eine dynamische stapelbasierte Programmiersprache”. ACM SIGPLAN-Hinweise. ACM. 45 (12): 43\u201358. doi:10.1145 \/ 1899661.1869637.^ Pestov, Slava. “Faktordokumentation: UI-Framework”.^ Coleman, Doug. “Faktordokumentation: Datenbankbibliothek”.^ Pestov, Slava. “Faktordokumentation: HTTP-Server”.^ Pestov, Slava. “Faktordokumentation: Spezialisierte Arrays”.^ Coleman, Doug; Ehrenberg, Daniel. “Faktordokumentation: Regul\u00e4re Ausdr\u00fccke”.^ Pestov, Slava. “\u00dcberarbeitung der C-Bibliotheksschnittstelle von Factor”.^ Pestov, Slava. “Der Bootstrap-Prozess von Factor wurde erkl\u00e4rt”.^ Pestov, Slava. “Beim Sch\u00fctteln von B\u00e4umen”.^ Ehrenberg, Daniel (2010). “Closure Elimination als konstante Ausbreitung” (PDF). Archiviert von das Original (PDF) am 26.07.2011.Externe Links[edit]"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki5\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki5\/2020\/12\/03\/faktor-programmiersprache-wikipedia\/#breadcrumbitem","name":"Faktor (Programmiersprache) – Wikipedia"}}]}]