Ahoi Für meine Studienarbeit will ich einen Simulator für die Energieverteilung in Netzen Programmieren. Er soll in der Lage sein ich sag mal beliebig viele und komplexe Simulationen von Energieanlagen(Erzeuger, Verbraucher,...) verarbeiten zu können, wobei der Simulator als Plattform zu verstehen ist und die Energieanlagen extra programmiert werden. Zusätzlich soll die Datenauswertung sowohl Grafisch auf dem Rechner als auch über D I/O auf einem Externen Display (einfache LED's) ausgegeben werden. In "Echtzeit" soll es auf Veränderungen welche von außen eingegeben werden reagieren. meine einfache Frage, weil ich bislang nur Grundkenntnisse im Programmieren hab und sowiso mich in eine Programmiersprache einarbeiten muss. Ist C++ in Verbindung mit Visual C++ dafür geeignet? Der Simulator soll später vorrangig auf Windowsrechnern laufen.
Die Frage ist eher, ob Du für C++ geeignet bist. Richtig C++ zu lernen ist schon etwas Aufwand. Und C++ ist nicht unbedingt die schönste Sprache -- aber schnell und einigermassen portabel. Aber unter Windows nimmt man wohl eher C#. C++ macht schon Sinn, wenn Performance wichtig ist und man eventuell C++ Bibliotheken verwenden muss. Kurz gesagt -- ich weiß es nicht.
Enrico S. schrieb: > Zusätzlich soll die Datenauswertung sowohl Grafisch auf dem Rechner Mit Visual C und/also MFC als Klassenbibliothek bekommst du mit "Grundkenntnissen im Programmieren" keine brauchbare Oberfläche hin. Das erfordert eine Menge Erfahrung. Wenn das mit Grundkenntnissen klappen soll, musst du was auf .NET nehmen, also C# oder VB.NET. Ich würde C# nehmen. Enrico S. schrieb: > In "Echtzeit" soll es auf > Veränderungen welche von außen eingegeben werden reagieren. Mal wieder der vielgeschundene Echtzeitbegriff. Was verstehst du darunter? Echtzeit kann ein Bruchteil einer µS sein oder 2 Tage, das hängt vom Prozess ab! Wenn ich richtig interpretiere was du vor hast, wird ein 10 Jahre alter Aldi-PC dabei sein halbes Leben mit warten verbringen.
Um das Projekt ohne nennenswerte Programmiertkentnisse durchzuziehen wirst du ganz schön ackern müssen, viel Spaß! Falls du etwas ordentliches lernen willst, dann wäre meine Empfehlung Ada2012 zu nehmen. Leicht zu benutzen und zu lernen - wenn man sich auf die Grundlegenden Features beschränkt! - und für ein solches Projekt passend: OOP, ordentliches Modulkonzept, Generics, Echtzeitfeatures, Nebenläufigkeit (tasks). Als Bonus bekommst du einen Compiler, der dir klare Fehlermeldungen gibt und wenn ein Programm kompiliert, dann läuft alles in 99% der Fälle genau so, wie man es erwartet. Außer natürlich man baut grobe oder semantische Fehler ein. Dadurch hat man zwar ca. 25% mehr Schreibarbeit, aber spart sich ca. 60% - 80% Debugging-Zeit. Material findest du hier http://www.adaic.org/learn/materials Das wikibook ist recht ordentlich, ansonsten kann ich die Bücher von Barnes und das von Cohen empfehlen. Außerdem hat ACT diese neue Seite aufgezogen http://university.adacore.com/
Jörn schrieb: > Mal wieder der vielgeschundene Echtzeitbegriff. Was verstehst du > darunter? Echtzeit kann ein Bruchteil einer µS sein oder 2 Tage, das > hängt vom Prozess ab! Wenn ich richtig interpretiere was du vor hast, > wird ein 10 Jahre alter Aldi-PC dabei sein halbes Leben mit warten > verbringen. Echtzeit bedeutet lediglich, dass sich ein Programm in der Zeit-Domäne deterministisch verhält. Genauso wie man bestimmt, dass 3+4=7, oder auch 8 - wenn man lustig ist - ergibt, legt man hier nun eben fest, welche Ergebnisse nach welcher Zeitspanne oder zu welchem Zeitpunkt zustande gekommen sein sollen. Von daher kann auch vorgegeben werden, wielange ein Programm für eine Berechnung brauchen soll. "Echtzeit" umfasst also mehr als du denkst. Ergo: jokes on you
eddy schrieb: > Jörn schrieb: > Ergo: jokes on you Genau das hat er ja geschrieben und deshalb nachgefragt. Aber vielleicht habe ich auch den Kontext, in dem du "Joke's on you" verwendet hast falsch verstanden.
eddy schrieb: > Echtzeit bedeutet lediglich, dass sich ein Programm in der Zeit-Domäne > deterministisch verhält. Ist mir total neu, dass echtzeitfähig was mit Determinismus zu tun hat. Enrico S. schrieb: > Ist C++ in Verbindung mit Visual C++ dafür geeignet? Wie schon erwähnt wurde lernt man C++ nicht gerade mal innerhalb ein paar Wochen, das macht man generell mit keiner Sprache. Ich würde dir auch zu den .Net Sprachen raten. Mit VB.Net kannst du GUIs recht schnell und relativ einfach zusammenbauen. Das nutze ich immer noch wenn ich mal ne GUI für ein Projekt mit einem Controller brauche. Ansonsten freunde ich mich immer mehr mit Qt an aber dafür solltest du halkt C++ können. Python kann man auch noch relativ schnell lernen und da gibt es auch Addons für GUIs aber damit habe ich keine Erfahrung.
wenn es für windows ist, definitiv C# wenn es platform unabhängig ist würde ich es immernoch eher mit Java probieren
Ahoi Danke schonmal für eure Tipps die Programmiersprache und Umgebung betreffend. Ich werd mich da auf jeden fall kundig machen. Bevor ihr euch wegen dem "Echtzeit" begriff zerfleischt. Ich meinte damit eigentlich nur, dass die Reaktion auf die Aktion nicht unendlich lange auf sich warten lässt sondern innerhalb weniger Sekunden die Auswirkungen des Handelns sichtbar werden. Ich weiß dass ich den Begriff nicht korreckt nach Definition benutzt habe deshalb die "". Dass der Simulator nicht viel Rechenzeit benötigt hoffe ich, da er ja "nur" als Vermittler zwischen den Daten fungieren soll und als erster Schritt bzw Baustein für die Gesamte Simulation verstanden werden soll. Ich denke das alle Weiteren Modelle der Energiesysteme aufwendig genug sein werden, und genügend Rechenzeit brauchen werden.
Dieter H. schrieb: > Falls du etwas > ordentliches lernen willst, dann wäre meine Empfehlung Ada2012 zu > nehmen. Prust, frei nach dem Motto: "Nicht für das Leben, für die Tonne lernen wir" Wie kannst du dem Armen eine Programmiersprache empfehlen, die so tot ist? Für die Studienarbeit eine doch recht komplexe Simulation entwickeln und sich zusätzlich C++ beibringen ist ganz schön happig. Ich weiss wovon ich rede, ich habe mir in meiner Dipl. Arbeit damals C beigebracht, aber die Aufgabe war eher leichter. Ich würde mich den Vorrednern anschliessen nimm C#, der Vorteil hier ist daß man wesentlich weniger Potential hat um Schweinereien zu programmieren. C++ ist zu mächtig um es so schnell gut genug zu lernen und noch die eigentliche Arbeit zu machen. Das Thema ist wie geschaffen für OOP. Viel Erfolg.
Ich könnte noch Python in verbindung mit PyQt empfehlen. Die Sprache ist leicht zu erlernen und man hat viele möglichkeiten. Es gibt viiiiele Module zum erstellen von Grafiken und Beispiele gibt es auch ne ganze Menge. Ich arbeite mit C/C++ und Python und würde dir für sowas eher zu Python raten. Schon alleine aus dem Grund, weil du schneller Erfolge vorweisen kannst. Und Platformunabhängig ist es auch noch. Ebenso kannst du ja auch Teile in C++ schreiben und dann in Python einbinden. Grüße
Enrico S. schrieb: > Der Simulator soll später vorrangig auf Windowsrechnern laufen. "Vorranggig" heißt, daß es nicht ausschließlich dort laufen soll? Das würde dann nämlich auch wieder eher für C++ mit z.B. Qt sprechen. Jörn schrieb: > Mal wieder der vielgeschundene Echtzeitbegriff. Was verstehst du > darunter? Echtzeit kann ein Bruchteil einer µS sein oder 2 Tage, das > hängt vom Prozess ab! Manchmal wird mit dem Begriff auch was ganz anderes gemeint. Im Berech Computerspiele oder eben auch Simulation bedeutet es, daß die simulierte Zeit der realen Zeit entspricht und nicht erheblich langsamer oder schneller abläuft oder manchmal gar komplett stehenbleibt oder in einer Art Einzelschrittmodus durchlaufen wird.
Dass es ziemlich Happig ist weiß ich. Nur lieber jetzt wärend dem Studium wo ich zeit hab als später. Zumal ich damit einerseits ein weiteres Lehrwerkzeug für die FH an der ich studiere schaffe und andererseits damit einen Grundstein für meine Geschäfftsidee schaffe. Sprich ich will das in Zukunft weiterentwickeln und nutzen. Daherwäre eine "tote sprache" vll eher unpassend. Zukünftige Studenten sollen die Möglichkeit erhalten Weitere Module für den Simulator zu entwickeln. Das Vorrangig soll bedeuten. Die FH hat überall Windowsrechner stehen. Aber ich kann nicht vorraussetzen das Studenten die das später evt nutzen oder Module afür programmieren auch Windows nutzen oder eher auf Angebissenes Obst oder Flugunfähige Vögel stehen. Achso Ich hab mir vorgestellt, dass der Simulator Intern mit einer beschleunigten "Echtzeit" Arbeitet. als Beispiel Ein Kohlekraftwerk braucht in echt 4h um ans Netz zu gehen. Im Simolator entspricht das vll 4 min.
:
Bearbeitet durch User
Wenn es hardwareunabhängig sein soll, dann ist Java auch eine gute Option. Von der reinen Rechengeschwindigkeit für rechenintensive Funktionen etwa Faktor 2 langsamer als optimierter C Code (Die Vergleiche waren auf Windows Rechnern und sind schon einige Zeit her) und so plattformunabhängig wie nur möglich. Speziell auch in Bezug auf Datenbank Anbindung. Ich rede von Java und nicht von Javascript.
> ... ein weiteres Lehrwerkzeug für die FH an der ich studiere > schaffe .... Darauf würde ich nicht bauen. > und andererseits damit einen Grundstein für meine > Geschäfftsidee schaffe. Sprich ich will das in Zukunft > weiterentwickeln und nutzen. Der Grundstein wird eher sein: so gehts nicht. Ich will dich ja nicht bremsen. Aber es ist illusorisch, dass du mit Grundkenntnisse in der Programmierung auf Anhieb ein brauchbares System hinkriegst. Es ist ok, wenn du dir dieses Thema als Zielsetzung nimmst. Aber realistisch betrachtet ist deine Version 0.9 für die Tonne. In einem Jahr, wenn du Erfahrung gesammelt hast, sieht die Sache allerdings anders aus. Dann baust du deine Version 0.99 auch anders auf und dann bestehen auch realistische Chancen, dass du eine 1.0 kriegst, auf der man dann tatsächlich aufbauen kann. Das geht nicht gegen dich. Das ist uns allen so gegangen. Programmierung ist nun mal nichts, was man an 3 Nachmittagen lernt. Übung und Erfahrung ist alles (und natürlich das Beherrschen seines Werkzeugs, der Programmiersprache). Das dauert seine Zeit. Wenn du weiterkommen willst, dann leg das Thema momentan mal zu den Akten, besorg dir ordentliche Literatur, die auch als eine Art 'Kurs' fungieren kann (in der Buchhandlung reinschmöckern!) und nach jedem Kapitel Aufgaben hat. Und das ackerst du erst mal durch. Und erst dann versuchst du dich an deinem eigentlichen Problem. Das wird dann, je nachdem wieviel du übst, so in vielleicht einem halben Jahr sein. Vielleicht ein wenig früher, vielleicht auch ein wenig später. Und hab auch keine Angst davor, Code den du geschrieben hast, auch mal wegzuwerfen wenn du drauf kommst, dass du dich in eine Sackgasse manövriert hast. In einem gut aufgebauten OOP System, fallen die Einzelteile wie passende Puzzlestücke ineinander. Muss man seltsame Klimmzüge machen, dann stimmt meistens am Klassenaufbau bzw. an der Zuständigkeitsverteilung an die Klassen was nicht. Anfänger tendieren meistens dazu, nur bloss keinen Code wegzuwerfen und auf Biegen und Brechen weiterzubenutzen, egal wie unsinnig das Gesammtsystem dann wird.
:
Bearbeitet durch User
hier bleibt eigentlich nur .Net oder Java evtl in Verbindung mit Datenbanken. (vb. net oder c# (ist jeweils in die andere Sprache problemlos übersetzbar) Deine "Echtzeit" hat hier nix mit Echtzeit sondern einfach nur einer Simulationsgeschwindigkeit zu tun. Ich selbst entwickel seit 3 Jahren beruflich Software und behaupte aber mal ganz easy sagen zu können, dass dir für das Problem absolut die Erfahrung fehlt, denn hier gilt absolute Modularität zu gewährleisten, damit dein Code irgendwann noch mal gelesen werden kann, vor allem wenn praktisch unerfahrene Studenten daran arbeiten. Das ganze sollte dann auch in ein Teamentwicklungssystem eingebunden werden. Oft ist es so das Dinge die nen unerfahrener Softwareentwickler in 5 Seiten schreibt, nach etwas Erfahrung oft nur noch paar Zeilen lang ist, daher ist Dokumentation hier das A und O.
Udo Schmitt schrieb: > Ich würde mich den Vorrednern anschliessen nimm C#, der Vorteil hier ist > daß man wesentlich weniger Potential hat um Schweinereien zu > programmieren. === naja :D mit der Aussage wäre ich vorsichtig!
bastus schrieb: > === naja :D mit der Aussage wäre ich vorsichtig! C hat schon viel Möglichkeiten geboten, c++ ist so ziemlich die ultimative Sprache um Schweinereien zu programmieren. Ich sage nur Operator overloading, Mehrfachvererbung, der genial Mix aus primitiven Datentypen und Objekten und die Möglichkeit objektorientierte und prozedurale Konzepte wild zu mischen. Man muss nicht, aber man kann. Je mächtiger eine Sprache ist, desto besser kann man damit auch Murks bauen.
Enrico S. schrieb: > Zusätzlich soll die Datenauswertung sowohl > Grafisch auf dem Rechner als auch über D I/O auf einem Externen Display > (einfache LED's) ausgegeben werden. Irgendwie ist dieser Teil unter gegangen. Wie soll das denn aussehen? Hast du eine Skizze davon?
>Der Simulator soll später vorrangig auf Windowsrechnern laufen
das 1. was du als Programmierer lernen solltest:
wenn etwas zu 99% "A" machen muss, und zu 1% "B" machen muss
solltest dich auf "B" konzentrieren!
man könnte jetzt natürlich auch mal lazarus in die runde werfen
RAD, OO, schöne Sprache, lauft am raspberry (der hat gleich die
passenden I/O's) usw.
Robert L. schrieb: >>Der Simulator soll später vorrangig auf Windowsrechnern laufen > > das 1. was du als Programmierer lernen solltest: > wenn etwas zu 99% "A" machen muss, und zu 1% "B" machen muss > solltest dich auf "B" konzentrieren! Der Rat ist gar nicht mal schlecht. Denn wenn du dich erstmal voll auf A konzentrierst, hast du nachher einen Riesenaufwand, das nach B portiert zu bekommen.
Ob und wie es C++ für dein Projekt geeignet ist, kann ich nicht wirklich beantworten, aber zu den Unkenrufen darüber schon. Muss mal etwas ausholen. Ich fing an mit Arduino und wollte dann gleich mit C++ anfangen. Also kaufte ich mir ein Buch - über 1000 Seiten lang - aber schon im Anfang merkte ich, diese Sprache scheint mir zu liegen. Alles war für mich klar und verständlich. Ich habe es trotzdem wieder in den Schrank gestellt und es wartet darauf, dass ich irgendwann mit C fertig bin, weil mir alle zu C rieten und nun wirklich fast alles C ist, was man im Netz zu Mikrocontrollern findet. Also, wenn du Zeit hast, dann lerne C++. Wenn das schnell gehen muss, dann schau mal hier: http://www.processing.org/ nach. Processing nimmt dir auch viel ab und (bin mir nicht ganz sicher) es werkelt wohl auch ein C++ Compiler im Hintergrund.
Also, ich kann Karl Heinz nur recht geben. Ich entwickle nun schon über 20 Jahre lang Software in C/C++ und C# und kann Dir ganz sicher sagen, dass für eine Studienarbeit Dein Vorhaben einige Größenordnungen zu mächtig ist. Du schreibst was von "Datenauswertung grafisch", hast aber nur Grundkenntnisse von Programmiersprachen. D.h. Du hast noch nie mit einem Oberflächenframework gearbeitet. Das ist aber noch einmal eine ganz andere Geschichte und hat mit der Programmiersprache gar nicht so viel zu tun. Machst Du C# und möchtest z.B. eine schöne Oberfläche in WPF programmieren, dann wird Dich alleine der Einstieg in WPF mehr Zeit kosten, als Du Dir für Deine Studienarbeit vorstellst. Es gibt simplere Frameworks, aber auch die benötigen recht viel Einarbeitungszeit bevor man wirklich was Brauchbares damit anstellen kann. Ich würde mir auf keinen Fall solch eine Studienarbeit ans Bein binden, schließlich willst Du doch auch noch einmal mit Deinem Studium fertig werden, oder? Gruß, Oliver
Oliver R. schrieb: > dann wird Dich alleine der Einstieg in WPF mehr Zeit > kosten, als Du Dir für Deine Studienarbeit vorstellst. Es kommt darauf an wie umfangreich eine Studienarbeit ist. Bei und damals war die Studienarbeit regulär 6 Monate, die Diplomarbeit 3 Mionate, bei Studienarbeiten wurde aber zum Teil über 1 Jahr gearbeitet während die Dipliomarbeit eine wirklich fixe Deadline hatte. Der Umfang hängt hier massiv von der Uni und dem Fachbereich ab.
Enrico S. schrieb >Für meine Studienarbeit will ich einen Simulator für die >Energieverteilung in Netzen Programmieren. Er soll in der Lage sein ich >sag mal beliebig viele und komplexe Simulationen von >Energieanlagen(Erzeuger, Verbraucher,...) verarbeiten zu können, wobei >der Simulator als Plattform zu verstehen ist und die Energieanlagen >extra programmiert werden. Zusätzlich soll die Datenauswertung sowohl >Grafisch auf dem Rechner als auch über D I/O auf einem Externen Display >(einfache LED's) ausgegeben werden. In "Echtzeit" soll es auf >Veränderungen welche von außen eingegeben werden reagieren. >Dass der Simulator nicht viel Rechenzeit benötigt hoffe ich, da er ja >"nur" als Vermittler zwischen den Daten fungieren soll und als erster >Schritt bzw Baustein für die Gesamte Simulation verstanden werden soll. > Achso Ich hab mir vorgestellt, dass der Simulator Intern mit einer > beschleunigten "Echtzeit" Arbeitet. > als Beispiel Ein Kohlekraftwerk braucht in echt 4h um ans Netz zu gehen. > Im Simolator entspricht das vll 4 min. Lieber Enrico, wenn ich das so lese ist die Programmiersprache oder das Betriebssystem nicht dein Hauptproblem ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.