Makro (Informatik)
Im Computerprogrammierung, a Makro (kurz für "Makroanweisung"; aus griechisch μακρο-'lang groß'[1]) ist eine Regel oder Muster Dies gibt an, wie eine bestimmte Eingabe einem Ersatzausgang zugeordnet werden sollte. Das Anwenden eines Makros auf einen Eingang wird als bekannt als bekannt als Makroerweiterung. Der Eingang und die Ausgabe können eine Abfolge von sein lexikalische Token oder Figuren, oder ein Syntaxbaum. Charaktermakros werden in unterstützt Softwareanwendungen Um es einfach zu machen, gemeinsame Befehlssequenzen aufzurufen. Token und Baummakros werden in einigen unterstützt Programmiersprachen ermöglichen Code -Wiederverwendung oder um die Sprache manchmal für zu verlängern Domänenspezifische Sprachen.
Makros werden verwendet, um eine Abfolge von Computeranweisungen für den Programmierer als einzelne Programmanweisung zur Verfügung zu stellen, wodurch die Programmieraufgabe weniger langweilig und weniger fehleranfällig ist.[2][3] (Somit werden sie als "Makros" bezeichnet, weil ein "großer" Codeblock aus einer "kleinen" Reihenfolge von Zeichen erweitert werden kann.) Makros ermöglichen häufig Positions- oder Schlüsselwortparameter, die vorschreiben, was die der Bedingter Assembler Programm generiert und wurde verwendet, um das gesamte Erstellen zu erstellen Programme oder Programmsuiten nach Variablen wie Betriebssystem, Plattform oder andere Faktoren. Der Begriff stammt aus "Makroanweisung", und solche Erweiterungen wurden ursprünglich bei der Erzeugung verwendet Montagesprache Code.
Tastatur- und Mausmakros
Tastaturmakros und Mausmakros Ermöglichen Sie kurze Sequenzen von Tastenanschlägen und Mausaktionen, um sich in andere, normalerweise zeitaufwändige, Tastenanschläge und Mausaktionen zu verwandeln. Auf diese Weise können häufig verwendete oder sich wiederholende Sequenzen von Tastenanschlägen und Mausbewegungen sein automatisiert. Separate Programme zum Erstellen dieser Makros werden aufgerufen Makro -Rekorder.
In den 1980er Jahren Makroprogramme - ursprünglich SmartKey, dann war Superkey, Keyworks, Prokey - sehr beliebt, als erstes als Mittel, um automatisch zu formatieren Drehbücherdann für eine Vielzahl von Benutzereingabedaufsätzen. Diese Programme basierten auf dem TSR (Beenden und ansässig bleiben) Betriebsart und angewendet auf alle Tastatureingaben, unabhängig davon, in welchem Kontext sie aufgetreten sind. Sie müssen nach dem Aufkommen von Maus-gesteuerten Benutzeroberflächen und der Verfügbarkeit von Tastatur- und Maus-Makros in Anwendungen wie z. Textverarbeitungen und TabellenkalkulationenErmöglicht das Erstellen von anwendungsempfindlichen Tastaturmakros.
Tastaturmakros können in verwendet werden Massiv Multiplayer Online-Rollenspiele (MMORPGs) um sich wiederholte, aber lukrative Aufgaben auszuführen und so Ressourcen zu sammeln. Da dies ohne menschliche Anstrengung getan wird, kann es die Wirtschaft des Spiels verzerren. Aus diesem Grund ist die Verwendung von Makros ein Verstoß gegen die Tos oder Eula von den meisten MMORPGs, und ihre Administratoren verbringen erhebliche Anstrengungen, um sie zu unterdrücken.[4]
Anwendungsmakros und Skripten
Tastatur- und Maus-Makros, die mit den integrierten Makrofunktionen einer Anwendung erstellt werden, werden manchmal aufgerufen Anwendungsmakros. Sie werden erstellt, indem die Sequenz einmal ausgeführt und die Anwendung die Aktionen aufgezeichnet wird. Eine zugrunde liegende Makro -Programmiersprache, am häufigsten a SkriptspracheMit direktem Zugriff auf die Funktionen der Anwendung kann auch vorhanden sein.
Der Texthersteller der Programmierer, EMACs, (kurz für "Bearbeitung von Makros") folgt dieser Idee zu einer Schlussfolgerung. Tatsächlich besteht der größte Teil des Herausgebers aus Makros. EMACS wurde ursprünglich als eine Reihe von Makros in der Bearbeitungssprache entwickelt Teco; Es wurde später auf Dialekte von portiert Lispeln.
Ein anderer Programmierditor der Programmierer, Vim (ein Nachkomme von vi) hat auch eine Implementierung von Tastaturmakros. Es kann in ein Register (MACRO) aufzeichnen, was eine Person auf der Tastatur tippt, und es kann genau wiedergegeben oder bearbeitet werden VBA Makros für Microsoft Office. Vim hat auch eine Skriptsprache namens Vimscript[5] Makros erstellen.
Visual Basic für Anwendungen (VBA) ist eine Programmiersprache, die in enthalten ist Microsoft Office Von Büro 97 bis Office 2019 (obwohl es in einigen Komponenten des Amtes vor dem Büro 97 erhältlich war). Seine Funktion hat sich jedoch aus den Makrosprachen entwickelt und ersetzt, die ursprünglich in einigen dieser Anwendungen enthalten waren.
Xeditauf der Konversationsmonitorsystem (CMS) Komponente von VM, unterstützt Makros in geschrieben Geschäftsführer, Exec2 und Rexxund einige CMS -Befehle waren tatsächlich Wrapper um Xedit -Makros. Der Hessling -Redakteur (Der), ein Teilklon von Xedit, unterstützt Rexx -Makros mit Regina und offen Objekt rexx (Oorexx). Viele gängige Anwendungen und einige auf PCs verwenden Rexx als Skriptsprache.
Makrovirus
VBA hat Zugang zu den meisten Microsoft Windows -Systemaufrufe und führt aus, wenn Dokumente geöffnet werden. Dies macht es relativ einfach zu schreiben Computer Virus in VBA, allgemein bekannt als Makroviren. Mitte bis Ende der neunziger Jahre wurde dies zu einer der häufigsten Arten von Computerviren. In den späten 1990er Jahren und bis heute,, Microsoft hat seine Programme gepatcht und aktualisiert. Darüber hinaus wirken aktuelle Antivirenprogramme solchen Angriffen sofort entgegen.
Parametrisierte Makro
A Parametrisierte Makro ist ein Makro, das angegebene Objekte in seine Erweiterung einfügen kann. Dies gibt dem Makro einen Teil der Kraft von a Funktion.
Als einfaches Beispiel in der C ProgrammierspracheDies ist ein typisches Makro, das ist nicht ein parametrisierter Makro:
#definieren PI 3.14159
Dies bewirkt PI
immer ersetzt werden durch 3.14159
wo immer es vorkommt. Ein Beispiel für ein parametrisiertes Makro hingegen ist Folgendes:
#definieren Pred (x) ((x) -1)
Was dieses Makro erweitert, hängt davon ab, was Streit x wird an es übergeben. Hier sind einige mögliche Erweiterungen:
Pred (2) → ((2) -1) Pred (y+2) → ((y+2) -1) Pred (F (5)) → ((f (5)) -1)
Parametrisierte Makros sind ein nützlicher Mechanismus auf Quellenebene für die Durchführung Inline-Expansion, aber in Sprachen wie C Wenn sie eine einfache textuelle Substitution verwenden, haben sie eine Reihe schwerwiegender Nachteile gegenüber anderen Mechanismen zur Durchführung einer Inline-Expansion, wie z. Inline -Funktionen.
Die parametrisierten Makros, die in Sprachen wie verwendet werden, z. B. Lispeln, Pl/i und PlanenAndererseits sind viel leistungsfähiger und in der Lage, Entscheidungen darüber zu treffen, welchen Code er produzieren soll, der auf ihren Argumenten erzeugt wird. Daher können sie effektiv zur Durchführung verwendet werden Laufzeit-Codegenerierung.
Text-Substitution-Makros
Sprachen wie C und einige Assemblersprachen rudimentäre Makrosysteme haben, implementiert als Präprozessoren zum Compiler oder Assembler. C Präprozessor Makros arbeiten durch einfache textuelle Substitution am Zeicheneher als die Charakterebene. Die Makroanlagen von ausgefeilteren Abgängern, z. B., z. B., IBM High Level Assembler (Hlasm) kann nicht mit einem Präprozessor implementiert werden; Der Code für die Zusammenstellung von Anweisungen und Daten wird mit dem Code für die Zusammenstellung von Makroanfällen durchsetzt.
Eine klassische Verwendung von Makros befindet sich im Computer -Typettierungssystem Tex und seine Derivate, wo der größte Teil der Funktionalität auf Makros basiert.
MACROML ist ein experimentelles System, das sich in Einklang bringen möchte statische Typisierung und Makrosysteme. Nemerle Hat Syntax -Makros getippt, und eine produktive Möglichkeit, diese Syntax -Makros zu denken, ist als a Mehrstufige Berechnung.
Andere Beispiele:
- M4 ist ein ausgeklügelter eigenständiger Makroprozessor.
- Trac
- Makroverlängerung Tal, Begleitet Vorlagenattributsprache
- SMX: Für Webseiten
- Ml/1 (Makrosprache eins)
- Das Allgemeiner Makroprozessor ist ein kontextbezogenes Muster -Matching -Makroprozessor, der als Kombination von beschrieben werden könnte Reguläre Ausdrücke, EBNF und Awk
- SAM76
- TROFF und Nroff: Zum Typen- und Formatieren von Unix -Manpages.
- CMS Exec: Für Befehlszeilenmakros und Anwendungsmakros
- Exec 2 in Konversationsmonitorsystem (CMS): Für Befehlszeilenmakros und Anwendungsmakros
- Clist In IBMs Zeitfreigabeoption (TSO): Für Befehlszeilenmakros und Anwendungsmakros
- Rexx: Für Befehlszeilenmakros und Anwendungsmakros in, z. B.,,,,, Amigaos, CMS, OS/2, Tso
- SKRIPT: Für die Formatierung von Dokumenten
- Verschiedene Muscheln für, z. B., Linux
Einige wichtige Anwendungen wurden als Textmakro geschrieben, das von anderen Anwendungen aufgerufen wurde, z. B. nach Xedit in CMS.
Einbettbare Sprachen
Einige Sprachen, wie z. Php, kann in freie Formattext oder den Quellcode anderer Sprachen eingebettet werden. Der Mechanismus, durch den die Codefragmente erkannt werden (z. B. werden von der Klammerung durch und
?>
) ähnelt einer textuellen Makrosprache, aber sie sind viel leistungsstärkere, vollständig vorgestellte Sprachen. ¹¹iesen
Verfahrensmakros
Makros in der Pl/i Die Sprache sind in einer Teilmenge von PL/I selbst geschrieben: Der Compiler wird ausgeführt. "Präprozessor Anweisungen "zur Kompilierungszeit und die Ausgabe dieser Ausführung ist Teil des zusammengestellten Code Verfahrenssprache Da die Makrosprache auf Kosten eines größeren und langsameren Compilers viel größer ist als die von Textsubstitutionsmakros.
Rahmentechnologie's Frame -Makros haben ihre eigene Befehlssyntax, können aber auch Text in jeder Sprache enthalten. Jeder Frame ist sowohl eine generische Komponente in einer Hierarchie verschachtelter Unterassemblys als auch ein Verfahren zur Integration in seine Unterassembly -Frames (ein rekursiger Prozess, der Integrationskonflikte zugunsten von Unterabteilen auf höherer Ebene auflöst). Die Ausgänge sind benutzerdefinierte Dokumente, normalerweise kompilierbare Quellmodule. Die Rahmentechnologie kann die Verbreitung ähnlicher, aber subtil verschiedener Komponenten vermeiden, ein Problem, das die Softwareentwicklung seit der Erfindung von Makros und der Erfindung von Makros und Plaged hat Unterroutinen.
Die meisten Montagesprachen haben weniger leistungsstarke prozedurale Makroanlagen, beispielsweise ermöglicht es, einen Codeblock für n -mal wiederholt zu werden Schlaufe abrollen; Diese haben jedoch eine völlig andere Syntax als die tatsächliche Montagesprache.
Syntaktische Makros
Makrosysteme - wie der zuvor beschriebene C -Präprozessor -, die auf der Ebene der lexikalischen Token die lexikalische Struktur nicht zuverlässig bewahren können. Syntaktische Makrosysteme funktionieren stattdessen auf der Ebene von Abstrakte Syntaxbäumeund bewahren Sie die lexikalische Struktur des ursprünglichen Programms auf. Die am häufigsten verwendeten Implementierungen von syntaktischen Makrosystemen finden Sie in Lispeln-ähnliche Sprachen. Diese Sprachen eignen sich besonders für diesen Makrostil aufgrund ihrer einheitlichen, klammernden Syntax (bekannt als S-Expressionen). Insbesondere die einheitliche Syntax erleichtert die Bestimmung der Aufrufe von Makros. Lisp -Makros transformieren die Programmstruktur selbst, wobei die vollständige Sprache verfügbar ist, um solche Transformationen auszudrücken. Während syntaktische Makros häufig in lisparischen Sprachen gefunden werden, sind sie auch in anderen Sprachen wie zum Beispiel erhältlich Prolog,[6] Erlang,[7] Dylan,[8] Scala,[9] Nemerle,[10] Rost,[11] Elixier,[12] Nim,[13] Haxe,[14] und Julia.[15] Sie sind auch als Erweiterungen von Drittanbietern erhältlich JavaScript,[16] C#[17] und Python.[18]
Frühe Lisp -Makros
Bevor Lisp Makros hatte, war es sogenannt Fexprs, funktionsähnliche Operatoren, deren Eingaben nicht die Werte waren, die durch die Argumente berechnet wurden, sondern die syntaktischen Formen der Argumente und deren Ausgabe Werte waren, die in der Berechnung verwendet werden sollten. Mit anderen Worten, FEXPRs wurden auf der gleichen Ebene wie Eval implementiert und stellten ein Fenster in die Meta-Evaluierungsschicht bereit. Dies wurde im Allgemeinen als schwieriges Modell festgestellt, über das wir effektiv sind.[19]
1963 schlug Timothy Hart vor KI -Memo 57: Makrodefinitionen für LISP.[20]
Anaphorische Makros
Ein anaphorisches Makro ist eine Art Programmiermakro, die absichtlich eine Form erfasst, die dem Makro geliefert wird, auf die durch eine Anaphore bezeichnet werden kann (ein Ausdruck, der sich auf eine andere bezieht). Anaphorische Makros erschienen zuerst in Paul Graham's on Lisp und ihr Name ist ein Hinweis auf sprachliche Anaphora - die Verwendung von Wörtern als Ersatz für vorhergehende Wörter.
Hygienische Makros
Mitte der achtziger Jahre eine Reihe von Papieren[21][22] stellte den Begriff von vor Hygienisches Makro Ausdehnung (Syntax-Rules
), ein Musterbasis-System, in dem die syntaktischen Umgebungen der Makrodefinition und die Makroverwendung unterschiedlich sind, sodass Makrodefinition und Benutzer sich nicht um die versehentlicher Variablenerfassung sorgen können (vgl. Referenztransparenz). Hygienische Makros wurden für das Schema in der standardisiert R5rs, R6rs, und R7rs Standards. Es gibt eine Reihe konkurrierender Implementierungen von hygienischen Makros wie z. Syntax-Rules
, Syntax-Case
, explizite Umbenennung und syntaktische Verschlüsse. Beide Syntax-Rules
und Syntax-Case
wurden in den Schema -Standards standardisiert.
In letzter Zeit, Schläger hat die Vorstellungen von hygienischen Makros mit einem "Turm von Evaluatoren" kombiniert, so dass die syntaktische Expansionszeit eines Makrosystems die gewöhnliche Laufzeit eines anderen Codeblocks ist.[23] und zeigten, wie verschachtelte Expansion und Parsen in einer nicht parenthäsischen Sprache angewendet werden können.[24]
Eine Reihe anderer Sprachen als Schema implementieren entweder hygienische Makros oder implementieren teilweise hygienische Systeme. Beispiele beinhalten Scala, Rost, Elixier, Julia, Dylan, Nim, und Nemerle.
Anwendungen
- Bewertungsauftrag
- Makrosysteme haben eine Reihe von Verwendungsmöglichkeiten. In der Lage sein, die Reihenfolge der Bewertung zu wählen (siehe faule Bewertung und Nicht-Strengfunktionen) Ermöglicht die Erstellung neuer syntaktischer Konstrukte (z. Kontrollstrukturen) nicht von denen in der Sprache eingebaut. Zum Beispiel in einem Lisp -Dialekt, der hat
Kond
aber fehltwenn
Es ist möglich, letztere in Bezug auf die ersteren mit Makros zu definieren. Zum Beispiel hat das Schema beide Kontinuationen und hygienische Makros, die es einem Programmierer ermöglichen, seine eigenen Kontrollabstraktionen wie Schleifen und frühe Ausstiegskonstrukte zu entwerfen, ohne dass sie in die Sprache aufgebaut werden müssen. - Datenuntersprachen und domänenspezifische Sprachen
- Als nächstes ermöglichen Makros, Datensprachen zu definieren, die sofort in Code zusammengestellt werden. Dies bedeutet, dass Konstrukte wie Zustandsmaschinen auf eine Weise implementiert werden können, die sowohl natürlicher als auch effizient ist.[25]
- Bindungskonstrukte
- Makros können auch verwendet werden, um neue Bindungskonstrukte einzuführen. Das bekannteste Beispiel ist die Transformation von
Lassen
in die Anwendung einer Funktion auf eine Reihe von Argumenten.
Felleisen Vermutungen[26] dass diese drei Kategorien die primäre legitime Verwendungen von Makros in einem solchen System ausmachen. Andere haben alternative Verwendungen von Makros vorgeschlagen, wie z. Anaphorische Makros In Makrosystemen, die unhygienisch sind oder selektive unhygienische Transformation ermöglichen.
Die Interaktion von Makros und anderen Sprachmerkmalen war ein produktiver Forschungsbereich. Zum Beispiel, Komponenten und Module sind nützlich für die groß angelegte Programmierung, aber die Interaktion von Makros und diese anderen Konstrukte müssen für ihre Verwendung gemeinsam definiert werden. Modul- und Komponentensysteme, die mit Makros interagieren können, wurden für Schema und andere Sprachen mit Makros vorgeschlagen. Zum Beispiel die Schläger Die Sprache erweitert den Begriff eines Makrosystems auf einen syntaktischen Turm, in dem Makros in Sprachen einschließlich Makros geschrieben werden können, wobei Hygiene verwendet werden, um sicherzustellen, dass syntaktische Schichten unterschiedlich sind und die Module Makros in andere Module exportieren können.
Makros für maschinenunabhängige Software
Makros werden normalerweise verwendet, um eine kurze Zeichenfolge (Makroaufruf) einer längeren Anleitung zuzuordnen. Eine andere, weniger verbreitete Verwendung von Makros besteht darin, das Gegenteil umgekehrt zu machen: eine Abfolge von Anweisungen einer Makro -Zeichenfolge abzubilden. Dies war der Ansatz des mobilen Programmiersystems Stage2 maschinenunabhängig Makros. Anwendungen (insbesondere Compiler), die in diesen maschinenunabhängigen Makros geschrieben wurden, können dann ohne Änderung auf einem mit dem rudimentären Makro-Compiler ausgestatteten Computer ausgeführt werden. Die erste Anwendung in einem solchen Kontext ist ein ausgefeilterer und leistungsfähigerer Makro-Compiler, der in der maschinenunabhängigen Makrosprache geschrieben wurde. Dieser Makro -Compiler wird in a auf sich selbst angewendet Bootstrap Mode, um eine kompilierte und viel effizientere Version von sich selbst zu produzieren. Der Vorteil dieses Ansatzes besteht darin, dass komplexe Anwendungen von einem Computer auf einen ganz anderen Computer mit sehr wenig Aufwand portiert werden können (für jede Zielmaschine Architektur nur das Schreiben des rudimentären Makro -Compilers).[27][28] Das Aufkommen moderner Programmiersprachen, insbesondere C, für die Compiler auf praktisch allen Computern verfügbar sind, hat einen solchen Ansatz überflüssig gemacht. Dies war jedoch einer der ersten Fälle (wenn nicht der erste) von Compiler Bootstrapping.
Montagesprache
Während Makroanweisungen kann von einem Programmierer für jede Reihe von Programmanweisungen für native Assembler -Programme definiert werden. In der Regel sind Makros den mit dem Betriebssystem gelieferten Makrobibliotheken zugeordnet, die den Zugriff auf Betriebssystemfunktionen wie z. B. ermöglichen
- peripherer Zugang von Zugangsmethoden (einschließlich Makros wie offen, schließen, lesen und schreiben)
- Betriebssystemfunktionen wie Anhängen, Warten und Post für die Erstellung und Synchronisation von Subtask.[29] Typischerweise erweitern solche Makros in ausführbarer Code, z. B. für die Makroinstruktion der Beendigung,
- eine Liste von Konstante definieren Anweisungen, z. B. für die DCB MACRO - DTF (Definieren Sie die Datei) für DOS[30]- oder eine Kombination aus Code und Konstanten mit den Details der Erweiterung abhängig von den Parametern der Makroanweisung (z. B. eine Referenz auf eine Datei und einen Datenbereich für eine Leseanweisung);
- Der ausführbare Code, der häufig in einem A gekündigt wird Zweig- und Linkregister Anweisung zum Aufrufen einer Routine oder a Vorgesetzter Anruf Anweisung zum direkten Aufruf einer Betriebssystemfunktion.
- Erzeugen a Stufe 2 Job Stream für Systemgenerierung in, z. B., OS/360. Im Gegensatz zu typischen Makros generieren Sysgen Stufe 1 Makros keine Daten oder Code, die in Speicher geladen werden, sondern die Verwendung des SCHLAGEN Anweisung zu Ausgabe JCL und zugehörigen Daten.
In älteren Betriebssystemen wie denen, die auf IBM -Mainframes verwendet wurden Haben Sie Gegenstücke in Routinen für hochrangige Sprachen.
Geschichte
Mitte der 1950er Jahre, wenn Montagesprache Die Programmierung wurde häufig verwendet, um Programme für zu schreiben Digitale Computer, die Verwendung von Makroanweisungen wurde für zwei Hauptzwecke initiiert: um die Menge der Programmcodierung zu verringern, die durch Generieren mehrerer Versammlungssprachanweisungen aus einer Makroanweisung geschrieben werden mussten und Programmschreibstandards durchzusetzen, z. Angeben von Eingabe-/Ausgabebefehlen auf Standardarten.[31] Makroanweisungen waren effektiv ein mittlerer Schritt zwischen der Programmierung der Montagesprachen und der hochrangige Programmiersprachen folgte, wie z. Forran und Cobol. Zwei der frühesten Programmierinstallationen zur Entwicklung von "Makrosprachen" für den IBM 705 -Computer waren auf der Dow Chemical Corp. in Delaware und im Air Material Command, Ballistics Raksile Logistics Office in Kalifornien. Eine Makroanweisung, die im Format der Zielbaugruppe geschrieben wurde Anweisungen für Montagesprachanweisungen in Maschinensprache Anweisungen.[32]
In den späten 1950er Jahren folgte die Makrosprache von den Makroabläufen. Dies war eine Kombination aus beiden, bei denen ein Programm beide Funktionen diente, die eines Makro-Vorverarbeiters und eines Assemblers im selben Paket.[32][Fehlgeschlagene Überprüfung]
1959 Douglas E. Eastwood und 1959 Douglas McIlroy von Bell Labs Einführte bedingte und rekursive Makros in das Volk SAFT Assembler,[33] Erstellen des sogenannten Makrosafts.[34] McIlroys 1960er Zeitung von 1960 war auf dem Gebiet, in dem sie alle erweitert wurden (einschließlich hohes Level) Programmiersprachen durch Makroprozessoren.[35][33]
Makro-Assembler ermöglichten es den Programmierern der Montagesprachenprogrammierer, ihre eigene Makrosprachen zu implementieren, und ermöglichte eine begrenzte Portabilität des Codes zwischen zwei Maschinen, die dieselbe CPU, jedoch unterschiedliche Betriebssysteme ausführen, beispielsweise frühe Versionen von MSDOS und CPM-86. Die Makrobibliothek müsste für jede Zielmaschine geschrieben werden, jedoch nicht für das gesamte Montageprogramm. Beachten Sie, dass leistungsstärkere Makro -Assembler die Verwendung bedingter Montagekonstrukte in Makroanweisungen ermöglichten, mit denen unterschiedliche Code auf verschiedenen Maschinen oder unterschiedlichen Betriebssystemen generiert werden könnten, wodurch die Notwendigkeit mehrerer Bibliotheken verringert werden kann.
In den 1980er und frühen 1990er Jahren wurden Desktop -PCs nur bei einigen MHz ausgeführt, und die Versammlungsroutinen wurden häufig verwendet, um Programme in C, Forran, Pascal und anderen zu beschleunigen. Diese Sprachen verwendeten damals unterschiedliche Anrufkonventionen. Makros könnten verwendet werden, um Routinen in der Montagesprache an das Frontend von Anwendungen in fast jeder Sprache zu verkürzen. Auch hier blieb der grundlegende Assembler -Sprachcode gleich, nur die Makrobibliotheken mussten für jede Zielsprache geschrieben werden.
In modernen Betriebssystemen wie UNIX und seinen Derivaten wird der Zugang zum Betriebssystem über Unterprogramme bereitgestellt, die normalerweise von dynamischen Bibliotheken bereitgestellt werden. Hochrangige Sprachen wie C bieten einen umfassenden Zugang zu Betriebssystemfunktionen und meiden die Notwendigkeit von Assembler-Sprachprogrammen für solche Funktionen.
Siehe auch
- Anaphorische Makros
- Assemblersprache § Makros (Der Ursprung des Konzepts von Makros)
- Erweiterbare Programmierung
- Hygienische Makros
- Programmierung durch Demonstration- Technik zum Unterrichten eines Computers oder eines neuen Verhaltens des Roboters
- String -Interpolation- Ersetzen von Platzhaltern in einer Zeichenfolge durch Werte
- Informatik und Ingenieurwesen
- Informatik
Verweise
- ^ Oxford Englisch Wörterbuch, S.V. Makro, Makroinstruktion, und Makro-
- ^ Greenwald, Irwin D.; Maureen Kane (April 1959). "Das Share 709 -System: Programmierung und Änderung". Journal of the ACM. New York, NY, USA: ACM. 6 (2): 128–133. doi:10.1145/320964.320967. S2CID 27424222.
Eine der wichtigsten Verwendungen von Programmierer-Makros besteht darin, Zeit- und Büro-Fehler beim Schreiben von Anweisungen zu sparen, die im Verlauf eines Programms häufig wiederholt werden.
- ^ Strachey, Christopher (Oktober 1965). "Ein Allzweck -Makrogenerator". Computerjournal. 8 (3): 225–241. doi:10.1093/comjnl/8.3.225.
- ^ "Runescape: Das massive Online -Abenteuerspiel von Jagex Ltd". Abgerufen 2008-04-03.
- ^ "Skripte: vim online". www.vim.org.
- ^ "Prolog Makros". www.metalevel.at. Abgerufen 2021-04-05.
- ^ "Erlang - Präprozessor". Erlang.org. Abgerufen 2021-05-24.
- ^ "Das Dylan -Makrosystem - Open Dylan". Opendylan.org. Abgerufen 2021-04-05.
- ^ "Def Makros". Scala -Dokumentation. Abgerufen 2021-04-05.
- ^ "About - Nemerle Programmiersprache Offizielle Site". nemerle.org. Abgerufen 2021-04-05.
- ^ "Makros - Die Rost -Programmiersprache". doc.rustlang.org. Abgerufen 2021-04-05.
- ^ "Makros". elixir-lang.github.com. Abgerufen 2021-04-05.
- ^ "Makros". nim-Lang.org. Abgerufen 2021-04-05.
- ^ "Makros". Haxe - das plattformübergreifende Toolkit.
- ^ "Metaprogrammierung · Die Julia -Sprache". docs.julialang.org. Abgerufen 2021-04-05.
- ^ "Sweet.js - Hygienische Makros für JavaScript". www.sweetjs.org.
- ^ "LEMP -Homepage · Verbessertes C#". ecsharp.net.
- ^ "Makros in Python: Quasiiquoten, Fallklassen, Linq und mehr!: Lihaoyi/makropy". 7. Februar 2019 - über Github.
- ^ Marshall, Joe. "Ohne Titel E -Mail". Abgerufen 3. Mai, 2012.
- ^ Hart, Timothy P. (Oktober 1963). "Makrodefinitionen für Lisp". AI -Memos. HDL:1721.1/6111. AIM-057.
- ^ Kohlbecker, Eugene; Friedman, Daniel; Fellisen, Matthias; Duba, Bruce (1986). "Hygienische Makroerweiterung". LFP '86: Verfahren der ACM -Konferenz von 1986 über LISP- und Funktionsprogrammierung. S. 151–161. doi:10.1145/319838.319859. ISBN 0897912004.
- ^ [1] CLEBER, REES. "Makros, die funktionieren"
- ^ Flatt, Matthew. "Mit komponierbare und kompilierbare Makros: Sie möchten es wann?" (PDF).
- ^ Rafkind, Jon; Flatt, Matthew. "Honu: Syntaktische Erweiterung für die algebraische Notation durch Durchsetzung" (PDF).
- ^ "Automaten über Makros". cs.brown.edu.
- ^ [2], Matthias Fellisen, LL1 Mailing -Liste Posting
- ^ Orgass, Richard J.; William M. Waite (September 1969). "Eine Basis für ein mobiles Programmiersystem". Kommunikation der ACM. New York, NY, USA: ACM. 12 (9): 507–510. doi:10.1145/363219.363226. S2CID 8164996.
- ^ Waite, William M. (Juli 1970). "Das mobile Programmiersystem: Stufe2". Kommunikation der ACM. New York, NY, USA: ACM. 13 (7): 415–421. doi:10.1145/362686.362691. S2CID 11733598.
- ^ "Universität von Nordflorida" (PDF).
- ^ "DTF (DOS/VSE)". IBM.
- ^ "IBM Knowledge Center". IBM Knowledge Center. 16. August 2013.
- ^ a b "Assembler -Sprache Makroanweisungen". Cisco.
- ^ a b Holbrook, Bernard D.; Brown, W. Stanley. "Technischer Bericht von Computing Science Nr. 99 - Eine Geschichte der Computerforschung bei Bell Laboratories (1937–1975)". Bell Labs. Archiviert von das Original am 2. September 2014. Abgerufen 2. Februar, 2020.
- ^ "Makrosaft - Modifikation von SAP Makro Compiler". HOPL: Online Historische Enzyklopädie von Programmiersprachen. Archiviert von das Original Am 13. August 2008.
- ^ Layzell, P. (1985). "Die Geschichte der Makroprozessoren in der Erweiterbarkeit der Programmiersprache". Das Computerjournal. 28 (1): 29–33. doi:10.1093/comjnl/28.1.29.