Suche "Programmier-Sprachen-Theoretiker"
-
Ja, wenn es nicht passt, dann darf man halt kein Defaultverhalten spezifizieren. Ich habe auch nicht das Gefühl, als wollte der OP Mengen von DBs über mehrere Threads verwalten, da geht es sicher um andere Objekte, bei denen sowas sinnvoll wäre.
-
Aber eine Exception zu werfen, wenn es ein NullObjekt ist, würde doch wieder eine Abfrage erfordern, die testet ob es ein Nullobjekt IST. Und eben das wollte der Autor des Threades hier je verhindern, oder irre ich da?
-
Blue-Tiger schrieb:
es gibt 2 Threads, und die beiden greifen auf das gleiche Datenbankobjekt zu. Thread 1 loescht nun die Datenbank, sie wird also durch ein Null-Objekt ersetzt. Was passiert jetzt, wenn Thread 2 etwas in die Datenbank schreiben will?
Passiert gar nichts? Wird eine Exception geworfen? Oder wird ein Fehler zurueckgegeben?Ich denke eine Datenbank ist i.a.R. nichts, die einfach so dezentral zerstört werden sollte und wenn doch,
dann werden alle weiteren Zugriff auf das Null-DatenBank-Objekt umgeleitet, und die ist sehr geduldig.Ich denke hier wäre ein Zombie-Objekt geeigneter, um auf den postmorten Mißbrauch aufmerksam zu machen.
Wie diese zu verallgemeinern wäre denke ich derzeit noch nach.Wenn der schreibende Thread zum Schluß prüft, ob sein DB-Objekt ein Null-Objekt, weiß er ob seine Daten
nicht wirklich erfolgreich übertrage konnte. Wenn eine andere zentrale Stelle nun entschieden haben sollte,
diese DB zu zerstören, wäre das vom Ablauf her kein Problem. Wenn eine zu zerstörende DB jedoch seine
Aufgabe noch erfüllen soll, wäre ein Zombie-DB geeigneter. Ich denke es lassen sich Fälle finden wo
Null-Objektee nicht geeignet sind eine Problematik zu zu lösen. Ich halte Null-Objekte für kein
AllheilMittel aber für sehr praktisch.
-
makkurona schrieb:
Aber eine Exception zu werfen, wenn es ein NullObjekt ist, würde doch wieder eine Abfrage erfordern, die testet ob es ein Nullobjekt IST. Und eben das wollte der Autor des Threades hier je verhindern, oder irre ich da?
Ich will nicht verhindern das eine Exception geworfen werden sondern es nur nicht notwendig machen dass eine Exception geworfen wird.
Ich möchte die Möglichkeit haben, etwas mit dem "Character" von Null zurückzugeben, das aber nicht zwangsläufig eine SonderBehandlung
erfordert. Sozusagen ein Null mit dem man weiterarbeiten kann auch wenn es nichts bewirkt. Wenn es wichtig ist zu wissen, ob es ein
Objekt ein Null-Objekt ist oder nicht, möchte ich die Methode bool isNull(); bereitstellen.Wie schon zuvor zitiert ein Null-Object ist "Something for Nothing" mit dem man ohe Ausnahme arbeiten kann.
Ein Unterschied zwischen Null und Null-Objekt ist jedoch daß ein Null-Objekt einen Typ besitzt und Null dagegen nicht.
So könnte man ein Null-Objekt auch als typisierte Null auffassen. Wenn bestimmte Zugriffe eine Exception auslösen sollen
kann man diese implementieren.
-
gorgoyle schrieb:
Wenn der schreibende Thread zum Schluß prüft, ob sein DB-Objekt ein Null-Objekt, weiß er ob seine Daten nicht wirklich erfolgreich übertrage konnte. Wenn eine andere zentrale Stelle nun entschieden haben sollte, diese DB zu zerstören, wäre das vom Ablauf her kein Problem. Wenn eine zu zerstörende DB jedoch seine Aufgabe noch erfüllen soll, wäre ein Zombie-DB geeigneter.
Schonmal den Begriff der referenziernden Garbage Collection gehört?
-
oks schrieb:
Schonmal den Begriff der referenziernden Garbage Collection gehört?
Würde mich wundern. Google hat davon jedenfalls auch noch nichts gehört.
-
Du meinst den GroßVater der Garbage Collection, oder? (Referenzen zählen)
Und im Zusammenhang?
-
Stell doch mal einen der "sehr neuartigen" Teile deiner Sprache vor!?
-
Wer Interesse bei mir per email meldet, dem kann ich mehr verraten.
-
gorgoyle schrieb:
Wer Interesse bei mir per email meldet, dem kann ich mehr verraten.
Mach ne Webseite. Oder ist die Sprache geheim? Wenn ja, was erhoffst du dir davon?
-
Ich muß mein Projekt nicht hier öffentlich diskutieren
und kann jetzt auch jedem davon dringend abraten.Mich würde mehr interessieren warum mein Projekt
nicht im Forum Projekte steht? Hat sich der Begriff
Projekt in den letzten 48 Stunden irgendwie geändert?Das ist etwas wofür ich noch keine Begründung gehört habe!
Warum bitte schön wurde mein Thread in dieses Forum verschoben?
Gibt es dafür eine sachliche Erklärung die man hören darf?
-
gorgoyle schrieb:
Ich muß mein Projekt nicht hier öffentlich diskutieren
und kann jetzt auch jedem davon dringend abraten.MrN hat eher nach einer Webseite gefragt. Wenn du Interesse wecken moechtest, kann es nicht verkehrt sein ein paar Infos online zu stellen. Es verlangt ja keiner dass du oeffentlich im Forum zu deiner Webseite Stellung nimmst.
Die Sache ist die: Die Leute, die was nicht in Ordnung finden, melden sich natuerlich am lautesten. Es gibt aber auch sehr viele, die die Threads hier einfach nur lesen und interessiert sind. Gerade die moechtest du ansprechen, aber durch Geheimniskraemerei vergraulst du die natuerlich. "Bei Interesse schreib mir eine Mail" ist auch schon zu viel Aufwand fuer die meisten, die sich einfach nur informieren moechten ob sie das Gebiet interessiert.
-
Danke für den Hinweis.
Ich möchte nicht jetzt schon eine public HP zu einen Projekt anbieten,
daß sich noch in einen so frühen Stadium befindet.Wenn ersichtlich ist, daß das ganze zu konkreten Ergebnissem führt,
werde ich diesen Schritt tun. Ich persönlich schätze keine Seiten
die so tun als gäbe schon etwas worüber zu lesen es wert wäre.Wie soll ich das eine Feature, das aus der Planung rausfliegt,
weil es sich nicht performant implementieren lässt von dem
unterscheiden das effizient implementiert wird.Wenn die Existenz einer HP notwendig oder praktisch wird,
dann werde ich sie erschaffen bzw. nutzen. (Domain ist verfügbar)Außerdem möchte ich keine kommerzielle Nutzung ausschliessen, auch
wenn in die Source unter einer OpenSourceLicense schliesslich
freigegeben möchte. All diese Punkte lasse ich offen, bis ich das
Kern-Team beisammen habe und wir uns in diesen diese Punkte einig
sind.Wenn ich einen HardCore-Informatik-Freak finde, der mir nach seinem
Ermessen das ganze Absegnet bzw. wichtige Modifikationen anregt, um
den mathematischen Ansatz zu festigen, dann habe ich Bestätigung, daß
das ganze eine bemerkenswerte Technolgie ist. Mit der Theorie im Rücken
kann ich dann ganz anders auftreten. Was mir fehlt ist zur Zeit ein
guter Theoretiker. Weitere Team-Mitglieder sind zwar willkommen aber
es wäre derzeit noch verfrüht um sie sinnvoll einzubinden.Meine Idee der Null-Objekte ist leider nicht neu, wie ich feststellen
konnte, ist aber gut genug, daß ein jemand diese für seine zum
Gegenstand seiner Dissertation machen konnte. Für mich war es nur ein
Detail, daß losgelöst von den anderen Konzepten zu beschreiben war.Eine erste Meinung, die ich von einen Studenten über meinen "wirklich
neune Teil" erhielt, der mittendrin ist, seinen Master in Computing zu
machen, sagte nach kurzer Beschauung: Das sieht interessant aus!
Leider hatte dieser der Zeit wenig Zeit, weil er in seinen Prüfungs-
Vorbereitungen steckt.Ich verspreche lieber nicht zuviel, obwohl ich eine große Erwartung habe.
Wenn es nicht anders geht, beginne ich dieses Projekt mit jemanden, bei
dem sich Theorie und Praxis etwa die Waage halten. Allerdings verdoppelt
sich die Arbeit, wenn einige Tücken in der Konzeption stecken und zu spät
bemerkt werden. Darum suche ich ja auch zuerst einen Theoretiker.MfG
gorgoyle
-
Glaub mir, du wirst keinen Hardcore Informatiker finden. Erfahrungssache^^
-
Ja unwahrscheinlich ... aber einen Theorie-lastigen Informatiker vll.?
Ein bischen suche ich aber noch. Ich hab normal mit Suchen und Finden Glück
-
Kannst du mal kurz beschreiben, um welche Fähigkeiten eine Sprache erweitert werden müsste, um deine Null-Objekte zu realisieren? Für mich sieht das im Moment so aus, als ob ich das Problemlos bereits in vielen Sprachen umsetzen könnte, ohne jegliche Erweiterung.
-
Für Null-Objekte sind abstrakte Klassen oder Interfaces völlig ausreichend.
Wie bereits gesagt, die Null-Objekte sind nicht der Grund für eine neue ProgrammierSprache.
Eher sind die Stream-Operatoren mit Assoziation R-Bind ein guter Grund.
-
gorgoyle schrieb:
Eher sind die Stream-Operatoren mit Assoziation R-Bind ein guter Grund.
gorgoyle schrieb:
Wie findet ihr denn die Idee die Stream-Operatoren operator<<() und operator>>() von L-Bind auf R-Bind zu setzen?
Das bedeutet, daß die Anweisung cout<<aString; übersetzt wird in aString<<(cout); Dann muss das KnowHow für all die Klassen nicht in der Stream-Klasse geschrieben werden, sondern eine beliebige Klasse lernt mit Streams umzugehen.
Kleiner Unterschied - grosse Wirkung .. aber nicht revolutionär! Wegen solcher Kleinigkeiten würd ich nicht eine neue ProgrammierSprache entwickeln wollen.OK, ich kenne erlich gesagt nur eine einzige Sprache, die << als "Stream-Operatoren" verwendet und die wäre C++. Und da wird der operator<< unabhängig vom Stream und von dem zu streamenden Objekt definiert; das "KnowHow" liegt also nicht in der Streamklasse.
class EineStreamklasse { public: void writeString(std::string const & einString); }; class EineZuStreamendeKlasse { public: std::string getBlabla() const; int getBlub() const; }; // Der operator muss weder vom Macher von EineStreamklasse, noch vom Macher von EineZuStreamendeKlasse sein. // Dennoch liegt hier das "KnowHow" MeineEigeneStreamklasse & operator << (MeineEigeneStreamklasse & stream, MeineEigeneZuStreamendeKlasse const & objekt) { stream.writeString(objekt.getBlabla()); stream.writeString(boost::lexical_cast<std::string>(objekt.getBlub())); }Dazu muss man noch sagen, dass << in C++ eigentlich kein Stream-Operator ist, sondern der nach-links-Bitshift-Operator. Er wird lediglich missbraucht, da man in C++ keine eigenen Operatoren erfinden kann.
-
Danke für die Richtigstellung.
-
Dachte ich's mir doch fast. Totalschaden auf mehreren Leveln.
Mein Tipp: lass die Geheimniskrämerei, und schraub deine Erwartungen an das Projekt vorläufig ein wenig zurück. Versteif dich vielleicht nicht ganz so sehr auf C++ wie es derzeit den Anschein hat.
Stell dein Konzept vor, zur Not hier im Forum, und hol dir Feedback dazu ein. Lass andere drüber schauen und dir aufzeigen wo welche Dinge problematisch Erscheinen, zu welchen Lösungen kein Problem existiert. Höchstwahrscheinlich wird sich auch herausstellen dass deine Sprache nicht annähernd so neuartig ist wie du meinst; tendenziell vielleicht nur in der Zusammenstellung der Eigenschaften/Features, wenn überhaupt.
Mach dich mit verschiedenen Sprachen, Konzepten vertraut. Durchstöbere relevante Seiten wie http://lambda-the-ultimate.org/ und lies tonnenweise Papers.