www.wikidata.de-de.nina.az
Luna lateinisch fur Mond ist eine imperative funktionale und objektbasierte Programmiersprache mit visueller Entwicklungsumgebung fur Linux Mac OS X und Windows Sie unterstutzt imperative strukturierte funktionale und objektbasierte Programmierung LunaLuna LogoBasisdatenParadigmen Multiparadigmen imperativ objektorientiert prozedural strukturiert funktional Erscheinungsjahr 2011Entwickler Richard Gordon FaikaAktuelle Version 2018 r1 13 Februar 2018 Aktuelle Vorabversion keine Typisierung Statische Typisierung static typing Beeinflusst von Xojo Pascal C GFA Basicavr myluna de Inhaltsverzeichnis 1 Implementierungen 2 Eigenschaften 2 1 Sprachdesign 2 1 1 Ressourcenverwaltung 3 Entwicklungsumgebung 4 Zielarchitektur 5 Sprachmerkmale im Detail 5 1 Definitionen Aliase 5 2 Strukturen 5 3 Mengen 5 4 Numerische Datentypen 5 5 Objekt Datentypen 5 6 Methoden 5 7 Klassen 5 8 Inline Assembler 5 9 Beispielcode 6 Weblinks 7 EinzelnachweiseImplementierungen BearbeitenEs existiert eine Implementierung fur Mikrocontroller der AVR Architektur Eine Implementierung fur x86 64 ist angekundigt 1 Eigenschaften BearbeitenSprachdesign Bearbeiten Die Sprache Luna besteht aus relativ wenigen Schlusselwortern Sprachkern ihre eigentliche Funktionalitat erhalt sie ahnlich wie auch die Sprachen C C durch die Standardbibliotheken sowie je nach Einsatzgebiet zusatzliche Bibliotheken und Frameworks Luna legt einen Schwerpunkt auf die Sprachmittel zur Entwicklung von Bibliotheken Eine der Starken von Luna ist die Kombinierbarkeit von effizienter maschinennaher Programmierung mit machtigen Sprachmitteln die einfache bis komplexe Implementierungsdetails zusammenfassen und weitgehend hinter abstrakten Befehlsfolgen verbergen Dabei kommt vor allem die Template Metaprogrammierung wie in C zum Zuge eine Technik die eine nahezu kompromisslose Verbindung von Effizienz und Abstraktion erlaubt Ressourcenverwaltung Bearbeiten Es ist vorgesehen Speicher manuell zu verwalten und im Hinblick auf die maschinennahe Programmierung direkt auf Speicherbereiche zuzugreifen Luna besitzt jedoch parallel eine auf hohe Effizienz ausgelegte integrierte automatische generationelle Speicherbereinigung Garbage Collection In der Praxis ist die Lebensdauer von Objekten meist sehr unterschiedlich Auf der einen Seite existieren Objekte die die gesamte Laufzeit der Applikation uberleben Auf der anderen Seite gibt es eine grosse Menge von Objekten die nur temporar fur die Durchfuhrung einer einzelnen Aufgabe benotigt werden Mit jeder Anwendung des Freigabe Algorithmus werden langlebige Objekte in eine hohere Generation verschoben Der Vorteil liegt darin dass die Speicherbereinigung fur niedrige Generationen haufiger und schneller durchgefuhrt werden kann da nur ein Teil der Objekte verschoben und deren Zeiger verandert werden mussen Hohere Generationen enthalten mit hoher Wahrscheinlichkeit nur lebende bzw sehr wenige tote Objekte und mussen deshalb seltener bereinigt werden Die Besonderheit des in Luna implementierten Algorithmus ist dass er keine Zahler fur die Lebensdauer der einzelnen Objekte benotigt und alle Objekte Ruckwartsreferenzen aufweisen Die Ruckwartsreferenzen erlauben es tote Speicher Objekte und fehlerhafte Objektvariablen zu erkennen Entwicklungsumgebung BearbeitenDie gesamte Luna Entwicklungsumgebung Luna Studio besteht aus einer integrierten Entwicklungsumgebung IDE einem Praprozessor Makroprozessor Compiler und Assembler Programme konnen wahlweise in der IDE oder in einem normalen Texteditor geschrieben werden Die IDE bietet hierbei zusatzlich zu den allgemein wunschenswerten Funktionen wie Syntaxfarbung automatischer Einruckung Code Strukturierung und Autovervollstandigen eine direkte Unterstutzung der einzelnen Atmel AVR Controller Zusatzlich sind ein machtiger Bibliothekseditor Verzeichnis der Controller Defines eine GUI fur AvrDude und zahlreiche weitere nutzliche Werkzeuge vorhanden Zielarchitektur BearbeitenDer Cross Compiler Assembler sowie die Entwicklungsumgebung unterstutzen die Mikrocontroller der AVR Architektur der Firma Atmel Dies umfasst die Controllerfamilien Attiny Atmega und Atxmega Sprachmerkmale im Detail BearbeitenDie Syntax lehnt sich im Wesentlichen an die Programmiersprachen Xojo ehemals RealBasic und Pascal an was besonders Anfangern den Einstieg in Luna erleichtert Weiterhin ist Luna von C beeinflusst und implementiert zahlreiche Operatoren und Direktiven Definitionen Aliase Bearbeiten Mit Definitionen konnen Befehle Befehlskombinationen oder Ausdrucke im Sinne eines Alias mit einem Bezeichner verknupft werden Der Bezeichner kann dann wiederum im Sourcecode so genutzt werden als wurde es sich um den zugewiesenen Ausdruck handeln Anstelle des Platzhalter setzt der Compiler die dem Namen zugewiesenen Ausdruck wahrend des Kompiliervorgangs automatisch ein Dies schliesst auch die aus C C bekannten sog Define Funktionen Makro Funktionen ein D h es kann ein virtueller Funktionsname anstatt eines Ausdrucks verwendet werden Die Parameter werden dann durch Textersetzung in Ausdruck rechts eingesetzt Zugehorige Befehle define Name as Ausdruck undef NameStrukturen Bearbeiten Strukturen fassen Datentypen und oder Datenobjekte unter einem Namen statisch zusammenfassen Strukturen konnen hierbei verschachtelt genutzt werden Struktur deklarieren struct point byte x byte y endstruct dim a 3 as point Array mit 4 Elementen des Typs point dimensionieren a 0 x 1 a 0 y 20 a 1 x 23 a 1 y 42 Mengen Bearbeiten Mengen sind spezielle Ausdrucke die eine Sammlung von konstanten Werten zusammenfassen und das Verwalten oder Zuweisen von Datensammlungen erleichtern z B eine Liste von Zahlen und Texten Eine Menge steht im Quelltext innerhalb geschweifter Klammern Wenn als Basis eine Strukturdeklaration zugrunde liegt konnen innerhalb einer Menge weitere Untermengen eingebettet sein struct mystruct byte myarray 2 word level string text 14 endstruct data table mystruct 1 2 3 4 hallo Text wird auf die in der Strukturdeklaration mystruct 5 6 7 8 ballo definierten L a nge von text mit Leerzeichen aufgef u llt enddata Numerische Datentypen Bearbeiten Byte Uint8 Integer Int16 Word Uint16 Long Uint32 LongInt Int32 Single Float Objekt Datentypen Bearbeiten String MemoryBlock Graphics sPtr dPtr ePtrZusatzlich ist es moglich eigene Objekte Klassen zu programmieren die sich wie Objekt Datentypen verhalten Methoden Bearbeiten Methoden konnen mit den Schlusselwortern procedure und function erzeugt werden Funktionen liefern im Gegensatz zu Prozeduren einen Ruckgabewert Weiterhin werden unterstutzt Uberladen Parameter Zuweisung Parameter Initialwert Inline Ersetzungfunction probe zahl1 as integer zahl2 as integer as longint dim zahl3 as longint zahl3 zahl1 zahl2 10 if zahl3 gt 128000 then zahl3 64 end if return zahl3 endfunc Klassen Bearbeiten In Luna lassen sich Klassen definieren mit denen Funktionen im Sinne eines Moduls oder einer in sich geschlossenen Bibliothek nachgerustet werden konnen Sie sind ahnlich den Units in Pascal implementiert Deklaration Class test const Version 1 0 dim a as byte Procedure Init print Initialisierung print a str a EndProc Function GetData x as byte y as byte as single mul y 4 y y x return tabelle SingleValue y EndFunc data tabelle dw amp h1234 amp h5678 amp h9aab dw amp h1234 amp h5678 amp h9aab dw amp h1234 amp h5678 amp h9aab dw amp h1234 amp h5678 amp h9aab enddata EndClass Der Aufruf im Programmtext sahe folgendermassen aus print test Version Ausgabe test Init Procedure aufrufen var test GetData 0 2 Funktion aufrufen test a 123 Wert zuweisen print str test a Wert lesen und ausgeben Inline Assembler Bearbeiten In den Programmtext kann Assemblercode eingebettet werden womit laufzeitkritische Bereiche optimiert werden konnen asm ldi HA0 0x2a ldi HB0 0x09 call MathMul8u endasm Beispielcode Bearbeiten Das klassische Hallo Welt Programm sieht wie folgt aus avr device atmega168 avr clock 8000000 avr stack 32 uart baud 19200 uart rxd enable uart txd enable print Hallo Welt do loop Beispiel fur eine Rekursion function factorial n as longint as longint if n 0 then return 1 else return n factorial n 1 end if endfunc nbsp Luna AVR IDEWeblinks Bearbeitenavr myluna de offizielle Website englisch deutsch Liste der unterstutzten AVR Mikrocontroller forum myluna de offizielles Nutzer und Entwickler Forum englisch und deutsch Einzelnachweise Bearbeiten Luna x64 Teaser 2 Oktober 2016 abgerufen am 2 Oktober 2016 Abgerufen von https de wikipedia org w index php title Luna Programmiersprache amp oldid 209059538