ECMA Script Kopfweh...

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.

ECMA Script Kopfweh...

Beitragvon theo » 4. Mai 2017, 11:01 ECMA Script Kopfweh...

Geht es nur mir so, oder glaubt ihr auch, dass sich Niklaus Wirth angesichts von ECMA (Java) Script im Grabe umdrehen würde, wenn er schon gestorben wäre?
Relativ neu ist z.B. die Pfeil Syntax: =>

Code: Alles auswählen
this.setState((prevState) => ({
      items: prevState.items.concat(newItem),
      text: ''
    }));
 
 this.interval = setInterval(() => this.tick(), 1000);


Was es bedeutet habe ich ja mehr oder weniger begriffen, aber wie bekommt man die Klammerwüsten in den Griff?
Gibt es einen Menschen, der dieses Geklammer auf einen Blick interpretieren kann?
Ich bin da immer auf trial&error angewiesen, wofür ich viel länger brauche als für eine längere, lesbarere Syntax.

Oder wenn schon, denn schon:
Code: Alles auswählen
a({}{}({(b)}))({{"c"});
;-)

Wie seht ihr das?
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon MacWomble » 4. Mai 2017, 13:08 Re: ECMA Script Kopfweh...

Fehlt da nicht eine Klammer in der vierten Zeile? :twisted:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 389
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.00 (FPC 3.1.1) | 
CPU-Target: 32/64 Nit
Nach oben

Beitragvon theo » 4. Mai 2017, 13:37 Re: ECMA Script Kopfweh...

MacWomble hat geschrieben:Fehlt da nicht eine Klammer in der vierten Zeile? :twisted:


Nee, das ist schon ECMA Script 9.
Man muss Klammern künftig nicht mehr schließen, aber man darf!

Also so wäre auch korrekt:
Code: Alles auswählen
a({{({(b({{"c";


:mrgreen:

Zitatesammlung:

1995
Brendan Eich liest sich in alle Fehler ein, die jemals
bei der Gestaltung einer Programmiersprache gemacht
wurden, erfindet ein paar mehr und etnwickelt
Live-Script.
Später wird die Sprache, um von der Beliebtheit Javas
zu profitieren, in JavaScript umbenannt. Noch
später wird sie, um von der Beliebtheit von Hautkrank-
heiten zu profitieren, in ECMA Script umbenannt.


...Hinzu kommt auch noch, dass die Verwendung von this abhängig vom Kontext ist, in der es verwendet wird. Allerdings ist dieses Tohuwabohu das Ergebnis einer meiner Meinung nach völlig idiotischen Spezifikation von ECMA-Script, auf die JavaScript (bekanntlicherweise) aufbaut. Entweder hat da jemand gepennt, sich vorher das Hirn mit zu viel Alkohol weggeballert oder der Typ war ein Sadist.
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 4. Mai 2017, 13:50 Re: ECMA Script Kopfweh...

Code: Alles auswählen
 $( function() {
       var handle1 = $( "#custom-handle1" );
       $( "#slider_volume" ).slider({       
         value: 0,
         min: 40,
         max: 100,       
 
         create: function() {
           handle1.text( $( this ).slider( "value" ) );
         },
         slide: function( event, ui ) {
           handle1.text( ui.value);       
         }
 
      });


oder dieser hier:
Code: Alles auswählen
 
 $( function() {
        $( ".widget button" )
         .eq(0).button()
         .end().eq(1).button()         
         .end().eq(2).button();
 
        }

       );     
 


Sowas finde ich auch immer lustig. Verwende ich gerade in meinem aktuellen WebSocketServer, wegen "jquery"
Ich finde diese Syntax sehr "Kompliziert" zum lesen.
Es hat etwas gedauert, bis ich da hingekommen bin wie ich ein zweiten Button hinzufügen kann.
Ich glaube sowas nennt sich Ananyme Funktion oder so(Weil es gibt ja keinen Namen).

Zur besseren Lesbarkeit führt das bestimmt nicht.

EDIT01:
was genau bedeutet denn dieser Syntax "=>"?
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon theo » 4. Mai 2017, 13:59 Re: ECMA Script Kopfweh...

pluto hat geschrieben:EDIT01:
was genau bedeutet denn dieser Syntax "=>"?


Es soll eine function abkürzen, damit man noch weniger versteht.
Diese beiden Zeilen machen das gleiche:
Code: Alles auswählen
var a2 = a.map(function(s){ return s.length });
 
var a3 = a.map( s => s.length );


Aber Achtung! Es ist nicht genau das Gleiche! Sonst wäre es ja nicht genügend verwirrend. :mrgreen:
https://developer.mozilla.org/de/docs/W ... funktionen
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 4. Mai 2017, 14:03 Re: ECMA Script Kopfweh...

Lustig das mit den Klammern:
// Bei nur einem Parameter sind Klammern optional:
// Eine parameterlose Funktion erfordert Klammern:
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon theo » 4. Mai 2017, 14:15 Re: ECMA Script Kopfweh...

pluto hat geschrieben:Lustig das mit den Klammern:
// Bei nur einem Parameter sind Klammern optional:
// Eine parameterlose Funktion erfordert Klammern:

:lol:
Ich sage ja, das ist komplett irre!
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 4. Mai 2017, 15:30 Re: ECMA Script Kopfweh...

Ich habe noch was:
Code: Alles auswählen
 
function TestA() {
  return intersection (
    difference (
      cube({size: [20,20,20]}),
      translate([0,0,10],
      cube({size: [5,5,5]})),
      translate([0,0,0],     
      cube({size: [5,5,5]})
    )   
   ))
}
 
 
function main() {
  return TestA();
}
 

Ratet mal was dieser Code macht *G* Die Syntax ist doch wirklich gut lesbar oder? :D
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon theo » 4. Mai 2017, 15:47 Re: ECMA Script Kopfweh...

pluto hat geschrieben:Ratet mal was dieser Code macht *G* Die Syntax ist doch wirklich gut lesbar oder? :D


Ja. Es ist wie ein Gegenentwurf zu Wirth's Sprachen.
Wie oben im Zitat steht: "Brendan Eich liest sich in alle Fehler ein, die jemals
bei der Gestaltung einer Programmiersprache gemacht
wurden, erfindet ein paar mehr und entwickelt
Live-Script."

Wäre ja alles nicht so schlimm, wenn JS nicht eine der bedeutendsten Programmiersprachen der Gegenwart wäre.
Selbst PHP ist vergleichsweise vorbildlich.
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 4. Mai 2017, 16:16 Re: ECMA Script Kopfweh...

Ich verstehe gar nicht, was so schwer ist die Syntax einer Programmiersprache so zu erstellen, dass sie Leicht lesbar ist.

Ich glaube, bei JS geht es einfach darum, dass "Ziel" soll auf den kürzten Weg erreicht werden, warum auch immer. Weil JS wird ja im "Browser" des Users ausgeführt und nicht vom Sever.
Sonst hätte ich schreiben können: JS soll helfen "Byte's" bei der Übertragung zu sparen. Vielleicht geht auch darum, je kürzer ein Code, desto schneller kann er eingelesen werden.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon theo » 4. Mai 2017, 16:18 Re: ECMA Script Kopfweh...

pluto hat geschrieben:JS soll helfen "Byte's" bei der Übertragung zu sparen. Vielleicht geht auch darum, je kürzer ein Code, desto schneller kann er eingelesen werden.


Hmm, 1971 als Pascal entwickelt wurde, hatte man diese Hardware Probleme offenbar nicht... :wink:
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon pluto » 4. Mai 2017, 16:24 Re: ECMA Script Kopfweh...

"Damals" ging es auch nicht um "Internet". Das könnte eine Rolle Spielen.

Hier geht es um jede MS die eingespart werden kann und wenn es nur 0.1 ms sind.

und warum? Damit die Werbung wieder alles zunichte machen kann.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon Mathias » 4. Mai 2017, 17:05 Re: ECMA Script Kopfweh...

Hmm, 1971 als Pascal entwickelt wurde, hatte man diese Hardware Probleme offenbar nicht... :wink:

Pascal war dazumal schon ein Kompiler, somit muss das Programm nur einmal während der Entwicklung übersetzt werden.
Java-Script ist nur ein Interpreter, somit muss der Code bei jedem Durchlauf übersetzt werden, somit ist dies eher mit GW-BASIC vergleichbar, wobei GW-BASIC den Code als Bit-Code im Speicher hatte.
Code: Alles auswählen
function TestA() {
  return intersection (
    difference (
      cube({size: [20,20,20]}),
      translate([0,0,10],
      cube({size: [5,5,5]})),
      translate([0,0,0],     
      cube({size: [5,5,5]})
    )   
   ))
}
 
function main() {
  return TestA();
}

Dies finde ich nicht mal so schlimm, Funktion ineinander Schachtel, kann man auch mit Pascal. Das einzige Gewohnheitsbedürftige ist dabei das size in den {}.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3262
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon pluto » 4. Mai 2017, 17:56 Re: ECMA Script Kopfweh...

Dies finde ich nicht mal so schlimm, Funktion ineinander Schachtel, kann man auch mit Pascal.

Da hast du natürlich recht. Ich finde nur die Art und weise wie es umgesetzt wurde nicht gerade hilfreich zu lesen in einem sehr langen "code".
Warum muss man z.b. auf einmal mit normalen Klammern Arbeiten und nicht mit geschweiten klammern?
intersection oder difference
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon Christian » 4. Mai 2017, 18:31 Re: ECMA Script Kopfweh...

Hat alles vor und Nachteile.
Man muss die enuen Features von ECMAS 9 nicht nutzen.
Ich finds aber z.b. sehr angenehm das z.b. ein nicht existentes Objekt nicht gleich das ganze Programm ins Grab reisst.
Oder das ich direkt an laufenden teilen des Programms rumspielen kann.

Als mit Abstand am unangenehmsten empfinde ich die Bibliotheks Hölle. Irgendwie ist es absoulut hipp für einfachste Tätigkeiten 250k Bibliotheken zu lasen. Wie für JQuerry um einfachste DOM Selektoren nicht ausschreiben zu müssen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried