Nemerle

Nemerle
Nemerle

Funktionale Sprache
Basisdaten
Paradigmen: objektorientiert, imperativ, funktional
Entwickler: Open Source / Universität Wroclaw
Aktuelle Version: 0.9.4  (25. Februar 2008)
Einflüsse: ML, C#
Betriebssystem: Windows, jedes Unix ähnliche Betriebssystem auf dem Mono installiert ist
Lizenz: BSD Lizenz
nemerle.org

Nemerle ist eine hybride Computersprache. Sie bietet die Möglichkeit, funktional, imperativ sowie objekt-orientiert zu programmieren. Nemerle ist eine Programmiersprache für ISO CLI und wurde an der Universität Breslau entwickelt. Mit der Entwicklung von Nemerle wurde versucht, die Eigenschaften der Programmiersprache ML mit dem Look and Feel von C# zu verbinden.

Nemerle wurde nach dem Erzmagier Nemmerle aus „Der Magier der Erdsee“ von Ursula K. Le Guin benannt (die Schreibweise mit nur einem ‚m‘ wird als design decision bezeichnet).

Inhaltsverzeichnis

Sprachmerkmale

Nemerle basiert auf dem CLI-Objektsystem und ist entsprechend statisch typisiert und mit der CLI-Klassenbibliothek und in z. B. C# oder Visual Basic implementierten Bibliotheken kompatibel. Die Syntax ist grundsätzlich ähnlich der von C# gehalten, mit dem erklärten Ziel, leicht verständlich für Benutzer anderer „geschweifte-Klammern“-Sprachen zu sein.

Von der Syntax und dem Objektsystem abgesehen, bedient sich Nemerle allerdings einiger Konzepte aus der funktionalen Programmierung. Darunter fallen algebraische Datentypen und Pattern Matching, wie sie in der ML-Sprachfamilie vorkommen, und die Möglichkeit der Metaprogrammierung über Makros, wie sie in Common Lisp oder Scheme verwendet werden. Auch weiter verbreitete Sprachkonstrukte wie Closures und Typinferenz, die inzwischen auch in C# verfügbar sind, hat Nemerle übernommen.

Nemerle kann sowohl unter Microsoft .NET als auch der freien Laufzeitumgebung des Mono-Projekts verwendet werden.

Makros

Makros[1] in Nemerle sind einfach Programmstücke, die zum Zeitpunkt der Kompilierung ausgeführt werden, und nicht erst, wenn das Programm schließlich vom Benutzer ausgeführt wird. Dabei können manche Makros einfach wie Funktionsaufrufe aussehen, andere aber auch wie CLI-Attribute an Deklarationen angehängt werden.

Es ist auch möglich, mittels einem Makro dem Compiler völlig neue syntaktische Konstrukte beizubringen. Dies verdient besondere Beachtung, da z. B. die Kontrollstrukturen, die in anderen Sprachen mit C-artiger Syntax üblich sind, auf diese Weise implementiert sind. So steckt zum Beispiel hinter for-Schleifen nichts weiter als ein Makro, das die Schleife zu einer endrekursiven Funktion umschreibt.

Indem der Compiler Makros ermöglicht, dessen internen Datenstrukturen zu manipulieren, ermöglicht Nemerle auf diese Weise machtvolle Metaprogrammierung: Ein Makro produziert einen Syntaxbaum, der vom Compiler an der Stelle, von der das Makro aufgerufen wurde, eingefügt wird. Dem Makro steht dabei der volle Sprachumfang und die gesamte Klassenbibliothek zur Verfügung.

Beispiele

Das traditionelle „Hallo Welt!“ kann in Nemerle beinahe wie in C# implementiert werden:

class Hello {
  static Main () : void {
    System.Console.WriteLine ("Hallo Welt!");
  }
}

Dieses Beispiel unterscheidet sich lediglich in der Form der Angabe des Typs des Rückgabewerts von Main von C#, der hier nach dem Namen der Funktion mit einem Doppelpunkt von dieser getrennt angegeben wird. Alternativ kann man „Hallo Welt!“ auch auf folgende Weise ausdrücken:

System.Console.WriteLine("Hallo Welt!");

In diesem Beispiel wird eine umgebende Klassen- und Funktionsdeklaration in der Form des obigen Beispiel automatisch ergänzt.

Einzelnachweise

  1. http://nemerle.org/Macros_tutorial

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Nemerle — Семантика: мультипарадигменный, объектно ориентированный, функциональный, императивный Тип исполнения: компилируемый Появился в: 0.9.3 16 мая …   Википедия

  • Nemerle — Paradigm(s) multi paradigm: metaprogramming, functional, object oriented, imperative Appeared in 2003 Designed by Kamil Skalski, Michał Moskal, Prof. Leszek Pacholski and Paweł Olszta at Wrocław University Stable release …   Wikipedia

  • Сравнение языков программирования — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.  Условные обозначения  …   Википедия

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Liste der .NET-Sprachen — Die folgende Aufstellung enthält eine Liste von Programmiersprachen für Microsoft .NET, Mono, DotGNU oder einer kompatiblen Laufzeitumgebung. Sprache Implementierung Hersteller Ada 2005 A# (Ada for .NET) APL Dyalog.NET ASP ASP.NET: ASM to IL …   Deutsch Wikipedia

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия

  • Comparison of programming languages (list comprehension) — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • Liste von Hallo-Welt-Programmen/Programmiersprachen — Dies ist eine Liste von Hallo Welt Programmen für gebräuchliche Programmiersprachen. Weitere Beispiele für grafische Benutzeroberflächen, Web Technologien, exotische Programmiersprachen und Textauszeichnungssprachen sind unter Liste von Hallo… …   Deutsch Wikipedia

  • Язык функционального программирования — Функциональное программирование объединяет разные подходы к определению процессов вычисления на основе достаточно строгих абстрактных понятий и методов символьной обработки данных. Сформулированная Джоном Мак Карти (1958) концепция символьной… …   Википедия

  • Алгебраический тип данных — в теории программирования любой тип, значения которого являются значениями некоторых иных типов, «обёрнутыми» конструкторами алгебраического типа. Другими словами, алгебраический тип данных имеет набор конструкторов типа, каждый из которых… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”