Was haltet ihr von Mono/C#?

Ararat++

Well-Known Member
C#/Mono ist ja im Gegensatz zu Java unter der BSD/MIT-Lizenz

Auch die meisten damit programmierten Programme davon sind unter der BSD/MIT-Lizenz

Ich wollt nur mal wissen was ihr von C# hält, weil es ja von MS ist

Wie gut sieht eigentl. die Integration in *BSD damit aus?
 
Schwierig, weil Java an den Unis so gepusht wird.

Ich habe mir C# bis jetzt nur von der Distanz angeschaut, aber es sieht ganz gut aus. Es ähnelt Java sehr. Vieles wurde auch syntaktisch verkürzt und sinnvoller gestaltet. Vor allem einige Konzepte, an denen Java krankt, sind viel praktischer.

Leider reicht es nicht, gut zu sein. Es ist auch wichtig überall die Finger im Spiel zu haben. Microsoft hat außerdem C# herausgebracht, wo viel negatives über sie im Umlauf war.

Man sollte C# kennen. Ich arbeite mit Firmen zusammen, die .NET bevorzugen. Ich habe noch nie etwas damit gemacht, aber ich bin für alles offen. Je mehr man kennt, desto besser.
 
Ich hatte mir C# mit .NET 1.1 mal angesehen.
Optisch sieht es genau wie Java aus. Wenn die Bibliotheksfunktionen nicht anders heißen würden, ging es als Java durch.
Was mir an C# gefallen hat, sind die Funktionspointer, ähh Delegates, die fehlen bei Java einfach. Tod den sinnfreien Wrapper-Klassen.

Aber C# hat im OSS-Bereich keine Chance. Allein der Name Microsoft verbreitet Angst und Schrecken. Speziell in den USA wird sich niemand auf einen Patent-Streit mit Microsoft einlassen wollen. Offizielle Portierungen für die Unices sind sehr unwahrscheinlich. Die einzige gibt es für FreeBSD: Rotor.
Das war für die Standardisierung notwendig.
Da ist Sun einfach Meilen voraus, was die Verfügbarkeit angeht.

Rant: Leider spielt die Qualität der Programmiersprache selbst heute nur noch eine untergeordnete Rolle. Wichtiger ist, wie viele Bibliotheken, Frameworks, usw. gibt es und wieviel muß ich noch selbst entwickeln.
Daran kranken auch meine eigenen Geheimfavoriten Ada und Common Lisp.


MfG
Michael Krauss
 
Morgen

Ich kenne C# eigentlich nur vom damaligen Mediunrummel und halte nichts davon weil es von Microsoft :ugly: kommt und weil ich mit C++ und Qt zufrieden bin :cool:.

Gruss
bsdagent
 
C# kommt mir überhaupt nicht wie Java vor. Wie kommt ihr eigentlich darauf? Nur weil es eine Bytecode-Sprache ist? C# ähnelt eher C++ und Obejct Pascal. Solche C#-Schlüsselwörter wie virtual gibt es z.B. nur in C++, und in Java überhaupt nicht. In Java ist jede Methode automatisch virtuell. Bei C# und C++ muß ich virtual explizit hinschreiben.

Der kopf hinter C# ist übrigens der Delphi-Erfinder.

Warum man C# hasst, weil es von MS kommt, kann ich nicht verstehen. Man kann C# nicht mögen, weil die Sprache einem vielleicht vom Design her nicht gefällt, aber weil es von MS kommt? Echt kindisch.

Übrigens, im Gegensatz zu Java ist C# bei der ECMA und bei der ISO normiert. Ich finde, das ist ein sehr großer Vorteil ggü. dem Java, welches immer noch ganz alleine SUN gehört. Nur weil sie die JDK-Implemntierung unter GPL freigegeben haben, heißt das nicht, das die Plattform- und Sprach-Specifikation für jeden frei ist - es ist jetzt nur eine Implementierung frei!

Bei C# und der CLR kann diese aber jeder implementieren und vorallem auch so benennen, wie es die Norm sagt. Java ist dagegen immer noch eine eingetragene Marke! C# dagegen nicht.

Achja, und die CLR ist nicht von MS alleine spezifiziert, da waren und sind immer noch mehrere Firmen wie Intel und HP dabei. Deshalb gibt es auch mehr Implementierungen der CLR als nur .NET und MONO. Die Normierung der CLR macht es möglich.
 
Morgen

Warum man C# hasst, weil es von MS kommt, kann ich nicht verstehen. Man kann C# nicht mögen, weil die Sprache einem vielleicht vom Design her nicht gefällt, aber weil es von MS kommt? Echt kindisch.

Ich hab neben dem M$ Kommentar mit "und" geschrieben, dass ich mit C++ und Qt zufrieden bin. Sonst hätte ich das so, wie du mein Post interpretiert hast nie geschrieben ;). Ausserdem ist kein Wort von Hass gefallen :grumble:, für so rotz verschwende ich keine Energie wie Hass :p.

Gruss
bsdagent

P.S. Wenn du als Delphi-Erfinder "Niklaus Wirth" gemeint hast, er ist es nicht. Herr Wirth hat Pascal, danach Modula und Oberon erfunden/mitentwickelt. (Hast keine angaben gemacht, also eifach mal eine pauschal vermutung wegen Herr Wirth).
 
Zuletzt bearbeitet:
C# kommt mir überhaupt nicht wie Java vor. Wie kommt ihr eigentlich darauf?
Es gibt mehrere Gründe:

  1. Gleiche Architektur: JVM <-> CLI
  2. Nahezu identische Syntax
  3. Gleiche Anwendungsbereiche
  4. beide statisch getypt
Dadurch steht C# in direkter Konkurenz zu Java (die Sprache) und .NET in Konkurenz zu Java (die Plattform). Was sicherlich die Absicht von Microsoft war. Immerhin ist es der zweite Versuch. Erinnert sich noch jemand an J++?

Nur weil es eine Bytecode-Sprache ist?
Nein, viele moderne Sprachen wurden mit Bytcode-Interpretern implementiert, z.B. Python und Ruby. Trotzdem stehen sie nicht in direkter Konkurenz zu Java.

C# ähnelt eher C++ und Obejct Pascal.
In der Tat werden sich modernes C++ und Java auch immer ähnlicher: Templates da, STL dort, Qt hier. Object Pascal kann ich nicht einschätzen; ich kenne nur Pascal und Ada. Kannst Du den Zusammenhang zu C# näher erläutern?

Solche C#-Schlüsselwörter wie virtual gibt es z.B. nur in C++, und in Java überhaupt nicht. In Java ist jede Methode automatisch virtuell. Bei C# und C++ muß ich virtual explizit hinschreiben.
In Anbetracht der Anwendungsgebiete von C# scheint mir das Feature sinnlos. Wieso sollte jemand den Laufzeit-Polymorphismus in C# abschalten wollen? Nur um eine Indirektion beim Funktionsaufruf weniger zu haben? Oder Speicher für die Virtual Function Table zu sparen?

Der kopf hinter C# ist übrigens der Delphi-Erfinder.
Angeblich wechseln daher einige von Object Pascal (Delphi) auf C#.

Warum man C# hasst, weil es von MS kommt, kann ich nicht verstehen. Man kann C# nicht mögen, weil die Sprache einem vielleicht vom Design her nicht gefällt, aber weil es von MS kommt? Echt kindisch.
Man muß das nicht verstehen. Wichtig ist nur, daß diese Abneigung die Verbreitung von C# auf OSS Systemen stark hemmt.
Für die Anwendungsentwicklung gefällt mir C# viel besser als, die unter Unix verbreiteten, C und C++. Aber es wird sich dennoch nicht durchsetzen.

Übrigens, im Gegensatz zu Java ist C# bei der ECMA und bei der ISO normiert. Ich finde, das ist ein sehr großer Vorteil ggü. dem Java, welches immer noch ganz alleine SUN gehört. Nur weil sie die JDK-Implemntierung unter GPL freigegeben haben, heißt das nicht, das die Plattform- und Sprach-Specifikation für jeden frei ist - es ist jetzt nur eine Implementierung frei!

Bei C# und der CLR kann diese aber jeder implementieren und vorallem auch so benennen, wie es die Norm sagt. Java ist dagegen immer noch eine eingetragene Marke! C# dagegen nicht.

Achja, und die CLR ist nicht von MS alleine spezifiziert, da waren und sind immer noch mehrere Firmen wie Intel und HP dabei. Deshalb gibt es auch mehr Implementierungen der CLR als nur .NET und MONO. Die Normierung der CLR macht es möglich.

Die ISO Standardisierung ist in der Praxis nicht so wichtig. Beweis durch Beispiel:
Ada95 war die erste standardisierte (im verbreiteten Sinne) objektorientierte Programmiersprache. Das war 3 Jahre vor C++ (1998). Ada deckt den kompletten Einsatzbereich von C++ ab (Systemprogrammierung, große Anwenungen, Echtzeit, Numerik,...) und noch mehr (sicherheitkritische Anwendungen, Multithreading). Dennoch hat sich Ada nicht durchgesetzt. Warum war das so?

Es gibt nur eine freie Implementierung (GNAT von AdaCore). Deren Lizensierung ist sehr kompliziert.Damit proprietäre Software zu entwickeln gleicht einem Spießrutenlauf (GPL). Alle anderen Compiler sind teuer. Darauf will sich kaum jemand jenseits der Luftfahrt-Branche einlassen.

Bei C# und CLR gibt es nur eine vollständige Implementierung: .NET.
Mono hinkt naturgemäß hinterher und kann Teile aufgrund von Softwarepatenten garnicht implementieren, oder der Anwendungsentwickler kann sie nicht verwenden (außer für SuSE vieleicht). Alle anderen Implementierungen sind weit ab vom Schuß. Das bedeutet, in der Praxis ist ein C# Programm selten plattformunabhängig. Das ist ein entscheidenter Nachteil gegenüber Java.

Object Pascal ist doch ein gutes Beispiel. Lange Zeit war Delphi die einzige Implementierung und damit auf Windows beschränkt. Jetzt gibt es Lazarus, aber es ist zu spät. Andere Sprachen haben das Rennen gemacht (C++, Python, Ruby). Mono wird das selbe Schicksal ereilen und dadurch auch C#.


MfG
Michael Krauß
 
Ich werde um C# und Java, bis ich im Studium gezwungen sein werde, eine der beiden zu benutzen, weiterhin einen großen Bogen machen.
Das gehype von C# regt mich tierisch auf (zum Glück ist der Java Hype meiner Meinung nach schon ganz gut abgeklungen).

Für Webentwicklung wird sich, denke ich, allerdings Java weiter durchsetzen, da es einfach, gerade auf Unix-Server-System die portabelere Möglichkeit ist als ASP.NET.

Da ich aber als frischer Abiturient allerdings kein Write-Code-for-a-living Mensch bin, bin ich eigentlich für jede Sprache offen - bevorzuge allerdings weiterhin C++ oder C. Schließlich schreibe ich nur schlechten Code zum eigenen Vergnüngen.

Was mir an C# und auch an Java nicht gefällt (und deshalb C++ so mag) sind diese Riesigen Namespace- und Klassenhierachien und der Full-OOP Ansatz. Entweder man hat 10 Zeilen mit using-Direktiven oder schreibt bereits einen Funktionsaufruf über 79 Zeichen Zeilenlänge hinaus...
 
Zuletzt bearbeitet:
Ich weiß nicht...

Ich kann mit Java, Mono und C# nichts anfangen.
Zwar kann ich mir vorstellen, dass es dem C(++)-Programmierer sehr ansprechen wird, aber ich versteh den Hype darum nicht. Eigentlich finde ich es schade, dass sich alles in die Richtung solcher Sprachen entwickelt.

Vielleicht weiß ich auch nur zu wenig drüber. Für mich sind "Lowlevelsprachen", für die ich einen Interpreter brauche. Das ergibt irgendwie keinen Sinn für mich. Naja, zumindest jetzt noch nicht. Anders wäre die Sache, wenn sich Systme, wie JNode entwickeln würde.

Last but not least finde ich es sinnlos solche moderne Sprachen ausgerechnet mit einer Syntax ähnlich der von C zu machen. Wie gesagt, wenn man sich ansieht wie viele C-Programmierer es (leider) gibt verstehe ich den Entschluss.

Dass ein gewisser Hype auch dabei ist - in nahezu jeder Schule lernt man eine dieser Sprachen - ist auch klar.

P.S.: Ich hab mich schon ein wenig über diese Sprachen informiert. Eben weil sie so viel Verwendung finden. Falls irgendjemand wirklich Erfahrung damit hat, möge er mir erklären, was daran (aißer die große Userbase) so gut ist.
 
Athaba! Welche Sprache man verwendet, hängt ja von Anwendungsgebiet ab. Ich selber benutze z.B. beruflich Java, aber ganz bestimmt nicht weil ich es toll finde. Aber Java und C# bzw. .NET haben den Vorteil, das sie out-of-the-box eine große Library mitbringen. Das ist für viele ein Argument. Die Sprache ist dann eher nebensächlich.

Ich pers. finde z.B. C++ super (nein, mit C kann ich mich pers. nicht anfreunden!). Andere haben dagegen einen Hass auf C++. Naja, da hängt es halt vom pers. Geschmack ab.

Wenn ich aber C#- oder Java-Projekte mache, habe ich den Vorteil, das ich eine C++-artige Syntax vorfinde. Das macht diese Sprachen so beliebt. Ich habe z.B. versucht mal Python zu verwenden. Die Syntax hatte mir überhaupt nicht gefallen. Völlig unabhängig davon, was man mit der Sprache alles machen kann.

Java war damals ein Hype, richtig. Und hier bei uns, ist der Hype noch nicht abgeklungen. Finden alle immer noch ganz toll. Warum? Weil man nichts anderes mehr kennt.

Du fragst, warum man eine Lowlevel-Sprache durch einen Interpreter jagd? Ehm... wo ist denn Java und C# lowlevel? Prinzipiell sind es Highlevel-Sprachen. Lassen wir mal JNI und unsafe-Code weg.
 
Ada95 war die erste standardisierte (im verbreiteten Sinne) objektorientierte Programmiersprache. Das war 3 Jahre vor C++ (1998).

Common Lisp war 4 Jahre früher dran. :p

Anm.: Hat nicht viel zu sagen und Du wusstest es wahrscheinlich sowieso schon, was Dein Einschub »im verbreiteten Sinne« erahnen lässt – Ich geh mal davon aus, dass Du mit »normal« das Message-Passing, im Ggs. zum Prinzip generischer Funktionen, oder die Kapselung meinst.
 
Vielleicht weiß ich auch nur zu wenig drüber. Für mich sind "Lowlevelsprachen", für die ich einen Interpreter brauche. Das ergibt irgendwie keinen Sinn für mich. Naja, zumindest jetzt noch nicht. Anders wäre die Sache, wenn sich Systme, wie JNode entwickeln würde.

Ich bin letztens über einen interessanten Artikel gestolpert: http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Die Überschrift ist "The Law of Leaky Abstractions" und es geht darum, warum Abstraktions-Layer es nie schaffen, die darunter liegende Technik zu 100% verbergen. Das Kernargument ist, dass Abstraktion hilft, komplexe Systeme zu beherrschen. Allerdings haben alle Abstraktions-Layer "Lecks" und sind daher eher hinderlich, wenn in den darunter liegenden Ebenen etwas schief läuft.

Wenn Du also gerne auf hoher Ebene und womöglich "Model-driven" arbeiten möchtest, dann nur zu. Aber bedenke, dass Du dabei nie verstehen wirst, was unter der Haube abläuft. Das könnte zu einem Problem werden, z.B. wenn Fehler auftreten oder wenn's an der Performance klemmt.
 
Bezueglich Objektorientierung sollte Smalltalk nicht vergessen werden. Eine der ersten voll objektorientierten Sprachen, wenn nicht sogar die erste. Die erste Version kam -meine ich- 1980 raus, deswegen Smalltalk80. ;)

Mono/C# kenne ich soweit nicht, aber Java. Und vieles in java ist ziemlich umstaendlich. Allerdings gibt es ja Unmengen an Bibliotheken. Solange die bei C# fehlen, wird sich das nicht so richtig durchsetzen.

Ist das GUI Framework in C# eigentlich standardisiert? Wenn nicht, wird's vermutlich schwierig, portable Anwendungen zu schreiben.
 
Es gibt in der CLR keine Standard-GUI. Wer portabel sein will, kann aber gtk# nehmen: http://mono-project.com/GtkSharp

Übrigens halte ich eine Standard-GUI nicht für sehr viel aussagefähig. Selbst auf Java gibts mehr als eine erfolgreiche GUI: Swing und SWT. Also eine Standard-GUI ist kein Garant dafür, das es ausschliesslich eine gibt. Denn es gibt keine perfekte Library. Das müsste aber zutreffen.
 
Ich meine, C# sei standardisiert. Ich weiß aber nicht in wie fern (nur die Sprache oder auch die Bibliotheken). Es ist aber bekannt, dass die Sprache standadisiert ist, weshalb ich nur den Kopf schütteln kann, wenn jemand mit dem Microsoft-Language-Argument kommt.
 
> Wenn Du also gerne auf hoher Ebene und womöglich "Model-driven" arbeiten
> möchtest, dann nur zu. Aber bedenke, dass Du dabei nie verstehen wirst, was
> unter der Haube abläuft. Das könnte zu einem Problem werden, z.B. wenn Fehler
> auftreten oder wenn's an der Performance klemmt.
Woher kommt denn eine solche Aussage?
Ich für meinen Teil arbeite Model-Driven und kann derartige Statements nicht nachvollziehen.

Btw. habe ich in den letzten Jahren sowohl mit Java als auch mit C# gearbeitet und finde, dass die Sprache sehr ähnlich sind. C# ist deutlich näher an Java als an C++. Das kommt schon daher, das C++ idR eine nativ kompiliert wird und C# in einer virtuellen Maschine läuft.

Ich finde C# und die .NET-/Mono-Plattform als eine sehr gute Sache - unabhängig von Microsoft. Man kann schnell qualitativ hochwertige, portable Software entwickeln. Das ist das was zählt - zumindest in der Wirtschaft (sorry ;-)

So long...

Der Indy
 
Common Lisp war 4 Jahre früher dran. :p

Anm.: Hat nicht viel zu sagen und Du wusstest es wahrscheinlich sowieso schon, was Dein Einschub »im verbreiteten Sinne« erahnen lässt – Ich geh mal davon aus, dass Du mit »normal« das Message-Passing, im Ggs. zum Prinzip generischer Funktionen, oder die Kapselung meinst.

Ja, Common Lisp war ein Jahr vor Ada dran. Aber CL kannst Du keinem eingefleischten C/C++/Java/C#-Programmierer zumuten. Obwohl CLOS das flexibelste OO-System ist, das ich je gesehen habe. Ada ist schon schlimm genug. Die Methoden sind nicht in den tagged records enthalten, sondern getrennt. Das ist schon verwirrend. Klassen gibt es zwar, der Begriff hat aber eine ganz andere Bedeutung.

Kapselung ist für mich kein Teil von OOP. Auch Vererbung ist nicht zwingend Teil von Objektorientierung. Datenstrukturen konnte man schon in Ada83 erweitern. Kapselung gab es schon in Modula2. Eigentlich bleibt nur Polymorphismus als klassisches Merkmal für OOP übrig. Das erspart einem viele if-then-elif-... Konstrukte. Überhaupt ist meine Lieblingscharakterisierung für Objektorientierung, daß alle Objekte (Variablen, Werte, Funktionen, Instanzen, Klassen und Blöcke) gleich berechtigt sind.


MfG
Michael Krauß
 
Ich verstehe Objektorientierung eher als Stil. Kapselung hilft bei der Wahrung dieses Stils, Vererbung ist ein Vorteil den man daraus ziehen kann.

Aber im grunde genommen bedeutet Objektorientierung für mich, dass Daten immer mit den Funktionen kommen, mit denen man sie verwendet und nie direkt anfasst.
 
> Wenn Du also gerne auf hoher Ebene und womöglich "Model-driven" arbeiten
> möchtest, dann nur zu. Aber bedenke, dass Du dabei nie verstehen wirst, was
> unter der Haube abläuft. Das könnte zu einem Problem werden, z.B. wenn Fehler
> auftreten oder wenn's an der Performance klemmt.
Woher kommt denn eine solche Aussage?
Ich für meinen Teil arbeite Model-Driven und kann derartige Statements nicht nachvollziehen.

Ich mach Java, C#, .NET etc. nicht professionell, meine Interessen liegen wo anders.

Allerdings hatte ich z.B. letzen Sommer die Situation, dass ich Web Services bereit stellen sollte. Ganz Enterprise-like sollte dann aus den Java-Klassen die WSDL Dateien generiert werden, mit einem Eclipse Plugin. Funktionierte auch toll, bis etwas schief ging. Dann musste ich mich auch mit den WSDL Dateien auseinander setzen.

Oder andere Situation: Ich musste schmerzlich erfahren, dass das Erzeugen von Objekten in Java auch sehr teuer ist, und eben nicht von der VM bzw. dem JIT Compiler optimiert wird.

Egal, vielleicht liegt's auch daran, dass ich eine andere Arbeitsweise gewohnt bin. Jedenfalls fand ich den Artikel bzw. die Kernaussage gut. Die ganze Sache läuft darauf raus: Abstraktion ist gut weil sie hilft komplexe Dinge schnell zu erfassen. Aber man sollte doch mindestens verstehen was unterhalb der Abstraktionsschicht abläuft, z.B. um gezielt auf Probleme reagieren zu können.
 
Wäre es anders, könntest Du hier gar nicht schreiben.
Hä?
Nun erklär mir bitte mal, warum du das meinst. C ist doch bei weitem nicht die einzige Programmiersprache da draußen.

Übrigens, falls es irgendwie falsch rübergekommen ist:
Ich habe nichts gegen Java, Mono oder irgendeine C-Art ich versteh nur nicht wirklich, warum sie derart breite Anwendung gibt. Mag sein, dass diese Sprachen für das Eine oder Andere ganz gut sind, aber bisher ist mir bis auf die Userbase eben nichts bekannt, was sie überlegen gegenüber anderen Sprachen macht. Ich weiß natürlich auch nicht alles über sie. Eigentlich bin ich in Sachen C, C++, C# und Java ne ziemliche Niete und jeder in diesem Thread wird wohl mehr über diese Sprachen wissen. Darum habe ich ja danach gefragt.
Ich habe auch ein bisschen übertrieben mit der Sinnhaftigkeit einer solchen Sprache in einem Interpreter reagiert. Mir ist der Sinn durchaus bewusst. Nur wundert sich, dass Sprachen die so nah an C und C++ dran sind[1] so einen Hype erfahren. Kurz zusammengefasst: Ich finde sie nicht schlecht, es gibt vieles und das fällt wohl auf dem ersten Blick auf, was man ziemlich eindeutig als schlechter bezeichnen kann. Ich versteh aber trotzdem nicht warum es (noch immer) die C-ähnlichen[1] Sprachen sind, auf welche aufgebaut wird.
Der einzig einleuchtende Grund für mich ist eben eine überwältigende Anhängerschaft, was zu jeder Menge Libs, Tutorials, Support, Leute die beim Programmieren helfen (können), ... führt.

Nur einen anderen Grund, der die Berühmtheit dieser Sprachen rechtfertigt kann ich nicht erkennen. Wobei dieser Grund eigentlich genug wäre.

Ich hoffe, dass ich mich jetzt klarer ausgedrückt habe. :)

Drück ich mich denn so unverständlich aus?
Darum schreib ich ja auch immer so ewig lange Beiträge ;)

[1] Ich weiß, dass das bei weitem nicht das Selbe ist, aber im Vergleich zu all den anderen Sprachen haben C++, Java und C# doch eine sehr starke Ähnlichkeit. Das kann man wohl kaum bestreiten. Ich rede hier im Grunde nur von der Syntax.
 
@Athaba nenn sie einfach Geschweifte-Klammern-Und-Semikolon-Sprachen (GKUSS) :)

Mal im Ernst: Eine breite Basis ist alles, was in diesem Falle zählt; das ist bei Musik so, bei Betriebssystemen, bei Weltanschauungen … Was viele benutzen, wird auch am meisten unterstützt und kopiert.

Ohne einen Flamewar anzetteln zu wollen (und wenn es in die Richtung gehen sollte, klink ich mich aus): Sprachen wie Python, Smalltalk oder Lisp, usw. wären für viele Anwendungen, die Heute in GKUSS umgesetzt werden, besser geeignet – nicht für alle, aber doch für viele. Wird diese Einsicht irgendwas ändern? Nein. Die Masse wird immer bestimmen was aktuell ist und benutzt wird. Viele der Vorteile der genannten Sprachen werden jedoch (und haben) nach und nach in GKUSS Einzug erhalten. Was bleibt sind geschweifte Klammern und Myriaden von Strichpunkten. :)
 
Zurück
Oben