Zum Inhalt springen

Monolithischer Code?


Nio

Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :o Ich möchte ja zum verständnis überhaupt erst einmal wissen was das überhaupt ist. ^-^

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :D

Danke schön. :D

Aber, die Laufzeit ist nicht kürzer, als wenn das Programm in Unterprogrammen geteilt worden wäre oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 < B) 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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...