Christian Seiler: Ästhetik und Klarheit von Code

Beitrag lesen

Hallo Martin,

Aber sich so anzustellen ist doch albern.

Es ist der verzweifelte Versuch, andere darauf aufmerksam zu machen, dass sie sich deutlich vom gebräuchlichen Wortschatz der technisch orientierten Fraktion entfernen. Und zwar ohne Notwendigkeit. Ich würde es als unentschuldbares Versäumnis sehen, diesen Hinweis zu unterlassen.

Ich sehe den Disconnect eher bei Dir als bei Tim. Nichts für ungut, aber Tim hat einen Wortschatz verwendet, der nicht nur irgendwelche "Modeworte" enthält, sondern tatsächlich das Vokabular ist, das man heutzutage beim Programmieren von modernen Sprachen verwendet.

Wenn man die ganze Zeit nur Assembler, C, Fortran oder Basic programmiert, dann mag man ja vielleicht noch irgendwie um diese Worte herumkommen. Aber in so ziemlich allen anderen Sprachen tauchen diese Begriffe auf. In Python gibt es u.a. "list comprehension", "generator expressions" und "lambda" als Stichworte (alle aus der Ecke der funktionalen Programmiersprachen), selbst für die nächste Version Java 7 wird über anonyme Funktionen nachgedacht unter dem Stichwort "Lambda". Im neuen C++-Standard taucht das Stichwort "lambda expressions" auf - und insbesondere aktuelles C++ versteht man nur, wenn man einen ganzen Rattenschwanz an Begriffen kennt, die (als Begriffe) ihren Ursprung in der Theorie gehabt hat, wie zum Beispiel SFINAE, CRTP oder "rvalue references". map/reduce gibt es in so ziemlich jeder modernen Sprache (PHP kennt die z.B. array_map/array_reduce). Currying ist nunmal ein gewisser Fachbegriff im Lambda-Kalkül - und natürlich ist das letztlich irgendwo syntaktischer Zucker, aber sehr praktischer syntaktischer Zucker - der so fast überall auch als Currying bezeichnet wird.

Seit einigen Jahren ist relativ viel in Bewegung bei so ziemlich allen Programmiersprachen bis auf vielleicht reines C oder Fortran, und fast alle bisher imperativen Sprachen borgen sich immer mehr Konzepte von funktionalen Programmiersprachen - eben unter auch Namen, die sich in diesen eingebürgert haben. Das ist mehr als bloß eine Modeerscheinung, Google hat map/reduce in 2004 populär gemacht, die Bezeichnung "lambda" gibt's schon seit Ewigkeiten (> 10 Jahre) in Python, etc.

Wenn Du aus irgend einem Grund noch nie von diesen spezifischen Begriffen gehört hast: Ok, hey, nicht schlimm, es gibt Suchmaschinen. Aber Tim zu kritisieren, dass er ein Vokabular verwendet, das von der Realität ist, ist fehl am Platze. Gewöhne Dich lieber daran; ob es Dir gefällt oder nicht, die Begriffe, die Tim verwendet hat, werden immer mehr in Gebrauch geraten, auch bei "klassischen" Programmiersprachen.

Zudem - selbst wenn es sowas ähnliches bereits gibt und man z.B. Lambdas bsi zu einem gewissen Grad in C durch Funktionspointer emulieren kann - Begriffe kommen oft mit Paradigmenwechseln daher. In den 90er-Jahren - wie oft wurden da anonyme Funktionen eingesetzt in der Form wie das heute passiert? Selten, meist nur in der Theorie. Schau Dir mal Javascript an, wie es Leute vor 12 Jahren oder so geschrieben haben - da wurden selten anonyme Funktionen verwendet, obwohl die Sprache das ja damals bereits konnte. Inzwischen ist das anders, weil Leute eben diese funktionalen Konzepte entdeckt haben. Und inzwischen wirst Du kaum einen guten Javascript-Programmierer antreffen, der nicht weiß, dass der Begriff "lambda expression" für eine anonyme Funktion steht, obwohl das in Javascript nicht einmal ofiziell so heißt. Fachbegriffe sind wichtig, in ihnen steckt mehr, als bloß die Beschreibung des Konzepts an sich, sondern eben auch die Referenz auf das Paradigma, welches dahintersteckt.

Viele Grüße,
Christian

3 88

Ästhetik und Klarheit von Code

Tim Tepaße
  • programmiertechnik
  1. 2
    asdf
    1. 0
      Jeena Paradies
      1. 0
        asdf
      2. 2
        molily
        1. 0
          Jeena Paradies
      3. 2
        Stefanie M.
    2. 0
      Tim Tepaße
      1. 1
        dedlfix
  2. 0
    Jeena Paradies
    1. 2
      Tim Tepaße
      1. 2
        Jeena Paradies
  3. 0
    Der Martin
    1. 1
      Jeena Paradies
    2. 1
      Tim Tepaße
      1. 0
        Der Martin
        1. 0
          Jeena Paradies
          1. 0
            Der Martin
            1. 3
              DaBear
              1. 0
                Der Martin
                1. 1
                  DaBear
                  1. 0
                    Der Martin
                    1. 1
                      Jeena Paradies
                      1. 4
                        Christian Kruse
                        1. 0
                          Christian Seiler
                          1. 0
                            Christian Kruse
                          2. 0
                            molily
                2. 0
                  Tom
            2. 2
              Tim Tepaße
              1. 0
                Der Martin
                1. 1
                  dedlfix
                  1. 0
                    Tom
                    1. 1
                      Jeena Paradies
                      1. 0
                        Tom
                        1. 0
                          Tom
                          1. 4
                            Christian Kruse
                        2. 4
                          Kai345
                2. 3
                  Christian Seiler
                  1. 0
                    Tom
                    1. 0
                      Don P
                      • menschelei
                      1. 0

                        Currying

                        Tom
              2. 0
                Stefanie M.
                1. 0
                  Tom
                  1. 0
                    Tim Tepaße
                    1. 0
                      dedlfix
                    2. 1
                      Der Martin
                      1. 2
                        molily
                2. 1
                  molily
            3. 3
              molily
              1. 0
                Der Martin
                1. 0
                  dedlfix
                  1. 0
                    Tom
                    1. 5
                      molily
                      1. 0

                        Ein Nachruf

                        Christian Seiler
                        1. 0
                          Christian Kruse
                          1. 0
                            Tom
                        2. 0
                          Der Martin
                          1. 3
                            Christian Seiler
                            1. 0
                              Der Martin
                        3. 0

                          Der Unterschied zwischen Nachwuchsföderung und Arroganz

                          Tom
                          • menschelei
                          1. 0

                            Was ist aus dem einstigen Nachwuchs geworden?

                            Tom
                          2. 0
                            Jeena Paradies
                        4. 1
                          dedlfix
                      2. 0
                        Tom
                        1. 0
                          Tim Tepaße
                          1. 0
                            Der Martin
                            1. 5
                              molily
                              1. 1
                                dedlfix
                                1. 3
                                  molily
                                  1. 3
                                    Don P
                          2. 0
                            Tom
                            1. 0
                              Tim Tepaße
                              1. 0
                                dedlfix
        2. 0
          Christian Seiler
        3. 0
          Don P
    3. 0
      Tom
      1. 0
        Der Martin
    4. 0
      Don P
      1. 0
        Jeena Paradies
        1. 0
          Christian Seiler
          1. 0
            Christian Kruse
          2. 0
            molily
  4. 1
    molily
    1. 0
      Tim Tepaße
  5. 0
    reborn
  6. 0
    Buchtipp
  7. 0
    jobo
    1. 0
      jobo