[JAXB] nutzt Standard Konstruktor nicht?

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Xin » Fr Okt 30, 2015 1:46 am

Zenerid hat geschrieben:Sorry übrigens für die ganzen Rechtschreibfehler aber meine Tastatur spinnt aktuell.
Is klar... :-D
Zenerid hat geschrieben:Zu dem Array.:
Meinst du den java.util.Iterator? Wieso das denn? Man kann doch auch so eb end mit einer Schleife drüber iterieren, wie ich es grade mache oder etwa nicht? Das an einzelnen Stellen in Array auch ein null-Wert drin sein kann ist schon klar, aber besser dann mit einem Laufindex prüfen, als jedes Element da so hinschreiben zu müssen oder nicht?
Mit dem Iterator kannst du das auslagern, so dass Du über alle Nachbarn iterieren kannst, wenn Du halt iterieren möchtest.
Warum willst Du überhaupt iterieren?
Zenerid hat geschrieben: Das ich das Array sozusagen an 2 Orten halte, war wohl etwas schlecht ausgedgrückt, denn das stimmt so nicht. Ich habe das Array jetzt halt nur in die Nachbarn Klasse verschoben und hole mir das bspw. für die getZufaelligeRichtung Methode. Das sollte doch wohl so okay sein? Da muss ja nichts synchronisiert werden, also auch keine redundante Aufbewahrung.
Doppelt ist das, wenn Du ein Array und die Elemente als Membervariablen hast. Du solltest Dich auf eins festlegen. Mit dem Array bekommst Du Probleme, wenn Du den Xml-Mapper nutzt.
Zenerid hat geschrieben:
Xin hat geschrieben:

Code: Alles auswählen

  Raum r;

  Nachbar n = r.get( getZufaelligeFluchtrichtung() );
Höh, so könnte ich meine Methode mit dem zufälligen Raum um einiges vereinfachen. Da habe ich nicht einmal dran gedacht ... tzz ...
Mit get() kannst Du ja auch ähnlich wie mit einem Array iterieren. Solange Du kein foreach machen möchtest.
Zenerid hat geschrieben:
Xin hat geschrieben:Designmässig würde ich hier auch eher eine statische Funktion in Richtung einbauen: raum.get( Richtung.getRandom() );

Ansonsten würde ich mich mal auf eine Sprache festlegen und Denglisch ist keine Sprache ;)
Auch wohl eine gute Idee aber ich brauche ja auch eine Instanz des Raumes, um festzustellen ob sich in der Richtung überhaupt ein Raum befindet oder nicht? Davon weiß die Richtungsklasse ja gar nichts und sollte wohl auch nicht so sein, w+rde ich mal behaupten.
Naja, bei einer zufälligen Fluchtrichtung kann man ja auch gegen die Wand rennen ;-)

Schlussendlich ist die Frage aber nicht an den Raum gerichtet, sondern an die Klasse Nachbarn. Raum könnte hier aber eine Weiterleitung haben.
Zenerid hat geschrieben:
Xin hat geschrieben:Die Entscheidung welcher Nachbar es ist, ist abhängig von der Klasse Nachbarn. Also würde ich das da reinpacken und der Raum fragt halt seine Nachbarn.
Stimmt, da hast du Recht. Eigentlich müsste die Methode auch wohl getZufaelligerNachbar oder so heißen und nicht getZufaelligerRaum.
Offenbar hatten wir den Part schon :D

--- Offtopic ---
Zenerid hat geschrieben:
Xin hat geschrieben:Amüsant ist, dass Leute Pointer abstrakt finden und dann Java programmieren...

Bitte versuche folgendes Programm

Code: Alles auswählen

public class MeineKlasse
{
  int a;

  static void main( String[] argv )
  {
    MeineKlasse mk;

    mk.a = 1;
  }
}
Bitte lass das Programm laufen, kopiere die Ausgabe hier rein und erkläre mir, was Du daraus liest.
Naja, es ist ja auch abstrakt oder nicht?
Was ist daran abstrakt?
Zenerid hat geschrieben:Das ist ja nicht nur meine Meinung, sondern das wird auch in vielen Vorlesungen, die man online findet erwähnt oder das schreiben auch viele Autoren in ihren Büchern. Mag ja sein, das es einige nicht abstrakt finden aber wieso ist da amüsant? Nur weil ich das jetzt gesagt habe?
Schonmal jemand gefunden, der ein Buch zu einem Thema schreibt und darin den Rat gibt, besser ein anderes Buch zu lesen?
Meiner Erfahrung nach eher selten. ;-)

Es gibt gute Gründe von Java überzeugt zu sein. Große Projekte entstehen mit Java und zeigen, dass man mit Java tolle Dinge auf die Beine stellen kann. Zum Beispiel Openoffice ist das Java-Vorzeige-Projekt. Und wenn Du dem Link folgst, landest du bei Wikipedia und kannst mal gucken, welche Programmiersprachen OpenOffice ermöglicht.

Ich habe ein T-Shirt - darauf steht "C++ - my compiler compiles your compiler"

Wenn man also verstehen will, wie ein Computer funktioniert, dann sollte man sich nicht einer virtuellen Maschine anvertrauen, das führt zu einem virtuellen Verständnis von Computern.
Darum forderte ich Dich auf, das Programm zu kompilieren und zu starten.
Ansonsten: C++ vs. Java
Zenerid hat geschrieben:So wie das Programm jetzt ist, würde es wohl nicht laufen, würde ich zumindest sagen. ;)
Wenn ich das in Eclipse reinkopiere, dann kriege ich die Meldung:
The local variable mk may not have been initialized.
Und trotzdem läuft es - wenn auch nicht sehr lange.
Zenerid hat geschrieben:Das Programm würde so auch nichts ausgeben, da da eine Ausgabe fehlt?
Es gibt mehr Möglichkeiten Text zu produzieren als nur println ^^
Zenerid hat geschrieben:Das soll doch eine Klasse in Java sein oder?
Ich behaupte, dass es ein compilierbares Java-Programm ist.
Starte es und schau, welche Ausgabe kommt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Zenerid » Fr Okt 30, 2015 4:05 am

Das mit den Fehlern war wirklich kein Witz. Wenn da mal irgendwie ein anderer Buchstabe steht, dann liegt das an meiner Tastatur. Die Satzbaufehler sind aber weiterhin meine Schuld aber ich gucke meist vor dem posten noch einmal rüber. So rentiert sich das halt, wenn man öfter mal was am PC ist oder wenn man was verschüttet. *hust*
Xin hat geschrieben:
Zenerid hat geschrieben:Mit dem Iterator kannst du das auslagern, so dass Du über alle Nachbarn iterieren kannst, wenn Du halt iterieren möchtest.
Warum willst Du überhaupt iterieren?
Wie meinst du das? Verstehe ich nicht?
Warum ich iterieren will? Ma könnte ja auch mit 4 if's überprüfen, ob in der Richtung ein Nachbar liegt aber ist das nicht mit dem iterieren so besser? Wenn ich dann auch vielleicht irgendwie noch mehr Richtungen oder Wege einbauen würde, dann müsste man dafür dann nicht immer x if's hinzufügen.

Ich habe das Nachbar Array jetzt auch mal als Member der Klasse entfernt. Ich habe das jetzt so abgeändert, so das ich wenigstens alle Nachbarn noch als Array zurückgeben kann. So besser?

Code: Alles auswählen

public String getAlle()
{
	Nachbarn[] nachbarn = this.getArray();
    Richtung[] richtung = Richtung.values();
    String retString = "Nachbarn:";
    
    for(int i = 0; i < nachbarn.length; i++)
    {
        if(nachbarn[i] != null)
           retString += " " + richtung[i].name().toLowerCase();
    }
    
    return retString;
}

public Nachbar[] getArray()
{
	return new Nachbar[] {norden, osten, sueden, westen};
}
Dann ist das auch nicht mehr doppelt als Member der Klasse vorhanden.
Ich hatte auch übrigens noch einen kleinen Fehler drin aber jetzt werden die Ausgänge zwar wieder erstellt aber der Nachbar scheint nicht mehr gesetzt zu sein. Wenn ich dann bspw. in die Richtung geradeaus gehen will, dann kriege ich eine NullPointerException. Die Richtung scheint also wohl gesetzt zu werden aber jetzt scheint der Nachbar null zu sein.

Das lag aber an dem ordinal, weil der wohl anscheinend bei 0 anfängt zu zählen und nicht bei 1, also Problem gefunden. ;)
Xin hat geschrieben:Naja, bei einer zufälligen Fluchtrichtung kann man ja auch gegen die Wand rennen ;-)

Schlussendlich ist die Frage aber nicht an den Raum gerichtet, sondern an die Klasse Nachbarn. Raum könnte hier aber eine Weiterleitung haben.
Höhö, da war mal ein kurzer Schmunzler drin aber wenn das Programm nicht Grafikbasiert ist, dann muss man ja irgendwie den Anschein erwecken. Meintest du nicht auch übrigens, dass das in die Richtungsklasse gehört und nicht in die Nachbarn Klasse? Ob das jetzt unbedingt in der Nachbarn Klasse besser aufgehoben ist? Eigentlich fände ich ja da die Richtungsklasse besser aber man könnte sich ja auch da wieder die Nachbarn aus der Nachbarn Klasse in die Richtungsklasse holen oder nicht?
Xin hat geschrieben:Was ist daran abstrakt?
Ich meinte nicht. dass das Programm abstrakt ist, sondern das Pointer bspw. in C++ eher abstrakt sind. Mag ja sein, das man mit C++ auch näher an das Verständis für einen PC kommt und näher an die Hardware aber dafür ist es vielleicht auch ein wenig abstrakter / komplizierter. Ich persönlich finde C++ auch besser als Java und wenn ich das hier fertig habe, dann werde ich mich wohl mal mehr mit C++ beschäftigen und mir irgendwas nettes ausdenken, was ich wohl realisieren könnte. ;)
Xin hat geschrieben:Schonmal jemand gefunden, der ein Buch zu einem Thema schreibt und darin den Rat gibt, besser ein anderes Buch zu lesen?
Meiner Erfahrung nach eher selten. ;-)

Es gibt gute Gründe von Java überzeugt zu sein. Große Projekte entstehen mit Java und zeigen, dass man mit Java tolle Dinge auf die Beine stellen kann. Zum Beispiel Openoffice ist das Java-Vorzeige-Projekt. Und wenn Du dem Link folgst, landest du bei Wikipedia und kannst mal gucken, welche Programmiersprachen OpenOffice ermöglicht.

Ich habe ein T-Shirt - darauf steht "C++ - my compiler compiles your compiler"

Wenn man also verstehen will, wie ein Computer funktioniert, dann sollte man sich nicht einer virtuellen Maschine anvertrauen, das führt zu einem virtuellen Verständnis von Computern.
Darum forderte ich Dich auf, das Programm zu kompilieren und zu starten.
Ansonsten: C++ vs. Java
Naja, bei manchen C++ Büchern findet man vielleicht noch dieses "Wer sollte dieses Buch kaufen" aber ansonsten nein. ;)
Das habe ich tatsächlich schon einmal in ein paar Büchern gesehen aber ist ja auch egal. Das ist ja wirlich eher Offtopic.
Xin hat geschrieben:
Zenerid hat geschrieben:So wie das Programm jetzt ist, würde es wohl nicht laufen, würde ich zumindest sagen. ;)
Wenn ich das in Eclipse reinkopiere, dann kriege ich die Meldung:
The local variable mk may not have been initialized.
Und trotzdem läuft es - wenn auch nicht sehr lange.
Zenerid hat geschrieben:Das Programm würde so auch nichts ausgeben, da da eine Ausgabe fehlt?
Es gibt mehr Möglichkeiten Text zu produzieren als nur println ^^
Zenerid hat geschrieben:Das soll doch eine Klasse in Java sein oder?
Ich behaupte, dass es ein compilierbares Java-Programm ist.
Starte es und schau, welche Ausgabe kommt.
Ja, wenn man es dann ausführt, dann kriegt man nämlich diese Meldung:
Exception in thread "main" java.lang.NullPointerException
at MeineKlasse.main(MeineKlasse.java:9)
Das es mehr Möglichkeiten zur Ausgabe als println gibt, ist schon klar. Deswegen habe ich ja auch geschrieben, das da die Ausgabe fehlt, es sei denn man zieht die Fehlermeldung von Eclipse hinzu. Das Programm ist auch compilierbar, schon klar aber es läuft nur sehr kurz, wegen einer NullPointerException.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Xin » Fr Okt 30, 2015 10:36 am

Zenerid hat geschrieben:Das mit den Fehlern war wirklich kein Witz. Wenn da mal irgendwie ein anderer Buchstabe steht, dann liegt das an meiner Tastatur. Die Satzbaufehler sind aber weiterhin meine Schuld aber ich gucke meist vor dem posten noch einmal rüber. So rentiert sich das halt, wenn man öfter mal was am PC ist oder wenn man was verschüttet. *hust*
Als guter Entwickler habe ich zu Hause etwa 5 Ersatztastaturen. Originalverpackt. Ich muss also 5 mal am Tag was verschütten und wer soviel verschüttet, verdurstet vermutlich, bevor er die 6. Tastatur auspacken muss... die wäre in meinem Fall dann allerdings schon gebraucht. ;)
Zenerid hat geschrieben:
Xin hat geschrieben:
Zenerid hat geschrieben:Mit dem Iterator kannst du das auslagern, so dass Du über alle Nachbarn iterieren kannst, wenn Du halt iterieren möchtest.
Warum willst Du überhaupt iterieren?
Wie meinst du das? Verstehe ich nicht?
Warum ich iterieren will? Ma könnte ja auch mit 4 if's überprüfen, ob in der Richtung ein Nachbar liegt aber ist das nicht mit dem iterieren so besser? Wenn ich dann auch vielleicht irgendwie noch mehr Richtungen oder Wege einbauen würde, dann müsste man dafür dann nicht immer x if's hinzufügen.
Ich versuche die Fragestellung zu verstehen, da ich gerade keinen Grund sehe, in einem Raum zu stehen und mit allen Nachbarräumen gleichzeitig zu interagieren.
Zenerid hat geschrieben:Ich habe das Nachbar Array jetzt auch mal als Member der Klasse entfernt. Ich habe das jetzt so abgeändert, so das ich wenigstens alle Nachbarn noch als Array zurückgeben kann. So besser?
Gefällt mir nicht... Du musst immer ein Array konstruieren, das kostet Rechenzeit.
Wie wäre es mit einem Lambda-Ausdruck?

Code: Alles auswählen

public String getAlle()
{
  String retString;
  this.foreachNeighbor( ( Richtung r, Nachbar n ) -> { retString += r.name().toLowerCase() } );
  return retString;
}
Die Syntax für foreachNeighbor müsste ich in Java nachschlagen.
Darin enthalten wären dann die 4 Abfragen - man muss die Abfragen also einmal und nicht immer programmieren. Es gibt entsprechend auch nur eine Stelle, die man ändern müsste, wenn auch noch oben und unten dazu käme und man muss keine Wegwerfobjekte erzeugen.
Zenerid hat geschrieben: Dann ist das auch nicht mehr doppelt als Member der Klasse vorhanden.
Ich hatte auch übrigens noch einen kleinen Fehler drin aber jetzt werden die Ausgänge zwar wieder erstellt aber der Nachbar scheint nicht mehr gesetzt zu sein. Wenn ich dann bspw. in die Richtung geradeaus gehen will, dann kriege ich eine NullPointerException. Die Richtung scheint also wohl gesetzt zu werden aber jetzt scheint der Nachbar null zu sein.
Eine Null-Pointer-Exception?
Was heißt "Die Richtung ist gesetzt?" Eine Richtung ist doch gesetzt, wenn sie nicht null ist!?
Zenerid hat geschrieben:Das lag aber an dem ordinal, weil der wohl anscheinend bei 0 anfängt zu zählen und nicht bei 1, also Problem gefunden. ;)
get falsch aufgebaut?
Zenerid hat geschrieben:
Xin hat geschrieben:Naja, bei einer zufälligen Fluchtrichtung kann man ja auch gegen die Wand rennen ;-)

Schlussendlich ist die Frage aber nicht an den Raum gerichtet, sondern an die Klasse Nachbarn. Raum könnte hier aber eine Weiterleitung haben.
Höhö, da war mal ein kurzer Schmunzler drin aber wenn das Programm nicht Grafikbasiert ist, dann muss man ja irgendwie den Anschein erwecken. Meintest du nicht auch übrigens, dass das in die Richtungsklasse gehört und nicht in die Nachbarn Klasse? Ob das jetzt unbedingt in der Nachbarn Klasse besser aufgehoben ist? Eigentlich fände ich ja da die Richtungsklasse besser aber man könnte sich ja auch da wieder die Nachbarn aus der Nachbarn Klasse in die Richtungsklasse holen oder nicht?
Die Nachbarn-Klasse hat die Information, welche Nachbarn es gibt und wolang man gehen kann. Wen immer Du fragst, der muss die Nachbarn fragen, wohin es gehen kann?
Zenerid hat geschrieben:
Xin hat geschrieben:Was ist daran abstrakt?
Ich meinte nicht. dass das Programm abstrakt ist, sondern das Pointer bspw. in C++ eher abstrakt sind. Mag ja sein, das man mit C++ auch näher an das Verständis für einen PC kommt und näher an die Hardware aber dafür ist es vielleicht auch ein wenig abstrakter / komplizierter. Ich persönlich finde C++ auch besser als Java und wenn ich das hier fertig habe, dann werde ich mich wohl mal mehr mit C++ beschäftigen und mir irgendwas nettes ausdenken, was ich wohl realisieren könnte. ;)
Du findest Pointer abstrakt und programmierst deswegen Java... das finde ich amüsant... Wir haben damals auch gelernt, dass Java weniger kompliziert ist, weil man nicht mit Pointern arbeitet.

Ich schrieb ja von virtuellen Verständnis, was ich Dir spätestens nach diesem Posting auch mal freundlich unterstelle. :-)

Ich habe früher C-Tutorien gegeben. Ich habe mit denen Arrays durchgenommen und das war alles kein Problem. Das haben wir sehr ausführlich gemacht. Dann haben wir theatralisch mit dem Kapitel Zeiger begonnen. Das große Schlottern ging los, jetzt kommt, was C und C++ so gefährlich, so unberechenbar, so kompliziert macht. Einzelne äußerten Besorgnis, ob sie das überhaupt verstehen würden. Das Kapitel hat 15 Minuten gedauert, weil alle problemlos mit Zeigern umgehen können, solange ich sie "Array" und nicht "Zeiger" genannt habe. Das einzige was neu war, war der Nullpointer - der Zeiger dahin, wo nunmal laut Definition kein Datensatz ist als Kennzeichnung, dass da nunmal kein Datensatz ist.

Zeiger sind nicht kompliziert. Zeiger zeigen auf eine Adresse im Speicher. Das Konzept eines Briefumschlags überfordert Dich doch auch nicht, oder? Auf dem Briefumschlag wird auch kein Haus gebaut, was die Nachricht empfängt, da steht eine Hausnummer drauf. Eine Hausnummer ist ein Zeiger. Und wenn man die Hausnummer um 1 erhöht, kommt man an das Nachbarhaus.

Zeiger sind deswegen kompliziert, weil man Dir beigebracht hat, das sie kompliziert sind.
Zenerid hat geschrieben:Das es mehr Möglichkeiten zur Ausgabe als println gibt, ist schon klar. Deswegen habe ich ja auch geschrieben, das da die Ausgabe fehlt, es sei denn man zieht die Fehlermeldung von Eclipse hinzu. Das Programm ist auch compilierbar, schon klar aber es läuft nur sehr kurz, wegen einer NullPointerException.
Und nun sieh Dir die Exception mal mit Verstand an.
Du hast selbst weiter oben beschrieben, dass Du eine Null-Pointer-Exception hast.

In Java kann man ausschließlich mit komplizierten, gefährlichen, unberechenbaren Zeigern hantieren.

Ein Zeiger wird mit C++ im Quelltext mit dem Pfeiloperator gekennzeichnet: Record->Value. Ein sicherer Zugriff findet entweder mit dem Objekt selbst statt oder über eine Referenz, der man nicht (ohne Tricks) null zuweisen kann. Hier findet ein Zugriff mit dem Punkt-Operator statt: Record.Value.
In C++ muss man nicht abfragen, ob ein Parameter, der als Referenz übergeben wird ungleich null sind. Eine Referenz ist nicht null.
Eine C++-Referenz ist nicht das gleiche wie eine Java-Referenz. In C++ gibt es sichere Möglichkeiten. Das ist Stand der 80er Jahre.
Dann kam Java in den 90ern.

In Java nennt man Zeiger Referenzen und hat den Pfeil-Operator zum Punktoperator umbenannt.
So verwendet Java keine Zeiger-Operatoren und ist damit sicher. Oder?
Java ist optisch C++ extrem ähnlich, aber inhaltlich passiert da was anderes.
Alle sicheren Konzepte sind aus Java entfernt worden und C++ die Basis für Weiterentwicklungen.

Und wenn man sich das mit Verstand ansieht, stellt man fest, dass ziemlicher Schwachsinn ist, aber das Marketing hat super funktioniert und solange sich ein Anfänger nicht fragt, warum die NullPointerException auftritt, besteht eine gute Chance, dass er auch als Professor oder Buchautor ohne darüber nachzudenken nachplappert, was man ihm als Anfänger beigebracht hat. :)

Dass Java keine Zeiger hat, daran glaubt heute keiner mehr. Aber wenn man Java ernsthaft kritisch betrachtet, dann müsste man ein Java-Buch oder einen Java-Kurs mit der Frage beginnen "Warum mache ich den Quatsch eigentlich?". Wenn jemand jahrelang Zeit und Geld in etwas investiert hat, um in einem Gebiet ein Experte zu werden, dann bedeutet die Vermittlung dieser Erkenntnis, dass man sich als Experte gerade überflüssig gemacht hätte. Und darum erklärt jeder Java-Experte nur auf konkrete Nachfrage, dass das das mit den Zeigern jetzt nicht so richtig ernst nehmen kann, aber Java immerhin die gefährliche Pointerarithmetik unterbindet... also zum Beispiel ohne gepanzerte Schutzausrüstung von einem Haus zum Nächsten zu gehen.

Du verstehst also, warum ich es amüsant finde, Java zu programmieren, um komplizierten Zeigern aus dem Weg zu gehen?

Die Antwort auf die Frage "Warum macht man den Quatsch eigentlich?" wirst Du in keiner Java-Vorlesung finden und auch in keinem Java-Buch. Java ist ein wirtschaftlicher Versuch gewesen: Man hat alles was man für einen Anfänger als kompliziert empfunden hat gestrichen. Das Ziel von Java ist die Ausbildungszeit zu verkürzen. Kürzere Ausbildungszeit bedeutet weniger Qualifikation. Weniger Qualifikation bedeutet weniger Gehalt. Weniger Gehalt bedeutet billigere Produktion von einfacher Anwendungs-Software.
Leider hat man nicht nur einfache Anwendungsprogammierung mit Java gemacht und es zeigte sich, dass weniger Qualifikation hier nicht hilfreich ist.
Es gibt auch sehr, sehr fähige Java-Entwickler! Aber wissen auch, wie Java tickt. Und auch die werden sich hüten, ihre Qualifikation wegzuwerfen indem sie öffentlich sagen, dass Java eigentlich kontraproduktiv ist. ^^
Ganze Unternehmen leben davon, Probleme zu lösen, die man mit C++ nicht hätte.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Zenerid » Fr Okt 30, 2015 4:17 pm

Hehe ... naja, ich bin ja in dem Sinne noch kein richtiger Entwickler. Vielleicht werde ich aber mal einer, mal sehen. Programmieren an sich gefällt mir sehr gut, wobei ich das mit den ganzen Frameworks manchmal ein wenig nervig finde aber ich würde auch gerne mit der Hardware direkt arbeiten, wesgen ich überlege, auch evtl. Elektrotechnik zu studieren, da ich beides sehr interessant finde. 5 Ersatztastaturen ist aber schon sehr krass. Ich glaube, das ich hier noch eine ganze alte Tastatur mit PS/2 Anschluss habe. :D

Ich suche derzeit ja nach einer neueren aber ich habe da schon ein paar Ansprüche aber das ist ja auch eher wieder Offtopic, nicht wahr? Leiser Anschlag, nicht zu "art" beim Tippen und vielleicht noch Mutlimediafuntkionen. ;)

Ich versuche grade auch, zu verstehen, wie du das mit dem Iterator meinst. Wenn ich die Methode getAlle() in der Nachbarn Klasse aufrufe, dann kriege ich doch nur für den Raum die aktuellen Nachbarn von dem Raum geliefert. Was meinst damit
ich sehe da gerade keine Grund, in einem Raum zu stehen und mit allen Nachbarräumen gleichzeitig zu interagieren.
Ich muss ja überprüfen, ob der Raum ebend Ausgänge hat oder nicht oder ob in einer Richtung einer ist oder nicht. Wie sollte man das noch auslagern? Jetzt blicke ich gar nicht mehr durch. :?:

Code: Alles auswählen

public String getAlle()
{
    Nachbarn[] nachbarn = this.getArray();
    Richtung[] richtung = Richtung.values();
    String retString = "Nachbarn:";
   
    for(int i = 0; i < nachbarn.length; i++)
    {
        if(nachbarn[i] != null)
           retString += " " + richtung[i].name().toLowerCase();
    }
   
    return retString;
}
Xin hat geschrieben:
Zenerid hat geschrieben:Ich habe das Nachbar Array jetzt auch mal als Member der Klasse entfernt. Ich habe das jetzt so abgeändert, so das ich wenigstens alle Nachbarn noch als Array zurückgeben kann. So besser?
Gefällt mir nicht... Du musst immer ein Array konstruieren, das kostet Rechenzeit.
Wie wäre es mit einem Lambda-Ausdruck?

Code: Alles auswählen

public String getAlle()
{
  String retString;
  this.foreachNeighbor( ( Richtung r, Nachbar n ) -> { retString += r.name().toLowerCase() } );
  return retString;
}
Die Syntax für foreachNeighbor müsste ich in Java nachschlagen.
Darin enthalten wären dann die 4 Abfragen - man muss die Abfragen also einmal und nicht immer programmieren. Es gibt entsprechend auch nur eine Stelle, die man ändern müsste, wenn auch noch oben und unten dazu käme und man muss keine Wegwerfobjekte erzeugen.
Zugegeben, das habe ich auch gedacht aber immer noch besser, als das was ich vorher hatte oder nicht. Mit Lambda-Ausdrücken habe ich mich aber auch ehrlich gesagt noch nicht sonderlich viel beschäfitgt. Ich habe da aber bisjetzt auch noch keine gute Quelle mit ausführlich Beispielen von schwer bis einfach gefunden.

forEach ist doch auch letzendlich nur eine Schleife oder nicht. Klar erzeugt man da dann kein Wegwerfobjekt aber das ist doch auch nur eine Schleife oder nicht? Die Syntax scheint dabei so zu sein:

Code: Alles auswählen

myList.forEach((...........));
Aber ich dachte eigentlich, das du die getArray Methode nicht magst, wieso beziehst du dich dann auf einmal wieder auf die Methode, die eigentlich nur die Ausgänge für den String zurückgibt? Ich dachte jetzt erst, das du die getArray Methode nicht magst? :?
Xin hat geschrieben:
Zenerid hat geschrieben: Ich hatte auch übrigens noch einen kleinen Fehler drin aber jetzt werden die Ausgänge zwar wieder erstellt aber der Nachbar scheint nicht mehr gesetzt zu sein. Wenn ich dann bspw. in die Richtung geradeaus gehen will, dann kriege ich eine NullPointerException. Die Richtung scheint also wohl gesetzt zu werden aber jetzt scheint der Nachbar null zu sein.
Eine Null-Pointer-Exception?
Was heißt "Die Richtung ist gesetzt?" Eine Richtung ist doch gesetzt, wenn sie nicht null ist!?

get falsch aufgebaut?
Naja, die Richtung war ja wohl gesetzt, da diese auch zurückgegeben wurde aber immer wenn ich mir dann den Ausgang holen wollte, kam ja die Nullpointer Exception, da die get Methode dann wohl null zurückgegeben hat. Da die Richtung dann wohl nicht mit dem ordinal übereingestimmt hat aber ist ja auch egal. Das Problem habe ich ja, wie schon gesagt gefunden.

Ja, das get war also falsch aufgebaut.
Xin hat geschrieben:Die Nachbarn-Klasse hat die Information, welche Nachbarn es gibt und wolang man gehen kann. Wen immer Du fragst, der muss die Nachbarn fragen, wohin es gehen kann?
Ja, da hast du Recht, mal sehen, wie ich das das da mache.

Zu Java vs C++.
Ja, ich finde C++ Pointer abstrakt aber das ist nicht der Grund warum ich Java programmiere. Java hatte ich damals auch ein wenig in der Schule, genau wie C++ aber das meiste habe ich mir eigentlich selber beigbracht und das ging auch sowieso nicht wirklich weit vom Stoff her. Ich hatte Java damals eigentlich auch nur notgedrungen für die Schule gemacht aber jetzt wollte ich halt auch noch mal was mit Objektorientierung machen und JAVA wird ja auch ziemlich häufig genutzt, das ist der eigentliche Grund, mehr nicht.

Bis jetzt finde ich C++ eigentlich auch besser, weil es ja auch wirklich da eher an die Hardware geht und weil C++ ja immer noch eine der meistgenutzten Programmiersprachen ist und auch wohl noch eine Zeit lang bleiben wird. Mag sein, das ich jetzt ein wenig virtuelles Verständis habe aber das kann sich ja noch ändern. Ich wollte mir hiernach, wie auch schon gesagt, mal ein wenig genauer C++ anschauen.

Zu dem ganzen anderen:
Ja, da jast du wohl Recht. Unser Lehrer hat das dann damals auch wohl richtig gesagt, das Pointer in Java auch noch da sind aber nur anders aussehen aber der kam auch aus der Entwicklung und war eigentlich ursprünglich Ingenieur (Elektrotechnik) und hat extrem viel Hardwarenahes Zeug gemacht. Von daher kannte der sich da ja auch anscheinend wohl gut aus aber leider haben wir da Pointer nur mal ganz kurz angeschnitten und das war's dann auch.

Derzeit gibt es ja aber auch nichts besseres als Programmiersprache, als C++ oder nicht? Ich bin da zwar nicht so auf dem laufenden, was grad noch so entwickelt wird aber C# ist ja auch im wesentlichen nur eine Kopie von Java oder nicht?

So habe ich da aber noch nie drüber nachgedacht aber da hast du wohl Recht. Java wirbt ja aber auch sonst immer gerne mit seiner Portierbarkeit aber eigentlich ist C++ dann wohl wirklich besser oder nicht? Da kann ich mich nicht so wirllich zu äußern.

Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Zenerid » Sa Okt 31, 2015 2:41 am

Noch einmal was: Ich habe jetzt fast alles erledigt. Alle Räume sind jetzt in's Spiel integriert, alle Kreaturen oder allgemein Lebewesen und auch noch vieles anderes aber ich komme grade mit den Gegenständen im Spiel nicht weiter. Vielleicht liegt das ja an der Hashmap?

Derzeit habe ich dann das Problem, das auch wieder keine Gegenstände in den Räumen sind. Da scheint irgendwie gar nichts zu passieren. Der Konstruktor für das Inventar wird aber für jeden Raum aufgerufen, das habe ich schon getestet.

Wenn meine XML Datei dann bspw. für einen Raum so aussieht: (Dadrum ist wie gewohnt das gleiche)

Code: Alles auswählen

<raum id="2">
	<beschreibung>Ein weiterer Zweig im Hoehlensystem. Ein kleiner Wasserfall ist zu sehen.</beschreibung>
	<ausgaenge>
		<norden>
			<richtung>norden</richtung>
			<nachbar>4</nachbar>
		</norden>
		<sueden>
			<richtung>sueden</richtung>
			<nachbar>1</nachbar>
		</sueden>
		<westen>
			<richtung>westen</richtung>
			<nachbar>5</nachbar>
		</westen>
	</ausgaenge>
	<inventar>
		<waffe>
			<name>Schwert</name>
			<beschreibung>Ein Schwert im guten Zustand.</beschreibung>
			<schaden>20</schaden>
		</waffe>
	</inventar>
</raum>
und die Inventar Klasse sieht so aus:

Code: Alles auswählen

@XmlRootElement(name = "inventar")@XmlAccessorType(XmlAccessType.NONE)
public class Inventar
{
	@XmlElementWrapper(name = "inventar")@XmlElement(name = "gegenstand")
    private HashMap<String, Gegenstand> inventar = new HashMap<String, Gegenstand>();
    
    public Inventar()
    {   
  
    }
    
    public String getNames() 
    {
        String retString = "";
        
        for(Iterator<Gegenstand> iter = inventar.values().iterator(); iter.hasNext(); )
            retString += " " + ((Gegenstand) iter.next()).getName();
        
        return retString;     
    }
   
    public String getBeschreibung() 
    {
        String retString = "";
        for(Iterator<Gegenstand> iter = inventar.values().iterator(); iter.hasNext(); )
            retString += "  " + ((Gegenstand) iter.next()).getBeschreibung();
        
        return retString;     
    }
   
    public Gegenstand get(String name) 
    {
        return (Gegenstand) inventar.get(name);
    }
   
    public void put(String name, Gegenstand gegenstand)
    {
    	inventar.put(name, gegenstand);
    }
   
    public Gegenstand remove(String name) 
    {
         return (Gegenstand) inventar.remove(name);
    }
}
und so der Gegenstand:

Code: Alles auswählen

@XmlRootElement(name = "gegenstand")@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso({Konsumierbar.class, Waffe.class})
public abstract class Gegenstand
{
    private String name;
    private String beschreibung;
    
    public Gegenstand()
    {
    	
    }
    
    public String getName() 
    {
        return name;
    }
   
    public String getBeschreibung()
    {
        return beschreibung;
    }    
    
    @XmlElement(name = "name")
    public void setName(String name)
    {
    	this.name = name;
    }
    
    @XmlElement(name = "beschreibung")
    public void setBeschreibung(String beschreibung)
    {
    	this.beschreibung = beschreibung;
    }
   
    public abstract void benutze(Spieler spieler); 
}

Code: Alles auswählen

@XmlRootElement(name = "gegenstand")@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso({Waffe.class ....})
public abstract class Gegenstand
{
    private String name;
    private String beschreibung;
    
    public Gegenstand()
    {
    	
    }
    
    public String getName() 
    {
        return name;
    }
    
    public String getBeschreibung()
    {
        return beschreibung;
    }    
    
    @XmlElement(name = "name")
    public void setName(String name)
    {
    	this.name = name;
    }
    
    @XmlElement(name = "beschreibung")
    public void setBeschreibung(String beschreibung)
    {
    	this.beschreibung = beschreibung;
    }
    
    public abstract void benutze(Spieler spieler); 
}
Bei der Waffe kann man sich ja denken, das da bspw. noch der Schaden als zusätzlicher Member mit dabei ist, von daher zeige ich die hier mal nicht. Ich habe auch bei XmlSeeAlso ein paar Klassen entfernt, denn das würde hier den Rahmen sprengen, denke ich. ;)

Und das der Raum dann noch eine Instanz der inventar Klasse hat, brauche ich ja wohl nicht erwähhnen, oder? Hier ist sie aber trotzdem noch einmal aber ohne das ganze andere Zeug. Nur mit den Nachbarn und dem Inventar und den nötigen Methoden dazu:

Code: Alles auswählen

public class Raum
{    
    @XmlElementRef()
    private Inventar inventar;  
    
    @XmlElementRef()
	private Nachbarn nachbarn;
    
    public Raum() 
    {
    	nachbarn = new Nachbarn();
        inventar = new Inventar();
    }

    public void gegenstandHinzufuegen(Gegenstand gegenstand) 
    {
        inventar.put(gegenstand.getName(), gegenstand);
    }
  
    public Gegenstand getGegenstand(String name)
    {
        return (Gegenstand) inventar.get(name);
    }    
    
    public Gegenstand gegenstandEntfernen(String name)
    {
        return (Gegenstand) inventar.remove(name);
    }
}
Sorry übrigens wieder für das Denglish, wie du es ja so schön genannt hast aber wenn ich das jetzt ändere, dann muss ich da warscheinlich erst einmal zu viel Zeit zum abändern verwenden. Das mache ich dann, wenn es fertig ist. ;)

Ich würde das ja auch sehr gerne so machen, das ich mehrere Items mit den gleichen Namen im Inventar haben kann aber wie unterscheidet man dann noch zwischen den beiden? Wenn ich z.B sowas haben möchte, wie das zwei Gegenstände den gleichen Namen haben aber einer vielleicht mehr Schaden oder so? Wie unterscheidet man da noch zwischen den beiden Gegenständen, so das man dann z.B bei der get Methode den richtigen holt?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Xin » Sa Okt 31, 2015 11:48 am

Zenerid hat geschrieben:Hehe ... naja, ich bin ja in dem Sinne noch kein richtiger Entwickler. Vielleicht werde ich aber mal einer, mal sehen. Programmieren an sich gefällt mir sehr gut, wobei ich das mit den ganzen Frameworks manchmal ein wenig nervig finde aber ich würde auch gerne mit der Hardware direkt arbeiten, wesgen ich überlege, auch evtl. Elektrotechnik zu studieren, da ich beides sehr interessant finde. 5 Ersatztastaturen ist aber schon sehr krass. Ich glaube, das ich hier noch eine ganze alte Tastatur mit PS/2 Anschluss habe. :D
"Richtige" Entwickler haben immer Leute, zu denen sie aufsehen. Ich programmiere seit fast 30 Jahren, bin Diplom-Informatiker, lebe seit 10 Jahren vom Programmieren, besuche eine C++-Konferenz und stelle fest, dass ich eigentlich keine Ahnung habe. ;)
Zenerid hat geschrieben:Ich suche derzeit ja nach einer neueren aber ich habe da schon ein paar Ansprüche aber das ist ja auch eher wieder Offtopic, nicht wahr? Leiser Anschlag, nicht zu "art" beim Tippen und vielleicht noch Mutlimediafuntkionen. ;)
Etwas... habe die iRocks Golem im Test und das geht schon. Die Tastaturen auf Reserve sind Logitech Ultra-X, die ich Dir grundsätzlich empfehlen kann, aber leider nicht mehr erhältlich ist. Darum habe 5 auf Reserve.
Zenerid hat geschrieben:Ich versuche grade auch, zu verstehen, wie du das mit dem Iterator meinst. Wenn ich die Methode getAlle() in der Nachbarn Klasse aufrufe, dann kriege ich doch nur für den Raum die aktuellen Nachbarn von dem Raum geliefert. Was meinst damit
ich sehe da gerade keine Grund, in einem Raum zu stehen und mit allen Nachbarräumen gleichzeitig zu interagieren.
Ich suche eine Notwendigkeit, wo Du über die Ausgänge iterieren musst - also die Frage ob und wo Du überhaupt iterieren musst. Ich würde nicht an einem Array festhalten, wenn ich kein Array brauche.
Du hast genau 4 Elemente. Das kannst in der Klasse Nachbarn verarbeiten. Nachbarn ist, was Du vorher als Array hattest. In Nachbarn kannst Du alles tun, was Du mit den 4 Ausgängen machen willst - und weißt auch, wo Du es findest.
Zenerid hat geschrieben:Ich muss ja überprüfen, ob der Raum ebend Ausgänge hat oder nicht oder ob in einer Richtung einer ist oder nicht. Wie sollte man das noch auslagern? Jetzt blicke ich gar nicht mehr durch. :?:

Code: Alles auswählen

public String getAlle()
{
    Nachbarn[] nachbarn = this.getArray();
    Richtung[] richtung = Richtung.values();
    String retString = "Nachbarn:";
   
    for(int i = 0; i < nachbarn.length; i++)
    {
        if(nachbarn[i] != null)
           retString += " " + richtung[i].name().toLowerCase();
    }
   
    return retString;
}
4 Elemente... warum iterieren?!

Code: Alles auswählen

public String getAlle()
{
    String retString = "Nachbarn:";

    if( norden ) retString += " " + NordRichtung.name().toLowerCase();
    if( westen ) retString += " " + WestRichtung.name().toLowerCase();
    if( osten ) retString += " " + OstRichtung.name().toLowerCase();
    if( sueden ) retString += " " + SuedRichtung.name().toLowerCase();

    return retString;
}
Weniger Code. Weniger erzeugte Objekte. Weniger benötigte Rechenleistung. Und beim Durchschollen leicht zu verstehen.
Zenerid hat geschrieben:
Xin hat geschrieben:Lambda-Ausdruck?
Zugegeben, das habe ich auch gedacht aber immer noch besser, als das was ich vorher hatte oder nicht. Mit Lambda-Ausdrücken habe ich mich aber auch ehrlich gesagt noch nicht sonderlich viel beschäfitgt. Ich habe da aber bisjetzt auch noch keine gute Quelle mit ausführlich Beispielen von schwer bis einfach gefunden.
Ich bin sicher, es gibt passende Java-Bücher. :)

Ich habe kurz gegoogelt, aber auf die Schnelle auch nur Links gefunden, die die Anwendung von Lambda-Ausdrücken beschreibt, aber nicht wie man etwas schreibt, das mit Lambda-Ausdrücken funktioniert.
Das ist vielleicht sehr einfach, aber als ich Java-Entwickler war, gab's noch keine Lambda-Ausdrücke.
Zenerid hat geschrieben:forEach ist doch auch letzendlich nur eine Schleife oder nicht. Klar erzeugt man da dann kein Wegwerfobjekt aber das ist doch auch nur eine Schleife oder nicht? Die Syntax scheint dabei so zu sein:

Code: Alles auswählen

myList.forEach((...........));
Aber ich dachte eigentlich, das du die getArray Methode nicht magst, wieso beziehst du dich dann auf einmal wieder auf die Methode, die eigentlich nur die Ausgänge für den String zurückgibt? Ich dachte jetzt erst, das du die getArray Methode nicht magst? :?
Ich mag die getArray() Methode nicht, weil man sie nutzt, damit Rechenzeit verbrät. getArray() klingt so einfach, aber es macht Aufwand. Und so nutzt man es regelmäßig. Und verbrät damit noch mehr Rechenzeit.


Zenerid hat geschrieben:... aber ich komme grade mit den Gegenständen im Spiel nicht weiter. Vielleicht liegt das ja an der Hashmap?
Kann mir nicht vorstellen, dass die Hashmap nicht serialisierbar sein soll.
Zenerid hat geschrieben:Derzeit habe ich dann das Problem, das auch wieder keine Gegenstände in den Räumen sind. Da scheint irgendwie gar nichts zu passieren. Der Konstruktor für das Inventar wird aber für jeden Raum aufgerufen, das habe ich schon getestet.
...
und die Inventar Klasse sieht so aus:
...
und so der Gegenstand:
...

Bei der Waffe kann man sich ja denken, das da bspw. noch der Schaden als zusätzlicher Member mit dabei ist, von daher zeige ich die hier mal nicht. Ich habe auch bei XmlSeeAlso ein paar Klassen entfernt, denn das würde hier den Rahmen sprengen, denke ich. ;)
Und das ganze funktioniert also nicht...?
Dein Problem hast Du (für mich) jedenfalls nicht genannt :-D

Ich sehe momentan keinen Grund, warum das nicht funktionieren sollte, aber ich bin da weder der Experte, der das aus Codestücken rauslesen kann und programmiere ja auch kein Java mehr. ^^

Ich sehe jedenfalls nicht von selbst ein Problem und habe daher auch keine Antwort zu dieser "Frage".
Zenerid hat geschrieben: Sorry übrigens wieder für das Denglish, wie du es ja so schön genannt hast aber wenn ich das jetzt ändere, dann muss ich da warscheinlich erst einmal zu viel Zeit zum abändern verwenden. Das mache ich dann, wenn es fertig ist. ;)
Wenn's fertig ist, wirst Du so wenig Zeit wie möglich in die Wartung stecken. Dann bringt es auch nichts mehr, weil Du ja nicht mehr damit arbeitest.
Zenerid hat geschrieben:Ich würde das ja auch sehr gerne so machen, das ich mehrere Items mit den gleichen Namen im Inventar haben kann aber wie unterscheidet man dann noch zwischen den beiden? Wenn ich z.B sowas haben möchte, wie das zwei Gegenstände den gleichen Namen haben aber einer vielleicht mehr Schaden oder so? Wie unterscheidet man da noch zwischen den beiden Gegenständen, so das man dann z.B bei der get Methode den richtigen holt?
Der Name ist keine brauchbare Identifikation.
Wenn Du Andreas Müller heißt, hast Du einfach die Arschkarte. Frag mal die Schufa ;)
Ich war mit Andreas Müller in Grundschule und in der Realschule in der gleichen Stadt. Aber es waren unterschiedliche Personen.

Du brauchst also eine andere Identifikation. Der Name ist nicht mehr als eine Kurzbeschreibung, unter der sich Menschen etwas vorstellen können. "Schwert" zum Beispiel. Aber zwei Schwerter musst Du mit einer Id - einer Identifikation - unterscheiden.


Zenerid hat geschrieben: Derzeit gibt es ja aber auch nichts besseres als Programmiersprache, als C++ oder nicht? Ich bin da zwar nicht so auf dem laufenden, was grad noch so entwickelt wird aber C# ist ja auch im wesentlichen nur eine Kopie von Java oder nicht?
C# ist eine Kopie, die sich aber konstruktiver weiterentwickelt als Java, dafür aber noch weniger portable ist.

Mir ist nichts besseres als C++ bekannt, wenn Du was größeres machen willst, weil C++ die einzige Sprache ist, die Fähigkeiten mitbringt, große Projekte zu verwalten. Dafür muss man entsprechend Dinge lernen, die man bei kleineren Projekten vielleicht noch nicht braucht. Ein gutes C++ Projekt wird also wie ein großes Projekt aufgezogen, auch wenn es nur ein kleines Projekt ist.

Andere Sprachen konzentrieren sich auf kleinere Projekte. Das ist dann erstmal einfacher zu lernen, ganz einfach, weil es weniger ist. Wird das kleinere Projekt dann aber größer, kann man nicht spontan mal wechseln - zumal ja auch die Kenntnisse fehlen und das Projekt ja weiterentwickelt werden soll. Neuentwicklung ist ein großer Schritt zurück, wenn man nur eine kleine Weiterentwicklung machen möchte - also wird das Projekt erst neu entwickelt, wenn die alte Codebasis unbrauchbar geworden ist.
In der Regel bedeutet das die Insolvenz oder wenigstens das Ende des Produktes.
Zenerid hat geschrieben:So habe ich da aber noch nie drüber nachgedacht aber da hast du wohl Recht. Java wirbt ja aber auch sonst immer gerne mit seiner Portierbarkeit aber eigentlich ist C++ dann wohl wirklich besser oder nicht? Da kann ich mich nicht so wirllich zu äußern.
Als Java-Entwickler wurde ich häufig in C Bereich eingesetzt, um Java portabel zu machen. Wenn Java nämlich nicht portable ist, muss man aus dem Java-Universum raus und für das jeweilige System individuelle Lösungen schreiben. In C++.

Ich beschäftige mich viel mit praktischen Programmiersprachen, weil ich versuche eine zu schreiben. Mein Programmiersprache ist - wie Java auch - in C++ geschrieben und kompiliert auf Linux, Windows und Mac. Man kann in C++, wie auch Java portabel und nicht portabel programmieren. Aber das ist vorrangig eine Planungsfrage und weniger eine Frage der Hochsprache.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Zenerid » Mi Nov 04, 2015 5:09 am

Hmm .. joa, das kann schon sein. Ich sehe eigentlich auch schon zu einigen Leuten auf, vor allem wenn man die ganzen Leistungen und die Arbeit bedenkt, die da wohl drin stecken muss. Das wird einem ja sowieso erst klar, wenn man mal selber irgendwas programmiert oder irgendein Projekt startet.
Xin hat geschrieben:
Zenerid hat geschrieben:Ich suche derzeit ja nach einer neueren aber ich habe da schon ein paar Ansprüche aber das ist ja auch eher wieder Offtopic, nicht wahr? Leiser Anschlag, nicht zu "art" beim Tippen und vielleicht noch Mutlimediafuntkionen. ;)
Etwas... habe die iRocks Golem im Test und das geht schon. Die Tastaturen auf Reserve sind Logitech Ultra-X, die ich Dir grundsätzlich empfehlen kann, aber leider nicht mehr erhältlich ist. Darum habe 5 auf Reserve.
Habe schon eine gefunden, denke ich. Mal sehen, ob Sie mir gefällt, sonst geht Sie zurück. ;)
Xin hat geschrieben:
Zenerid hat geschrieben:Ich versuche grade auch, zu verstehen, wie du das mit dem Iterator meinst. Wenn ich die Methode getAlle() in der Nachbarn Klasse aufrufe, dann kriege ich doch nur für den Raum die aktuellen Nachbarn von dem Raum geliefert. Was meinst damit
ich sehe da gerade keine Grund, in einem Raum zu stehen und mit allen Nachbarräumen gleichzeitig zu interagieren.
Ich suche eine Notwendigkeit, wo Du über die Ausgänge iterieren musst - also die Frage ob und wo Du überhaupt iterieren musst. Ich würde nicht an einem Array festhalten, wenn ich kein Array brauche.
Du hast genau 4 Elemente. Das kannst in der Klasse Nachbarn verarbeiten. Nachbarn ist, was Du vorher als Array hattest. In Nachbarn kannst Du alles tun, was Du mit den 4 Ausgängen machen willst - und weißt auch, wo Du es findest.
Zenerid hat geschrieben:Ich muss ja überprüfen, ob der Raum ebend Ausgänge hat oder nicht oder ob in einer Richtung einer ist oder nicht. Wie sollte man das noch auslagern? Jetzt blicke ich gar nicht mehr durch. :?:

Code: Alles auswählen

public String getAlle()
{
    Nachbarn[] nachbarn = this.getArray();
    Richtung[] richtung = Richtung.values();
    String retString = "Nachbarn:";
   
    for(int i = 0; i < nachbarn.length; i++)
    {
        if(nachbarn[i] != null)
           retString += " " + richtung[i].name().toLowerCase();
    }
   
    return retString;
}
4 Elemente... warum iterieren?!

Code: Alles auswählen

public String getAlle()
{
    String retString = "Nachbarn:";

    if( norden ) retString += " " + NordRichtung.name().toLowerCase();
    if( westen ) retString += " " + WestRichtung.name().toLowerCase();
    if( osten ) retString += " " + OstRichtung.name().toLowerCase();
    if( sueden ) retString += " " + SuedRichtung.name().toLowerCase();

    return retString;
}
Weniger Code. Weniger erzeugte Objekte. Weniger benötigte Rechenleistung. Und beim Durchschollen leicht zu verstehen.
Ja gut, für die die getAlle Methode hast du ja recht aber bei der getArray Methode habe ich ja eigentlich keine Wahl oder nicht? Mag ja sein, das die Rechenzeit kostet aber sonst sehe ich da keine Möglichkeit, außer das mit dem Lambda-Ausdruck zu machen.
Xin hat geschrieben:
Zenerid hat geschrieben:
Xin hat geschrieben:Lambda-Ausdruck?
Zugegeben, das habe ich auch gedacht aber immer noch besser, als das was ich vorher hatte oder nicht. Mit Lambda-Ausdrücken habe ich mich aber auch ehrlich gesagt noch nicht sonderlich viel beschäfitgt. Ich habe da aber bisjetzt auch noch keine gute Quelle mit ausführlich Beispielen von schwer bis einfach gefunden.
Ich bin sicher, es gibt passende Java-Bücher. :)

Ich habe kurz gegoogelt, aber auf die Schnelle auch nur Links gefunden, die die Anwendung von Lambda-Ausdrücken beschreibt, aber nicht wie man etwas schreibt, das mit Lambda-Ausdrücken funktioniert.
Das ist vielleicht sehr einfach, aber als ich Java-Entwickler war, gab's noch keine Lambda-Ausdrücke.
Zenerid hat geschrieben:forEach ist doch auch letzendlich nur eine Schleife oder nicht. Klar erzeugt man da dann kein Wegwerfobjekt aber das ist doch auch nur eine Schleife oder nicht? Die Syntax scheint dabei so zu sein:

Code: Alles auswählen

myList.forEach((...........));
Aber ich dachte eigentlich, das du die getArray Methode nicht magst, wieso beziehst du dich dann auf einmal wieder auf die Methode, die eigentlich nur die Ausgänge für den String zurückgibt? Ich dachte jetzt erst, das du die getArray Methode nicht magst? :?
Ich mag die getArray() Methode nicht, weil man sie nutzt, damit Rechenzeit verbrät. getArray() klingt so einfach, aber es macht Aufwand. Und so nutzt man es regelmäßig. Und verbrät damit noch mehr Rechenzeit.
Naja, das mit dem Lambda Ausdruck muss ich mir dann noch einmal online anschauen. Das kriege ich schon irgendwie hin. Dann werde ich das mal zu diesem Lambda-Ausdruck abändern, da das ja wohl besser ist. Quellen oder Literatur gibt es ja auch wohl online mehr als genug.
Xin hat geschrieben:
Zenerid hat geschrieben:... aber ich komme grade mit den Gegenständen im Spiel nicht weiter. Vielleicht liegt das ja an der Hashmap?
Kann mir nicht vorstellen, dass die Hashmap nicht serialisierbar sein soll.
Zenerid hat geschrieben:Derzeit habe ich dann das Problem, das auch wieder keine Gegenstände in den Räumen sind. Da scheint irgendwie gar nichts zu passieren. Der Konstruktor für das Inventar wird aber für jeden Raum aufgerufen, das habe ich schon getestet.
Und das ganze funktioniert also nicht...?
Dein Problem hast Du (für mich) jedenfalls nicht genannt :-D

Ich sehe momentan keinen Grund, warum das nicht funktionieren sollte, aber ich bin da weder der Experte, der das aus Codestücken rauslesen kann und programmiere ja auch kein Java mehr. ^^
Ich sehe jedenfalls nicht von selbst ein Problem und habe daher auch keine Antwort zu dieser "Frage".
Ja ich denke aber sowieso, das ich das dann zu einer ArrayList abändern werde. Das Problem war ja ebend, das in dem gegenstaenden für den Räumen nie was drin war, also wird wohl irgendwas mit der Hashmap nicht simmen oder so.



Xin hat geschrieben:
Zenerid hat geschrieben: Sorry übrigens wieder für das Denglish, wie du es ja so schön genannt hast aber wenn ich das jetzt ändere, dann muss ich da warscheinlich erst einmal zu viel Zeit zum abändern verwenden. Das mache ich dann, wenn es fertig ist. ;)
Wenn's fertig ist, wirst Du so wenig Zeit wie möglich in die Wartung stecken. Dann bringt es auch nichts mehr, weil Du ja nicht mehr damit arbeitest.
Zenerid hat geschrieben:Ich würde das ja auch sehr gerne so machen, das ich mehrere Items mit den gleichen Namen im Inventar haben kann aber wie unterscheidet man dann noch zwischen den beiden? Wenn ich z.B sowas haben möchte, wie das zwei Gegenstände den gleichen Namen haben aber einer vielleicht mehr Schaden oder so? Wie unterscheidet man da noch zwischen den beiden Gegenständen, so das man dann z.B bei der get Methode den richtigen holt?
Der Name ist keine brauchbare Identifikation.
Wenn Du Andreas Müller heißt, hast Du einfach die Arschkarte. Frag mal die Schufa ;)
Ich war mit Andreas Müller in Grundschule und in der Realschule in der gleichen Stadt. Aber es waren unterschiedliche Personen.

Du brauchst also eine andere Identifikation. Der Name ist nicht mehr als eine Kurzbeschreibung, unter der sich Menschen etwas vorstellen können. "Schwert" zum Beispiel. Aber zwei Schwerter musst Du mit einer Id - einer Identifikation - unterscheiden.
Hmm .. da hast du schon recht aber keine Ahnung. Vielleicht lasse ich das dann doch auch einfach so oder ich erweitere das noch um das Speichern eines aktuellen "Spielstandes", das tut ja auch eigentlich nichts zur Sache.

Meinst du das dann so, das ich zu meiner Klassse Gegenstand dann noch einen String oder einen int-Wert id hinzufüge oder wie? Aber eines verstehe ich dann ja noch nicht. Wenn ich dann bspw. drop Schwert eingebe, wie kann ich das dann Codemäßig von dem anderen Unterscheiden? Was muss ich da Code technisch hinschreiben, um das zu unterscheiden? Dabei handelt es sich da dann ja erst einmal um einen String aber wie komme ich dann an das richtige Schwert im Inventar, wenn ich zwei im Inventar habe und drop Schwert eingebe?
Xin hat geschrieben: C# ist eine Kopie, die sich aber konstruktiver weiterentwickelt als Java, dafür aber noch weniger portable ist.

Mir ist nichts besseres als C++ bekannt, wenn Du was größeres machen willst, weil C++ die einzige Sprache ist, die Fähigkeiten mitbringt, große Projekte zu verwalten. Dafür muss man entsprechend Dinge lernen, die man bei kleineren Projekten vielleicht noch nicht braucht. Ein gutes C++ Projekt wird also wie ein großes Projekt aufgezogen, auch wenn es nur ein kleines Projekt ist.

Andere Sprachen konzentrieren sich auf kleinere Projekte. Das ist dann erstmal einfacher zu lernen, ganz einfach, weil es weniger ist. Wird das kleinere Projekt dann aber größer, kann man nicht spontan mal wechseln - zumal ja auch die Kenntnisse fehlen und das Projekt ja weiterentwickelt werden soll. Neuentwicklung ist ein großer Schritt zurück, wenn man nur eine kleine Weiterentwicklung machen möchte - also wird das Projekt erst neu entwickelt, wenn die alte Codebasis unbrauchbar geworden ist.
In der Regel bedeutet das die Insolvenz oder wenigstens das Ende des Produktes.
Zenerid hat geschrieben:So habe ich da aber noch nie drüber nachgedacht aber da hast du wohl Recht. Java wirbt ja aber auch sonst immer gerne mit seiner Portierbarkeit aber eigentlich ist C++ dann wohl wirklich besser oder nicht? Da kann ich mich nicht so wirllich zu äußern.
Als Java-Entwickler wurde ich häufig in C Bereich eingesetzt, um Java portabel zu machen. Wenn Java nämlich nicht portable ist, muss man aus dem Java-Universum raus und für das jeweilige System individuelle Lösungen schreiben. In C++.
Echt? C# entwickelt sich konstruktiver weiter als Java? C# ist ja auch glaube ich um einiges sicherer oder? Man hört ja oft von irgendwelchen Sicherheitslücke bei Java Programmen oder ist das bei C# auch nicht viel anders? Bei C# gibt es ja aber auch, wie in Java einen Zwischencode der IL heißt, wenn ich micht nich irre?

C# ist aber auch "mächtiger" soweit ich weiß oder? Da gibt es ja Referenzparamater, Structs, LINQ, Lamba-Ausdrücke (sind glaube ich schon immer vorhanden?) u.v.m, also schon etwas facettenreicher? C# läuft aber ja nicht auf einer virtuellen Maschine aber erzeugt trotzdem diesen Zwischencode oder nicht?
Xin hat geschrieben:Ich beschäftige mich viel mit praktischen Programmiersprachen, weil ich versuche eine zu schreiben. Mein Programmiersprache ist - wie Java auch - in C++ geschrieben und kompiliert auf Linux, Windows und Mac. Man kann in C++, wie auch Java portabel und nicht portabel programmieren. Aber das ist vorrangig eine Planungsfrage und weniger eine Frage der Hochsprache.
Eine eigene Programmiersprache, alleine? Hört sich für mich ja sehr nach einem sehr aufwändigen Langzeitprojekt (Mammutprojekt ;) ) aus. Wie lange bist du denn schon dabei oder bist du grade noch dabei zu planen? Da muss man ja auch mit Sicherheit einiges berücksichtigen und alleine dauert das ja mit Sicherheit wenigstens knapp 5. Jahre, je nach Zeitaufwand, würde ich mal so schätzen? Das kann ich aber absolut nicht einschätzen. :D

Keine Ahnung, wie lange wohl an C++ oder anderen Sprachen gearbeitet wurde aber das würde mich ja irgendwie schon interessieren aber die wurden ja auch alle nicht nur von einer Person entwickelt, außer C, glaube ich.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Xin » Mi Nov 04, 2015 4:08 pm

Zenerid hat geschrieben:Hmm .. joa, das kann schon sein. Ich sehe eigentlich auch schon zu einigen Leuten auf, vor allem wenn man die ganzen Leistungen und die Arbeit bedenkt, die da wohl drin stecken muss. Das wird einem ja sowieso erst klar, wenn man mal selber irgendwas programmiert oder irgendein Projekt startet.
Guter Punkt.
Wenn man sich den Todeszeitpunkt von Steve Jobs ansieht und die große Trauer um ihn und dabei übersieht, dass Dennis Ritchie 8 Tage später verstarb, dann muss man vielleicht programmieren können, um zu verstehen, wer von den beiden wirklich wichtig war.

In Anlehnung von Apple habe ich damals die proggen.org Startseite für ein Bild von Dennis Ritchie freigeräumt.
Zenerid hat geschrieben:Ja gut, für die die getAlle Methode hast du ja recht aber bei der getArray Methode habe ich ja eigentlich keine Wahl oder nicht? Mag ja sein, das die Rechenzeit kostet aber sonst sehe ich da keine Möglichkeit, außer das mit dem Lambda-Ausdruck zu machen.
Brauchst eine getArray()-Methode?
Ansonsten wären da noch Iteratoren, wenn Dir Lambda nicht gefällt.



Zenerid hat geschrieben:
Xin hat geschrieben:Du brauchst also eine andere Identifikation. Der Name ist nicht mehr als eine Kurzbeschreibung, unter der sich Menschen etwas vorstellen können. "Schwert" zum Beispiel. Aber zwei Schwerter musst Du mit einer Id - einer Identifikation - unterscheiden.
Hmm .. da hast du schon recht aber keine Ahnung. Vielleicht lasse ich das dann doch auch einfach so oder ich erweitere das noch um das Speichern eines aktuellen "Spielstandes", das tut ja auch eigentlich nichts zur Sache.

Meinst du das dann so, das ich zu meiner Klassse Gegenstand dann noch einen String oder einen int-Wert id hinzufüge oder wie? Aber eines verstehe ich dann ja noch nicht. Wenn ich dann bspw. drop Schwert eingebe, wie kann ich das dann Codemäßig von dem anderen Unterscheiden? Was muss ich da Code technisch hinschreiben, um das zu unterscheiden? Dabei handelt es sich da dann ja erst einmal um einen String aber wie komme ich dann an das richtige Schwert im Inventar, wenn ich zwei im Inventar habe und drop Schwert eingebe?
Das kann ein Int-Wert sein, ein String, aber irgendwas Eindeutiges.
Wenn Du zwei Schwerter dabei hast, ist "drop Schwert" ja auch mehrdeutig.
Zenerid hat geschrieben:Echt? C# entwickelt sich konstruktiver weiter als Java? C# ist ja auch glaube ich um einiges sicherer oder? Man hört ja oft von irgendwelchen Sicherheitslücke bei Java Programmen oder ist das bei C# auch nicht viel anders? Bei C# gibt es ja aber auch, wie in Java einen Zwischencode der IL heißt, wenn ich micht nich irre?

C# ist aber auch "mächtiger" soweit ich weiß oder? Da gibt es ja Referenzparamater, Structs, LINQ, Lamba-Ausdrücke (sind glaube ich schon immer vorhanden?) u.v.m, also schon etwas facettenreicher? C# läuft aber ja nicht auf einer virtuellen Maschine aber erzeugt trotzdem diesen Zwischencode oder nicht?
Ich schätze in C# sind genauso viele Sicherheitslücken wie in Java. Es handelt sich ja in der Regel um Sicherheitslücken der umliegenden Libraries.
Ansonsten sind sich C# und Java in der "Mächtigkeit" recht ähnlich. C# hat mehr Syntactic Sugar, ist dadruch handlicher.
Wie weit Java in den letzten Jahren aufgeholt hat, weiß ich nicht, aber C# war in der Weiterentwicklung in der Regel deutlich progressiver.

C# hat auch nicht mit Lambda-Ausdrücken angefangen und hat inzwischen - wie Java - reichlich Altlasten.
C# ist eine .NET Sprache, .NET läuft wie Java auf einer VM.
Zenerid hat geschrieben:
Xin hat geschrieben:Ich beschäftige mich viel mit praktischen Programmiersprachen, weil ich versuche eine zu schreiben. Mein Programmiersprache ist - wie Java auch - in C++ geschrieben und kompiliert auf Linux, Windows und Mac. Man kann in C++, wie auch Java portabel und nicht portabel programmieren. Aber das ist vorrangig eine Planungsfrage und weniger eine Frage der Hochsprache.
Eine eigene Programmiersprache, alleine? Hört sich für mich ja sehr nach einem sehr aufwändigen Langzeitprojekt (Mammutprojekt ;) ) aus. Wie lange bist du denn schon dabei oder bist du grade noch dabei zu planen? Da muss man ja auch mit Sicherheit einiges berücksichtigen und alleine dauert das ja mit Sicherheit wenigstens knapp 5. Jahre, je nach Zeitaufwand, würde ich mal so schätzen? Das kann ich aber absolut nicht einschätzen. :D
Ich habe 2003 als erweitertes C++ angefangen, allerdings dabei vieles gelernt und dadurch auch öfter Konzepte über den Haufen geworfen. Während ich 2003 noch C Programme 1:1 übernommen habe, ist die Syntax und das ganze Konzept dahinter inzwischen deutlich verändert. Man kann durchaus sagen, dass der C-Compiler heute gar nicht mehr existiert und alles andere neu ist.

Die Seite status.proggen.org ist eine reine html-Seite (http://status.proggen.org/index.html). Probehalber habe ich diese Seite mit Funktionen neu aufgebaut: http://status.atrops.com/index.g. Sie sieht fast identisch aus, aber hier wird die Seite mit meiner Programmiersprache erzeugt.
Das ist noch keine große Herausforderung so eine billige Seite zu erzeugen, aber sowas muss als Ganzes aufgebaut werden, sonst kommt da am Ende was wie PHP raus. :-D
Zenerid hat geschrieben:Keine Ahnung, wie lange wohl an C++ oder anderen Sprachen gearbeitet wurde aber das würde mich ja irgendwie schon interessieren aber die wurden ja auch alle nicht nur von einer Person entwickelt, außer C, glaube ich.
Schön, wenn sich Kreise wieder schließen. :-)
C wurde von Dennis Ritchie 1972 entwickelt, was auf B von Ken Thomson und Dennis Ritchie basiert. Ritchie war also kein Anfänger, als er mit C begann. C ist noch verhältnismäßig schnell zu implementieren, aber es kann ja auch nicht viel. Das ganze ist eine Weiterentwicklung von BCPL und Algol 60.
Compiler sind heute durchaus gut erforscht. Wenn man sich das Wissen angeeignet hat, kann man auch Programmiersprachen programmieren. Aber mir geht's ja nicht ums programmieren, sondern ums entwickeln. ^^

Wenn Du quotest, dann bitte kürzer. Texte, auf die Du nicht eingehst, zitierst Du bitte nicht wieder mit. Danke.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Zenerid » Fr Nov 06, 2015 2:28 am

Tja, das ist ja wirklich der Fall, da die meisten es ja wohl einfach nicht wissen oder verstehen, wie viel Arbeit eigentlich hinter dem ganzen steckt. Das habe ich übrigens damals auch gehört, mit Dennis Ritchie und ehrlich gesagt fande ich das auch schlimmer, als den Tod von Jobs.

Das mit der getArray Methode war ja ebend, das ich die Ausgänge in der Raum Klasse bspw. brauche oder auch sogar in der Klasse selbst. Verbraucht der Lambda Ausdruck dann da nicht auch so viele Ressourcen? Der den gepostet hattest, war ja aber auch sowieso um die Ausgänge als String zurückzugeben.

Code: Alles auswählen

this.foreachNeighbor( ( Richtung r, Nachbar n ) -> { retString += r.name().toLowerCase() } );
Ich glaube, das ich jetzt auch weiß, wie ich das dann mit den zwei Schwertern löse. Da gibt es auch einen ziemlich einfachen Weg und den werde ich jetzt auch einfach so implementieren. Danke aber für den Tipp. Der Tipp hat mich auf die Lösung gebracht.

Das C# und Java wohl gleich mächtig sind ist schon klar, denn letzlich kann man ja eigentlich alles mit jeder Programmiersprache machen oder nicht? Manches ist halt einfach schneller durch mehr Komfortfunktionen oder was auch immer lösbar aber lösbar ist es ja trotzdem dann auch mit der Programmiersprache x. Sicherheitslücken wird es ja aber auch so oder so immer geben aber Java wird ja auch sehr viel hüfiger als C# genutzt. Da fällt das ja auch bestimmt schneller mal ans Licht.

Zu deiner Programmiersprache:
Dann mal noch viel Erfolg damit. Die willst du ja auch mit Sicherheit nachher öffentlich stellen oder machst du das nur, um dich weiterzubilden? PHP wird ja auch immer als schlecht bezeichnet aber warum eigentlich? PHP wird ja im Webbereich immer noch am häufigsten genutzt oder nicht? Die Syntax von PHP ist aber auch schon irgendwie echt komisch. ;)

Zu den Qoutes:
Jo, daher der Text so groß war, habe ich die inneren Quotes vergessen. Da werde ich dann in Zukunft mal drauf achten aber eigentlich quote ich auch nicht gerne, von daher wird sich das dann demnächst und allgemein auch wohl in Grenzen halten.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [JAXB] nutzt Standard Konstruktor nicht?

Beitrag von Xin » Fr Nov 06, 2015 11:22 am

Zenerid hat geschrieben:Das mit der getArray Methode war ja ebend, das ich die Ausgänge in der Raum Klasse bspw. brauche oder auch sogar in der Klasse selbst. Verbraucht der Lambda Ausdruck dann da nicht auch so viele Ressourcen? Der den gepostet hattest, war ja aber auch sowieso um die Ausgänge als String zurückzugeben.

Code: Alles auswählen

this.foreachNeighbor( ( Richtung r, Nachbar n ) -> { retString += r.name().toLowerCase() } );
Wenn der Compiler das brauchbar umsetzt, sollte da eigentlich weniger Resourcen als mit dem Array verbraten werden.

Vielleicht kannst Du die Implementierung der foreachNeighbor-Methode mal kurz posten. Mich interessiert hier die richtige Java-Syntax.
Zenerid hat geschrieben:Das C# und Java wohl gleich mächtig sind ist schon klar, denn letzlich kann man ja eigentlich alles mit jeder Programmiersprache machen oder nicht?
Man kann nicht mit allen Sprachen alles machen. Die meisten Programmiersprachen sind aber "Turing-Vollständig", was bedeutet, dass sie das gleiche Programm leisten können.
Zenerid hat geschrieben:Manches ist halt einfach schneller durch mehr Komfortfunktionen oder was auch immer lösbar aber lösbar ist es ja trotzdem dann auch mit der Programmiersprache x.
Neben dem "Syntactic-Sugar", der Dinge komfortabler macht, gibt es auch "Semantic-Sugar". Schlüsselwörter wie "override", "const" oder "private" ändern nichts an der Funktion des Programms, aber sie machen Programme wartbarer.
Zenerid hat geschrieben:Zu deiner Programmiersprache: Dann mal noch viel Erfolg damit. Die willst du ja auch mit Sicherheit nachher öffentlich stellen oder machst du das nur, um dich weiterzubilden? PHP wird ja auch immer als schlecht bezeichnet aber warum eigentlich? PHP wird ja im Webbereich immer noch am häufigsten genutzt oder nicht? Die Syntax von PHP ist aber auch schon irgendwie echt komisch. ;)
Meine Sprache ist nicht wirklich als PHP-Ersatz gedacht. Jedenfalls nicht nur.
PHP ist eine sehr einfache Sprache, man kommt schnell zu Erfolgen. Bezüglich des "Semantic-Sugar" ist sie jedoch ein Schuss in den Ofen.
Es gibt weiterhin die Diskussion darüber, ob Programmiersprachen statisch oder dynamisch typisiert sein sollten (statisch: eine Variable hat immer genau einen Typ). C++, Java, C# sind statisch typisiert - wobei Java und C# sich mit "object" rausreden, um dynamische Typisierung zu ermöglichen. PHP ist dynamisch typisiert.
Dynamische Typisierung bedeutet, dass eine Funktion keine Ahnung hat, welchen Typ ein Objekt hat, das sie bearbeitet. Man kann das also nicht im Vorfeld prüfen. Mit dem Ergebnis, dass es halt zur Laufzeit knallen kann. Mit dynamischer Typisierung kann man sich allerdings auch Arbeit sparen, für die man in C++ ein Template schreiben müsste.
Genesys ist strenger typisiert als C++. Ich gehöre also der Fraktion an, die statische Typisierung bevorzugt.
Zenerid hat geschrieben:Zu den Qoutes:
Jo, daher der Text so groß war, habe ich die inneren Quotes vergessen. Da werde ich dann in Zukunft mal drauf achten aber eigentlich quote ich auch nicht gerne, von daher wird sich das dann demnächst und allgemein auch wohl in Grenzen halten.
Entweder Du schreibst drüber worauf Du Dich beziehst oder Du zitierst. Zitate halte ich schon für angemessen, aber es sollte nicht auch Zeug zitiert werden, worauf Du Dich nicht mehr beziehst.
Hauptsache Deine Postings sind lesbar. :D
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten