See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Nemerle – Wikipedia

Nemerle

aus Wikipedia, der freien Enzyklopädie

Nemerle

Objektorientierte Sprache
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
Website: 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

[Bearbeiten] 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 implementieren 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.

[Bearbeiten] 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.

[Bearbeiten] 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.

[Bearbeiten] Einzelnachweise

  1. http://nemerle.org/Macros_tutorial

[Bearbeiten] Weblinks


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -