Hallo, ich habe mehrere 100 Zeilen Matlab Code für meine Bachelorarbeit geschrieben. Mein Professor und Betreuer will nun, dass ich den Code in C++ abgebe. Der Matlab Coder generiert mir daraus fast 1200 C++ Codezeilen. Der automatisch erzeugte C++ Code ist unübersichtlich und nicht zu lesen. Das will mein Betreuer so nicht akzeptieren. Gibt es andere Tools die besser C++ Code erzeugen? Wie gehen da professionelle Entwickler bzw. -teams da vor? Danke vielmals Melanie
Melanie F. schrieb: > Wie gehen da professionelle Entwickler bzw. -teams da vor? Wenn das Ergebnis guter C++ Code werden soll, dann wird der von professionellrn Entwicklern selbst geschrieben.
> Gibt es andere Tools die besser C++ Code erzeugen?
Es gibt keine Tools, die gute Programme erzeugen. Das wird zwar immer
wieder versprochen, aber es ist genau so Unsinn, wie dass Epilier-Geräte
sanft zur Haut seien oder dass man sich schlank essen kann.
Dumdi D. schrieb: > Melanie F. schrieb: >> Wie gehen da professionelle Entwickler bzw. -teams da vor? > > Wenn das Ergebnis guter C++ Code werden soll, dann wird der von > professionellrn Entwicklern selbst geschrieben. Echt? Ich habe gelesen, dass in grossen Firmen professionelle Entwickler Algorithmen in Matlab prototypen und erst dann die Programme in C++ schreiben. Müssen die das alles manuell machen?
Ein Tool zur Konvertierung matlab C++ kenne ich nicht. Es gibt aber C++ Libraraies, die ziemlich nah an der matlab syntax sind. IT++ ist ganz nah dran, wird aber nicht mehr weiter gepflegt, leider. Armadillo ist eine weitere lib. Kannst z.B. mal hier gucken: http://arma.sourceforge.net/docs.html Das macht aber schon etwas Aufwand sich da rein zu lesen.
Im Sinne der Frage: Deine 10 Finger. Das Tool ist kostenlos und lizenzfrei.
x^2 schrieb: > Im Sinne der Frage: Deine 10 Finger. Das Tool ist kostenlos und > lizenzfrei. Und der Sinn Deiner Antwort ?
Martin B. schrieb: > Ein Tool zur Konvertierung matlab C++ kenne ich nicht. Dann guck mal bei MathWorks: https://www.mathworks.com/products/matlab-coder.html
Wolfgang schrieb: > Martin B. schrieb: >> Ein Tool zur Konvertierung matlab C++ kenne ich nicht. > > Dann guck mal bei MathWorks: > https://www.mathworks.com/products/matlab-coder.html Das war doch der, über dessen output sich der Betreuer beschwert hat. Der ist nicht brauchbar. Die Frage war nach einer Alternative.
Martin B. schrieb: > Wolfgang schrieb: >> Martin B. schrieb: >>> Ein Tool zur Konvertierung matlab C++ kenne ich nicht. >> >> Dann guck mal bei MathWorks: >> https://www.mathworks.com/products/matlab-coder.html > > Das war doch der, über dessen output sich der Betreuer beschwert hat. > Der ist nicht brauchbar. Die Frage war nach einer Alternative. Na es gab doch schon den Hinweis auf Armadillo, wo sogar eine "Umsetztabelle" Matlab- nach C++-Konstrukt dabei ist. Jetzt muß man nur noch die mehrere hundert Zeilen Matlab verstanden haben.
Melanie F. schrieb: > Wie gehen da professionelle Entwickler bzw. -teams da vor? Die verzichten auf von Menschen lesbares C++ und entwickeln durchgehend in Matlab. Das wird einfach aus z.B. Simulink exportiert und sieht kein menschliches Auge mehr. Wenn das nicht geht, beispielsweise aus Gründen der Performance speziell für den Einsatz mit embedded, dann entwickelt man den Algorithmus in Matlab, fügt an wesentlichen Punkten Daten-Dumps ein und zieht das dann in C(++) nochmal manuell hoch. Wo möglich, setzt man dabei vorhandene Numerik-Libraries ein. Die Daten-Dumps fügt man an genau denselben strategischen Punkten ein wie in der Matlab-Version; das hilft dann sehr beim Debuggen. Da muß ja dasselbe wie mit Matlab stehen.
Nop schrieb: > Melanie F. schrieb: > >> Wie gehen da professionelle Entwickler bzw. -teams da vor? > > Die verzichten auf von Menschen lesbares C++ und entwickeln durchgehend > in Matlab. Das wird einfach aus z.B. Simulink exportiert und sieht kein > menschliches Auge mehr. Müssen die den C++ Code nicht übersichtlich gestalten? Die wollen vielleicht den Code an andere Entwickler weitergeben. > > Wenn das nicht geht, beispielsweise aus Gründen der Performance speziell > für den Einsatz mit embedded, dann entwickelt man den Algorithmus in > Matlab, fügt an wesentlichen Punkten Daten-Dumps ein und zieht das dann > in C(++) nochmal manuell hoch. Was heisst Daten-Dumps? Entschuldige, kenne mich nicht so gut aus mit den Compilern. > Wo möglich, setzt man dabei vorhandene > Numerik-Libraries ein. Die Daten-Dumps fügt man an genau denselben > strategischen Punkten ein wie in der Matlab-Version; das hilft dann sehr > beim Debuggen. Warum muss man dann Debuggen, wenn der Code automatisch übersetzt ist? Das wäre super schwer für mich. > Da muß ja dasselbe wie mit Matlab stehen.
:
Bearbeitet durch User
Melanie F. schrieb: > Müssen die den C++ Code nicht übersichtlich gestalten? Nein. > Die wollen > vielleicht an andere Entwickler weitergeben, die den Code lesen und > vwrarbeiten können. Nein, entwickelt wird rein in Matlab. Das exportierte C++ ist ausschließlich für den Compiler bestimmt, und dem ist die Übersichtlichkeit egal. > Was heisst Daten-Dumps? Dein Algorithmus wird ja irgendwelche Daten verarbeiten. Also werden an relevanten Stellen Zwischenergebnisse vorliegen. Beispielweise, wenn Du eine Matrix hast, und da eine LR-Zerlegung gemacht wird, um ein Gleichungssystem zu lösen, dann liegen L- und R-Matrix als Zwischenergebnis vor, und die kannste ausgeben. An der entsprechenden Stelle Deiner künftigen Version in C++ müssen dann bei selben Eingabedaten dieselben Zwischenergebnisse stehen. Damit kannst Du Bugs, die bei manueller Porterung unvermeidlich sind, leicht eingrenzen. Ich hab so auch schon von Matlab nach Assembler portiert, geht alles.
Melanie F. schrieb: > Warum muss man dann Debuggen, wenn der Code automatisch übersetzt ist? Das muß man nicht, der sollte korrekt laufen. Er ist aber nicht übersichtlich, weil er nicht für Menschenaugen bestimmt ist. Wenn Du übersichtlich willst, heißt es manuell von Grund auf nachbauen, und das wird Fehler beinhalten.
Nop schrieb: > Melanie F. schrieb: > >> Müssen die den C++ Code nicht übersichtlich gestalten? > > Nein. > >> Die wollen >> vielleicht an andere Entwickler weitergeben, die den Code lesen und >> vwrarbeiten können. > > Nein, entwickelt wird rein in Matlab. Das exportierte C++ ist > ausschließlich für den Compiler bestimmt, und dem ist die > Übersichtlichkeit egal. Ist das für jede Branche so? Ich kann mir nicht vorstellen, dass in jeder Branche nur die ausführbare Datei von Bedeutung ist. > >> Was heisst Daten-Dumps? > > Dein Algorithmus wird ja irgendwelche Daten verarbeiten. Also werden an > relevanten Stellen Zwischenergebnisse vorliegen. Beispielweise, wenn Du > eine Matrix hast, und da eine LR-Zerlegung gemacht wird, um ein > Gleichungssystem zu lösen, dann liegen L- und R-Matrix als > Zwischenergebnis vor, und die kannste ausgeben. An der entsprechenden > Stelle Deiner künftigen Version in C++ müssen dann bei selben > Eingabedaten dieselben Zwischenergebnisse stehen. Damit kannst Du Bugs, > die bei manueller Porterung unvermeidlich sind, leicht eingrenzen. > > Ich hab so auch schon von Matlab nach Assembler portiert, geht alles. Wow. Wann bzwm warum warst du gezwungen die C++ Dateien von Matlab selbst ohne den Matlab - Coder zu programmieren? Danke vielmals.
> Ich kann mir nicht vorstellen, dass in > jeder Branche nur die ausführbare Datei von Bedeutung ist. Es wird wohl bei jeder Software der Fall sein, dass unterschiedliche Anwender sie unterschiedlich anwenden. Du hast durch die Form deiner Ursprünglichen Anfrage jedoch solche pauschalisierenden Antworten provoziert. Wenn ich frage "Sollte man Gras essen?", werde ich eine ebenso pauschale Antwort "Gras soll man nicht essen." bekommen. Und dann frage ich: Was ist denn, wenn es nichts andere zu Essen gibt? Oder wenn ich eine Kuh wäre? Sollte ich auch dann auf das Essen von Gras verzichten?
Melanie F. schrieb: > Der automatisch erzeugte C++ Code ist unübersichtlich und > nicht zu lesen. Das will mein Betreuer so nicht akzeptieren WAS will er nicht akzeptieren? Garnichts? Viele Teile des Codes lassen sich von Dir sehr wohl beeinflussen, von sinnvoller Benamung bis zu sinnvoller Gruppierung der Module. Gib mal ein konkretes Beispiel, was er akzeptiert und was er nicht akzeptiert. Notfalls vorherige Studenten fragen. Generell zu sagen, automatisch generierter Code muss manuell neu geschrieben werden, ist weltfremd. Generell jeden Müll mit Parametern a la c1...c99 zu erlauben, ebenfalls.
Melanie F. schrieb: > Ist das für jede Branche so? Ich kann mir nicht vorstellen, dass in > jeder Branche nur die ausführbare Datei von Bedeutung ist. Der C++-Code ist unwesentlich, sondern nur ein weiterer Zwischenschritt zum ausführbaren Programm. Der relevante Quellcode ist also nicht C++, sondern Matlab. Änderungen macht man in der Praxis deswegen auch nicht im C++-Code, so daß der auch nicht wartbar sein muß. Meistens ist die Entwicklungszeit hier das Kritische, und die hält man so kurz wie möglich. Time to market und so. > Wow. Wann bzwm warum warst du gezwungen die C++ Dateien von Matlab > selbst ohne den Matlab - Coder zu programmieren? Nicht C++, sondern gleich Assembler - das konnte Matlab nicht. Außerdem war es aus Performancegründen nötig, den Assemblercode im Hinblick auf die Eigenarten des Ziel-Prozessors zu optimieren. Richtig mit Takte zählen, Pipelines beachten und sowas. Im Widerspruch zu dem, was ich gerade mit Entwicklungszeit gesagt habe, war das ein Teil, bei dem die Beschränkungen der Hardware kein anderes Vorgehen erlaubt hätten. Bauteilkosten im Endprodukt und so.
Achim meinte: > Generell zu sagen, automatisch generierter Code muss manuell neu > geschrieben werden, ist weltfremd. Nja, die Hasen hier haben schon recht. Refactoring ist zwar machbar, aber eklig. @Melanie, hast Du mal versucht, Deinen Quelltext von einem UML - Proggy einlesen zu lassen? mfg
Was der Betreuer genau von dir erwartet, hängt davon ab, wo genau der Schwerpunkt der Arbeit liegen soll: Geht es primär darum, mathematische Zusammenhänge zu erarbeiten und daraus einen Algorithmus herzuleiten, sollte IMHO der reine Matlab-Code zum Nachweis der Funktion des Algorithmus ausreichen. Geht in der Arbeit eher darum, einen bekannten Algorithmus in Software (konkret: C++-Software) umzusetzen, möchte sich dein Betreuer vermutlich von deinen Fähigkeiten bzgl. systematischen Vorgehens und Strukturierung der Software überzeugen. Das kann er aber nicht, wenn du automatisch generierten Code ablieferst, egal wie hoch dessen Qualität ist. Vielleicht möchte der Betreuer deinen Code selber benutzen und weiterentwickeln, wobei ihn aber die Matlab-Abhängigkeit stört. In diesem Fall wäre vermutlich auch automatisch generierter Code in Ordnung, aber er muss eben von einer Qualität sein, die eine Weiterentwickung ermöglicht.
Ein Tool was lesbaren C++ Code erzeugt ist fast sinnlos. Was man nicht moechte sind verschiedene Quellen des Sourcecodes. D.h. wenn ein bug behoben.werden muss, dann darf man den nicht im C++ Code beheben, ausser man will bewusst die Konvertierung von Matlab nach.C++ fuer die.Zukunft verhindern. D.h. falls die 'Wahrheit' der Matlab Code ist, dann muss der auch den richtigen c++ code ohne dass da jemand noch ran muss erzeugen.
~Mercedes~ schrieb: > Achim meinte: > >> Generell zu sagen, automatisch generierter Code muss manuell neu >> geschrieben werden, ist weltfremd. > > Nja, die Hasen hier haben schon recht. > Refactoring ist zwar machbar, aber eklig. > > @Melanie, hast Du mal versucht, Deinen Quelltext > von einem UML - Proggy einlesen zu lassen? > > mfg Okay. UML hab ich nicht ausprobiert. danke schau ich mir an. Braucht ihr (Mercedes) auch keine automatisch erzeugten C++ Programme die lesbar und wiederverwendbar sind? Wie geht ihr da vor?
Yalu X. schrieb: > Vielleicht möchte der Betreuer deinen Code selber benutzen und > weiterentwickeln, wobei ihn aber die Matlab-Abhängigkeit stört. In > diesem Fall wäre vermutlich auch automatisch generierter Code in > Ordnung, aber er muss eben von einer Qualität sein, die eine > Weiterentwickung ermöglicht. Ja, er meinte dass er den C++ Code braucht. Matlab war eigebtlich nr da zur Verifikation.
Dumdi D. schrieb: > Ein Tool was lesbaren C++ Code erzeugt ist fast sinnlos. Was man nicht > moechte sind verschiedene Quellen des Sourcecodes. D.h. wenn ein bug > behoben.werden muss, dann darf man den nicht im C++ Code beheben, ausser > man will bewusst die Konvertierung von Matlab nach.C++ fuer die.Zukunft > verhindern. D.h. falls die 'Wahrheit' der Matlab Code ist, dann muss der > auch den richtigen c++ code ohne dass da jemand noch ran muss erzeugen. Okay verstehe. Und was ist wenn man den Code an andere Teams weitergibt als eine mögliche C++ Lösung? Mein Betreuer möchte mit C++ weiterarbeiten und in sein Programm einsetzten. Er meinte, er müsste vielleicht in Zukunft den Code anpassen.
Melanie F. schrieb: > Okay verstehe. Und was ist wenn man den Code an andere Teams weitergibt > als eine mögliche C++ Lösung? Mein Betreuer möchte mit C++ > weiterarbeiten und in sein Programm einsetzten. Er meinte, er müsste > vielleicht in Zukunft den Code anpassen. Dann muss er bzw. du das Programm eben in C++ schreiben. Wenn es nur ein paar hundert Zeilen sind, dann sollte das ja auch in absehbarer Zeit machbar sein. Generierten Code als Basis für weitere Arbeiten zu nehmen halte ich für äußerst fragwürdig bzw. ich persönlich würde solchen Code meiden wie der Teufel das Weihwasser.
Melanie F. schrieb: > erzeugten C++ Programme die lesbar und wiederverwendbar sind? Was waere denn an den unlesbaren nicht wiederverwendbar?
Dumdi D. schrieb: > Melanie F. schrieb: >> erzeugten C++ Programme die lesbar und wiederverwendbar sind? > > Was waere denn an den unlesbaren nicht wiederverwendbar? Wiederverwendbar schon stimmt. Aber der Code ist leider nur schwer zu modifizieren oder seinen Bedürfnissen anzupassen. Das war der Grund weshalb wir bzw. ich den Code nochmal in schön in C++ schreiben soll.
Kannst du mal ein Beispiel von diesem schlechtem Code zeigen?
@Melanie, Dein Problem ist, das, wenn Du den C++ Code erst einmal refacturiert hast dieser vollkommen vom Matlab gelöst ist. Wenn Du also jetzt in Matlab eine Verbesserung machst muß der ganze C++ Code wieder refacturiert werden, was massig Zeit erfordert und neue Fehler ins Projekt bringt. Ich kenn Matlab nicht, habe aber aus der Diskussion entnommen, das der C++ - Generator von dem Teil unflexibel ist. Nun gebe es vielleicht einen Trick: Benutze den Umweg über UML, um den C++ Generator vom UML Programm zu "vergewaltigen". Dort kannst Du eventuell einstellen, das jeweils nur eine Klasse pro C++ Datei rein soll, Du kannst die Formatierung des Quelltextes einstellen, die Headerdateien werden automatisch mit erstellt u.s.w. Und Du kannst in UML die Bezieheungen der von Mathlab erstellten Klassen erkennen, virtuelle Funktionen / Schnittstellen u.s.w. Wenn Du jetzt die Namen der Symbole, Funktionen und Klassen in Matlab sprechend benennst werden diese in UML übernommen und samt Deiner Metriken dann in die neue C++ - Datei. mfg
Also in der Automobilbranche nutzt man TargetLink.
Hallo Melanie, Melanie F. schrieb: > Gibt es andere Tools die besser C++ Code erzeugen? > Wie gehen da professionelle Entwickler bzw. -teams da vor? Ich schreibe meinen C++-Code einfach selbst. Matlab benutze ich nicht. Wenn du uns schon den automatisch erzeugten C++-Code nicht zeigen willst, dann beschreibe doch einmal, was dieser Algorithmus eigentlich genau bezwecken soll. Ist der so komplex, dass man dafür solch eine "Zauberkiste" wie Matlab braucht? Viele Grüße, Michael
@Melanie: Ich hab einen besseren Vorschlag: Du ziehst Dir deine höchsten Hig-Heels an die Du auftreiben kannst und trittst Deinem Ausbilder damit kräftig auf die Füße, damit dieser dir Targetlink besorgt. Oder hast Du etwa geflunkert und Du solltest Dein Proggy doch in C++ schreiben? :-P mfg
Melanie F. schrieb: > Wie gehen da professionelle Entwickler bzw. -teams da vor? Wenn in Matlab programmiert werden soll dann schauen sich alle nur den Matlab code an und arbeiten damit. Der erzeugte Zwischencode in C++ ist ein flüchtiger Zwischenschritt zum fertigen Produkt den keiner je liest, aus der einen Maschine raus, direkt in die andere Maschine rein, wo man bestenfalls mal kurz reinschaut wenn man den vagen Verdacht hat daß was schief läuft, ansonsten uninteressant und kann danach sofort wieder gelöscht werden (er kann ja bei Bedarf aus den Matlab Quellen jederzeit wieder erzeugt werden). Wenn in C++ programmiert werden soll schauen sich alle nur den C++ code an und arbeiten damit. Der erzeugte Assemblercode ist nur ein flüchtiger Zwischenschritt zum fertigen Produkt den keiner je liest, aus der einen Maschine raus, direkt in die andere Maschine rein, wo man bestenfalls mal kurz reinschaut wenn man den vagen Verdacht hat daß was schief läuft, ansonsten uninteressant und kann danach sofort wieder gelöscht werden (er kann ja bei Bedarf aus den C++ Quellen jederzeit wieder erzeugt werden). Wenn der Betreuer sagt daß in C++ programmiert werden soll... Kannst Du ein Muster erkennen?
:
Bearbeitet durch User
Beschreibe doch, falls Du Hilfe wünschst, Dein Problem. Fehlt Dir Erfahrung mit C++? Fehlt Dir Erfahrung beim anschaulichen beschreiben in Matlab, so dass das Resultat zwar funktioniert aber wie Spaghetticode? Geht evt auch C, falls das einfacher wäre? Willst/musst Du den Code in Matlab weiterentwickeln? Reicht es vielleicht schon, wenn Du die Matlab-anweisungen mit Einkommentieren lässt? Und den erzeugten Overhead minimiert? Also ich bekomme einigermaßen lesbaren Code direkt aus Matlab vom Mathematiker, nachdem wir einen Praktiker zur Codegenerierung zwischengeschaltet haben.
~Mercedes~ schrieb: > Du ziehst Dir deine höchsten Hig-Heels an die Du > auftreiben kannst und trittst Deinem Ausbilder > damit kräftig auf die Füße, damit dieser dir > Targetlink besorgt. Man braucht doch nur mit dem MATLAB(R) Diploma Mill Package(TM) die Bachelor Arbeit automatisch erzeugen lassen. Einfach im Dialog schnell noch Name und Matrikelnummer einklickern und auf Generate klicken. Das soll ihr der Betreuer besorgen. Bzgl. der Matrikelnummer müßte er noch helfen, falls sie die vergessen hat, wofür ist Betreuung da?
> Man braucht doch nur mit dem MATLAB(R) Diploma Mill Package(TM) die > Bachelor Arbeit automatisch erzeugen lassen. Einfach im Dialog schnell > noch Name und Matrikelnummer einklickern und auf Generate klicken. Das > soll ihr der Betreuer besorgen. Bzgl. der Matrikelnummer müßte er noch > helfen, falls sie die vergessen hat, wofür ist Betreuung da? Huch, das wußte ich nicht. ;-O Nur, wie soll ein Igel ein richtiger Igel werden, wenn er die Hasen noch nicht einmal zum Wettlauf auffordert, weil er die Ausschreibung nicht rausrücken will? :--O mfg
~Mercedes~ schrieb: > @Melanie: > > Ich hab einen besseren Vorschlag: > > Du ziehst Dir deine höchsten Hig-Heels an die Du > auftreiben kannst und trittst Deinem Ausbilder > damit kräftig auf die Füße, damit dieser dir > Targetlink besorgt. > > Oder hast Du etwa geflunkert und Du solltest Dein > Proggy doch in C++ schreiben? :-P > > mfg Targetlink schau ich mir an. Ich sollte zuerst den Sift Algorithmus und Varianten in Matlab programmieren. Wenn alles funkioniert nach C++ portieren. Nur das portieren dauert wohl lange Danke für die Antwort
Achim S. schrieb: > Beschreibe doch, falls Du Hilfe wünschst, Dein Problem. > > Fehlt Dir Erfahrung mit C++? Genau. Matlab Programme sind einfacher uu schreiben. Da sind ja die meisten Datenstrukturen und Fubktionen vorhanden.Die Visualisierung ist einfach. > Fehlt Dir Erfahrung beim anschaulichen beschreiben in Matlab, so dass > das Resultat zwar funktioniert aber wie Spaghetticode? Nein. > Geht evt auch C, falls das einfacher wäre? Glaube nicht. Betreuer will C++. > Willst/musst Du den Code in Matlab weiterentwickeln? Ich denke nicht.Matlab war nur zr Verifikation da. > Reicht es vielleicht schon, wenn Du die Matlab-anweisungen mit > Einkommentieren lässt? Und den erzeugten Overhead minimiert? > > Also ich bekomme einigermaßen lesbaren Code direkt aus Matlab vom > Mathematiker, nachdem wir einen Praktiker zur Codegenerierung > zwischengeschaltet haben. Hmmmm, wolltet ihr also den C++ Code auch weiterbenutzen?
Bernd K. schrieb: > Melanie F. schrieb: >> Wie gehen da professionelle Entwickler bzw. -teams da vor? > > Wenn in Matlab programmiert werden soll dann schauen sich alle nur den > Matlab code an und arbeiten damit. Der erzeugte Zwischencode in C++ ist > ein flüchtiger Zwischenschritt zum fertigen Produkt den keiner je liest, > aus der einen Maschine raus, direkt in die andere Maschine rein, wo man > bestenfalls mal kurz reinschaut wenn man den vagen Verdacht hat daß was > schief läuft, ansonsten uninteressant und kann danach sofort wieder > gelöscht werden (er kann ja bei Bedarf aus den Matlab Quellen jederzeit > wieder erzeugt werden). > > Wenn in C++ programmiert werden soll schauen sich alle nur den C++ code > an und arbeiten damit. Der erzeugte Assemblercode ist nur ein flüchtiger > Zwischenschritt zum fertigen Produkt den keiner je liest, aus der einen > Maschine raus, direkt in die andere Maschine rein, wo man bestenfalls > mal kurz reinschaut wenn man den vagen Verdacht hat daß was schief > läuft, ansonsten uninteressant und kann danach sofort wieder gelöscht > werden (er kann ja bei Bedarf aus den C++ Quellen jederzeit wieder > erzeugt werden). Ich habe gelesen, dass z.B. bei der Programmierung von Steuergeräten in der Automobilbranche, gerade da wo es um die Stückzahl geht, die Assembler Programme modifiziert. > > Wenn der Betreuer sagt daß in C++ programmiert werden soll... Hat er gesagt. Aber es hieß zunächst den Algorithmus in Matlab programmieren, damit man die Ergebnisse schnell überprüfen kann. > > Kannst Du ein Muster erkennen?
Melanie F. schrieb: > Hat er gesagt. Aber es hieß zunächst den Algorithmus in Matlab > programmieren, damit man die Ergebnisse schnell überprüfen kann. Dann ist doch alles klar. Setz Dich zwei Monate hin und mach das. Falls Du gar kein C++ kannst: was hatte der Betreuer denn geantwortet, als Du ihm das am Anfang mitgeteilt hattest.
Melanie F. schrieb: > Genau. Matlab Programme sind einfacher uu schreiben. Da sind ja die > meisten Datenstrukturen und Fubktionen vorhanden Auch für C++ gibt es umfangreiche Mathematik Libraries, wie z.B. "Eigen". Das einzige "Problem" ist, dass man die explizit herunterladen und einbinden muss. Damit sollte der C++ Code kaum länger als Matlab Code werden.
Dr. Sommer schrieb: > Auch für C++ gibt es umfangreiche Mathematik Libraries, wie z.B. > "Eigen". Das einzige "Problem" ist, dass man die explizit herunterladen > und einbinden muss. Damit sollte der C++ Code kaum länger als Matlab > Code werden. Das kann ich so bestätigen, das wird nicht länger. Das Einbinden kann jedoch komplex werden, je nach Abhängigkeiten der Libs und OS. Open source OS sind da meist einfacher. Unter Ubuntu z.B. musst Du für IT++ oder Armadillo nur die Paketsourcen über synaptic einbinden, schon hast Du es zur Verfügung. Unter windows wird es da meist hakeliger.
Referenziert die entstandene Matlab - C++ Source eigendlich matlabeigene Bibliotheken oder ist sie total eigenständig? mfg
Melanie F. schrieb: > Ich habe gelesen, dass z.B. bei der Programmierung von Steuergeräten in > der Automobilbranche, gerade da wo es um die Stückzahl geht, > die Assembler Programme modifiziert. Das war vor 20 Jahren. Seit mindestens 10 Jahre programmiert man auch da in Matlab/Simulink, C/C++ oder sogar Java.
Eric B. schrieb: > Das war vor 20 Jahren. Seit mindestens 10 Jahre programmiert man auch da > in Matlab/Simulink, C/C++ oder sogar Java. Damals(tm) gabs's sogar Härtefälle, wo der Sourcecode mitunter nicht mehr aufzufinden war und man dann direkt das Hexfile in Maschinencode editiert hat.
Nop schrieb: > Eric B. schrieb: > >> Das war vor 20 Jahren. Seit mindestens 10 Jahre programmiert man auch da >> in Matlab/Simulink, C/C++ oder sogar Java. > > Damals(tm) gabs's sogar Härtefälle, wo der Sourcecode mitunter nicht > mehr aufzufinden war und man dann direkt das Hexfile in Maschinencode > editiert hat. Das muss wohl eher 30 Jahre her gewesen sein, mit 40 Jahren alten Sourcecode ;-)
Eric B. schrieb: > oder sogar Java. Nee, is klar. Am besten das Airbag-Steuergerät, damit der GC in den ms nach der Kollission erstmal den Speicher aufräumt...
Es gibt GCs mit deterministischem Laufzeit-Verhalten, und man kann Java auch ganz ohne GC nutzen.
x^2 schrieb: > Nee, is klar. Am besten das Airbag-Steuergerät, damit der GC in den ms > nach der Kollission erstmal den Speicher aufräumt... Wieso, garbage collection muß nach einem Unfall doch eh gemacht werden. ^^
So wie ich Melanies Beschreibung der Situation lese, war das Projekt zweistufig vorgesehen: 1) Implementierung zur Verifizierung in MATLAB mit MATLAB Code 2) Nach erfolgreicher Verifizierung tatsächliche Implementierung eines C++ Produktionscodes Und zwischen 1 und 2 will Melanie jetzt "abkürzen" weil nicht noch mal den Code in einer neuen Sprache neu schreiben müssen... Kann ich verstehen, aber ich seh da keine Lösung außer sich hinzusetzen und halt den Code in C++ runter zu schreiben. Am Ende lernst du dabei noch was. ;) Ich weiß nicht was dein Betreuer alles als Bestandteil deiner Bachelorthesis sieht, aber ich kann mir gut vorstellen, dass einer der Punkte halt die Implementierung dieses Algorithmus oder was auch immer in C++ war. Das dann mit MATLAB Code zu machen ist am Ziel vorbei... ^^ Ich glaub der springende Punkt ist die Aussage deines Betreuers, dass er den Code später noch verändern will. An der Stelle fliegt der Code-Generator aus dem Fenster, es sei denn, dein Betreuer editiert die Datenbasis, welche die Grundlage für den generierten Code ist (in deinem Fall M-Code, und den will er ja scheinbar nicht anrühren). In generiertem Code händisch rumzufuhrwerken ist... ungut. Don't do it. Es gibt Ausnahmen, sprich generierter Code den man an bestimmten Stellen editieren darf und soll (Rhapsody macht das beispielsweise), aber das sind dann z.B. nur Funktionsimplementierungen. Zur Frage wie das die Industrie macht: M-Code für Steuergeräte, Ogottogott... ja, da wird MATLAB/Simulink genutzt. In Simulink wird dann die gewünschte Funktion modelliert und mittels eines Code-Generators C-Code generiert. Der landet dann im Steuergerät. Aber in einer Hochsprache coden und dann in eine andere Hochsprache übersetzen ist irgendwie... ein seltsames Konzept. C++ ist generell eher weniger in Benutzung. C ist die Sprache der Wahl. Wobei sich das mit Einführung von Adaptive AUTOSAR ändern wird.
:
Bearbeitet durch User
Dr. Sommer schrieb: > Es gibt GCs mit deterministischem Laufzeit-Verhalten, und man kann > Java > auch ganz ohne GC nutzen. Java als Sprache wurde dafür aber nicht entworfen und ist für besagte Anwendung auch nicht geeignet. Das merkt man schon daran, dass: a) Es keine Sprachkonstrukte für manuelles Speichermanagement gibt. b) Der Zugriff auf das zu Grunde liegende OS und Hardware nicht sehr leichtgängig ist, ich würde fast sagen, nur unter Mühen geht (JNI). c) Java im Gegensatz zu C eine eher strikte Spezifikation hat (z.B. bzgl. Datentypen). Die Sicherstellung dieser kostet Performance, da selten optimal auf der jeweiligen Plattform. d) Vieles was guter Java Stil ist, zu Lasten von Performance geht (z.B. defensive copying) Nop schrieb: > Wieso, garbage collection muß nach einem Unfall doch eh gemacht werden. > ^^ Das stimmt :)
x^2 schrieb: > Java als Sprache wurde dafür aber nicht entworfen und ist für besagte > Anwendung auch nicht geeignet. Das merkt man schon daran, dass: > > a) Es keine Sprachkonstrukte für manuelles Speichermanagement gibt. > b) Der Zugriff auf das zu Grunde liegende OS und Hardware nicht sehr > leichtgängig ist, ich würde fast sagen, nur unter Mühen geht (JNI). > c) Java im Gegensatz zu C eine eher strikte Spezifikation hat (z.B. > bzgl. Datentypen). Die Sicherstellung dieser kostet Performance, da > selten optimal auf der jeweiligen Plattform. Es gibt eine "Realtime Specification for Java": https://www.aicas.com/cms/rtsj Und das schon als Standard des Java Community Process seit 2001. Schaut auch mal hier: https://www.ibm.com/developerworks/library/j-devrtj1/index.html Genug mit OT.
~Mercedes~ schrieb: > Referenziert die entstandene Matlab - C++ Source eigendlich > matlabeigene Bibliotheken oder ist sie total eigenständig? > > mfg Referenziert nichts. Also arbeitet völlig unabhängig von Matlab. Gut es scheint, dass ich die Software leserlich in C++ schreiben muss. Danke der Mühe.
Murkser schrieb: > Es gibt eine "Realtime Specification for Java": > https://www.aicas.com/cms/rtsj > > Und das schon als Standard des Java Community Process seit 2001. > > Schaut auch mal hier: > https://www.ibm.com/developerworks/library/j-devrtj1/index.html Und die läuft dann auf nem Mikrocontroller. Mit 64kB Flash und 16kB RAM. Für Linux gibts auch nen Real-Time Patch seit Anno Tobak. Und trotzdem baut keiner Airbag Steuergeräte mit Embedded Linux. > > Genug mit OT.
x^2 schrieb: > Und trotzdem > baut keiner Airbag Steuergeräte mit Embedded Linux. Vermutlich weil es vollkommener Overkill wäre für sowas simples. Andererseits, in der Automobilbranche scheinen nicht mehr alle Entscheidungsfindungsprozesse vernunftgesteuert abzulaufen, also nur noch ne Frage der Zeit bis selbst die Kofferrauminnenbeleuchtung "smart" wird, 200MB Firmware hat und 10 Sekunden zum Booten braucht.
:
Bearbeitet durch User
Bernd K. schrieb: > Andererseits, in der Automobilbranche scheinen nicht mehr alle > Entscheidungsfindungsprozesse vernunftgesteuert abzulaufen, also nur > noch ne Frage der Zeit bis selbst die Kofferrauminnenbeleuchtung "smart" > wird, 200MB Firmware hat und 10 Sekunden zum Booten braucht. Vielleicht nicht für die Kofferraumbeleuchtung aber für die Reifendrucksensoren. Dazu gibts dann das passende Embeded Linux Framework > Azure Sphere OS: This OS is purpose-built to offer unequalled security > and agility. Unlike the RTOSes common to MCUs today, our defense-in-depth > IoT OS offers multiple layers of security. It combines security > innovations pioneered in Windows, a security monitor, and a custom > Linux kernel to create a highly-secured software environment and a > trustworthy platform for new IoT experiences. https://azure.microsoft.com/en-us/blog/introducing-microsoft-azure-sphere-secure-and-power-the-intelligent-edge/ MfG Klaus
x^2 schrieb: > Und die läuft dann auf nem Mikrocontroller. Mit 64kB Flash und 16kB RAM. > Für Linux gibts auch nen Real-Time Patch seit Anno Tobak. Und trotzdem > baut keiner Airbag Steuergeräte mit Embedded Linux. Das wurde auch nicht behauptet. Es ging darum, daß gesagt wurde, daß mit Java keine real-time Anwendungen möglich sind. Es geht, wenn man will und die Real-Time Specification nutzt. (Bitte merken, daß real-time nicht unbedingt gleich kleiner Microcontroller heißt - (soft) real-time gibt es auch im Data Center). Aber Du hast Recht, daß dies nichts für sehr kleine Microcontroller ist. Anwendungen für RT Java gibt es aber im Bankensektor - dort wird es tatsächlich für latenzkritische Anwendungen genutzt (egal, ob das jetzt gut oder schlecht ist...).
Murkser schrieb: > Anwendungen für RT Java gibt es aber im Bankensektor - dort wird es > tatsächlich für latenzkritische Anwendungen genutzt (egal, ob das jetzt > gut oder schlecht ist...). Banken (und Versicherungen) gehen ja auch nur mit anderer Leute Geld um. "Normale" Unternehmen müssen meist ihr eigenes dafür nehmen, da ist man dann gerne ein wenig vorsichtiger und versucht Dinge richtig zu machen ...
Markus F. schrieb: > Murkser schrieb: >> Anwendungen für RT Java gibt es aber im Bankensektor - dort wird es >> tatsächlich für latenzkritische Anwendungen genutzt (egal, ob das jetzt >> gut oder schlecht ist...). > > Banken (und Versicherungen) gehen ja auch nur mit anderer Leute Geld um. > > "Normale" Unternehmen müssen meist ihr eigenes dafür nehmen, da ist man > dann gerne ein wenig vorsichtiger und versucht Dinge richtig zu machen Java ist ne ziemlich typsichere Sprache, viel typsicherer als C++ oder gar C. Das kann durchaus ein Argument sein wenn man Software schreiben will die eine minimale Anzahl von Bugs haben und zuverlässig funktionieren soll.
:
Bearbeitet durch User
Bernd K. schrieb: > Java ist ne ziemlich typsichere Sprache Naja...
1 | class A { |
2 | } |
3 | |
4 | class B extends A { |
5 | public static void test () { |
6 | System.out.println("A::test"); |
7 | } |
8 | } |
9 | |
10 | class C extends A { |
11 | } |
12 | |
13 | class Main { |
14 | public static void main (String [] args) { |
15 | B [] arrB = new B [1]; |
16 | A [] arrA = arrB; |
17 | arrA [0] = new C (); |
18 | arrB [0].test (); |
19 | } |
20 | } |
Mehr Beispiele: https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#Why%20does%20the%20compiler%20sometimes%20issue%20an%20unchecked%20warning%20when%20I%20invoke%20a Weil Java Generics über Type Erasure implementiert sind, kann man damit nur wesentlich schlechter typsichere API's schreiben als in C++.
Das ist eine interessante Lücke, hätte ich so gar nicht für möglich gehalten.
Gibt noch einige weitere, wenn man genau hinschaut. Insbesondere gibt es öfters mal Situationen wo man eine "Unchecked" Warnung bekommt und nicht loswerden kann (außer sie abzuschalten mit "Suppress"). Das sind dann die Stellen, wo die Java-Typsicherheit versagt. Wenn man in C++ ganz auf reinterpret_cast und unions verzichtet (was zumindest auf Anwendungsebene sehr wohl möglich ist), bleiben an Typ-Unsicherheit nur noch Fälle übrig, die in Java auch nicht besser sind. Java hat nur den Vorteil, dass es Typen zur Laufzeit prüft, was aber auch ein Performance-Nachteil ist.
Lu R. schrieb: > So wie ich Melanies Beschreibung der Situation lese, war das Projekt > zweistufig vorgesehen: > > 1) Implementierung zur Verifizierung in MATLAB mit MATLAB Code > 2) Nach erfolgreicher Verifizierung tatsächliche Implementierung eines > C++ Produktionscodes > Ja genau so hat er mir das beschrieben. > Und zwischen 1 und 2 will Melanie jetzt "abkürzen" weil nicht noch mal > den Code in einer neuen Sprache neu schreiben müssen... > Genau. > Kann ich verstehen, aber ich seh da keine Lösung außer sich hinzusetzen > und halt den Code in C++ runter zu schreiben. Am Ende lernst du dabei > noch was. ;) > Ja stimmt. > Ich weiß nicht was dein Betreuer alles als Bestandteil deiner > Bachelorthesis sieht, aber ich kann mir gut vorstellen, dass einer der > Punkte halt die Implementierung dieses Algorithmus oder was auch immer > in C++ war. Das dann mit MATLAB Code zu machen ist am Ziel vorbei... ^^ > Das wollte er so. Zur Verifikation eben. > Ich glaub der springende Punkt ist die Aussage deines Betreuers, dass er > den Code später noch verändern will. An der Stelle fliegt der > Code-Generator aus dem Fenster, es sei denn, dein Betreuer editiert die > Datenbasis, welche die Grundlage für den generierten Code ist (in deinem > Fall M-Code, und den will er ja scheinbar nicht anrühren). > In generiertem Code händisch rumzufuhrwerken ist... ungut. Don't do it. Warum? Ich meine erbraucht doch letztlich nur den C++ Code. > Es gibt Ausnahmen, sprich generierter Code den man an bestimmten Stellen > editieren darf und soll (Rhapsody macht das beispielsweise), aber das > sind dann z.B. nur Funktionsimplementierungen. Was genau ist Rhapsody? > > > Zur Frage wie das die Industrie macht: > > M-Code für Steuergeräte, Ogottogott... ja, da wird MATLAB/Simulink > genutzt. In Simulink wird dann die gewünschte Funktion modelliert und > mittels eines Code-Generators C-Code generiert. Der landet dann im > Steuergerät. Aber in einer Hochsprache coden und dann in eine andere > Hochsprache übersetzen ist irgendwie... ein seltsames Konzept. Aber Matlab und C sind doch Hochsprachen. > > C++ ist generell eher weniger in Benutzung. C ist die Sprache der Wahl. > Wobei sich das mit Einführung von Adaptive AUTOSAR ändern wird. Was wird sich da bei Autosar genau vwrändern?
Melanie F. schrieb: > In generiertem Code händisch rumzufuhrwerken ist... ungut. Don't do it. > > Warum? Ich meine erbraucht doch letztlich nur den C++ Code. C++ ist nicht gleich C++. Wenn der Code komisch strukturiert ist ist dessen Bearbeitung extrem lästig, und generierten Code händisch verunstalten macht es nur noch schlimmer. Kein Tool wird dir guten, sauberen, wartbaren C++ -Code ausspucken. Dafür gibt's nur brain.exe ... Melanie F. schrieb: > Aber Matlab und C sind doch Hochsprachen. Aber die lassen sich keineswegs 1:1 zueinander abbilden. Die meisten Hochsprachen unterscheiden sich derart, dass man die kaum ineinander übersetzen kann, und wenn doch ist das Ergebnis chaotisch und schlecht wartbar. So etwas geht höchstens bei den .net Sprachen, die sind sich semantisch sehr ähnlich. Es ist zwar beispielsweise möglich, beliebigen C-Code mit trivialen Änderungen als C++ zu übernehmen, aber das Ergebnis nutzt halt überhaupt nicht die ganzen Vorteile, die C++ bietet. Durch neu Schreiben würde der Code dann kompakter, lesbarer, wartbarer. Aber das nimmt dir kein Tool ab.
Melanie F. schrieb: > Echt? Ich habe gelesen, dass in grossen Firmen professionelle Entwickler > Algorithmen in Matlab prototypen und erst dann die Programme in C++ > schreiben. Das wird bei uns so gemacht, ja. >Müssen die das alles manuell machen? Nein, müssen sie nicht. In den Fällen, wo man effizienten Code möchte, schreiben die das neu, anders oder fangen gar nicht erst mit MATLAB an. Es gibt aber noch einen Aspekt, den Ich direkt ungefiltert von unserer QK weitergebe: Dein Betreuer hat etwas Wesentliches nicht kapiert: Wenn er den Strang MATLAB-CODE automatisch nutzen will, dann DARF man den Code nicht verändern. Denn sonst bringt man wieder eine Fehlerquelle rein und die Verifikation der Software in MATLAB war nutzlos. Sie muss dann anhand weiterere Test-Cases in C++ mit dem neuen Code widerholt werden. Am Besten, Du erklärst das mal Deinem Betreuer. Dann fragst Du ihn, warum er nicht VOR der Aufgabenstellung definiert hat, wie das Ergebnis abzuliefern ist. Denn dann hätte man gleich in C++ angefangen. Bei uns ist das wie gesagt so, dass man in MATLAB die großen Mengen an Code erzeugt, sofern sich das machen lässt und sinnvoll ist. Für andere Zwecke werden nur Algorithmen abstrakt abgebildet (hier die Physik der Maschinentechnik und Mechanik) und dann alles sinnvoll gecoded. Entsprechend viel oder weniger wird in das Modell reingesteckt.
Dr. Sommer schrieb: > Melanie F. schrieb: >> In generiertem Code händisch rumzufuhrwerken ist... ungut. Don't do it. >> >> Warum? Ich meine erbraucht doch letztlich nur den C++ Code. > C++ ist nicht gleich C++. Wenn der Code komisch strukturiert ist ist > dessen Bearbeitung extrem lästig, und generierten Code händisch > verunstalten macht es nur noch schlimmer. Kein Tool wird dir guten, > sauberen, wartbaren C++ -Code ausspucken. Dafür gibt's nur brain.exe ... Wäre denn so ein Tool sinnvoll, der sauberen C++ Code gerneriert? > > Melanie F. schrieb: >> Aber Matlab und C sind doch Hochsprachen. > Aber die lassen sich keineswegs 1:1 zueinander abbilden. Die meisten > Hochsprachen unterscheiden sich derart, dass man die kaum ineinander > übersetzen kann, und wenn doch ist das Ergebnis chaotisch und schlecht > wartbar. So etwas geht höchstens bei den .net Sprachen, die sind sich > semantisch sehr ähnlich. > Es ist zwar beispielsweise möglich, beliebigen C-Code mit trivialen > Änderungen als C++ zu übernehmen, aber das Ergebnis nutzt halt überhaupt > nicht die ganzen Vorteile, die C++ bietet. Durch neu Schreiben würde der > Code dann kompakter, lesbarer, wartbarer. Aber das nimmt dir kein Tool > ab. Ich habe mich mal die Tage auch an den anderen Instituten schlau gemacht, die wollen so ein Tool entwickeln, aber leider sind sie noch nicht so weit. Matlab Funktionen nach sauberen C++ Code. Wäre doch ganz nett, oder?
Melanie F. schrieb: > Wäre denn so ein Tool sinnvoll, der sauberen C++ Code gerneriert? Wenn du es schaffst ein Programm zu entwickeln das intelligent genug ist um guten C++ Code zu generieren kannst du dir den Nobel Preis holen, und danach kommt die technische Singularität. Nach heutigem Stand der Forschung ist das nicht möglich.
Analog OPA schrieb: > Melanie F. schrieb: >> Echt? Ich habe gelesen, dass in grossen Firmen professionelle Entwickler >> Algorithmen in Matlab prototypen und erst dann die Programme in C++ >> schreiben. > > Das wird bei uns so gemacht, ja. > >>Müssen die das alles manuell machen? > Nein, müssen sie nicht. In den Fällen, wo man effizienten Code möchte, > schreiben die das neu, anders oder fangen gar nicht erst mit MATLAB an. > > Es gibt aber noch einen Aspekt, den Ich direkt ungefiltert von unserer > QK weitergebe: > > Dein Betreuer hat etwas Wesentliches nicht kapiert: Wenn er den Strang > MATLAB-CODE automatisch nutzen will, dann DARF man den Code nicht > verändern. Denn sonst bringt man wieder eine Fehlerquelle rein und die > Verifikation der Software in MATLAB war nutzlos. Sie muss dann anhand > weiterere Test-Cases in C++ mit dem neuen Code widerholt werden. Okay verstehe. > > Am Besten, Du erklärst das mal Deinem Betreuer. Dann fragst Du ihn, > warum er nicht VOR der Aufgabenstellung definiert hat, wie das Ergebnis > abzuliefern ist. Denn dann hätte man gleich in C++ angefangen. Ja das war am Anfang mir nicht so klar. Er will ja den Code auch nicht sofort verändern meinte er, sondern eventuell später. Möglicherweise will er später nur gewisse Funktionen innerhalb des C++ Codes austauschen will und alles andere bleibt gleich! > > Bei uns ist das wie gesagt so, dass man in MATLAB die großen Mengen an > Code erzeugt, sofern sich das machen lässt und sinnvoll ist. Für andere > Zwecke werden nur Algorithmen abstrakt abgebildet (hier die Physik der > Maschinentechnik und Mechanik) und dann alles sinnvoll gecoded. > Entsprechend viel oder weniger wird in das Modell reingesteckt. Das verstehe ich nicht ganz. Was meinst du mit für andere Zwecke abgebildet und was meknst dubmit sinnvoll coden? Sorry der Nachfragen. Danke eurer Unterstützung. Es hilft mir sehr mich da gut zu positionieren.
Dr. Sommer schrieb: > Melanie F. schrieb: >> Wäre denn so ein Tool sinnvoll, der sauberen C++ Code gerneriert? > > Wenn du es schaffst ein Programm zu entwickeln das intelligent genug ist > um guten C++ Code zu generieren kannst du dir den Nobel Preis holen, und > danach kommt die technische Singularität. Nach heutigem Stand der > Forschung ist das nicht möglich. Okay verstehe, aber gäbe es so etwas ( beim anderen Institut entwickeln die anscheinend dran), wäre es denn nützlich oder sinnvoll ausser in der Industrie auch sinnvolm oder nur in meinem Fall?
@Melanie:
Ich würd vor dem Neuschreiben in C++ mir das Ganze
in UML ansehen.
Was macht der SIFT - Algorithmus eigendlich?
Wozu ist er da?
Ist der Algo ein Staatsgeheimnis, was sich keine anedre
mal ansehen könnte? ;-P
Melanie fragte:
> Was genau ist Rhapsody?
Ist quasi vereinfacht ein UML - Tool der Nachichtentechnik,
der Nachfolger von Telelogic "Tau".
Benutzt wird es zum Beispiel zum Protokolldesign.
mfg
~Mercedes~ schrieb: > @Melanie: > > Ich würd vor dem Neuschreiben in C++ mir das Ganze > in UML ansehen. > > Was macht der SIFT - Algorithmus eigendlich? > Wozu ist er da? > Ist der Algo ein Staatsgeheimnis, was sich keine anedre > mal ansehen könnte? ;-P kein Staatsgeheimnis. Sondern inder Bildverarbeitung ein bekannter Algorithmus zur Extraktion von lokalen Bildmerkmalen. > > Melanie fragte: >> Was genau ist Rhapsody? > > Ist quasi vereinfacht ein UML - Tool der Nachichtentechnik, > der Nachfolger von Telelogic "Tau". > Benutzt wird es zum Beispiel zum Protokolldesign. > > mfg
Melanie F. schrieb: > wäre es denn nützlich oder sinnvoll ausser in der Industrie auch > sinnvolm oder nur in meinem Fall? Ich finde Code Generierung im Allgemeinen nicht so dolle, besonders wenn man beabsichtigt das Ergebnis manuell zu bearbeiten. Man müsste schauen wie gut das Tool letztlich ist. Dass so etwas immer eine Krücke ist sollte klar sein, automatisches Programmieren ist halt ein Wunschtraum.
Melanie F. schrieb: > Danke eurer Unterstützung. Es hilft mir sehr mich da gut zu > positionieren. Du positionierst Dich gerade bei 2- bis 3+ wenn Du nicht bald anfaengst C++ Code selber zu schreiben. Mit dem Betreuer in der jetzigen Phase das Thema zu diskutieren (ohne das aus der Bearbeitung neue Erkenntnisse gekommen sind) kann sehr sehr leicht nach hinten losgehen
Dumdi - Dum meinte: > Mit dem Betreuer in der jetzigen Phase das Thema zu diskutieren (ohne > das aus der Bearbeitung neue Erkenntnisse gekommen sind) kann sehr sehr > leicht nach hinten losgehen Objekterkennung von 3 D Punktwolken ;-P @Melanie: Gehe bitte noch mal in Dich: Was unterscheidet den Code, den Du in Matlab erstellt hast, von anderen Arbeiten im Internet? Was will Dein Betreuer sonst von Dir? Warum besteht er darauf, daß gerade Dein Matlab - Modell "C++ - isiert" wedrden soll? Ergo: Was unterscheidet Dein Proggy, Deine Aufgabenstellung von Anderen, deren C++ - Code im Netz steht?? Wo soll Dein Code verwendet werden? Im Computerspiel? Oder beim Roboterarm? ;-P mfg
Melanie F. schrieb: > . Es hilft mir sehr mich da gut zu positionieren. Hast Du eigentlich inzwischen Mal versucht, deinen Matlab-Code und deinen Coder auf Lesbarkeit zu optimieren? Hast Du Deinen Betreuer Mal konkret befragt, was er bemängelt? Wenn Du kein C++-Experte bist, aber dir beim Coder Hilfe holst und deinen Matlab-Code sinnvoll strukturiert (z.b. nicht a1...z99 als Symbole), dann ist der automatische Code besser als ein gefrickelter, und sinnvoller (da weiterhin auch Matlab) sowieso.
OT: wir hatten hier einen Matlab-Code, dessen zentrale Funktion im embedded Gerät mit 100(!) Parametern aufgerufen wurde. Mehr als 90 davon typspezifische Konstanten, die auch in einer Struktur hatten gruppiert werden können... Aber nein, es wurden brav 100 Elemente in Code gehackt und auf den Stack gelegt.
Dum - Di meinte: > Du positionierst Dich gerade bei 2- bis 3+ wenn Du nicht bald anfaengst > C++ Code selber zu schreiben. Hm. Wenn ich Melanie wäre, würde ich jetzt die von Mercedes oben angeführten Punkte klären. Ich würde mir Quelltexte, die mein Prof geschrieben hat beschaffen, um seine Metrik und seine Vorlieben herausfinden. Ich würde im Netz kursierende C++ Quellen studieren, sie in UML einlesen und mit dem vom Matlab generierten Code vergleichen zu können. Dann würde ich die High - Heels und den Lederrock mit der Vorzugsfarbe meines Profs anziehen. Das heißt, den Matlab - Quelltext mit dem Gelernten und der Metrik des Profs neu zu schreiben / zu refactorisieren! Man muß sich vorstellen: C++ - Quelltext im Stil des Prof. an den Prof. ;-D mfg
~Mercedes~ schrieb: > Wenn ich Melanie wäre, würde ich jetzt die > von Mercedes oben angeführten Punkte klären. Du sprichst von Dir in der 3ten Person? Schon doof wenn man bei mehreren Nicks den Ueberblick verliert, oder wie ist das zu verstehen?
~Mercedes~ schrieb: > Wenn ich Melanie wäre, würde ich jetzt die > von Mercedes oben angeführten Punkte klären. Aha... Wenigstens ist da keine Rede mehr von UML.
Dumdi meinte: > Du sprichst von Dir in der 3ten Person? Schon doof wenn man bei mehreren > Nicks den Ueberblick verliert, oder wie ist das zu verstehen? Quatsch. Ich hab mich nur in Melanies Lage versetzt, was ich an ihrer Stelle machen würde. Ich kann mich ja heute noch zurücklehnen (bin 15 Jahre alt). Aber in ein paar Jahren wird es mir ähnlich wie Melanie gehen, das wurde mir bei dem Ganzen bewußt. Also nix gegen Melanie oder euch Anderen! :-O Achim meinte: > Aha... Wenigstens ist da keine Rede mehr von UML. Ja, UML ist scheiße (sorry). Aber, gerade wenn man sich in gröeren, fremden Quellen umsehen muß, erleichtert es den Überblick ungemein. Man braucht UML ja nicht zu heiraten! ;-P mfg
~Mercedes~ schrieb: > Melanie fragte: >> Was genau ist Rhapsody? > > Ist quasi vereinfacht ein UML - Tool der Nachichtentechnik, > der Nachfolger von Telelogic "Tau". > Benutzt wird es zum Beispiel zum Protokolldesign. > > mfg Na ja, nicht "nur" UML. UML-Modellierungstools gibts viele. Ist halt ein weiteres Codegenerierungstool mit der UML als Input... Man modelliert seine Applikation in UML, implementiert einige Dinge händisch, andere modelliert man mit State- oder Flowcharts... und am Ende purzelt fertiger Code inklusive Framework raus. Achim S. schrieb: > OT: wir hatten hier einen Matlab-Code, dessen zentrale Funktion im > embedded Gerät mit 100(!) Parametern aufgerufen wurde. Mehr als 90 davon > typspezifische Konstanten, die auch in einer Struktur hatten gruppiert > werden können... Aber nein, es wurden brav 100 Elemente in Code gehackt > und auf den Stack gelegt. Kommt mir bekannt vor. Wir bekamen mal Beschwerde von unserem Basis-SW Lieferanten dass unsere Software den Stack platzen lässt. Mit freundlichem Hinweis auf das verursachende Modul. Also mal reingeguckt was unsere Funktionsentwickler (in der Regel Thermodynamiker ohne "echte" Programmiererfahrung) da so gemacht haben. Okay, das Modul war letztendlich eine gigantische C-Funktion von 10k Zeilen die so aus MATLAB rauspurzelt. Das Teil schmeißt schon zweihundert Zeilen lokale Variablen auf den Stack. Kurz überschlagen - ne, an der Stelle müsste es noch passen. Weitergeguckt... oh, da hat der Entwickler ein "größeres" Submodul als Funktionsaufruf implementiert. Wie viele lokale Variablen deklariert sich das denn? Oh, auch ein paar hundert Zeilen, okaaaay... Melanie F. schrieb: > Was wird sich da bei Autosar genau vwrändern? Das aktuelle AUTOSAR ist ziemlich statisch. Ist halt so wenn man hauptsächlich auf uCs unterwegs ist. Aber mittlerweile geht der Trend in der Automobilindustrie zu Domain-Steuergeräten, Großrechner mit gewaltiger Rechenkraft. Irgendwo muss ja der Saft herkommen um die Flut an Fahrassistenz- und Entertainment-Daten zu verarbeiten. AUTOSAR Adaptive ist damit einfach nur der Schritt hin zu mikroprozessorbasierten POSIX-Systemen, der Versuch Statik raus und Flexibilität in die Software reinzubringen. Weg von der alten verbindungsorientierten Denke hin zu Services. Und dazu gehört auch, dass der Kram dann in C++ implementiert wird, nicht mehr in C. https://vector.com/congress/files/presentations/VeCo16_06_29Nov_Reithalle_Fuerst_BMW.pdf Folien 10 und 11~
LuRu meinte: > Okay, das Modul war letztendlich eine gigantische C-Funktion von 10k > Zeilen die so aus MATLAB rauspurzelt. Das Teil schmeißt schon > zweihundert Zeilen lokale Variablen auf den Stack. Genau deshalb muß Melanie sich ja auch die Gewohnheiten ihres Profs anschauen! Wie verwaltet er seine Variablen / Konstanten? Als Private in den Klassen, oder in ner zentralen Struktur wo dann mit Referenzen zugegeriffen wird? Benutzt er lieber Referenzen oder steht er auf Zeiger, und so weiter und sofort! Melanie braucht ne 1++ ( oder ++1 ) ;--D mfg
Lu R. schrieb: > ~Mercedes~ schrieb: >> Melanie fragte: >>> Was genau ist Rhapsody? >> >> Ist quasi vereinfacht ein UML - Tool der Nachichtentechnik, >> der Nachfolger von Telelogic "Tau". >> Benutzt wird es zum Beispiel zum Protokolldesign. >> >> mfg > > Na ja, nicht "nur" UML. UML-Modellierungstools gibts viele. Ist halt ein > weiteres Codegenerierungstool mit der UML als Input... Man modelliert > seine Applikation in UML, implementiert einige Dinge händisch, andere > modelliert man mit State- oder Flowcharts... und am Ende purzelt > fertiger Code inklusive Framework raus. > > Achim S. schrieb: >> OT: wir hatten hier einen Matlab-Code, dessen zentrale Funktion im >> embedded Gerät mit 100(!) Parametern aufgerufen wurde. Mehr als 90 davon >> typspezifische Konstanten, die auch in einer Struktur hatten gruppiert >> werden können... Aber nein, es wurden brav 100 Elemente in Code gehackt >> und auf den Stack gelegt. > > Kommt mir bekannt vor. Wir bekamen mal Beschwerde von unserem Basis-SW > Lieferanten dass unsere Software den Stack platzen lässt. Mit > freundlichem Hinweis auf das verursachende Modul. Also mal reingeguckt > was unsere Funktionsentwickler (in der Regel Thermodynamiker ohne > "echte" Programmiererfahrung) da so gemacht haben. > Okay, das Modul war letztendlich eine gigantische C-Funktion von 10k > Zeilen die so aus MATLAB rauspurzelt. Das Teil schmeißt schon > zweihundert Zeilen lokale Variablen auf den Stack. Kurz überschlagen - > ne, an der Stelle müsste es noch passen. Weitergeguckt... oh, da hat der > Entwickler ein "größeres" Submodul als Funktionsaufruf implementiert. > Wie viele lokale Variablen deklariert sich das denn? Oh, auch ein paar > hundert Zeilen, okaaaay... > Ich glaube das ist genau das wo doch so ein übersichtlicher Codegenerator genutzt hätte, oder? > Melanie F. schrieb: >> Was wird sich da bei Autosar genau vwrändern? > > Das aktuelle AUTOSAR ist ziemlich statisch. Ist halt so wenn man > hauptsächlich auf uCs unterwegs ist. Aber mittlerweile geht der Trend in > der Automobilindustrie zu Domain-Steuergeräten, Großrechner mit > gewaltiger Rechenkraft. Irgendwo muss ja der Saft herkommen um die Flut > an Fahrassistenz- und Entertainment-Daten zu verarbeiten. > AUTOSAR Adaptive ist damit einfach nur der Schritt hin zu > mikroprozessorbasierten POSIX-Systemen, der Versuch Statik raus und > Flexibilität in die Software reinzubringen. Weg von der alten > verbindungsorientierten Denke hin zu Services. Und dazu gehört auch, > dass der Kram dann in C++ implementiert wird, nicht mehr in C. Ich werde mir das genauer anschauen. In unserem Institut versuchen wir gerade so einen Matlab nach C++ Generator zu schreiben. Die Typsysteme beider Sprachen passen nicht wirklich. Wäre so etwas für eure Arbeit nützlich ? > > https://vector.com/congress/files/presentations/VeCo16_06_29Nov_Reithalle_Fuerst_BMW.pdf > Folien 10 und 11~ Grüsse Cem
Cem B. schrieb: > Ich glaube das ist genau das wo doch so ein übersichtlicher > Codegenerator genutzt hätte, oder? Nein. Das Problem hierbei ist der Matlab-Code. Und genauso wenig, wie ein Generator aus schlechtem Spaghetti-C++Code einen strukturierten C++-Code machen kann, kann er es aus Spaghetti-Matlab-Code
Achim meinte: > Nein. Das Problem hierbei ist der Matlab-Code. Und genauso wenig, wie > ein Generator aus schlechtem Spaghetti-C++Code einen strukturierten > C++-Code machen kann, kann er es aus Spaghetti-Matlab-Code Hat Matlab eigendlich vernünftige Klassen / Objakte für Matritzen und für nen Baum zur Verfügung, oder muß Mela das auch alles aus Einzelbefehlen zusammensetzen? mfg
Matlab ist eine Abkürzung von matrixlaboratory. Alles ist da eine Matrix ;) Und ja, man kann auch objektorientiert programmieren und sehr viele Toolboxen sind mittlerweile klassenbasiert. Mal ernsthaft, setz dich doch mal erst damit auseinander, bevor du hier von UML und co redest... Man kann den Matlab Coder bzw. Embedded Coder relativ weitreichend konfigurieren und normalerweise gibt es auch nicht die oben angesprochenen Variablen a1...z99 oder so. Aber die Qualität des generierten Codes hängt eben auch vom Matlab Code ab. Auch in Matlab kann man in Funktionen oder Klassen kapseln und sollte das auch tun. Generierter Code wird normalerweise nicht mehr editiert. Ausnahmen sind vllt, wenn nicht ein komplettes Projekt sondern einzelne Teile kompiliert werden. Die Funktionen selber werden nicht mehr angefasst, du kannst sie aber selbst integrieren. Wenn du die Funktionen in C++ selbst baust, kannst du diesen Code auch in Matlab einbinden. Mit nur geringem Aufwand. Damit kannst du super validieren, dass Matlab und c++ das selbe macht.
Jan meinte: > Mal ernsthaft, setz dich doch mal erst damit auseinander, bevor du hier > von UML und co redest... Ich bin ja gerade dabei. ;-P Läßt Matlab es zu, das man z.B. eine mathematische Gleichung oder Formel einzugeben, und sich dann nur von der Formel C++ Quelle ausgeben zu lassen, etwa für eine Library? Oder noch besser von einem in Matlab geschriebenen AVL Baum? mfg
Achim S. schrieb: > Cem B. schrieb: >> Ich glaube das ist genau das wo doch so ein übersichtlicher >> Codegenerator genutzt hätte, oder? > > Nein. Das Problem hierbei ist der Matlab-Code. Und genauso wenig, wie > ein Generator aus schlechtem Spaghetti-C++Code einen strukturierten > C++-Code machen kann, kann er es aus Spaghetti-Matlab-Code Naja der Matlab-Coder kann aus den Spaghetti-Matlab Code noch schlechteren C++ Code machen. Wie gesagt der Matlab Coder produziert ca. 10 × mal mehr C++ Codezeilen als der ursprüngliche Matlab-Code. Melanie kann ja genau deshalb den produzierten C++ Code niht nutzen.
Jan K. schrieb: > Matlab ist eine Abkürzung von matrixlaboratory. Alles ist da eine Matrix Alles ist ein homogener Container - aka multidimensionales Array ... z.B. a = rand (3, 4, 2). Matrix ist ein spezialfall. > ;) > Und ja, man kann auch objektorientiert programmieren und sehr viele > Toolboxen sind mittlerweile klassenbasiert. > > Mal ernsthaft, setz dich doch mal erst damit auseinander, bevor du hier > von UML und co redest... > > Man kann den Matlab Coder bzw. Embedded Coder relativ weitreichend > konfigurieren und normalerweise gibt es auch nicht die oben > angesprochenen Variablen a1...z99 oder so. > Aber die Qualität des generierten Codes hängt eben auch vom Matlab Code > ab. Auch in Matlab kann man in Funktionen oder Klassen kapseln und > sollte das auch tun. Generierter Code wird normalerweise nicht mehr > editiert. > Ausnahmen sind vllt, wenn nicht ein komplettes Projekt sondern einzelne > Teile kompiliert werden. Die Funktionen selber werden nicht mehr > angefasst, du kannst sie aber selbst integrieren. Jan nutzt du den Matlab-Coder professionell? Wenn ja habt ihr ein Workflow, wo die C++ Ausgabe an weitere Teams oder Mitarbeiter weitergegebwn wird? > > Wenn du die Funktionen in C++ selbst baust, kannst du diesen Code auch > in Matlab einbinden. Mit nur geringem Aufwand. Damit kannst du super > validieren, dass Matlab und c++ das selbe macht.
~Mercedes~ schrieb: > Jan meinte: > >> Mal ernsthaft, setz dich doch mal erst damit auseinander, bevor du hier >> von UML und co redest... > > Ich bin ja gerade dabei. ;-P > > Läßt Matlab es zu, das man z.B. eine mathematische Gleichung > oder Formel einzugeben, und sich dann nur von der Formel C++ > Quelle ausgeben zu lassen, etwa für eine Library? Matlab ist ein Numerik und kein Algebra Tool. Das bedeutet du würdest numerische Algorithmen für dein mathematisches Problem in Matlab schreiben und ausführen. Also deine Matlab Algorithmen werden nach C++ übersetzt. Es gibt andere Tools wie Maple oder Toolboxen von Matlab die es erlauben Gleichungen zu vereinfachen. > Oder noch besser von einem in Matlab geschriebenen AVL Baum? > > mfg
Cem B. schrieb: > Wie gesagt der Matlab Coder produziert ca. > 10 × mal mehr C++ Codezeilen als der ursprüngliche Matlab-Code. Melanie > kann ja genau deshalb den produzierten C++ Code niht nutzen. Der 10-fach höhere Code kommt doch daher, dass eine einzeilige Rechenoperation (beispielsweise die Multiplikation zweiter Matritzen) in viele C-Zeilen umgesetzt werden muss. Das ist nicht das ursächliche Problem der TO, da sie es weder von Hand besser kann NOCH der Betreuer die Matritzenrechnung optimieren will.
Achim S. schrieb: > Der 10-fach höhere Code kommt doch daher, dass eine einzeilige > Rechenoperation (beispielsweise die Multiplikation zweiter Matritzen) in > viele C-Zeilen umgesetzt werden muss. Aber warum wird nicht einfach 1 Funktion zur Matrix Multiplikation implementiert (oder aus einer Library wie "Eigen" genommen), und dann aufgerufen? Ein Aufruf ist auch nur eine Zeile.
Achim S. schrieb: > Cem B. schrieb: >> Wie gesagt der Matlab Coder produziert ca. >> 10 × mal mehr C++ Codezeilen als der ursprüngliche Matlab-Code. Melanie >> kann ja genau deshalb den produzierten C++ Code niht nutzen. > > Der 10-fach höhere Code kommt doch daher, dass eine einzeilige > Rechenoperation (beispielsweise die Multiplikation zweiter Matritzen) in > viele C-Zeilen umgesetzt werden muss. > > Das ist nicht das ursächliche Problem der TO, da sie es weder von Hand > besser kann NOCH der Betreuer die Matritzenrechnung optimieren will. Das stimmt der Betreuer möchte die Matrizenrechnung nicht weiter optimieren. Aber wenn du dir mal eine C++ Ausgabe von Matlab-Coder angesehen hast, dann siehst du dass eine Unmenge an neuen Variablen dazugekommen sind, viele der Matlab-Funktionen nicht wiederzuerkennen sind, die schöne Matrix-Schreibweise in skalaren Code umgewandelt worden ist. Das hat den Nachteil, dass der C++ Code vollkommen unübersichtlich ist. Melanies Betreuer, so verstehe ich das, möchte zu einem späteren Zeitpunkt eine C++ Funktion durch eine andere ersetzen oder editieren. Womöglich soll der C++ Code in ein bestehenden C++ Framework eingebettet werden. Genau aus diesem Grund sind wir ja auch gerade dabei so ein Tool zu entwickeln.
Dr. Sommer schrieb: > Achim S. schrieb: >> Der 10-fach höhere Code kommt doch daher, dass eine einzeilige >> Rechenoperation (beispielsweise die Multiplikation zweiter Matritzen) in >> viele C-Zeilen umgesetzt werden muss. > > Aber warum wird nicht einfach 1 Funktion zur Matrix Multiplikation > implementiert (oder aus einer Library wie "Eigen" genommen), und dann > aufgerufen? Ein Aufruf ist auch nur eine Zeile. Naja so arbeitet eben der Matlab-Coder nicht. Er übersetzt eine Zeile wie z.B.
1 | A = rand(3,4); B = A * A'; |
nicht einfach in eine C++ Zeile sondern macht daraus mehr als 50 Zeilen C++ Code mit mehr als zwei Variablen. Intelligent wäre, wenn er daraus eine C++ Zeile generiert und z.B. dafür die Eigen-Bibliothek einbindet und nutzt. Und genau daran arbeiten wir gerade.
Cem B. schrieb: > Er übersetzt eine Zeile wie z.B. > > A = rand(3,4); B = A * A'; > > nicht einfach in eine C++ Zeile sondern macht daraus mehr als 50 > Zeilen C++ Code mit mehr als zwei Variablen. Heißt das, dass 10 Matrixmultiplikationen in einem Matlab-Programm ca. 10·50=500 C++-Zeilen ergeben? Wie sieht es bei komplexeren Algorithmen aus, also bspw. bei der Berechnung der Inversen oder der Eigenwerte einer Matrix? Wird dafür ebenfalls "flacher" C++-Code (ohne die Verwendung von Funktionen) generiert? Das müsste ja dann den C++-Code regelrecht explodieren lassen.
Yalu X. schrieb: > Cem B. schrieb: >> Er übersetzt eine Zeile wie z.B. >> >> A = rand(3,4); B = A * A'; >> >> nicht einfach in eine C++ Zeile sondern macht daraus mehr als 50 >> Zeilen C++ Code mit mehr als zwei Variablen. > > Heißt das, dass 10 Matrixmultiplikationen in einem Matlab-Programm ca. > 10·50=500 C++-Zeilen ergeben? > Nein so wieder nicht. Die Matrixmultiplikation wird möglicherweise nur einmal mit For-Schleifen implementiert und dann entsprechend aufgerufen. Ich bin mir aber nicht sicher und werde das nochmal recherchieren. > Wie sieht es bei komplexeren Algorithmen aus, also bspw. bei der > Berechnung der Inversen oder der Eigenwerte einer Matrix? Wird dafür > ebenfalls "flacher" C++-Code (ohne die Verwendung von Funktionen) > generiert? Das müsste ja dann den C++-Code regelrecht explodieren > lassen. Ja genau. Ich schau mal, dass ich euch ein Beispielprogramm für beispielsweise x1 = A\b1; x2 = A\b2; (löst die Gleichungssysteme für Ax1 = b1, Ax2 = b2.) gebe. Dann sieht man ja ob mehrere C- bzw. C++-Funktionen generiert.
Tja, dann sieht es fast danach aus, das der Prof Melanie ärgern will. Denn er müßte ja wissen, wie schwierig die ganze Sache ist. Vielleicht erwartet er von ihr die Aussage "es geht nicht!"? mfg
~Mercedes~ schrieb: > Tja, dann sieht es fast danach aus, das der Prof > Melanie ärgern will. > Denn er müßte ja wissen, wie schwierig die ganze Sache ist. Es gibt doch von Melanie überhaupt keine Info, was der Betreuer überhaupt anmeckert oder wie ihr Code (Matlab und C++) aussieht, also ob es an ihr oder an Matlab liegt. Sie hat bis auf regelmäßige "ich verstehe" nichts mehr beigetragen. Da ist es sehr gewagt, dem Professor Bosheit zu unterstellen.
Cem B. schrieb: > Naja so arbeitet eben der Matlab-Coder nicht. Er übersetzt eine Zeile > wie z.B. A = rand(3,4); B = A * A'; nicht einfach in eine C++ Zeile > sondern macht daraus mehr als 50 Zeilen > C++ Code mit mehr als zwei Variablen. Wieso macht der das eigentlich nicht mit Templates, wenn man schon C++ zur Verfügung hat?
Achim meinte: > Es gibt doch von Melanie überhaupt keine Info, was der Betreuer > überhaupt anmeckert oder wie ihr Code (Matlab und C++) aussieht, also ob > es an ihr oder an Matlab liegt. > Sie hat bis auf regelmäßige "ich verstehe" nichts mehr beigetragen. Da > ist es sehr gewagt, dem Professor Bosheit zu unterstellen. Ich hab doch dem Prof keine Bosheit unterstellt! ;--O Ich würde es auch nicht wagen!! Vielleicht ist Melanie aber so gut, das der Prof ihr einen kleines trap eingebaut hat? Oder möchte er Melanie zum formatierten Matlab - programmieren anregen? Wir weden es wohl nicht erfahren... mfg
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.