molily: Standortbestimmung: Programmierparadigmen, OOP, OOP in JS ...

Beitrag lesen

Sie ist anders als die üblichen statischen OOP Programmiersprachen (liegt wohl daran das sie nicht statisch ist :-P) und ist wohl auch deswegen einer meiner Lieblingsprachen.

Was meinst du eigentlich mit statisch? Mutable Objects? Statische Typisierung? Statische Klassen?
Ruby bspw. hat keine mutable Objects, hat Klassen mit public/private/protected-Kapselung, ist dynamisch, aber stark getypt. Die Klassen lassen sich zudem erweitern.

Nur manchmal fehlen mir halt dann doch die statischen Strukturen und Konzepte aus anderen Sprachen und wollte diese möglischst "Original" getreu nachbauen. Also ein Programmier, der aus der C# oder Java Welt kommt soll möglichst sofort seine bekannten Strukturen identifizieren und verwenden können.

Das klingt jetzt vielleicht hart, aber solche Versuche sind dafür verantwortlich gewesen, dass die JavaScript-Programmierung lange Zeit katastrophal war. Solche Versuche sind dafür verantwortlich, dass JavaScript die am häufigsten missverstandene Programmiersprache der Welt ist. Mittlerweile hat man erkannt, dass JavaScript eigene spannende Konzepte hat und dass man diese verstehen und anwenden sollte. Das ist, was Leute wie Crockford seit Jahren versuchen: Nicht JavaScript als minderwertigere Version einer anderen Sprache zu verkaufen, sondern die Unterschiede und Vorzüge zu erklären.

Man kann JavaScript schlicht nicht wie Java programmieren. Dabei kommt letztlich Schmus heraus. Man kann es Java-Programmierern nicht nennenswert vereinfachen, denn JavaScript funktioniert grundlegend anders. Sicher kann man Klassendeklarationen wie in Java aussehen lassen. Wenn sie jedoch irgendwelche realen Probleme umsetzen sollen, werden sie scheitern. Auch mit vielen Hilfsmitteln werden sie es nicht hinbekommen, vernünftigen JavaScript-Code zu schreiben. Das ist einfach meine Erfahrung mit Leuten, die kein JavaScript können und daher versuchen, es wie eine ihnen bekannte Programmiersprache zu schreiben.

Um JavaScript programmieren zu können, muss man JavaScript lernen - so einfach ist es meiner Meinung nach. Mutable Objects, funktionale Programmierung, Funktionsscopes zur Kapselung, prototypische Delegation. Metaprogramming und Metasprachen wie CoffeeScript können einem dabei helfen, diese Konzepte einfach und präzise einzusetzen, ohne den Anschein zu erwecken, man würde etwas ganz anderes als JavaScript programmieren.

Das ist ja gerade die Stärke von JavaScript, dass man verschiedene OOP-Konzepte per Metaprogramming in JavaScript implementieren kann. Gewisse Probleme lassen sich mit einer eigenen Syntax kürzer und übersichtlicher ausdrücken. Das ist alles wunderbar, solange man sich nicht die Illusion macht, dadurch ließen sich die entscheidenden Konzepte von JavaScript wegkapseln und gänzlich andere einführen.

Mathias

0 112

public protected and private in javascript

Florian Bücklers
  • javascript
  1. 0
    Struppi
    1. 0
      jobo
      1. 0
        jobo
      2. 0
        Florian Bücklers
        1. 1

          Standortbestimmung: Programmierparadigmen, OOP, OOP in JS ...

          peterS.
          1. 0
            Florian Bückkers
            1. 0
              peterS.
              1. 0
                jobo
              2. 0
                Florian Bücklers
              3. 2
                peterS.
                1. 0
                  peterS.
            2. 3
              molily
      3. 0
        molily
        1. 0
          jobo
  2. 1
    Struppi
    1. 0
      Florian Bücklers
  3. 2
    molily
    1. 0

      javascripts oop und ein beispiel

      jobo
      1. 0
        Struppi
    2. 1
      Florian Bücklers
      1. 1
        molily
        1. 0
          Struppi
          1. 1
            molily
            1. 0
              Struppi
              1. 0
                jobo
                1. 0
                  Struppi
              2. 1
                molily
                1. 0
                  Struppi
                  1. 0
                    molily
                    1. 0
                      Struppi
                      1. 0
                        jobo
                        1. 0
                          Struppi
                          1. 0
                            jobo
                          2. 1
                            molily
                            1. 0
                              jobo
                              1. 0
                                jobo
                  2. 1
                    molily
                2. 0
                  Florian Bücklers
                  1. 0
                    jobo
                    1. 0
                      Struppi
                      1. 0
                        jobo
                        1. 0
                          Struppi
                          1. 0
                            jobo
                            1. 0

                              was ist OOP und gibt es eine Implementation in Ecmascript

                              jobo
                            2. 0

                              OOP in Javascript - Object prototypisch erweitern

                              jobo
                            3. 0
                              Struppi
                              1. 0
                                jobo
                                1. 0

                                  protected und Javascript - übergeordnetes (Sicherheits-)Konzept

                                  jobo
                                2. 0
                                  Struppi
                                  1. 0
                                    jobo
                                    1. 0

                                      Diskussionszusammenfassung auf Wikipedia

                                      jobo
                                      1. 0
                                        Struppi
                                        1. 2
                                          molily
                                          1. 0

                                            Diskussionszusammenfassung von molily und node.js

                                            jobo
                                            1. 0
                                              Struppi
                                              1. 0

                                                der Punkt um den es geht ... Privatheitskonzept von Javascript

                                                jobo
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    jobo
                                                  2. 0

                                                    serverseitiges Javascript - node.js

                                                    jobo
                                                    1. 0
                                                      peterS.
                                                  3. 0

                                                    mitlesender

                                                    peterS.
                                                    • menschelei
                                                    1. 0
                                                      JürgenB
                                            2. 0
                                              molily
                                              1. 0

                                                Diskussionszusammenfassung von molily, node.js und loops

                                                jobo
                      2. 2
                        molily
                        1. 0
                          Struppi
                          1. 0

                            Privatheitskonzept in Javascript

                            jobo
                            1. 0
                              Struppi
                          2. 0
                            molily
                            1. 1
                              molily
                          3. 0
                            jobo
                            1. 0

                              Codereuse und DesignPatterns OOP ohne Vererbung und POO

                              jobo
                              1. 0
                                JürgenB
                                1. 0
                                  jobo
                          4. 0
                            Don P
                            1. 0

                              privat und (pseudo-)"Klassen" - Prototype und Scopevariablen

                              jobo
                              1. 0
                                Don P
                                1. 0
                                  Struppi
                                  1. 0
                                    Don P
                                    1. 0
                                      Struppi
                                      1. 0
                                        Don P
                                        1. 0
                                          Struppi
                                          1. 0

                                            Konstruktor-Closure vs. Prototyp

                                            molily
                                            1. 0
                                              jobo
                                          2. 0
                                            jobo
                                            1. 0
                                              jobo
                                            2. 0
                                              Struppi
                                              1. 0
                                                jobo
                                                1. 0

                                                  Crockfords "module pattern" - unabhängig von YUI(YAHOO)

                                                  jobo
                                                2. 0
                                                  peterS.
                                                  1. 0
                                                    jobo
                                                    1. 0
                                                      Struppi
                                                      1. 0
                                                        jobo
                                                        1. 0
                                                          Struppi
                                                          1. 0

                                                            Performance und "this" im Kontruktor

                                                            jobo
                                                            1. 0
                                                              Struppi
                                                              1. 0
                                                                jobo
                                                                1. 0
                                                                  Struppi
                                                                  1. 0
                                                                    jobo
                                                  2. 0
                                                    Don P
                                                    1. 0

                                                      private mit "revealing module patter" und "speaking code"

                                                      jobo
                                                    2. 0
                                                      Struppi
                                    2. 0
                                      jobo
                                      1. 0
                                        Struppi
                                        1. 0
                                          jobo
                            2. 0
                              Struppi
                  2. 1
                    molily
            2. 0
              jobo
              1. 2
                molily
              2. 1
                molily
                1. 0
                  jobo