873 Stimmen

Ist die Scala 2.8-Sammlungsbibliothek ein Fall von "dem längsten Selbstmordbrief in der Geschichte"?

Ich habe gerade erst begonnen, mir die Neuimplementierung der Scala-Sammlungsbibliothek anzuschauen, die mit dem bevorstehenden 2.8-Release kommt. Diejenigen, die mit der Bibliothek aus 2.7 vertraut sind, werden feststellen, dass sich die Bibliothek aus einer Verwendungs-Perspektive wenig geändert hat. Zum Beispiel...

> List("Paris", "London").map(_.length)
res0: List[Int] List(5, 6)

...würde in beiden Versionen funktionieren. Die Bibliothek ist äußerst benutzerfreundlich: tatsächlich ist sie fantastisch. Allerdings müssen sich diejenigen, die früher nicht mit Scala vertraut waren und sich jetzt umsehen, um ein Gefühl für die Sprache zu bekommen, nun mit Methodensignaturen auseinandersetzen wie:

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That

Für eine so einfache Funktionalität ist dies eine einschüchternde Signatur, bei der ich mich selbst dabei erwische, dass ich Schwierigkeiten habe, sie zu verstehen. Nicht, dass ich glaube, dass Scala jemals wahrscheinlich der nächste Java sein würde (oder /C/C++/C#) - ich glaube nicht, dass seine Schöpfer es auf diesen Markt abgesehen hatten - aber ich denke, dass es sicherlich möglich war/ist, dass Scala der nächste Ruby oder Python wird (d.h. eine bedeutende kommerzielle Benutzerbasis zu gewinnen)

  • Wird das Leute davon abhalten, zu Scala zu kommen?
  • Wird das Scala einen schlechten Ruf in der kommerziellen Welt als akademische Spielerei geben, die nur dedizierte Doktoranden verstehen können? Werden CTOs und Leiter von Software abgeschreckt?
  • War die Neugestaltung der Bibliothek eine vernünftige Idee?
  • Wenn Sie Scala kommerziell verwenden, machen Sie sich darüber Sorgen? Planen Sie, sofort auf 2.8 umzusteigen oder abzuwarten, was passiert?

Steve Yegge griff einmal Scala an (meiner Meinung nach fälschlicherweise) für das, was er als sein überkompliziertes Typsystem ansah. Ich befürchte, dass jemand eine Freude daran haben wird, mit dieser API FUD zu verbreiten (ähnlich wie Josh Bloch die JCP davon abhielt, Closures zu Java hinzuzufügen).

Anmerkung - _Ich möchte klarstellen, dass ich zwar glaube, dass Joshua Bloch maßgeblich am Ablehnen des BGGA-Closures-Vorschlags beteiligt war, dies meiner Meinung nach jedoch nichts anderes als seinen aufrichtig überzeugten Überzeugungen zuzuschreiben ist, dass der Vorschlag einen Fehler darstellte._


Ungeachtet dessen, was meine Frau und meine Kollegen mir immer wieder sagen, glaube ich nicht, dass ich dumm bin: Ich habe einen guten Abschluss in Mathematik von der Universität Oxford und arbeite seit fast 12 Jahren beruflich als Programmierer und seit etwa einem Jahr (ebenfalls beruflich) in Scala.

_Beachten Sie, dass der provokante Betreff ein Zitat über das Manifest einer britischen politischen Partei aus den frühen 1980er Jahren ist. Diese Frage ist subjektiv, aber es handelt sich um eine ernsthafte Frage, ich habe sie zur Community-Wiki gemacht und würde gerne einige Meinungen dazu hören._

10 Stimmen

Fud steht einfach für Angst, Unsicherheit und Zweifel - ich denke, das drückt ganz klar den Ton von Josh Blochs Rede aus, der ich auch zufällig zustimme, ist gut argumentiert und durchdacht usw. Wenn Sie die Bearbeitungen sehen, habe ich ursprünglich kein fud geschrieben, weil ich keine negativen Konnotationen implizieren wollte.

3 Stimmen

Ich sollte sagen, dass ich es zurückgestellt habe, weil ich befürchte, dass FUD über Scala verbreitet wird und ich nur sage, dass dies ähnlich ist zu dem, was Bloch in seiner Präsentation gemacht hat. (Wo eines seiner Argumente war "Warum nicht einfach Scala verwenden")

2 Stimmen

Der BGGA-Vorschlag hatte einige Schwergewichte dahinter. Aus meiner Sicht schien es, als würden Josh Blochs Meinungen einen großen Teil seiner Ablehnung ausmachen. Ich könnte natürlich falsch liegen - aber mit dem Respekt, den er genießt, glaube ich, dass er enormen Einfluss hat. Ich wollte sicherlich nicht Bloch irgendwelche Unehrlichkeit zuschreiben - ich werde das klarstellen.

0voto

Sujen Punkte 1

Was ist mit Fehlermeldungen auf der Website?

Und was ist, wenn der Anwendungsfall eintritt, dass man vorhandene Typen mit einem benutzerdefinierten Typ integrieren muss, der zu einer DSL passt. Man muss gut informiert sein über Angelegenheiten wie Assoziation, Präzedenz, implizite Umwandlungen, implizite Parameter, höhere Arten und vielleicht sogar existenzielle Typen.

Es ist sehr gut zu wissen, dass es meistens einfach ist, aber das reicht möglicherweise nicht aus. Zumindest sollte es einen geben, der sich mit diesem Thema auskennt, wenn eine weit verbreitete Bibliothek entworfen werden soll.

0 Stimmen

Aber einer der Hauptpunkte ist der Unterschied zwischen der Bibliothek aus der Perspektive eines Benutzers und der Schöpfer. Offensichtlich benötigen die Schöpfer ein beeindruckendes Verständnis der erforderlichen Sprachfunktionen (z. B. höherkategoriearten, implizite Präzedenz) - die Frage ist: "Brauchen es die Benutzer?"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X