Nio Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Moin moin und Hallo. Da ich programmiertechnisch ein wenig schwach auf der Brust bin müsste ich dann doch mal hier die eine oder andere Frage stellen. Ich hoffe dass die mir wer beantworten könnte. Also: Es geht um die Programmiertechnick der Unterprogramme, wobei die auf verwendung nicht zutrifft, dass ein Unterprogramm schneller ausgeführt werden kann, als "monolithischer Code" und somit Laufzeit spart. Ich kann allerdings mit dem Begriff ein feuchtes gar nichts anfangen. Daher was ist Monolithischer Code? o.O Danke schon mal für etwaige antworten :cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GSM7224 Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 des muss irgendwas mit dem Kernel zu tun haben. Mehr kann ich dir da aber auch nicht sagen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 des muss irgendwas mit dem Kernel zu tun haben. Mehr kann ich dir da aber auch nicht sagen! Na gut, hilft mir ja immerhin ein bisschen bis mehr oder weniger gar nicht weiter. Ich möchte ja zum verständnis überhaupt erst einmal wissen was das überhaupt ist. ^-^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
a3quit4s Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Nein, das hat nichts mit dem Kernel zu tun. Als monolithischen Code bezeichnet man einen rießigen, unwartbaren Klotz an Code. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 Nein, das hat nichts mit dem Kernel zu tun. Als monolithischen Code bezeichnet man einen rießigen, unwartbaren Klotz an Code. Das heist also so viel wie n Brocken an Code den ich nicht mehr verändern kann? Oder ist der Code einfach nur in einer bestimmten Form aber noch leicht anpassbar? o.O Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
truebsalgeblaese Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Ein monolithischer Code ist recht vereinfacht: nur eine main(), ohne jegliche funktionsaufrufe - und wenn es sich nicht vermeiden lässt, dann alle Libraries statisch verlinkt. Vorteil: Der Overhead beim Funktionsaufruf (Rücksprungadresse auf den Stack, Register sichern - am Ende alles wieder zurück) wird gespart. Auch das Laden von Libaries erübrigt sich... Nachteil: Erklärt sich von selber... Viel Spass bei der Wartung... tsg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Das heist also so viel wie n Brocken an Code den ich nicht mehr verändern kann? Oder ist der Code einfach nur in einer bestimmten Form aber noch leicht anpassbar? o.O Nein das heißt das der Code aus einem einzigem Stück besteht und nicht in verschiedene Module oder ähnliches unterteilt ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 Nein das heißt das der Code aus einem einzigem Stück besteht und nicht in verschiedene Module oder ähnliches unterteilt ist. Achso! Na gut, jetzt kann ich mir da auch ungefähr was drunter vorstellen. Immerhin versteh ich schon mal was die hier von mir wollen. Danke schön. Aber, die Laufzeit ist nicht kürzer, als wenn das Programm in Unterprogrammen geteilt worden wäre oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GSM7224 Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 da haben wir wieder mal was gelernt vom Bernd Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Nein die Laufzeit hängt ja nur davon ab was das Programm am Ende macht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 Okay... dann bin ich schon einen ziemlich großen schritt weiter in meinem Verständnis zu der Sache. (: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Aber, die Laufzeit ist nicht kürzer, als wenn das Programm in Unterprogrammen geteilt worden wäre oder? Die "Laufzeit" ist primär abhängig vom Algorithmus, siehe Komplexität (Informatik) Vorteil: Der Overhead beim Funktionsaufruf (Rücksprungadresse auf den Stack, Register sichern - am Ende alles wieder zurück) wird gespart. Auch das Laden von Libaries erübrigt sich... Nachteil: Erklärt sich von selber... Viel Spass bei der Wartung... Diese Aussage ist nicht korrekt: Inline function - Wikipedia, the free encyclopedia Inline Funktionen machen genau das, d.h. der Compiler setzt an die Stelle die inline deklarierten Code / kann den Code ersetzen. D.h. ich kann auch mit Hilfe von OOP einen strukturierten Code erzeugen aber via Compiler Befehl monolithischen Code erzeugen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 Wirklich sehr gute antwort. (: Nun türmt sich mir die Frage auf, was ein Arithmethischer Ausdruck ist? (Steht hier ebenfalls auf dem Zettel was mich denn so Programmiertechnisch verwirrt und steht im zusammenhang mit dem Monolithischen Code o.O) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Nun türmt sich mir die Frage auf, was ein Arithmethischer Ausdruck ist? Salopp gesagt "x=5" oder "f(x) = x+3" wären arithmetische Ausdrücke. Generell zur Komplexität gibt es die Landau-Symbole die Algorithmen in Klassen einteilen, wie ihre "worst-case Laufzeit" ist. Natürlich muss man unterscheiden, zwischen der asympotischen Betrachtung und einer realen Implementierung. Generell gilt bei den Komplexitätsklassen O(c*n) [hier für ein lineare Komplexität], wobei das c eine Konstante ist. Bei der Limesbetrachtung fallen mathematisch Konstanten heraus. Real kann dieses c aber durchaus viel ausmachen. Als Beispiel würde ich hier die Cholesky-Zerlegung nennen, wobei man das c bis auf 1/6*c optimieren kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 26. September 2011 Autor Teilen Geschrieben 26. September 2011 Salopp gesagt "x=5" oder "f(x) = x+3" wären arithmetische Ausdrücke. Generell zur Komplexität gibt es die Landau-Symbole die Algorithmen in Klassen einteilen, wie ihre "worst-case Laufzeit" ist. Natürlich muss man unterscheiden, zwischen der asympotischen Betrachtung und einer realen Implementierung. Generell gilt bei den Komplexitätsklassen O(c*n) [hier für ein lineare Komplexität], wobei das c eine Konstante ist. Bei der Limesbetrachtung fallen mathematisch Konstanten heraus. Real kann dieses c aber durchaus viel ausmachen. Als Beispiel würde ich hier die Cholesky-Zerlegung nennen, wobei man das c bis auf 1/6*c optimieren kann. Ui. Also, den ersten satz hab ich verstanden. Den 2ten auch noch. Aber dann isses leider zu hochgestochen für mich. Wie gesagt, ich steck noch nicht sehr tief im Code. Wenn ich also jetzt einen Arithmethischen Ausrduck haben möchte, kann ich ja eine Funktion verwenden, die mir genau einen wert gibt oder? Damit ich bei: "x+3" das x, anschließend benennen kann. Oder lieg ich da ganz arg in der falschen Richtung? Würde das dann auch mit einer Algorithmusfunktion ein Ergebnis liefern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. September 2011 Teilen Geschrieben 26. September 2011 Wenn ich also jetzt einen Arithmethischen Ausrduck haben möchte, kann ich ja eine Funktion verwenden, die mir genau einen wert gibt oder? also int x = 5; x += 3; und function int f(int y) { return y+3; } int x=5; x = f(x); liefert in beiden Fällen identische Ergebnisse. Wobei der Compiler im zweiten Fall mehr Code generiert, denn hier müssen auf dem Stack mehrere Strukturen erzeugt werden. Damit ich bei: "x+3" das x, anschließend benennen kann. Oder lieg ich da ganz arg in der falschen Richtung? Würde das dann auch mit einer Algorithmusfunktion ein Ergebnis liefern? Was ist denn eine "Algorithmusfunktion"? Ein Algorithmus ist eine "Vorschrift" um ein Problem zu lösen, die mit der realen Repräsentation erst einmal nichts zu tun hat. Eine Funktion ist an eine Repräsentation / Sprache gebunden Funktion (Programmierung) bzw Funktion (Mathematik) Um eine Lösung für ein Problem zu erzeugen kann man auf Funktionen zurück greifen, d.h. man zerlegt das Problem in Teilprobleme und löst diese. Alle Lösungen zusammen ergeben dann die Gesamtlösung (letztendlich gilt dabei Optimalitätsprinzip von Bellman ). Ich kann für eine Problemlösung den gleichen Algorithmus verwenden, aber der geschriebene Code wird jedes Mal anders aussehen. Ein Beispiel: Aus 3 Zahlen die kleinste Heraus finden: int a= 3; int b= 5; int c = 6; std::cout << std::min(std::min(a, , c) << std::endl; [/code] oder [code] int a= 3; int b= 5; int c = 6; int erg = 0; if (a < erg = a; else erg = b; end if (c < erg) erg = c; end std::cout << erg << std::endl; oder min(a,b,c) :- if (a < && (b < c) print(a); else if (a > min(b,a,c); end if (b > c) min(a,c, end end [/code] es sind 3 Darstellungen für das gleiche Problem, letztendlich für den gleichen Algorithmus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nio Geschrieben 27. September 2011 Autor Teilen Geschrieben 27. September 2011 Na gut. Ein bisschen Licht ins dunkle bringts mir. Da ich wie gesagt nich so tief in der Materie stecke, bin ich davon ausgegangen dass so etwas wie eine Algorithmusfunktion, in einem gewissen Rahmen existent wäre. Aber da dem nicht so scheint, vergess ich das einfach mal wieder. Den rest seh ich durchaus ein. Mit dem Algorithmus gibts verschiedenen Code, merk ich mir. Gut gut, dann muss ich mir mal ein Fachbuch fürs Programmiertechnische kaufen, mittlerweile fühl ich mich so als würde ich hier nur noch Fachbegriffe aus der Hohen Mathematik vor mir sehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.