Programmier-"Niveau"



  • Bitsy schrieb:

    Ich kann Xin's erste Antwort sofort unterschreiben.
    Die Problematik ist nun, dass man so gut sein kann wie man will, wenn man die Entwicklung der Buzzwords nicht verfolgt (hat), kommt man an keinem Personalchef vorbei. Auf den ersten Blick vielleicht sogar zurecht, denn es fehlen dann einfach Vokabeln in der Kommunikation mit einem Team. Die Frage bleibt - wie oft arbeitet man tatsächlich in einem Team?

    Bleibt die Frage, was ist, wenn sich Vokabeln in verschiedenen Bereichen unterschiedlich benutzt werden. Array, Vector, ArrayList, Zeiger auf erstes Element. Als mir das erste mal jemand mit einem Vector kam, war ich in der Mathematik.
    Jemand hier, der einen std::vector schonmal für die Vektorrechnung benutzt hat? ^^

    Bitsy schrieb:

    Persönlich habe ich da mal haarsträubende Erfahrungen mit der Nachfrage nach der Nutzung von Design Patterns gehabt. Nachdem ich mir mal angesehen habe, um was es da überhaupt geht, mußte ich feststellen, dass ich viele der Techniken unbewußt schon lange angewendet habe - wahrscheinlich weil ein ordentliches Design diese Methoden regelrecht erzwingt.

    Hehehe, die Erfahrung habe ich auch gemacht. Vollkommen entsetzt stand mein Chef vor mir - damals war ich noch Praktikant - und meinte, ich müsse unbedingt und sofort das Buch der Gang Of Four lesen. Also habe ich mir das Buch gekauft - und das ist wirklich ein sehr gutes Buch - aber da stand jetzt auch nichts Neues drin.

    Dazu muss man sich vielleicht auch einfach vor Augen führen, dass "Entwurfsmuster" nicht als wissenschaftliches Lehrbuch geschrieben wurde, sondern als Zusammenfassung von Erfahrungen, die eben erfahrene Programmierer so gemacht haben, die sich zusammengesetzt haben und darüber philosophiert haben. Vermutlich in einem freundlicheren Umgangston, als auf den vorherigen Seiten dieses Threads, aber sicherlich genauso engagiert.
    Man hat also aufgeschrieben, was jeder benutzt und den Dingen einen Namen gegeben.

    Was ich für viel Schlimmer finde ist die Erwartungshaltung, dass jeder jeden Namen kennen soll und man sofort als unfähig dasteht, wenn ein Wort nicht den "Achja, klar..."-Reflex auslöst. So flog mir mal das "Curiously Recurring Template Pattern (CRTP)" um die Ohren. Jemand eine Ahnung, was das ist?
    Ich wusste es auch nicht, ich musste es auch gerade erst in meinem Forum suchen, weil sowas merke ich mich auch nicht.

    Worum geht's? Man sagt der Templateklasse, von der man ableitet, wer man selbst ist. class B : public A<B>. Jemand dabei gewesen, der bei "Curiously Recurring Template Pattern" schon wusste, worum es ging?

    Wenn mir also jemand kommt und mir erklärt, dass eine Lösung mit CRTP erledigt werden soll, habe ich kein Problem damit, dem ein freundliches "Häh?" zu entgegnen. CRTP benutze ich jetzt seit... sagen wir einfach Jahren, keine Ahnung, aber dass es dafür wieder einen Namen und eine Buchstabenkombination für gibt, weiß ich auch erst seit diesem Jahr. Und nach diesem Posting habe ich das auch wieder vergessen.
    Das einzige Design Pattern, dass ich nicht vergesse ist OOP, aber das auch nur, weil so viele es zum Paradigma erkoren haben... und darüber kann man mit mir wieder vortrefflich streiten. 😉

    Bitsy schrieb:

    Und wie auch immer ein Niveau definiert sein mag - bei der Anwendung mehrerer Sprachen verteilt sich dieses sehr schnell...

    Das ist mal wirklich wunderschön formuliert. 👍

    ScottZhang schrieb:

    Klar sind das Buzzwörter, die man für sich nicht braucht. Aber wie wir in diesem Thread eindrucksvoll festellen konnten, ist das notwenidg für Kommunikation.

    Nein, die Wörter braucht man zur Kommunikation nicht zwangsläufig. Zur Kommunikation benötigt man Kommunikation. Das heißt, es gibt ein ganz übliches Kommunikationsprotokoll. Begrüßung, Sprachabgleich, Informationsvermittlung, Verabschiedung. Wer den Sprachabgleich überspringt und bei der Informationsübermittlung nicht verifiziert, dass die Informationen korrekt übermittelt werden, der scheitert an der Kommunikation. Nicht umsonst gibt es soviele Codepages... ^^
    Das berühmte Beispiel, wenn die Touris in Köln einen Halven Hahn bestellen und sich wundern. Wer vorher nicht die Codepage abgleicht, hat eine 50:50-Chance zu bekommen, was er bestellt hat. Schließlich weiß weder der Kellner, was der Gast bestellt hat, noch der Gast, was der Kellner verstanden hat.

    PS: Ich bin mir über die Bedeutung des Wortes 'Vektor' im Klaren... nur bevor mir jetzt einer erklärt, dass ich das falsch verstehen würde... 😉



  • Xin schrieb:

    Jemand eine Ahnung, was das ist?

    Sicher doch. CRTP ❤ 🕶



  • cooky451 schrieb:

    Xin schrieb:

    Jemand eine Ahnung, was das ist?

    Sicher doch. CRTP ❤ 🕶

    Vielleicht hätte man es CRTA nennen sollen, besonders weil ein C++ Idiom ist. Aber technische Begriffe als Buzzword zu bezeichen, weil man für unnötig halt das Kind einen Namen zu geben, naja....



  • Zeus schrieb:

    Vielleicht hätte man es CRTA nennen sollen, besonders weil ein C++ Idiom ist. Aber technische Begriffe als Buzzword zu bezeichen, weil man für unnötig halt das Kind einen Namen zu geben, naja....

    Ich halte Worte für unabdingbar, um komplexe Sachverhalte zu denken und zu kommunizieren.

    Nur werden Wortneuschöpfungen inflationär. Für die Basics gibt es zuviele Worte, für die allgemein seltener gebrauchten Dinge finden sich sowieso meist beliebige interne Buzzwords.

    Zu gibt es bei uns den Fachbegriffe "zumseln", "zubbeln" oder "bläähblubb". Ich denke, dass das der einzige Weg sinnvoller Kommunikation in der Zukunft ist: Sich in einem Feld ein eigenes, aber überschaubares Wörterbuch zu halten mit in der Allgemeinsprache ungewöhnlichen Worten. Wie ein Namensraum: Firma::zumseln. Quasi die Schaffung eigener Wortschöpfungen, aber eben ohne den Willen, diese Wortschöpfungen in die Welt hinauszutragen und als neuen Standard zu verkaufen.
    So ist zubbeln bei uns das Verschieben von Punkten, Kanten oder Flächen eines Volumenkörpers im 3D-Raum, zumseln ist das gleiche wie Zubbeln, nur halt in epsilontischen Bereich. Das wird vermutlich nie im Informatikduden landen... 😉
    Bläähblubb ist ein temporär definiertes Wort, dass während eines Gesprächs definiert wird und nur für den Verlauf des Gesprächs Gültigkeit besitzt, um eine Idee mit weniger verschachtelten Sätzen vermitteln zu können.
    Diese Worte liegen im sozialen Netz unter der IP 192.168.$(Kernentwicklung).0: Nicht von außen addressierbar.
    Die ganzen Konzepte finden sich in der Informatik reihenweise wieder, nur halt eben nicht in der Sprache der Informatiker. ^^

    Das ist ja eben jetzt nichts Neues. Neu wäre lediglich das Bewusstsein und die Akzeptanz, dass man allgemein weniger bedeutende Dinge entweder erstmalig erklärt und sich dann auf ein gemeinsames Wort einigt.

    Das mache ich auch mit mir selbst aus, um komplexe Ideen zu denken und zu abstrahieren, die einfach noch keinen Namen haben. Die bekommen dann einen verpasst, die nicht zu meiner Sprache gehören, aber das kann ich so ja keinem anderen erklären. Ich kann's teilweise ja nichtmals aussprechen, weil es eher meistens eher Störgeräuche als Worte sind. Es soll im Gedankengang ja schon auffallen. 😉

    Dieses Störgeräuch, das ein .NET Entwickler bei einem Assemblerentwickler vermeldet, muss dem Assemblerentwickler ja nicht unbekannt sein. Nur hat er dafür eben eine andere Bezeichnung, eine andere Perspektive. So wie ich mich weigere OOP als Paradigma anzuerkennen, weil es nur ein DesignPattern ist, eine übliche Lösung für ein übliches Problem der imperativen Entwicklung.

    Wenn man die üblichen Wege eines Kommunikationsprotokolls akzeptiert und zwar auch für ein Forum, dann bedeutet das einen gewissen Overhead, aber deutlich kontrolliertere und damit effizientere Informationsweitergabe, weil sich alle Seiten die Information sparen kann, dass man kein Anfänger mehr ist, auch wenn das Gegenüber das gerade mal vermutet.

    Das bedeutet, dass man Buzzwords aber als "variabel" betrachtet und nicht als Gottgegeben. Einige davon werden sich abschleifen, bis man das praktischste Wort in die Alltagssprache der Informatik übertragt und daraus statische Begrifflichkeiten wie Bedingung, Schleife der Stack entstehen.



  • Hallo,

    Xin schrieb:

    ScottZhang schrieb:

    Klar sind das Buzzwörter, die man für sich nicht braucht. Aber wie wir in diesem Thread eindrucksvoll festellen konnten, ist das notwenidg für Kommunikation.

    Nein, die Wörter braucht man zur Kommunikation nicht zwangsläufig. Zur Kommunikation benötigt man Kommunikation. Das heißt, es gibt ein ganz übliches Kommunikationsprotokoll. Begrüßung, Sprachabgleich, Informationsvermittlung, Verabschiedung. Wer den Sprachabgleich überspringt und bei der Informationsübermittlung nicht verifiziert, dass die Informationen korrekt übermittelt werden, der scheitert an der Kommunikation. Nicht umsonst gibt es soviele Codepages... ^^
    Das berühmte Beispiel, wenn die Touris in Köln einen Halven Hahn bestellen und sich wundern. Wer vorher nicht die Codepage abgleicht, hat eine 50:50-Chance zu bekommen, was er bestellt hat. Schließlich weiß weder der Kellner, was der Gast bestellt hat, noch der Gast, was der Kellner verstanden hat.

    Ja genauso hab ich das gemeint. Schade, dass das nicht klar rübergekommen ist.
    Diese Buzzwörter zu kennen heßt nix anderes als die Codepages gelesen zu haben, in deiner Analogie. Man kennt diese Buzzwörter nur wenn man kommuniziert.

    Darum sind das eben nicht nur tolle Begriffe für möglicherweise triviale Sachen, die man getroßt ignorieren kann. Dahinter verbirgt sich der Stand der Technik ...
    (Ich gehe jetzt ma davon dass wir von jemanden sprechen der nicht nur die Wörter kennt sonder auch deren Bedeutung :))



  • Sorry deine Thread haben viel zu viel raschen als, dass man sich die durchlesen sollte. Wenn man sich intensive beschäftigt und darüber redet, wird man nicht daran rumkommen, eine Definition mit ein einem Name zu versehen. Sonst gibst einfach zu viel Redundanz in der Nachricht.

    Ich sehs schon
    Das Pattern, dass so Aussieht und dem Zweck dienst ist orthogonal zu dem, dass für dies und das entwickelt.

    Anstatt zu sagen
    A ist orthogonal zu B entwickelt.



  • ScottZhang schrieb:

    Ja genauso hab ich das gemeint. Schade, dass das nicht klar rübergekommen ist.
    Diese Buzzwörter zu kennen heßt nix anderes als die Codepages gelesen zu haben, in deiner Analogie. Man kennt diese Buzzwörter nur wenn man kommuniziert.

    Darum sind das eben nicht nur tolle Begriffe für möglicherweise triviale Sachen, die man getroßt ignorieren kann. Dahinter verbirgt sich der Stand der Technik ...

    Die Umschreibung finde ich gut. "Dahinter verbirgt sich der Stand der Technik."

    Ich sehe das anders. Ich denke, dass die Technik sich in den letzten Jahren etwas umstrukturiert hat, aber im Prinzip unverändert ist. Computer werden schneller, Hilfsprozessoren wie GPUs spezialisieren sich für gewisse Aufgaben. Java und .NET ist Technik aus den 60ern, Hilfsprozessoren waren in den 80ern schon Stand der Technik, zum Beispiel als eine CPU noch nicht zwangsläufig eine FPU oder MMU besaß.

    Ich bin seit 1985 mit Computern unterwegs. Ist seit der Jahrtausendwende irgendetwas bemerkenswertes passiert? Hab ich was verpasst? Wir haben uns Ende der 90er in die 70er zurückgebeamt und befinden uns auf der Zielgrade zurück in die 90er. Der Stand der Technik findet sich irgendwo Mitte der 90er. Ich vermute in etwa 10 Jahren sind wir da angekommen. Das ist für mich persönlich blöd, weil bisher konnte ich über 15 Jahren sagen, wie die Zukunft aussieht, in 10 Jahren muss ich vermutlich selber darüber nachdenken.

    Seit meinem Studium wird mir der Stand der Technik nur in leeren Worthülsen verkauft. Ich möchte nicht wissen, wieviel Zeit ich für Begriffe wie RAII, Closure, Metaprogrammierung etc. verschwendet habe, auf der Suche nach der großen Neuerung und eigentlich immer nur heiße Luft... mal eine Vereinfachung, aber in der Regel nur ein Name für irgendwas, was es schon lange gab - nur halt nicht unter dem Namen.
    Software wird besser bedienbar, zuverlässiger, aber sie erfindet sich nicht neu. Vor allem wird sie klobiger.

    Was ist mit den Menschen, die Bedeutungen kennen, aber nicht die Worte dafür, die in der Gegenwart modern sind? Der Stand-der-Technik sind in der Regel nur eine neue Codepage, aber dahinter verbirgt sich der gleiche Kram wie zuvor.

    Mein derzeitiges Lieblingswort ist "die Cloud". Heute speichert man nicht mehr altmodisch Daten mit (S)FTP auf einem Internetserver. Heute speichert man in der Cloud. ^^

    Als ich im Studium war, gab es noch keine Cloud. Aber wenn zwei Rechner über ein Netzwerk verbunden waren, dann führte man auf einer Konzeptzeichnung von beiden eine Linie in einen wolkenartigen Kringel. Und während ich zu Hause nur ein altmodisches NAS stehen habe, hat ein Freund von mir schon ein NAS mit Cloud-Funktion... Bingo! 😉

    Zeus schrieb:

    Sorry deine Thread haben viel zu viel raschen als, dass man sich die durchlesen sollte. Wenn man sich intensive beschäftigt und darüber redet, wird man nicht daran rumkommen, eine Definition mit ein einem Name zu versehen. Sonst gibst einfach zu viel Redundanz in der Nachricht.

    Ich würde das nicht als Rauschen bezeichnen, sondern als Griff. Du hast mein Posting zwar gut zusammengefasst, aber der Zusammenfassung fehlt, dass es einen Grund gibt und bereits Lösungen in technischen Kommunikationsprotokollen. Für die meisten Leser ist eine derartige Zusammenfassung ein Satz, der da halt so rumsteht. Er kommt auf den Punkt, aber er zeigt nicht, von wo er kommt und er weist nirgendwo hin. Es ist eine Ortsangabe und kein Weg.
    Die Bedeutung ist vergleichbar, aber es ist nicht zu Begreifen.



  • Xin schrieb:

    Zeus schrieb:

    Sorry deine Thread haben viel zu viel raschen als, dass man sich die durchlesen sollte. Wenn man sich intensive beschäftigt und darüber redet, wird man nicht daran rumkommen, eine Definition mit ein einem Name zu versehen. Sonst gibst einfach zu viel Redundanz in der Nachricht.

    Ich würde das nicht als Rauschen bezeichnen, sondern als Griff. Du hast mein Posting zwar gut zusammengefasst, aber der Zusammenfassung fehlt, dass es einen Grund gibt und bereits Lösungen in technischen Kommunikationsprotokollen. Für die meisten Leser ist eine derartige Zusammenfassung ein Satz, der da halt so rumsteht. Er kommt auf den Punkt, aber er zeigt nicht, von wo er kommt und er weist nirgendwo hin. Es ist eine Ortsangabe und kein Weg.
    Die Bedeutung ist vergleichbar, aber es ist nicht zu Begreifen.

    Ich glaub nicht, dass du mein Punkt verstanden hast, du willst hier etwas jemand beibringen, etwas vermitteln? Ich hätte Shade kurzfassung im ersten lesen total zugestimmt - eh? Dabei hast du doch etwas anders geschrieben. Du rauscht! Bloß wessen problem ist das? Ich glaub nicht meins, immerhin muss du den Walltext hier hinterschieben.



  • Habt ihr noch immer nicht genug von dem Thema Niveau? 😕
    Nach meinem Sprachverständnis zeichnet Niveau (französisch) so etwas wie level (englisch) oder Höhe (deutsch) aus. Egal in welcher Sprache, es muss einen Bezug zum Messen - also eine Messlatte mit einer Messvorschrift - geben. Wer als Programmierer 'Hello World' ohne fremde Hilfe hinbekommt, kriegt 1 Punkt von 100 😃



  • Zeus schrieb:

    Ich glaub nicht, dass du mein Punkt verstanden hast, du willst hier etwas jemand beibringen, etwas vermitteln? Ich hätte Shade kurzfassung im ersten lesen total zugestimmt - eh? Dabei hast du doch etwas anders geschrieben. Du rauscht! Bloß wessen problem ist das? Ich glaub nicht meins, immerhin muss du den Walltext hier hinterschieben.

    Du hast recht... ich habe keine Ahnung, worauf Du Dich gerade beziehst und ich verstehe Dich nicht.
    Ich möchte jemandem etwas beibringen? ... und wem? Die Frage kannst Du auch als "Nein" auffassen, bisher findet hier nur eine Unterhaltung statt.

    Walltext? Ein Gedanke, der länger als ein einzelner Satz ist, ist für Dich Rauschen? Verstehe ich das so richtig? Und das wäre dann mein Problem? Ich gehe davon aus, dass ich das hier falsch verstehe.... oder hoffe es zumindest...

    Vielleicht fügst Du Deinem Punkt auch etwas mehr "Rauschen" hinzu. Setzt Deinen Punkt in Beziehung, spannst Deinem Gedanken eine Dimension auf, beschreibst, wo Dein Punkt herkommt und wo Du eigentlich mit seiner Erwähnung hinwillst. Ich glaube, dann verstehe ich Dich besser. Dafür wäre aber etwas mehr Text erforderlich.



  • Was ein nerviger Thread. Immer im NadrW ganz oben, dabei diskutiert ihr hier nur ueber irgendwelchen Bullshit. Und das 24/7.



  • Xin schrieb:

    Jemand hier, der einen std::vector schonmal für die Vektorrechnung benutzt hat? ^^

    Wir hatten ein Projekt das von einem externen entwickelt wurde der das neben der Uni her gemacht hat und gleichzeitig noch ein Buch darüber geschrieben hat.
    War ein 3D Spiel das auf nem Automaten lief.
    Der hat überall 3 Element grosse std::vector<float> als 3D-Vektoren hergenommen.
    Überraschenderweise war das Ding ein bisschen langsam *g*.



  • Hi,

    irgendwie wird hier ziemlich auf abgehobenem Niveau diskutiert ohne auf das wesentliche zu kommen.
    Sinn von Programmen ist es weder mit RAII zu verwenden, noch auf Pattern zu basieren, sondern ganz einfach eine jeweils gegebene Aufgabe möglichst perfekt zu erfüllen.

    Ich kenne da einen Fall einer "ganz renomierten Edelschmiede", die auf solche Formalismen sehr viel Wert legt.
    Aber wenn ein simpler Benutzer wissen muss, dass er bei einer bestimmten Eingabe bei einer Reihe von Checkboxen z.B. von der 14 bis zur 19 (die nicht mal durch ne Linie abgetrennt sind) ein Kästchen, und zwar genau eins und nicht null oder zwei ankreuzen muss, dann gehört das den Entwicklern so lange um die Ohren geschlagen bis sie ihren Job wegen durch die Schläge verursachtem Parkinson augeben müssen.

    Dass ein Programm (in der Mehrzehl der Fälle) richtig rechnen muss ist klar, darüber brauchen wir nicht zu reden. Auch wenn z.B. viele Steuerberatungsprogramme noch nicht mal dieser Anforderung nachkommen.
    Aber wie das intern gemacht wird, ist von der konkreten Sache abhängig.
    Wenn ich mir mal schnell ein Werkzeug zusammenfrickle, um damit eine spezielle Aufgabe zu lösen, dann sieht das schon mal ein wenig improvisiert aus (auch intern). Wenn ich dagegen ein Programm an private Nutzer wo hunderte damit rechnen rausgebe, muss es absolut stabil laufen und möglichst idiotensicher sein. Gebe ich es aber nur an 2-3 Ämter raus, kann ich eventuell mit der einen oder anderen Nachfrage leben. Ist es für den Kollegen im Nachbarzimmer, kann ich mir viele Sachen sparen, weil der im Notfall mal rüberkommen kann. Wenn er es aber als Dauerarbeitsinstrument benutzen soll, und nicht nur für eine eimalige Sache, dann muss es auch wieder großen Wert auf Stabilität und bedienfreundlichkeit legen.

    Ich gebe zu, dass bei den Sachen, die ich hier mache auch ein paar Sachen dabei sind, die ich überhaupt nicht richtig begriffen habe wie sie funktionieren. Aber es waren Programme die sich bewärt haben und unter dBase oder Foxpro oder ähnlichem liefen und die auf neue Umgebungen (Delphi) umgestrickt wurden. Ich bin davon ausgegangen, dass der Rechenalgoritmus schon stimmen wird, und dass die, die dafür verantwortlich waren das damals richtig gemacht haben. Wenn sie mal generell neu gemacht werden, dann wird auch darüber zu befinden sein, aber im Moment wäre es unnötiger Luxus.

    Auch arbeite ich vielfach, wo es keine weiteren Folgen hat einfach mit leeren try except-Blöcken. Bei einem Syntax-Highlighting macht es nichts wenn unter bestimmten Bedingungen das Ding was vergisst. Wenn ich dagegen was zu berechnen habe, dann muss ich mir schon gedanken machen, was bei einem Fehler passieren sollte. Aber gerade, wenn auf was aufaddiert wird, und bei ner Division durch null ist nichts aufzuaddieren, dann spare ich mir da auch gleich mal ne Reaktion, weil ja das Übergehen des Eintragens schon ausreichende Reaktion ist.

    Auch die allgemeine Regel dass Klammern nicht mit Leerzeichen abgetrennt werden verwende ich nicht. Ich arbeite mit meiner Software alleine, und empfinde es als übersichtlicher. Aber das sid alles Sachen, die nur gehen, weil ich der einzige neben Kollege Compiler bin, der mit meinem Quelltext umgehen muss.

    Würde ich in einem Team arbeiten, wären das natürlich alles wichtige Dinge, weil es hilft, den innerbetrieblichen Kontakt zu optimieren. Wenn man mit anderen zusammen arbeitet, und jeder muss sich für jeden auf einen anderen Stil einstellen, dann hat man mehr mit umdenken zu tun als mit programmieren. Aber selbst das ist bewältigbar, wenn man ältere Kollegen im Team hat, die man nicht mehr umkrempeln kann, die aber ansonsten gut arbeiten. Dann schafft man eben definierte Schnittstellen, und jeder ist in seiner Box zu Hause und selbst verantwortlich. (Problem nur, wenn der Kollege mal geht) Mehr als persönliche Schrullen würde es mich stören, wenn der Kollege z.B. noch nie Scott Meyers gelesen hätte.

    Aber das alles entscheidet letztlich nicht über den Erfolg eines Programms. Ein gutes Programm muss es dem Nutzer nicht nur ermöglichen damit zu arbeiten, sondern muss sich ihm aufdrängen. Es muss erreichen, dass der Nutzer damit arbeiten WILL. Da ist das eine, dass es eine aufgeräumte Oberfläche hat, wo der Nutzer immer sieht wo er ist und was er gerade macht und was er tun könnte, es muss handlich sein... aber es muss dem Nutzer auch auf SEINEM Gebiet entgegen kommen. Wenn also z.B. Angaben für den Nutzer in Zoll bereitstehen, dann ist es nicht sehr weiterführend von ihm zu erwarten dass er in cm umrechnet. Es sind viele Sachen, auf die man als Nur-Programmierer gar nicht kommt, die aber im praktischen Einsatz über wirklichen Nutzwert entscheiden.

    Also nicht die Akademische Glocke zu hoch hängen, sondern vor allem an den Nutzer denken, der damit arbeiten will/soll. Und vor allem bei aller Perfektion die Lebensdauer und Nutzungshäufigkeit mit überdenken. Bei einem Programm das einmal rechnet ist es egal, wie lange das dauert. Bei einem welches jeden Tag oft verwendet wird, ist es mit die wichtigste Eigenschaft.

    Gruß Mümmel



  • @muemmel
    Es gibt nunmal bestimmte Dinge die ein Programm unübersichtlich und unwartbar machen.
    Manuelle Resourcenverwaltung gehört da dazu.
    Da braucht es schon sehr gute und vor allem disziplinierte Programmierer damit das leserlich und wartbar und korrekt bleibt.
    Dummerweise sind genau die Programmierer die kein RAII verwenden üblicherweise auch die die nicht besonders gut und/oder diszipliniert sind.
    Wären sie nämlich beides, dann würden sie verstehen was es bringt, und würden ggf. vermutlich auch nicht davor halt machen mal ein paar Stunden oder gar 1-2 Tage ihr Hirn einzuschalten während sie sich in das für sie neue Thema einarbeiten.
    Wobei RAII hier nur ein Beispiel ist. Eine weitere Sache ist z.B. Code-Duplizierung zu vermeiden bzw. auch Strukturierung. Man mag es nicht glauben, aber es gibt Programmierer die ab einer bestimmten Projektgrösse anscheinend Angst bekommen neue Funktionen zu definieren. Die schreiben dann einfach Code in Funktionen dazu. (BTW: ich sitze gerade vor einem so entstandenen 2000 Zeilen Funktionsmonster. *Freude*)

    Schlechte Programmierer dagegen schreiben schlechten Code.
    Wobei "schlecht" hier eine bewusste Vereinfachung ist. Letztlich ist mir auch egal warum ein "schlechter" Programmierer schlechten Code schreibt. Wenn er blitzgescheit ist, aber aus irgend einem anderen Grund total unwartbaren Code schreibt ist er trotzdem ein schlechter Programmierer.

    Und daran ändert sich auch nix wenn du bestimmte Dinge als "zu hoch gehängte Akademische Glocke" bezeichnest.

    Die wenigsten unwartbaren Programme sind für den Benutzer gut. Vorausgesetzt das Programm wird lange genug "gewartet" (=über Monate oder Jahre hinweg immer wieder erweitert/geändert) ergibt sich irgendwann mal ein so verbuggter und inkonsistenter Dreckshaufen dass kein User gerne damit arbeiten mag. Also ist es IMO eine Voraussetzung halbwegs sauberen Code zu schreiben, wenn man ein gut bedienbares Programm haben will. Es ist aber eben auch nur eine Voraussetzung, und für sich genommen noch nicht ausreichend.

    Und nachdem das Thema hier das Programmieren war, und nicht User-Interface-Design, würde ich mal sagen: deine Einwände sind völlig off-topic 🤡



  • @muemmel
    Es gibt nunmal bestimmte Dinge die ein Programm unübersichtlich und unwartbar machen.
    Manuelle Resourcenverwaltung gehört da dazu.
    Da braucht es schon sehr gute und vor allem disziplinierte Programmierer damit das leserlich und wartbar und korrekt bleibt.
    Dummerweise sind genau die Programmierer die kein RAII verwenden üblicherweise auch die die nicht besonders gut und/oder diszipliniert sind.
    Wären sie nämlich beides, dann würden sie verstehen was es bringt, und würden ggf. vermutlich auch nicht davor halt machen mal ein paar Stunden oder gar 1-2 Tage ihr Hirn einzuschalten während sie sich in das für sie neue Thema einarbeiten.
    Wobei RAII hier nur ein Beispiel ist. Eine weitere Sache ist z.B. Code-Duplizierung zu vermeiden bzw. auch Strukturierung. Man mag es nicht glauben, aber es gibt Programmierer die ab einer bestimmten Projektgrösse anscheinend Angst bekommen neue Funktionen zu definieren. Die schreiben dann einfach Code in Funktionen dazu. (BTW: ich sitze gerade vor einem so entstandenen 2000 Zeilen Funktionsmonster. *Freude*)

    Schlechte Programmierer dagegen schreiben schlechten Code.
    Wobei "schlecht" hier eine bewusste Vereinfachung ist. Letztlich ist mir auch egal warum ein "schlechter" Programmierer schlechten Code schreibt. Wenn er blitzgescheit ist, aber aus irgend einem anderen Grund total unwartbaren Code schreibt ist er trotzdem ein schlechter Programmierer.

    Und daran ändert sich auch nix wenn du bestimmte Dinge als "zu hoch gehängte Akademische Glocke" bezeichnest.

    Die wenigsten unwartbaren Programme sind für den Benutzer gut. Vorausgesetzt das Programm wird lange genug "gewartet" (=über Monate oder Jahre hinweg immer wieder erweitert/geändert) ergibt sich irgendwann mal ein so verbuggter und inkonsistenter Dreckshaufen dass kein User gerne damit arbeiten mag. Also ist es IMO eine Voraussetzung halbwegs sauberen Code zu schreiben, wenn man ein gut bedienbares Programm haben will. Es ist aber eben auch nur eine Voraussetzung, und für sich genommen noch nicht ausreichend.

    Und nachdem das Thema hier das Programmieren war, und nicht User-Interface-Design, würde ich mal sagen: deine Einwände sind völlig off-topic 🤡



  • hustbaer, du wiederholst dich 😉



  • Xin schrieb:

    Worum geht's? Man sagt der Templateklasse, von der man ableitet, wer man selbst ist. class B : public A<B>. Jemand dabei gewesen, der bei "Curiously Recurring Template Pattern" schon wusste, worum es ging?

    Und wer weiß bei deiner Beschreibung worum es geht? Warum benutzt man das? Wobei ist das hilfreich? CRTP->erster Link auf Google. class B : public A<B>-> ???



  • otze schrieb:

    Xin schrieb:

    Worum geht's? Man sagt der Templateklasse, von der man ableitet, wer man selbst ist. class B : public A<B>. Jemand dabei gewesen, der bei "Curiously Recurring Template Pattern" schon wusste, worum es ging?

    Und wer weiß bei deiner Beschreibung worum es geht? Warum benutzt man das? Wobei ist das hilfreich? CRTP->erster Link auf Google. class B : public A<B>-> ???

    Falsche Fragestellung: Wer das Pattern kennt, aber nicht den Namen, wird in einer Diskussion nicht zwangsläufig Google fragen können. Diskussionen gibt es ja nicht nur in Internetforen, sondern auch von Angesicht zu Angesicht.

    Es ging eben darum, dass man nicht alle Buzzwords kennen muss/kann... sollte?
    Wenn Du mich morgen auf CRTP ansprichst, werde ich keine Ahnung, wovon Du sprichst. Das Pattern kenne ich trotzdem.



  • Xin schrieb:

    Falsche Fragestellung: Wer das Pattern kennt, aber nicht den Namen, wird in einer Diskussion nicht zwangsläufig Google fragen können.

    Doch sicher, wer in der Lage ist Google gut zu benutzen, wird diese Dokument finden (greade gegooglt): http://www.dre.vanderbilt.edu/~sutambe/documents/More C++ Idioms.pdf



  • Zeus schrieb:

    Xin schrieb:

    Falsche Fragestellung: Wer das Pattern kennt, aber nicht den Namen, wird in einer Diskussion nicht zwangsläufig Google fragen können.

    Doch sicher, wer in der Lage ist Google gut zu benutzen, wird diese Dokument finden (greade gegooglt): http://www.dre.vanderbilt.edu/~sutambe/documents/More C++ Idioms.pdf

    Zurück zum Niveau: Ich frage mich gerade, wie man eine Diskussion zielführend fortsetzen soll, bei der zwischenzeitlich das Ziel ausgetauscht wird. Das ist wie mit Navi fahren und auf halber Strecke es auf Heimatort umstellen und glücklich sein, dass man am Ziel angekommen ist.

    Ich glaub' ich mach jetzt noch was sinnvolles...

    Trotzdem, guter Link. 🙂


Anmelden zum Antworten