ECMAScript 5 lernen

RobertVox

Cadet 3rd Year
Registriert
Nov. 2016
Beiträge
59
Hallo,

Als Java Developer kenne Grundkenntnisse von JavaScript.

Meine Frage ist:
Ist es noch heutzutage sinnvoll ECMAScript 5 zu lernen?
Oder ist es besser sich auf ECMAScript 6 und die späteren Versionen zu konzentrieren?
 
RobertVox schrieb:
Ist es noch heutzutage sinnvoll ECMAScript 5 zu lernen?
Oder ist es besser sich auf ECMAScript 6 und die späteren Versionen zu konzentrieren?
Ich sag mal so, wenn man Version 5 lernt macht man nix falsch. Das ist ja, wenn man so will eine Teilmenge der 6er Version.
Die wesentliche Ergänzung bei Version 6 ist, dass es nicht mehr nur prototyp-basierte Objektorienterunng gibt, sondern auch Klassen, wie man es von Java her kennt.

Was vielleicht noch einen Blick wert ist, ist Microsofts TypeScript. Das ist zu Javascript kompatibel führt aber viele ECMAScript 6 Sachen und noch ein paar andere Nützlichkeiten ein.
Damit es trotzdem im Browser läuft, wird es direkt nach Javascript kompiliert.
Dabei ist auch gegeben, dass man gängige Javascript-Bibliotheken (wie beispielsweise das sehr verbreitete jQuery) verwenden kann.

Apropos jQuery. Genauso wichtig die die Sprache selbst ist auch ein Blick für Bibliotheken zu haben. Die erleichtern viele Sachen, die man dann nicht mehr "zu Fuß" programmieren muss.

Ob man das brauch ist natürlich primär eine Frage von dem, was man machen will/muss. Speziell im Web kann man Javascript nur schwer aus dem Wege gehen.
Wobei es auch hier Möglichkeiten gibt. Beispielsweise mit GWT. Da programmiert man quasi vollständig seine Webanwendung in Java und GWT sorgt dafür, dass der nötige Javascriptcode für den Browser erzeugt wird.
 
  • Gefällt mir
Reaktionen: schattenhueter
Ich würde hier klar Nein sagen. Der Unterschied ist zwar nicht soooo groß, aber es macht einfach keinen Sinn mehr. ES6 wird heutzutage immer mit babel.js genutzt, sprich ES5 Code wird für entsprechende Browser automatisch mit-erzeugt. Es geht aber nicht in die andere Richtung.

Warum also noch altes Zeug lernen?
 
Lern JavaScript. Du lernst auch nicht Java 7, 8 oder Drölf, sondern Java. Was für Libs im Hintergrund stehen oder welche Version die haben ist vollkommen irrelevant.
 
lern das aktuelle.. wenn du gerade mit javascript anfängst.. würde ich auch auf jquery verzichten..
 
Yuuri schrieb:
Lern JavaScript. Du lernst auch nicht Java 7, 8 oder Drölf, sondern Java.
Jein. Pauschal kann man das nicht beantworten.
Gerade in der Anfangszeit war Java recht volatil und Sachen die vorher noch üblich waren wurden geändert oder waren zumindest deprecated. Auch jetzt mit Java-8 und den Lambdas ändert/vereinfacht sich vieles in der programmierung, so dass es einfach keinen Sinn macht es "in the old way" zu tun, auch wenn das nach wie vor geht.
Und ähnliche Beispiele gibts ja auch in anderen Sprachen. Man denke nur an Python 2 vs. Python 3.

Es macht also schon Sinn zu gucken, was sind meine Anforderungen. Und lern ich da evtl. Zeugs, was eh kein Mensch mehr benutzt. Sicher. Das betrifft jetzt nicht unbedingt immer die Basics. Aber jemand, der schon eine Programmiersprache kann der wird sich nicht lange mit Schleifen und Verzweigungen aufhalten, sondern schon relativ schnell auf solche Sachen stoßen. Deshalb finde ich die Frage durchaus legitim.
Ergänzung ()

kling1 schrieb:
lern das aktuelle.. wenn du gerade mit javascript anfängst.. würde ich auch auf jquery verzichten..
Das finde ich ja immer "herrlich", wenn irgendwas gesagt wird ohne es zu begründen. Als ob derjenige "the godfather" alles Wissens ist und was er sagt ist absolut alternativlos und Bedarf schon deshalb keiner Begründung. :-)
 
  • Gefällt mir
Reaktionen: schattenhueter
In neuen Projekten (die nicht völlig trivial sind) gibt es eigentlich keinen guten Grund nicht von Anfang an auf Javascript ES6/ES2018 zu setzen. Browserkompatibilität erreicht man indem man mit Babel oder Typescript den modernen code in "altes" Javascript übersetzt, das alle relevanten Browser verstehen.

Gerade wenn man auch mit neueren Frameworks arbeitet wie React zum Beispiel, ist auch vieles an Dokumentation schon mit ES6 Beispielen, da macht es keinen Spaß wenn man das nicht versteht.
 
Klar, aber lernen muss man mmn trotzdem alles, da die ES6-Funktionen das bisherige Paket eben erweitern. Also ist es kein entweder oder, sondern ein: ES5 lernen oder ES5 & ES6 lernen.

Es ist halt so wie bei Java, gibt nen paar neue Sachen, aber mit den neuen alleine wirst du kein Programm schreiben können.
 
  • Gefällt mir
Reaktionen: Darrel
andy_m4 schrieb:
Jein. Pauschal kann man das nicht beantworten.
Gerade in der Anfangszeit war Java recht volatil und Sachen die vorher noch üblich waren wurden geändert oder waren zumindest deprecated.
Ich glaube du hast mich nicht verstanden. Was ist denn so in Java deprecated? Damit meine ich jetzt speziell keine besondere API, sondern Java selbst. Genau darum ging es mir. Es ist doch total Hupe was ich lerne, denn ich lerne Java. Dass Java 8 ne andere API besitzt als Java in den Anfängen ist doch vollkommen logisch. In PHP hab ich mittlerweile auch keine MySQL Extension mehr und alle mysql_* Funktionen sind rausgeflogen, aber "Ich lerne PHP 5.6" ist doch keine Aussage. Ich lerne "PHP 7" gibt es ebenso wenig, denn dort gibts auch APIs die seit PHP 5 und früher existieren.

Was bringt es mir, wenn ich "ES6 lerne" und
Code:
a( x => x.i )
let a = 0
{a,b,c}
deuten kann, aber keine Ahnung habe was
Code:
a( function( x ) { return x.i; } )
var a = 0
{a:a,b:b,c:c}
bedeutet? Hier geht es gar nicht darum, was die Browser ggf. für eine API bereitstellen (XMLHttpRequest, fetch(), $.ajax() usw.), sondern einfach was Sprache X zu bieten hat. Und genau hier lernt man eben die Sprache und nicht die Version einer gewissen API. Ausnahmen wie Python 2 <-> 3 ausgenommen... Ich lern doch auch Englisch und nicht Englisch anno 2018.

Da kommt mir immer wieder "Ich hab Erfahrung in jQuery" in den Sinn. Toll und beim nächsten Projekt mit Angular/React/Vue/Ember/... fliegst du, weil du komplett von Null anfängst? Nein, du lernst "nebenbei" JS und nicht "jQuery". Und wenn du es nicht übertragen kannst, dann setz dich gefälligst hin und lern JS.
 
  • Gefällt mir
Reaktionen: FranzvonAssisi, Hakto und r15ch13
Yuuri schrieb:
Ich glaube du hast mich nicht verstanden.
Doch. Habe ich schon.


Yuuri schrieb:
Was ist denn so in Java deprecated? Damit meine ich jetzt speziell keine besondere API, sondern Java selbst. Genau darum ging es mir.
Was nützt Dir das ganze Java ohne diese API? Richtig. Nix. Und gerade bei Java hast Du halt auch viele APIs schon im Standard mit dabei.

Und wie gesagt, wenn Du schon Erfahrung in einer Programmiersprache hast, dann brauchst Du diese Basics des Sprachkerns nicht großartig neu zu lernen. Du liest das einmal und transferierst Dein Wissen was Du schon hast darauf und das wars. Und dann bist Du halt schnell bei APIs und den ganzen anderen etwas komplexeren Kram.
Hatte ich aber eigentlich alles schon geschrieben. Hast Du aber offenbar entweder nicht gelesen, nicht verstanden oder (und dahin tendiere ich) beides.



Yuuri schrieb:
Es ist doch total Hupe was ich lerne, denn ich lerne Java. Dass Java 8 ne andere API besitzt als Java in den Anfängen ist doch vollkommen logisch.
Klar ist das logisch. Aber ich bin ja nicht, der diesen Fakt ignoriert, sondern Du.


Yuuri schrieb:
In PHP hab ich mittlerweile auch keine MySQL Extension me....
Ach Gottchen. Jetzt versuchst Du noch irgendwelche Beispiele zu konstruieren, um irgendwie damit zu "beweisen" das Du doch recht hast. Sorry, aber auf solche Spielchen hab ich wenig Bock.
Wenns Dir allein ums Recht behalten geht .... geschenkt.

Ich hab übrigens auch nicht gesagt, dass das generell nicht geht / nicht empfehlenswert, dass man ne alte Version lernt. Ich habe lediglich darauf hinwiesen, dass man das so pauschal nicht sagen kann und es vom konkreten Fall abhängt.
Und Dein Java-Beispiel, woran Du das dann belegen wolltest, war dann zudem auch noch ungünstig gewählt.

Alles in allem aber kein Grund hier den Macker raushängen zu lassen. :-)
 
ECMAScript 2015 ist eine Erweiterung von ES5 und kein kompletter Ersatz. Von daher heißt es nicht entweder ES5 oder ECMAScript 2015, sondern beides lernen.

Meiner Meinung nach spricht ja auch nichts dagegen die Syntax und neue Features zu nutzen, aber das setzt trotzdem voraus, dass man eine solide Basis bezüglich der Grundkonzepte besitzt.
 
  • Gefällt mir
Reaktionen: FranzvonAssisi
andy_m4 schrieb:
Was nützt Dir das ganze Java ohne diese API? Richtig. Nix. Und gerade bei Java hast Du halt auch viele APIs schon im Standard mit dabei.
Fein, jetzt nenn mir die Standard API von JavaScript. Und nenn mir jetzt bitte keinen Browser Hersteller oder Node...
andy_m4 schrieb:
Und wie gesagt, wenn Du schon Erfahrung in einer Programmiersprache hast, dann brauchst Du diese Basics des Sprachkerns nicht großartig neu zu lernen.
Code:
function( foo, bar ) { return foo || bar || 5; }
Nenn mir ein "ES6" Tutorial, was diesen Fall behandelt. Es reicht eben nicht "ES6 zu lernen"... In jeder anderen Programmiersprache, kommt hier ein Boolean-Wert heraus. In JS dagegen 5, wenn die vorherigen falsy sind. Ebenso in Perl, Ruby, Python.
Code:
Number.prototype.print = function() { console.log( this ); }

var a = 5,
    b = 10
var c = a + b
c.print()
Ausgabe? Richtig, 15.
Code:
Number.prototype.print = function() { console.log( this ); }

var a = 5,
    b = 10
(a+b).print()
Ausgabe? Von wegen 15...
Code:
TypeError: 10 is not a function
Moment, wo sind eigentlich die Semikolons? Stimmt, JavaScript benötigt keine wie C++, Java, PHP und Konsorten. Um das letzte Beispiel zu fixen, benötigt es aber eins:
Code:
Number.prototype.print = function() { console.log( this ); }
var a = 5,
    b = 10
;(a+b).print()

Anderes Beispiel:
Code:
let π = 3.14159
let n = π * 2
n.print()

let ੴ = "test"
console.log( ੴ )
Ausgabe: 6.28318 und test

Und jetzt red bitte nochmal was von "Standard API"... Die Sprache selbst hat bereits viel zu bieten und extreme Eigenheiten. Aber das ES6 Tutorial, welches Prototyping behandelt, kannst du mir bestimmt auch gleich nennen...

Ich hab keine Ahnung welchen Stand der TE hat und einfach zu sagen "ach lern das Neueste", ist extrem daneben (bei JS besonders), denn jede Sprache schleppt "Altlasten" (= nicht aktuellste Version) mit. Vielleicht sollte er erstmal das "normale JS" lernen, statt sich sofort an ES6 Features zu setzen, die in vielerlei Hinsicht nur Syntactic Sugar sind (Default parameters, variadische Parameter, Spread operator, Template strings, Array destructuring, Object shorthands, for .. of .., Arrow functions uvm.).
new Account() schrieb:
Also ich hab ja C++11 gelernt und nicht C++98 ;)
In welchem C++11 Tutorial werden Calling Conventions behandelt? Die gehören genauso zu C++ wie C++98. Schön wenn du "C++11 gelernt hast", davon allein läuft aber kein einziges Programm.
 
Yuuri schrieb:
In welchem C++11 Tutorial werden Calling Conventions behandelt? Die gehören genauso zu C++ wie C++98. Schön wenn du "C++11 gelernt hast", davon allein läuft aber kein einziges Programm.
Worauf möchtest du genau hinaus? Ich komm jetzt nicht ganz mit. Eventuell könntest du deine Schlussfolgerungen noch einmal genauer erläutern.
 
Yuuri schrieb:
Fein, jetzt nenn mir die Standard API von JavaScript. Und nenn mir jetzt bitte keinen Browser Hersteller oder Node...
Also noch mal, weil Du es immer noch nicht begriffen zu haben scheinst.
Ich bezog mich auf Java (steht sogar in dem Zitat von das Du gemacht hast) und das auch nur, weil DU Java zur Sprache gebracht hast.

So und jetzt les Dir die Postings von mir aus noch mal in Ruhe durch und wenn Du dann antworten willst, passt es ja vielleicht endlich mal zu dem was ich schrieb.
Ansonsten gehe ich davon aus, dass wir bei der Diskussion nicht zueinander finden und da macht es wenig Sinn diese fortzuführen. Denn jetzt zum dritten Mal zu erklären, dazu fehlt mir dann doch die Motivation.
 
Zurück
Oben