Seite 1 von 1

JavaScript & Node.js survey

Verfasst: Donnerstag 22. November 2012, 10:23
von tohoe
Hi zusammen,

ich mache aktuell eine Survey zu JavaScript & Node.js wobei hierbei auch Programmierer besonders wichtig sind, die typischerweise andere Sprachen nutzen.
Genau deshalb bin ich hier.
Es wäre super wenn ihr mich unterstützen und die Survey machen könntet unter http://www.tinyurl.com/9wdlpva.
Dauert auch nur 5-15 Minuten und es kommen sicherlich interessante Ergebnisse raus.

Vielen Dank !

Re: JavaScript & Node.js survey

Verfasst: Samstag 1. Dezember 2012, 14:39
von Leonidas
Oh, der sebis-Lehrstuhl. Ich glaub bei denen ist die Anforderung "mindestens eine Umfrage pro Bachelorarbeit" :D

Übrigens "What programming languages are mostly used in your projects despite of JavaScript?" da würde man "apart from" statt "despite" nutzen, weil sie "abgesehen von JavaScript" genutzt werden und nicht "trotz JavaScript". Nicht dass du dann sowas in deiner Arbeit stehen hast, wär ja doof.

Re: JavaScript & Node.js survey

Verfasst: Samstag 1. Dezember 2012, 15:08
von BlackJack
JavaScript ist toll. Wenn jemand *trotz* JavaScript noch eine andere Programmiersprache verwendet, dann sollte er eine gute Erklärung dafür parat haben. SCNR ;-)

Re: JavaScript & Node.js survey

Verfasst: Samstag 1. Dezember 2012, 16:40
von Leonidas
BlackJack hat geschrieben:JavaScript ist toll.
Wer seid ihr und was habt ihr mit BlackJack gemacht? :roll: :mrgreen:

Re: JavaScript & Node.js survey

Verfasst: Samstag 1. Dezember 2012, 16:45
von BlackJack
@Leonidas: Hihi :-D Naja die Syntax ist doof und noch ein paar andere Kleinigkeiten. Also eigentlich ist ja CoffeeScript toll, wenn man über das fürchterliche Sichtbarkeitsproblem hinweg sehen kann, dass man in äusseren Funktionen aufpassen muss keine Namen zu verwenden, die irgendwo in verschachtelten Funktionen vorkommen weil die äusseren Namen immer „gewinnen”.

Re: JavaScript & Node.js survey

Verfasst: Samstag 1. Dezember 2012, 17:38
von lunar
@Leonidas Die Umfrage ist sogar Teil einer Master-Arbeit.

Die Notwendigkeit einer Umfrage bei dieser Themenstellung mag mir allerdings nicht so recht einleuchten…

@BlackJack CoffeeScript ist… vorsichtig gesagt ein Durcheinander. Der “Design”-Prozess in den Issues auf GIthub ist erschreckend, die Syntax konfus, die Semantik abenteuerlich, die Sprache insgesamt nicht anders als chaotisch zu nennen.

CoffeeScript hat weder eine formale Grammatik noch eine formalisierte und durchdachte Semantik noch eine irgendwie geartete Spezifikation, gar nicht zu reden von einem einen formalen Standard. Die Features und die ganzen WTFs der Sprache haben sich als Folge jedweder geordneten Überlegung beim Entwurf der Sprache einfach irgendwie so ergeben. Kein CoffeeScript-Feature hat diskutable Gründe oder formale Spezifikation und die einzige erkennbare Entwurfsrichtlinie ist „sieht (in den Augen der Coffeescript-Entwickler) irgendwie schön und cool aus“. ;)

Javascript ist zwar merkwürdig, aber wenigstens formalisiert, spezifiziert, und standardisiert. Man kann also nachlesen, was merkwürdig ist, warum es merkwürdig ist, welche diskutablen Gründe und Richtlinien der Sprache unterliegen. Bei CoffeeScript kann man nur hoffen… darauf, dass die Sprache sich verhält wie dokumentiert, darauf, dass eine sinnvolle Verbesserung von den Entwicklern für cool genug befunden wird (vernünftiges Scoping war offenbar nicht cool), und darauf, dass CoffeeScript-Programme auch in zwei Jahren noch funktionieren.

Ich glaube, genau deswegen ist CoffeeScript auch in der Ruby-Community so beliebt geworden. Jeder Ruby-Programmierer fühlt sich in diesem Chaos wohl, schließlich wird (oder zumindest wurde) Ruby genauso entwickelt.

Re: JavaScript & Node.js survey

Verfasst: Sonntag 2. Dezember 2012, 00:08
von Leonidas
lunar hat geschrieben:Javascript ist zwar merkwürdig, aber wenigstens formalisiert, spezifiziert, und standardisiert.
Das klingt bei dir als wär das ein Garant für eine gute Sprache. Ada ist auch ISO spezifiziert, so wie eine Reihe von guten und weniger guten Sprachen die mehr oder minder populär sind.

Ich muss BlackJack in dem Sinne Recht geben dass es mir mit CoffeeScript auch deutlich mehr Spaß macht JavaScript zu schreiben. Und dass der Compiler (sofern er den Namen verdient, aber da könnten wir ja auch über Clojure ranten) die Spezifikation darstellt ist bei vielen Sprachen so und war in CPython lange Zeit nicht anders.

Re: JavaScript & Node.js survey

Verfasst: Sonntag 2. Dezember 2012, 14:49
von lunar
@Leonidas Welche verbreitete Sprache ist denn nicht zumindest halbwegs formal spezifiziert (im Sinne der Python Language Reference, nicht streng formal wie SML oder Haskell)? Wir fallen nicht viele ein, so direkt eigentlich nur CoffeeScript und PHP…

Natürlich ist eine Spezifikation nicht hinreichend für eine gute Sprache, meines Erachtens aber notwendig. Ada ist in ihrem Spezialgebiet eine gute, eigentlich sogar die einzige Sprache, und das vor allem aufgrund der strikten Spezifikation und Verifikation der Sprache und ihrer Werkzeuge.

Der Prozess der Formalisierung und Spezifizierung der Syntax und Semantik führt halt dazu, dass die Entwickler wirklich über ihre Sprache nachdenken müssen, und nicht einfach irgendwie irgendwelche Features implementieren ohne sich über mögliche Mehrdeutigkeiten, Seiteneffekte oder ähnliches Gedanken machen.

Re: JavaScript & Node.js survey

Verfasst: Sonntag 2. Dezember 2012, 16:31
von BlackJack
@lunar: Ich glaube Du hast Perl in der Aufzählung vergessen. Wie sieht das bei Ruby aus?

Ich sehe das bei CoffeeScript nicht so eng, weil ich es nicht als vollständig eigene Sprache sehe, sondern eher als ein bisschen syntaktischen Zucker für JavaScript. Also so eine Art Makro/Template-Expansion.

Re: JavaScript & Node.js survey

Verfasst: Sonntag 2. Dezember 2012, 20:13
von lunar
@BlackJack Von Perl 5 kann ich nichts sagen, Perl 6 aber hat eine Spezifikation. Ruby ebenfalls, zwar inoffiziell, aber vollständig und ziemlich gut (weil automatisch testbar), und mittlerweile wohl Basis aller Interpreter.

Re: JavaScript & Node.js survey

Verfasst: Montag 3. Dezember 2012, 20:59
von BlackJack
@lunar: Es gibt ein Projekt „CoffeeScript Redux”, welches diese Problematik angeht: http://www.kickstarter.com/projects/mic ... t-compiler

(Falls jemand wegen Kickstarter Angst hat ich will hier bloss auf eine Spendenseite locken: Die Spendenphase ist bereits vorbei und das Projekt hat sein Spendenziel erreicht.)

Re: JavaScript & Node.js survey

Verfasst: Dienstag 4. Dezember 2012, 10:43
von lunar
@BlackJack Was hilfts? Die Sprache ist schon kaputt, und wird nicht besser dadurch, dass der Compiler dann schön implementiert ist… das miserable Scoping und die konfuse Semantik bleiben ja erhalten.

Wenn schon, dann coco :)

Re: JavaScript & Node.js survey

Verfasst: Dienstag 4. Dezember 2012, 20:12
von webspider
@lunar: Also ich finde LiveScript noch schicker :D

Re: JavaScript & Node.js survey

Verfasst: Dienstag 4. Dezember 2012, 20:47
von BlackJack
@lunar: Scoping habe ich ja selbst schon erwähnt, aber konfuse Semantik ist mir noch nicht aufgefallen.

Was es bringt ist zum Beispiel das Mehrdeutigkeiten deutlich sichtbar werden und darüber ein Dialog entstehen kann.

Re: JavaScript & Node.js survey

Verfasst: Mittwoch 5. Dezember 2012, 16:28
von lunar
@BlackJack Beispiel negativer Index-Zugriff:

Code: Alles auswählen

coffee> '12345'[1]
'2'
coffee> '12345'[1..]
'2345'
coffee> '12345'[-1]
undefined
coffee> '12345'[-1..]
'5'
Warum gibt es negative Ranges, aber keine negativen Indizes?!

Oder Beispiel Splicing mit negativen Indizes:

Code: Alles auswählen

coffee> a = [1, 2, 3, 4, 5]; a[1..3] = [10]; a
[ 1, 10, 5 ]
coffee> a = [1, 2, 3, 4, 5]; a[1..-2] = [10]; a
[ 1,
  10,
  2,
  3,
  4,
  5 ]
Ich finde das konfus, und ich glaube nicht, dass der Versuch, einen ordentlichen Compiler zu schreiben, daran etwas ändert. Ist ja nicht so, als hätte es die Diskussionen darüber nicht schon im Issue Tracker gegeben, beispielsweise über das Scoping, doch der Entwickler von CoffeeScript erkennt nicht einmal das Problem, hat also offensichtlich nicht einmal verstanden, warum es in Programmiersprachen überhaupt so etwas wie Namensräume gibt. Ich kann mir nicht helfen, ich fühle mich da an die allzu bekannte "Kompetenz" der PHP-Kernentwickler erinnert...

@webspider Sicher nicht. Diese Sprache ist genauso kaputt wie CoffeeScript. Aus der Doku:
  • "Added yes / on as aliases to true and no / off as aliases to false."
  • "Dashes are now supported in identifiers, they get converted into camel case."
Derselbe Drang zu völlig überflüssigen Schlüsselwörtern und mehrdeutiger Syntax mit Hang zu ganz subtilen Bugs...

Das Ganze im Beispiel:

Code: Alles auswählen

livescript>spam-eggs
ReferenceError: spamEggs is not defined
livescript> spam -eggs
ReferenceError: eggs is not defined
livescript> spam- eggs
ReferenceError: spam is not defined
Man beachte, dass die exakte Position des Leerzeichens über die syntaktische Interpretation entscheidet. Die erste Eingabe ist ein Funktionsaufruf, die zweite eine Anwendung des binären Subtraktionsoperators, und die dritte wiederum ein Funktionsaufruf mit einem Argument, dem der unäre Negationsoperator voransteht. Wehe dem, der mal ein Leerzeichen vergisst... nicht einmal Ruby ist so zickig. Man beachte ferner, dass die Fehlermeldung der erste Eingabe den Namen nach der Konvertierung enthält... sehr hilfreich.

Das bedeutet im Übrigen auch, dass Refactoring von CamelCase-Namen richtig Spaß macht, denn man darf sich auf die Suche nach gleich zwei Namensvarianten machen. Die dritte, Camel-Case mit Bindestrich, muss man "glücklicherweise" nicht berücksichtigen, denn diese Variante ist ironischerweise nicht erlaubt:

Code: Alles auswählen

livescript> spam-Eggs
ReferenceError: Inconsistent use of spamEggs as spam-Eggs on line 1
Danke, danke, gibt ja sonst keine anderen Probleme...

Die Begründung auf dieses Feature lautet übrigens: "Rationale: enable different styles which other people may enjoy. As in the lisp family of languages." Von LISP aber haben die Entwickler offensichtlich nicht den Hauch einer Ahnung, denn mit "Stil" hat das nichts zu tun. LISP's einzige Syntax sind S-Expressions (und einige syntaktische Symbole), mithin gibt es überhaupt keine Operatoren, und man kann Symbole benennen wie man lustig ist. Das dieses Prinzip nicht einfach so auf eine Sprache zu übertragen ist, die eine andere Syntax hat, insbesondere eine mit Infix-Operatoren, ist eigentlich offensichtlich... außer eben für die Livescript-Entwickler.

Dass die Livescript-Entwickler keine Ahnung von LISP haben, zeigt sich dann auch, wenn man den LISP-"Stil" konsequent auf Livescript übertragen möchte. Dann nämlich wird man bitter enttäuscht:

Code: Alles auswählen

livescript> spam+eggs
ReferenceError: spam is not defined
livescript> spam/eggs
ReferenceError: spam is not defined
Ganz großes Tennis.

Lessons learnt:
  • Pattern Matching alleine macht noch keine gute Sprache.
  • Nimm keine Sprachen als Vorbild, die Du nur von Wikipedia kennst.
Die Livescript-Entwickler haben diese Stunden wohl verschlafen.

Edit: Ich kannte diese Sprache vorher nicht, ich habe sie erst durch Deinen Beitrag kennengelernt. Es hat mich also weniger als eine halbe Stunde gekostet, in dieser mir völlig unbekannten Sprache einen derartigen Design-Fehler zu finden. Das hat nicht mal PHP geschafft.

Re: JavaScript & Node.js survey

Verfasst: Mittwoch 5. Dezember 2012, 19:51
von webspider
@lunar: Danke, dann habe ich endlich mal ein Projekt zum Forken, welches ich noch bewältigt bekomme. Ich denke Boku und Bloke wären gute Namen (da Coco und Coke).

Re: JavaScript & Node.js survey

Verfasst: Mittwoch 5. Dezember 2012, 23:14
von BlackJack
@lunar: Es gibt keine negativen Indizes weil JavaScript die nicht kennt. Zugriffe mit „ranges” werden in `slice()`-Aufrufe übersetzt — die Funktion kennt negative Argumente.

Beim „splicen” wäre ich gar nicht auf die Idee gekommen negative Indizes zu verwenden.

Wie gesagt, ich sehe das nicht als eigenständige Sprache sondern eher als Makrosammlung um JavaScript etwas kompakter schreiben zu können.

Re: JavaScript & Node.js survey

Verfasst: Mittwoch 5. Dezember 2012, 23:30
von lunar
@BlackJack Meine Fragen waren rhetorischer Art. Mir ist klar, dass dieses Verhalten von Javascript kommt. Ich sehe CoffeeScript aber als als eigenständige Sprache, und erwarte mithin auch nicht die Semantik von Javascript, sondern eine zumindest halbwegs intuitive und vor allem konsistente Semantik :)