verbesserungsvorschläge für endlich fertig gestellte klasse



  • Zu den schuldig gebliebenen Begründungen:

    Matrixmultiplikation: C = A * B;

    Ich will das jetzt nicht explizit coden, das wird sowieso falsch aber so "on the fly" hab ich mir das wie folgt vorgestellt:
    Ich durchlaufe Matrix A immer wieder zeilenweise und B spaltenweise bilde dann über Zeilen/Spalten die Summen und gut.

    Dir schwebt irgendwie sowas vor, oder:

    for (int i=0; i < BREITE; i++)
    for (int j=0; j < HOEHE; j++)
    for (int k=0; k < BREITE; k++)
        c[i][j] += a[i][k] * b[k][j];
    

    Ok was Einfachheit angeht ist der 2. Versuch wohl kaum zu übertreffen. Da hast Du recht, Matrixmultiplikation geht mit einem Feld leichter zu implementieren.
    Wahrscheinlich wird der 2. Versuch aber ein wenig langsamer laufen, da sehr viele Adressen immer wieder berechnet werden müssen. Das ist bei meinem Vorschlag nicht nötig, da sich das nächste Paar, was multipliziert wird immer in der direkten Nachbarschaft befindet.

    Und was Gauss angeht, verhält es sich meiner Meinung nach ähnlich:
    Beim Feld müssen ständig Adressen berechnet werden, in der Liste nicht.

    Gruss

    turing



  • also würdest du eine liste bevorzugen. nun bin ich mir nicht sicher ob sich der aufwand nun lohnt. und ehrlich gesagt weiß ich im moment auch gar nicht wie ich soo eine liste machen muss.
    wie würde den grob eine liste für ein array aussehen, die das nötigst kann, also größe festlegen, etwas reinpacken, etwas löschen und indexzugriffe. 😕
    wenn die bitte nicht zu dreist ist 🤡



  • Turing schrieb:

    Beim Feld müssen ständig Adressen berechnet werden, in der Liste nicht.

    ok. aber zeigernachguckungen (inderektionen) kosten auch.
    natürlich VIEL weniger als plutimikationen. punkt für dich.

    anderster wird es, wenn wir feststellen, daß das programm felder mit bestimmten zur compilzeit bekannten größen braucht. wenn ich recht sehe, ist das der fall. selbst wenn man die größen manchmal ändern mag, wenn das programm ne stunde lang läuft, aber ein compilerlauf mit geänderter größe nur 10 sekunden und damit das prog 10% schneller wird, sind compilezeitkonstante größen eine überlegung wert.

    denen wir also mal kurz über

    template<typename T,int sizey,int sizex>
    class Matrix{
       T data[sizex*sizey];
       public:
       T& at(int y,int x){
          assert(0<=y && y<=sizey);
          assert(0<=x && x<=sizex);
          return data[y*sizex+x];
       }
    };
    

    nach.

    abgesehen von der brutalen vereinfachung des codes (und dafür bin ich immer zu haben :D) könnte das auch lecker schnell sein. schaue wir den flaschenhals an. das ist die plutimikation bei y*sizex+x. legen wir doch einfach mal fest, daß sizex eine zweierpotenz sein soll.

    template<typename T,int sizey,int sizex>
    class Matrix{
       static const int fastsizex=nextPowerOfTwo<sizex>::value;
       T data[fastsizex*sizey];
       public:
       T& at(int y,int x){
          assert(0<=y && y<=sizey);
          assert(0<=x && x<=sizex);
          return data[y*fastsizex+x];
       }
    };
    

    und voila, es fühlt sich eigentlich recht schnell an und maximal 50% speicherverschwendung.

    und dann würde ich mit dem trick mit dem proxy noch den op[][] anbieten und fest daran glauben, daß es so ausreichend in ordnung ist, um mich wieder dem hauptprogramm zuzuwenden.



  • IHR verwirrt mich 😡



  • @volkard
    Das ist tricky mit den 2er-Potenzen zu multiplizieren. Ich verteile die Daten einfach so, dass sie Multiplikation nix kostet, gute Idee.



  • @volkard
    wie is eigentlich sonn info-studium, ich überleg vielleicht nach meinem abi 2006 auch in die richtung zu gehen, vielleicht mach aber auch eher was in richtung biologie.
    wie macht sich das eigenlich auch so - geldtechnisch mit jobangeboten wenn man fertig ist?



  • exigoner schrieb:

    @volkard
    wie is eigentlich sonn info-studium, ich überleg vielleicht nach meinem abi 2006 auch in die richtung zu gehen, vielleicht mach aber auch eher was in richtung biologie.
    wie macht sich das eigenlich auch so - geldtechnisch mit jobangeboten wenn man fertig ist?

    MACH BIO!
    info kannst offensichtlich. wenn du fertig bist, biste nachgewiesener BIO und info kannste auch, zur not mit zusatzscheinen oder durch diplomarbeit mit info oder wasweisich nachweisbar.

    ich hab den fehler gemacht, info zu studieren. ich mache schon ein paar maschbauer einfach platt, weil ich noch weiß, was ein kniehebel ist, weil evonlventenverzahnung für mich nix mit mathe zu tun hat, sondern schlicht naheliegend ist usw.
    aber mich einstellen als maschbauer+info kann sich keiner wagen. it auch richtig. mein maschbaue-wissen ist kläglich. die ansätze sind gut. mit ein paar jahren training wäre ich sehr gut. mist.

    ich hätte was anderes studieren müssen, vielleicht mathe, physik, e-technik- maschbau, irgenwas, wozu ich wenig lernen muss. dann hätte ich jetzt zwei fächer mit heimspiel. so habe ich nur das, was mir eh zugeflogen ist und im studium auch erschreckend wenig gelernt.



  • volkard schrieb:

    exigoner schrieb:

    @volkard
    wie is eigentlich sonn info-studium, ich überleg vielleicht nach meinem abi 2006 auch in die richtung zu gehen, vielleicht mach aber auch eher was in richtung biologie.
    wie macht sich das eigenlich auch so - geldtechnisch mit jobangeboten wenn man fertig ist?

    MACH BIO!

    Es gäbe da ja auch noch Bioinformatik ... http://bioinformatik-berlin.de/

    Das Studium ist recht spannend, auch wenn ich noch nicht recht herausbekommen habe, was das mit Informatik zu tun hat. Die manchmal verwendete englische Bezeichnung "Computational biology" trifft es IMO besser aber das kommt wohl auch sehr auf die jeweilige Uni, an der man es studiert an.



  • Konrad Rudolph schrieb:

    Es gäbe da ja auch noch Bioinformatik ... http://bioinformatik-berlin.de/

    naja, das klingt für mich ehrlich nach halbwissen auf beiden bereichen.



  • volkard schrieb:

    Konrad Rudolph schrieb:

    Es gäbe da ja auch noch Bioinformatik ... http://bioinformatik-berlin.de/

    naja, das klingt für mich ehrlich nach halbwissen auf beiden bereichen.

    Hmm, das wäre dann für jedes "Hybrid"-Studium der Fall. Fakt ist aber, dass Bioinformatiker (zur Zeit noch) hoch im Kurs stehen. Das sieht man auch am Forschungstrend ... es vergeht z.B. kaum eine Ausgabe der Technology Review, in der nicht mindestens ein großer Artikel zu einem Thema der Bioinformatik erscheint.



  • [quote="Konrad Rudolph"]Hmm, das wäre dann für jedes "Hybrid"-Studium der Fall.[quote]
    exakt.

    Fakt ist aber, dass Bioinformatiker (zur Zeit noch) hoch im Kurs stehen. Das sieht man auch am Forschungstrend ... es vergeht z.B. kaum eine Ausgabe der Technology Review, in der nicht mindestens ein großer Artikel zu einem Thema der Bioinformatik erscheint.

    und diese spitzenforscher sind niemals mit abschluss "BioInformatik" gesegnet, das mußt du auch bedenken. ich fürchte, wir haben es hier mit einem fregesteller zu tun, der in sachen informatik die richtigen fragen stellt (meine bewertung) und der es in bio zu was bringen kann (kombinationsbewrtung aus seinem interesse und der informatikbewertung). er *kann* also in beiden bereichen echt gut werden, und ich nehme an, info wird ihm zufliegen. dann soll er bio möglichst tief gelernt kriegen.

    aber ich kenne ihn nicht. kann auch sein, daß er anders entscheiden sollte.



  • dann werde ich wohl eher in richtung biologie gehen. ich habe mir in informatik(cpp/os,etc) bisher alles selbst beigebracht(gut mein buch hat nat. auch was dazu beigetragen 🙂 ), aber das hat mich dann auch verunsichert. ich war mir nicht sicher ob sich das dannn noch lohnt zu studieren, da ich voraussichtlich ja so oder so weiter programmieren übe, etc.
    aber wenn du schon sagst, dass du im studium eh nicht so viel gerlernt hast und eher in die bio(an meiner stelle) gehen würdest, dann bestärkt das meinen gedanken.

    mfg 😃



  • exigoner lass dich lieber nicht von volkard auf den falschen Weg bringen. 🙄



  • was hast du denn gemacht?



  • Ist das hier nen C++ Kurs ? 😉
    Wenn ich mal meinen Senf dazugeben darf (ohne den Thread ganz lesen zu müssen):
    Solltest du - immer noch unregistrierter - exigoner zwischen Informatik- + Bio- Studium schwanken, dann geh an eine Campus-Uni (alle Fakulltäten in einem Bau) und mach Bio.

    Gründe:

    • in Biologie lernst du imho wissenschaftliches Arbeiten besser als in Informatik
    • Informatik als Nebenfach oder Freizeitgestaltung ist kein Problem, da in selber Uni nebenan
    • in passenden Lehrstühlen der Biologie (Genetik, Kybernetik, Ökosysteme, Neuro, ...) wird viel programmiert/modelliert/simuliert

    (Sieht anders aus, wenn du Info besser findest, oder spezielle Ziele hast wie z.B. Compilerbau, CAD, HCI )

    Weiterhin:

    • Wer in einem Studium (Informatik oder nicht) nichts lernt ist selber Schuld
    • Programmieren Lernen ist i.A. nicht Teil eines Informatikstudiums (an einer FH vielleicht)
    • Gerade die Grundvorlesungen Informatik halte ich für sehr, sehr nützlich (EBNF, Schleifeninvarianten, Turingmaschinen, Automaten, O(n), von Neumann etc pp).
      (Was nicht darüber hinwegtäuscht, daß der Nutzen einem Studenten schwerlich klar ist und es oft weit dahergeholt scheint)

    Informier dich vor dem Studium, welche Arbeitsgruppen/Lehrstühle an der Fakultät gibt und wo der jeweilige Forschungsschwerpunkt liegt und gleich das ab mit deinen Interessen.
    Kümmere dich recht früh (4.-6. Semester) um einen Hiwi-Job - Denn das ist der Ort, wo du am besten lernst (und sogar Geld nebenbei verdienst).
    Ist ja klar, daß es für Biologen außerhalb von Uni/Pharmaindustrie wenig nicht-fachfremde Arbeitsplätze gibt...



  • Im Informatikstudium (zumindest ist das bei mir so, 6. Semester, TU, Inf.-Ing.) wirst Du auch sehr viel Mathematik haben. Wenn Du damit in der Schule Probleme hast, solltest Du es lieber bleiben lassen und Biologie studieren.

    Dass einem alles so zufliegt, kann ich gar nicht glauben. Es gibt zwar solche Glückskinder, auch bei uns, aber die sind wirklich sehr selten vielleicht 1 von 100 Studienanfängern.
    Und bestimmt denken mindestens 80 von 100 zu Beginn des Studiums, dass ja alles ein Klacks wird, schließlich waren sie in der Schule schon immer schlauer als die Lehrer...
    Naja im Hauptstudium haben dann noch vielleicht 30 von 100 überlebt.

    Was ich damit sagen will, stell Dir das Studium, nicht zu einfach vor. Es stellt schon gewaltige Ansprüche, aber es macht auch wirklich grossen Spass, wenn Du Dich eben für die Dinge begeistern kannst.

    Leider ist es auch so, dass viele zu Beginn des Studiums noch nicht wirklich wissen, was sie eigentlich wollen oder sie interessiert. Aber Du scheinst ja an Biologie und Informatik Interesse zu haben. Mein Tipp, schau Dich einmal im Netz um. Unis beschreiben meist sehr detailliert, was sie lehren. Vielleicht haben manche Biologie (Informatik) Studiengänge auch einiges aus dem jeweils anderen Fachgebiet auf dem Lehrplan stehen, was Dich interessiert.

    Die TU München, TU Karlsruhe, RWTH Aachen oder TU Darmstadt haben meiner Meinung deutschlandweit einen recht guten Ruf, was Informatik angeht. Ich selbst bin auf keiner der eben genannten Unis.



  • Jau. Das Motto heißt: Durchhalten + dabeibleiben. Später Richtung Master/Diplom wird's (gefühlt) einfacher, mehr an die eigenen Interessen angepasst und man kapiert plötzlich vieles, was man ein- zwei Jahre vorher gelernt hat, findet das garnicht mehr so kompliziert. Anderes gerät in Vergessenheit ..

    »TU München, TU Karlsruhe, RWTH Aachen oder TU Darmstadt« bieten glaub' ich sehr reine (technische) Informatik. Andere Unis bieten angewandte Informatik mit Schwerpunkten in anderen Bereichen, tragen das sogar manchmal im Namen: Wirtschaftsinformatik, Computerlinguistik, Bioinformatik (hat oft auch viel mit Chemie zu tun), Kognitionswissenschaft, Medieninformatik. Gibt auch was medizinorientiertes.

    Edit: Die Unis im "Osten" sind oft sehr gut ausgestattet (da im Laufe der 90ger komplett renoviert) und nicht gerade überlaufen (nur so'n Gerücht)



  • danke, für die vielen ratschläge. ich werd mich demnächst mal gründlich über gewisse universitäten und studienrichtungen informieren.
    in wie fern ist es eigentlich möglich verschiedene richtungen zu kombinieren, kann man eigentlich zwei richtungen zur gleichen zeit studieren? oder wie war der rat, das man dieses oder jenes als nebenfach studieren kann gemeint? kann man etwa sein studienplan selbst zusammenstellen und mischen oder ist das eher freizeitmäßig?

    ach, sieh mal einer an was ich noch zum oben geposteten link für bio-info gefunden habe.

    Allerdings kommt auch die Informatik nicht zu kurz: Informatik A und B, sowie algorithmische Bioinformatik stehen auf dem Programm. Und wer sich eher für die Mathematik interessiert, kann sich auf Computerorientierte Mathematik und Numerik bzw. Multivariate Statistik im 4. Semester freuen. Auch kann man mit seinem Wahlfach, für das man 12 cr einbringen muss, (entspricht ca. 2-3 grossen Vorlesungen) eigene Schwerpunkte setzen. Das Studium bietet also in einem gewissen Rahmen die Möglichkeit sein eigenes Bild von der Bioinformatik zu verfolgen. Meines Wissens ist der Studiengang an der FU Berlin einer der wenigen Studiengänge, wo das in diesem Maße möglich ist

    ich weiß aber nicht so recht ob bio-info das richtige studium ist um in die forschung zu gehen, oder ob ich da nur daten auswerte... 😃



  • kann man eigentlich zwei richtungen zur gleichen zeit studieren?

    wenn man das schafft 😉

    Nebenfächer sind oft offiziell Teil des Studiums - also ein muß.
    Biologen müssen sich im Grundstudium z.B. mit Chemie, Mathe (insb. Statistik), Physik auseinandersetzen.

    kann man etwa sein studienplan selbst zusammenstellen

    Ja nach Studiengang/Uni verschieden ? Kenne mich allerdings mit den heute modernen Bachelor-Master-Regelungen nicht aus .. Ist verschulter geworden.

    http://remember.unicum.de/evo/index.php?id=3054&languageid=1
    (von http://www.unicum.de/)
    google: vorlesungsverzeichnis kvv biologie mpi



  • Pdug schrieb:

    Gerade die Grundvorlesungen Informatik halte ich für sehr, sehr nützlich (EBNF, Schleifeninvarianten, Turingmaschinen, Automaten, O(n), von Neumann etc pp).

    hä???

    EBNF: praktische sache, wenn man eine sprache erfinden will und dazu einen compiler bauen. frage: wann haste das das letze mal gemacht, außer als übung im studium? wieso ist EBNF für dich sehr, sehr nützlich?

    Schleifeninvarianten: praktische sache, wenn man das offensichtliche auch noch beweisen will. frage: wann haste das das letze mal gemacht, außer als übung im studium? wieso sind schleifeninvarianten für dich sehr, sehr nützlich?

    Turingmaschinen: praktische sache? nee. wirklich net. allenfalls multitapemaschinen, da kann man einigermaßen drauf coden. aber wozu? frage: wann haste das das letze mal gemacht, außer als übung im studium? wieso sind turungmaschinen für dich sehr, sehr nützlich?

    Automaten: frage: wann haste das das letze mal gemacht, außer als übung im studium? wieso sind turungmaschinen für dich sehr, sehr nützlich? und nu sag nicht, um einen compiler zu bauen. die zeit der endlichen automaten zur syntax-analyse ist vorbei. rekursive absteigscompiler plätten die mistdinger in sachen performanche und in sachen einfachheit inzwischen locker.

    O(n): ok, praktische sache. aber dazu muß man echt nicht studieren.

    von Neumann: allgemeinbildung. also nicht, wie der mann hieß, sondern wie unsere rechner aufgebaut sind.

    etc pp: ???

    mir scheint, du verwechselt da was. vom info-studium ist vielleicht mal ein anteil von 5% "praktische sache das". wenn man mal nicht reinrechnet, daß es saupraktisch ist, hochdimensionale boole'sche räume zu kennen (wozu?), um drei semester später in codierungstheorie ne 1 zu schreiben (ist es denn so schlimm, wenn man einfach CRC32 benutzt und nicht selbst erfindet?).


Anmelden zum Antworten