Die verpönten goto´s



  • pointercrash() schrieb:

    earli schrieb:

    Das ist auch mal ganz grober Unfug. Multiplikationen sind Kinderkacke, wenn du in jedem Durchlauf zig Pointer dereferenzierst.

    Ne, spielt keine so große Rolle, weil die meisten Compiler Variablenzugriffe sowieso auf indirekt- indizierten ASM abzubilden versuchen. Weil man so das meiste gebacken bekommt oder sich sonst was mit einem möglichen OS beißt, plagt sich kaum jemand mit auf direkter Adressierung basierender Optimierung rum.

    Es handelt sich aber nicht um gewöhnliche Variablenzugriffe, sondern auf Zugriffe in den Heap (malloc()) oder auf unbekannte Variablen im Stack von den aufrufenden Funktionen. Dein Trick geht nur mit Variablen auf dem Stacksegment der Funktion selbst oder mit statischen Fields.



  • knivil schrieb:

    Dann zeig doch mal wie du das machen würdest (am besten anhand eines Beispieles)

    Hast du ein konkretes Problem?

    Herausspringen aus dreifacher Verschachtelung z.B. Und sag nicht, Du willst das mit einem Flag machen, oder den Code nur deshalb in eine Funktion auslagern.



  • Herausspringen aus dreifacher Verschachtelung

    Das ist kein konkretes Problem. Wahrscheinlich wuerde ich keine dreifach verschachtelte Schleife schreiben.

    jetzt komm nicht mit nem statischen Array daher ... Flag machen ... Funktion auslagern

    Du verbietest pauschal ganz schoen viel, ohne ein konkretes Problem genannt zu haben.



  • knivil schrieb:

    Herausspringen aus dreifacher Verschachtelung

    Das ist kein konkretes Problem. Wahrscheinlich wuerde ich keine dreifach verschachtelte Schleife schreiben.

    Wie machst du dann eine Matrixmultiplikation?



  • Wie machst du dann eine Matrixmultiplikation?

    Muss ich bei einer Matrixmultiplikation irgendwann aus den for-Schleifen herausspringen? Und wahrscheinlich hat man sowieso schon Funktionen fuer Skalarprodukt, Matrix * Vektor und Co.



  • knivil schrieb:

    Wie machst du dann eine Matrixmultiplikation?

    Muss ich bei einer Matrixmultiplikation irgendwann aus den for-Schleifen herausspringen? Und wahrscheinlich hat man sowieso schon Funktionen fuer Skalarprodukt, Matrix * Vektor und Co.

    Ja mei natürlich gibt es scheinbar keinen Fall wo sich ein goto nicht ersetzen lässt. Ich such ja auch schon ständig, um mein Bedürfnis zu rechtfertigen 😃



  • noobLolo schrieb:

    knivil schrieb:

    Wie machst du dann eine Matrixmultiplikation?

    Muss ich bei einer Matrixmultiplikation irgendwann aus den for-Schleifen herausspringen? Und wahrscheinlich hat man sowieso schon Funktionen fuer Skalarprodukt, Matrix * Vektor und Co.

    Ja mei natürlich gibt es scheinbar keinen Fall wo sich ein goto nicht ersetzen lässt. Ich such ja auch schon ständig, um mein Bedürfnis zu rechtfertigen 😃

    Java hat kein goto. Aber Java hat auch eine Garbage Collection. Vielleicht ist das kein Zufall. 😃



  • earli schrieb:

    Java hat kein goto. Aber Java hat auch eine Garbage Collection. Vielleicht ist das kein Zufall.

    Java hat "break mit Labels": http://java.sun.com/docs/books/tutorial/java/nutsandbolts/examples/BreakWithLabelDemo.java
    Keine vernünftige Sprache kommt ohne eine Form von GOTO aus. Ausser funktionale Sprachen, aber deren Nutzen ist nur akademisch.



  • Keine vernünftige Sprache kommt ohne eine Form von GOTO aus. Ausser funktionale Sprachen, aber deren Nutzen ist nur akademisch.

    Jetzt geht das schon wieder los.



  • Javaspezialist schrieb:

    Keine vernünftige Sprache kommt ohne eine Form von GOTO aus. Ausser funktionale Sprachen, aber deren Nutzen ist nur akademisch.

    Das ist schon wieder grober Unfug. Was macht denn eine Sprache "vernünftig"?

    Funktionale Sprachen sind auch in der Industrie weit verbreitet. Natürlich nicht unter Waldundwiesen-Hobbyprogrammierern und Windows-Klickapp-Codemonkeys. Aber was meinst du, wie Google und Co. das hinbekommen, dir in Millisekunden Millionen von Ergebnissen zu einem Suchwort zu präsentieren?

    Vielleicht hast du ja schonmal was von Erlang gehört.



  • knivil schrieb:

    Keine vernünftige Sprache kommt ohne eine Form von GOTO aus. Ausser funktionale Sprachen, aber deren Nutzen ist nur akademisch.

    Jetzt geht das schon wieder los.

    C soll doch Maschienennah sein, zeig mir mal 15 Zeilen asm wo kein

    "JMP label"
    "JE label"
    "JNE label"
    ...

    drin ist...

    earli schrieb:

    Aber was meinst du, wie Google und Co. das hinbekommen, dir in Millisekunden Millionen von Ergebnissen zu einem Suchwort zu präsentieren?

    weil sie die besten Algos in feine C-Apps eingebaut haben, bzw. verwendete google nicht mal mysql? oder waren das alles nur gerüchte?



  • C soll doch Maschienennah sein, zeig mir mal 15 Zeilen asm wo kein

    Irrelevant, C ist nicht Assembler.

    weil sie die besten Algos in feine C-Apps eingebaut haben, bzw. verwendete google nicht mal mysql? oder waren das alles nur gerüchte?

    Amazon z.B. hat in den ersten Tagen nur C und Lisp verwendet.

    Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. [...] I don't think Microsoft completely understands just how far behind they are on that wave.

    Ihr duerft auch gern den ganzen Artikel lesen: http://www.joelonsoftware.com/items/2006/08/01.html . Andere interessante Artikel sind dort auch verlinkt.



  • noobLolo schrieb:

    C soll doch Maschienennah sein, zeig mir mal 15 Zeilen asm wo kein [...]

    Seit wann SOLL C maschinennah sein? Der Sinn von C ist gerade das Gegenteil, man schreibt ein Programm, das auf vielen verschiedenen Maschinen laufen soll, nur einmal.

    Dass C maschinennah ist, liegt einfach daran, dass zu dieser Zeit sowas wie Java oder CLI (.NET) noch zu ressourcenaufwendig war.

    weil sie die besten Algos in feine C-Apps eingebaut haben, bzw. verwendete google nicht mal mysql? oder waren das alles nur gerüchte?

    Wo hast du das denn aufgegabelt? Also der Satz ergibt im Ganzen wenig Sinn.

    - wahrscheinlich benutzt Google auch C, wo es angemessen ist
    - wahrscheinlich benutzt Google kein MySQL (das ist lahm und unzuverlässig nach Googles Maßstäben)
    - Google hat bestimmt nicht in C direkt ihre komplette Anwendung so schreiben können, dass sie auf zig Rechnern über die Welt verteilt in effizienter Weise beliebig verteilte Informationen zusammensucht, bewertet und sortiert ausgibt.



  • earli schrieb:

    Es handelt sich aber nicht um gewöhnliche Variablenzugriffe, sondern auf Zugriffe in den Heap (malloc()) oder auf unbekannte Variablen im Stack von den aufrufenden Funktionen. Dein Trick geht nur mit Variablen auf dem Stacksegment der Funktion selbst oder mit statischen Fields.

    Ist nicht "mein Trick". :p Zumeist wird ein Kontext- Anker indirekt plus irgendein Offset adressiert, wo immer der auch herkommt. Bei statischen Fields sehen die Zugriffe verdächtig identisch aus, auch, wenn der Prozessor das nicht besonders gut kann (hab' aber jetzt nur zwei Compileroutputs angeschaut, 'x86 nicht dabei).

    earli schrieb:

    Vielleicht hast du ja schonmal was von Erlang gehört.

    Erlang ist eine Hilfsmaßeinheit für den Verkehr in einem Kommunikations-Netz.



  • earli schrieb:

    - wahrscheinlich benutzt Google kein MySQL (das ist lahm und unzuverlässig nach Googles Maßstäben)

    sie haben mal eine erweiterung für MySQL entwickelt, also hatten sie es afaik auch mal in verwendung wenn auch nur auf demo servern?

    earli schrieb:

    - Google hat bestimmt nicht in C direkt ihre komplette Anwendung so schreiben können, dass sie auf zig Rechnern über die Welt verteilt in effizienter Weise beliebig verteilte Informationen zusammensucht, bewertet und sortiert ausgibt.

    ich denke wir sollten mal unterscheiden was google heute ist und wie es vor fast 10 jahren angefangen hat, ist ja kein geheimnis, das man bei google nur mit erstklassigen noten arbeiten darf, das diese geballte intelligenz auch was halbwegs anständiges auf die beine stellt ist doch nicht verwunderlich, das ist fast so als würde man sagen, oh wunder mercedes kann ein formel 1 auto bauen...



  • noobLolo schrieb:

    ... oh wunder mercedes kann ein formel 1 auto bauen...

    Das wird sich noch zeigen müssen 😉
    Aber was zum Geier hat das mit goto zu tun?

    if (mercedes.GOTO){return mercedes.crash}
    


  • pointercrash() schrieb:

    Aber was zum Geier hat das mit goto zu tun?

    goto ist der mercedes unter den keywords 🤡



  • noobLolo schrieb:

    pointercrash() schrieb:

    Aber was zum Geier hat das mit goto zu tun?

    goto ist der mercedes unter den keywords 🤡

    goto Hell;
    


  • noobLolo schrieb:

    sie haben mal eine erweiterung für MySQL entwickelt, also hatten sie es afaik auch mal in verwendung wenn auch nur auf demo servern?

    Kann schon sein. Aber das hat wohl nichts mit der Suche zu tun, die meinen wir hier natürlich. Für die Blogs der Google-Mitarbeiter haben die sich bestimmt nichts ganz neues ausgedacht.

    ich denke wir sollten mal unterscheiden was google heute ist und wie es vor fast 10 jahren angefangen hat, ist ja kein geheimnis, das man bei google nur mit erstklassigen noten arbeiten darf, das diese geballte intelligenz auch was halbwegs anständiges auf die beine stellt ist doch nicht verwunderlich, das ist fast so als würde man sagen, oh wunder mercedes kann ein formel 1 auto bauen...

    Microsoft hat auch genug Geld, um sich die besten Leute zu kaufen, trotzdem kommt nur Durchschnittliches bei heraus. Und bei Siemens und der Deutschen Telekom kommt sogar nur totaler Schrott heraus.

    So Firmen wie Amazon und Google haben ihr Geheimsnis ganz woanders. Die Gründer von Google haben gar keine klassische Schulbildung erfahren, sondern haben zum Beispiel auf Montessori-Schulen besucht. Und deren Mitarbeiterführung sieht so aus, dass einer von fünf Arbeitstagen die Woche komplett frei genutzt werden kann, für das, worauf man Lust hat. Da gehen viele Open-Source-Beiträge von Google drauf zurück, und auch GMail und andere. Die Arbeitsräume sehen aus wie ein Freizeitpark, nicht wie ein Büro. Mit Spielen, Whirlpools etc.

    Amazon hat auch was besonderes an sich: Das Lager. Amazons Lager ist überhaupt nicht geordnet. Reines Chaos. Die Waren liegen auf Paletten, und diese werden hin- und hergefahren. Und zwar einfach so: Was bestellt wurde, rückt weiter nach vorn. Was nicht bestellt wurde, wandert somit nach hinten. Das hat zur Folge, dass ganz ohne komplexe Organisation die Waren, die am häufigsten bestellt werden, am weitesten vorn liegen. Und von vorn nach hinten wird dann im Lager gesucht. Das ist furchtbar effizient im statistischen Mittel, da nur die Sachen nennenswert lange gesucht werden, die sowieso selten bestellt werden. Und der Organisationsoverhead ist einfach Null.



  • earli schrieb:

    Die Gründer von Google haben gar keine klassische Schulbildung erfahren, sondern haben zum Beispiel auf Montessori-Schulen besucht. Und deren Mitarbeiterführung sieht so aus, dass einer von fünf Arbeitstagen die Woche komplett frei genutzt werden kann, für das, worauf man Lust hat. Da gehen viele Open-Source-Beiträge von Google drauf zurück, und auch GMail und andere. Die Arbeitsräume sehen aus wie ein Freizeitpark, nicht wie ein Büro. Mit Spielen, Whirlpools etc.

    Mein Ältester war auch auf einer Montessori und nutzt einen Tag der Woche, wo er drauf Lust hat, leider in mangelnder Abstimmung mit der Schule samt Eltern. Ich weiß jetzt immer noch nicht, was das mit goto zu tun hat 😕
    EDIT:
    Programmieren kann er natürlich nicht, er konzentriert sich auf WOW- Cheats.


Anmelden zum Antworten