State of the Art Anwendungsentwicklung

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Antworten
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

State of the Art Anwendungsentwicklung

Beitrag von Alexander Kornrumpf »

Hey,

musste gerade mal "am eigenen Leib" erleben, dass Technologien heute eine Halbwertszeit von zwei Wochen haben.

Kurz zum Background: Ich habe seit fast zwei Jahren nicht mehr richtig aktiv programmiert, da irgendwie andere Dinge immer wichtiger waren. Das hat so lustige Konsequenzen, wie dass ich gerade VS 2010 von der Platte geworfen hab ohne es je benutzt zu haben und mir aus MSDNAA die 2012er Version gezogen hab. Das letzte was ich programmiert habe war damals diese CUDA geschichte für meine Masterarbeit (im Grunde besseres C mit ganz wenig ++) und davor eine Sache im C#/WinForms Umfeld wobei ich dabei auch viel von der IDE (muss wohl VS 2005 oder 2008 gewesen sein) habe managen lassen.

Mit Schrecken musste ich feststellen, dass ich keine Ahnung mehr habe wie man heute Anwendungen entwickelt. Da dowhilefor sich hier im Forum immer positiv über WPF äußert hab ich gedacht ich probiere das mal aus. Und das Unheil nahm seinen Lauf.

Meine Verwirrung fängt schon bei der Toolchain an.
Früher gab es in Visual Studio einen Fenster Designer, welchen ich auch gerne verweden würde, da meine Bereitschaft direkt zu Anfang zu lernen wie das händisch geht nur mttelmäßig ausgeprägt ist, und man dort vor allem "sieht was es überhaupt so gibt". Dann hab ich rausgefunden dass das zwischenzeitlich zwei Tools waren (VS und Expression Blend), letzteres hatte ich nicht da, aber in VS 2012 wieder ein Blend integriert ist. Also zu Dreamspark, das installiert, und stelle fest, es will nur mit Windows 8 funktionieren (Blend, nicht Visual Studio) man soll sich sonst eine Preview herunterladen für ein anderes Tool... Wird das alte Expression Studio 4 zusammen mit VS 2012 funktionieren? Hätte ich doch für Windows 7 bei VS 2010 bleiben sollen? Was machen Leute hier normalerweise?

Weiteres Thema: Data-Binding.
Als ich anfing zu studieren, ging das soviel ich weiß gerade so los, dass die Frameworks (vermutlich zunächst aus der Java-Ecke) anfingen das zu unterstützen. Heute scheint es Standard zu sein (und es macht ja wohl auch Sinn). Im Studium hab ich das nie gelernt, privat eigentlich nie gebraucht, in o.g. C# Anwendung hatte ich damals auf ADO.NET gesetzt, allerdings vor allem eine Mischung aus "Raten" und dem was die IDE so von selbst unterstützt hat. Ich erinnere mich dass es immer ein Krampf war, weil ich keine richtige Datenbank dahinter hatte, sondern nur die ADO.NET Klassen. Gibt es sowas wie sqlite für C#? Eventuell sogar von MS selbst? Ist es akzetabel/gängig die Kette bei den ADO.NET Klassen abreißen zu lassen (welche in XML serialisieren konnten), so wie ich es damals gemacht habe? Ist ADO.NET überhaupt noch aktuell? Oder gibt es etwas neues? Wie verträgt sich LINQ (ist Syntax und keine Technologie in dem Sinne?!) damit? Sollte ich LINQ verwenden lernen?

Allgemein: Was sind heute die Buzz-Words, auf welche man achten sollte?

Noch Fragen, die eher am Rande interessant sind:
Es scheint so zu sein dass WPF Anwendungen hardwarebeschleunigt gerendert werden, und dass es auch Unterstützung für "3D" gibt. Taugt das 3D was? Ich meine es ist klar, dass es sich nicht um eine fully-fledged 3D Engine handeln wird, aber ist es sinnvoll und unkompliziert 3D Inhalte in Teile eines WPF Fensters zu Rendern? Wie würde man dies am bewerkstelligen? Falls ihr fragt warum ich das überhaupt wollen sollte: Um die 90% meiner Anwendung wäre sicherlich nicht 3D, deshalb würde ich eher auf die Technologie setzen wollen, welche mir die 90% einfach macht.

Und schließlich, hat mit dem obign nichts mehr zu tun, eine rechtliche Frage:
Es gibt ja einige Spiel-Remakes welche die alten Assets von einem Spiel verwenden (man muss das Originalspiel haben um etwas damit anfangen zu können). Bei FreeSpace2 ist die Situation z.B. klar, weil der Entwickler das selbst unter Open Source gestellt hat und es somit wohl mindestens duldet. Anderes Beispiel wäre z.B. dieser Open Transport Tycoon, auch wenn die inzwischen eigene Assets haben. Ist das eine rechtliche Grauzone, oder ist das erlaubt, da man die Assets ja nicht mit verteilt? Sind die Dateiformate der Originaldateien geistiges Eigentum? Ist das Lesen dieser Formate (unzulässiges) reverse Engineering?

Euer Input ist sehr willkommen.
RazorX
Establishment
Beiträge: 156
Registriert: 23.12.2010, 14:13
Kontaktdaten:

Re: State of the Art Anwendungsentwicklung

Beitrag von RazorX »

Fang ich einfach mal an: Ein Thema das ich aktuell als sehr interessant und wichtig empfinde, was auch immer weiter nach vorne rückt, ist Hot-Swapping. Im Managed Bereich einfacher als bei C/C++ zu integrieren, aber dennoch machbar. Im Endeffekt kannst du damit Libraries zur Laufzeit des Systems durch neue Versionen ersetzen ohne das System neustarten zu müssen. Ist natürlich gemäß diversen Iterationsmodellen ein mächtiger Sprung nach vorne. Leider wie gesagt in C/C++ nicht ganz einfach zu realisieren. Probleme können halt entstehen, wenn alte Objekte im Speicher bleiben und auf den neuen Code zugreifen. Ein veränderter vtable kann dir das gesamte System kaputt machen. Das ganze setzt natürlich vorraus, dass du ein modulares System benutzt.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: State of the Art Anwendungsentwicklung

Beitrag von Krishty »

RazorX hat geschrieben:Leider wie gesagt in C/C++ nicht ganz einfach zu realisieren. Probleme können halt entstehen, wenn alte Objekte im Speicher bleiben und auf den neuen Code zugreifen. Ein veränderter vtable kann dir das gesamte System kaputt machen.
Inwiefern? Wann kann da was kaputtgehen?

Visual C++ unterstützt Hotpatching ja schon seit eh und je; dennoch hat Microsoft nie mehr als zwei Updates damit ausgeliefert. Ich habe nirgends was über die Gründe gefunden, darum würde mich das durchaus interessieren.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
RazorX
Establishment
Beiträge: 156
Registriert: 23.12.2010, 14:13
Kontaktdaten:

Re: State of the Art Anwendungsentwicklung

Beitrag von RazorX »

Krishty hat geschrieben:
RazorX hat geschrieben:Leider wie gesagt in C/C++ nicht ganz einfach zu realisieren. Probleme können halt entstehen, wenn alte Objekte im Speicher bleiben und auf den neuen Code zugreifen. Ein veränderter vtable kann dir das gesamte System kaputt machen.
Inwiefern? Wann kann da was kaputtgehen?

Visual C++ unterstützt Hotpatching ja schon seit eh und je; dennoch hat Microsoft nie mehr als zwei Updates damit ausgeliefert. Ich habe nirgends was über die Gründe gefunden, darum würde mich das durchaus interessieren.
Also das mit der Compileroption /hotpatch seh ich gerade zum ersten Mal. Es gibt ja das Edit&Continue im Visual Studio wo man ja durchaus in der Lage ist Code zu modifizieren und der Compiler das in die aktuelle Debugginginstanz reinpatcht. Das ganze geht aber auch nur so lange gut wie du keinen Datentyp änderst.

Zum Thema mit den vtables: Meines Verständnisses nach lädt die LoadLibrary Methode die DLL neu in den Adressspeicher des Prozesses, wenn der selbe Modulname spezifiziert wird, und ersetzt die alte. Du hast nun aber Objekte mit vtables die Zeiger auf die spezifischen Codestellen haben, so wird durch das neue Kompilat alles zerschossen, da die Positionen der Funktionen nicht mehr übereinstimmen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: State of the Art Anwendungsentwicklung

Beitrag von Krishty »

Dann ist das jedenfalls nicht das Hotpatching, was Visual C++ anbietet, und was sogar ziemlich gut dokumentiert ist. Hm.

Entschuldigung übrigens für das Kapern des Threads, Alexander :?

Das mit dem Weiterverwenden fremder Assets interessiert mich übrigens auch sehr, weil ich gerade in einem ähnlichen Projekt stecke.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten