402 Stimmen

Was sind fünf Dinge, die Sie an Ihrer Lieblingssprache hassen?

Es gab in letzter Zeit eine Häufung von Perl-Hass auf Stack Overflow, also dachte ich, ich bringe meine " Fünf Dinge, die Sie an Ihrer Lieblingssprache hassen " Frage an Stack Overflow. Nimm deine Lieblingssprache und nenne mir fünf Dinge, die du an ihr hasst. Das können Dinge sein, die Sie einfach nur ärgern, zugegebene Designfehler, erkannte Leistungsprobleme oder jede andere Kategorie. Sie müssen sie nur hassen, und es muss Ihre Lieblingssprache sein.

Vergleichen Sie sie nicht mit einer anderen Sprache, und sprechen Sie nicht über Sprachen, die Sie bereits hassen. Sprechen Sie nicht über die Dinge, die Sie an Ihrer Lieblingssprache mögen. Ich möchte nur die Dinge hören, die du hasst, aber tolerierst, damit du all die anderen Dinge benutzen kannst, und ich möchte etwas über die Sprache hören, von der du dir wünschst, dass andere Leute sie benutzen würden.

Diese Frage stelle ich immer dann, wenn mir jemand seine Lieblingssprache aufdrängen will, und manchmal auch als Interviewfrage. Wenn jemand keine fünf Dinge findet, die er an seinem Lieblingstool hassen kann, kennt er es nicht gut genug, um es entweder zu befürworten oder das große Geld damit zu machen. Er hat es nicht in genügend verschiedenen Situationen eingesetzt, um es vollständig zu erforschen. Er befürwortet sie als Kultur oder Religion, was bedeutet, dass ich falsch liege, wenn ich nicht seine Lieblingstechnologie wähle.

Es ist mir nicht so wichtig, welche Sprache Sie verwenden. Sie wollen eine bestimmte Sprache nicht verwenden? Dann tun Sie es nicht. Sie haben sich nach bestem Wissen und Gewissen für eine Sprache entschieden und verwenden sie trotzdem nicht? Kein Problem. Manchmal lautet die richtige Antwort: "Sie haben ein starkes Programmierteam mit guten Praktiken und viel Erfahrung mit Bar. Zu Foo zu wechseln wäre dumm."


Dies ist auch eine gute Frage für Code Reviews. Leute, die eine Codebasis wirklich kennen, haben alle möglichen Vorschläge für sie, und diejenigen, die sie nicht so gut kennen, haben unspezifische Beschwerden. Ich frage Dinge wie "Wenn Sie bei diesem Projekt noch einmal von vorne anfangen könnten, was würden Sie anders machen?" In dieser Fantasiewelt können sich Benutzer und Programmierer über alles und jeden beschweren, der ihnen nicht gefällt. "Ich möchte eine bessere Schnittstelle", "Ich möchte das Modell von der Ansicht trennen", "Ich würde dieses Modul anstelle dieses anderen verwenden", "Ich würde diese Methoden umbenennen", oder was auch immer ihnen an der aktuellen Situation nicht gefällt. Auf diese Weise bekomme ich einen Eindruck davon, wie viel ein bestimmter Entwickler über die Codebasis weiß. Es ist auch ein Anhaltspunkt dafür, wie viel vom Ego des Programmierers in dem steckt, was er mir erzählt.

Hass ist nicht die einzige Dimension, um herauszufinden, wie viel Menschen wissen, aber ich habe festgestellt, dass sie eine ziemlich gute ist. Die Dinge, die sie hassen, geben mir auch einen Hinweis darauf, wie gut sie über ein Thema nachdenken.

215voto

Jeremiah Peschka Punkte 8296

Wow, ich bin überrascht, dass SQL hat es noch nicht bis hierher geschafft. Das bedeutet wohl, dass niemand es liebt :)

  • Inkonsistente Syntax bei verschiedenen Implementierungen
  • Geringfügige Unterschiede im Code können aus scheinbar unerfindlichen Gründen massive Auswirkungen auf die Leistung haben
  • Unzureichende Unterstützung für Textmanipulation
  • Einfache Einstiegskosten, aber steile Lernkurve zur Beherrschung der Sprache
  • Minimale Standardisierung innerhalb der Gemeinschaft für bewährte Praktiken, einschließlich des Syntaxstils.

...Und ein paar zusätzliche Gründe, es zu hassen, ohne Aufpreis

  • Die WHERE-Klausel steht an letzter Stelle, so dass es leicht ist, ein UPDATE oder DELETE vorzeitig auszuführen und die gesamte Tabelle zu zerstören. Stattdessen sollte die WHERE-Klausel irgendwo am Anfang stehen.
  • Es ist schwierig, die relationale Teilung umzusetzen.
  • Ich kann einen Wert auf NULL setzen, aber ich kann ihn nicht auf Gleichheit mit NULL testen. Ich kann prüfen, IS NULL, aber das kompliziert nur Code - unnötig so, meiner Meinung nach.
  • Warum müssen wir die Formel für eine GROUPed-Spalte komplett neu anpassen, anstatt einen Alias für die Spalte zu setzen und dann GROUP BY den Alias (oder Spaltenindex wie bei SORT)?

181voto

Zarkonnen Punkte 21817

Fünf Dinge, die ich an Java hasse:

  • Keine erstklassigen Funktionen.
  • Keine Typ-Inferenz.
  • Mangel an vernünftigen Vorgaben, z. B. bei Grafiken.
  • NullPointerException, die keine weiteren Informationen darüber enthält, was null ist.
  • Die Verbreitung von sinnlos "konfigurierbaren" Frameworks/Dienstanbieterschnittstellen/Fabrikklassen/Dependency Injection Systemen. Die Konfigurierbarkeit wird fast nie genutzt, DRY wird eklatant verletzt, und der Code vervierfacht sich in der Größe und halbiert sich in der Lesbarkeit.

Ich weiß, ich sollte Scala ausprobieren.

158voto

jTresidder Punkte 492

JavaScript :

  1. Die coolsten Dinge sind wahnsinnig komplex, aber sie sind auch in so wenig Code verpackt, dass man sich dumm vorkommt, wenn man versucht, ihnen zu folgen.

  2. +' ist eine absurde Wahl des Operators für die Verkettung in einer schwach typisierten Sprache. Wären sie Versuch um die Neulinge abzuschrecken?

  3. Es ist ein Minenfeld für die Kompatibilität zwischen verschiedenen Browsern (egal, ob es überhaupt eingeschaltet ist oder nicht)

  4. Sie ist im Allgemeinen nicht vertrauenswürdig - sie wird mit Betrügereien in Verbindung gebracht, wie z. B. dem Blockieren des Zurück-Buttons, Pop-ups, die nie verschwinden, usw.

  5. Es ist fast unmöglich, Fehler zu beheben, da es nur wenige verschiedene Fehlermeldungen und verschiedene Typen gibt (Number, String, Object, etc.).

Wenn jQuery nicht wäre, würde ich es wahrscheinlich immer noch so sehr hassen, wie ich es früher tat :)

148voto

too much php Punkte 85034

PHP:

1) Zwingt mich dazu, unnötige Variablen zu erstellen:

$parts = explode('|', $string);
$first = $parts[0];

2) Eine Implementierung von Lambdas, die so lahm ist, dass sie ungefähr der Verwendung von eval() und so abscheulich falsch, dass ich sie nie benutzt habe (siehe http://www.php.net/create_function ).

3) Ein Try/Catch-System, das nur etwa 80 % der auftretenden Fehler abfangen kann.

4) Die Regex-Unterstützung ist genauso lahm wie die Lambda-Unterstützung, da sie innerhalb regulärer Zeichenketten geschrieben werden muss, was eines der am schwersten zu erlernenden Programmierwerkzeuge dreimal so schwierig macht. Und PHP soll eine "einfache" Sprache sein?!?!?

5) Es gibt keine Möglichkeit, etwas sicher aus $_POST zu ziehen, ohne es zweimal zu schreiben oder eine eigene Funktion zu erstellen oder den '@'-Operator zu verwenden:

$x = isset($_POST['foo']['bar']) ? $_POST['foo']['bar'] : null;

6) Bonusantwort: "@". Wenn Sie sich nicht die Mühe machen können, Ihren Code korrekt zu schreiben, fügen Sie einfach ein '@' ein, was für alle, die Ihren Code später debuggen müssen, sehr schade ist.

135voto

Chris Jefferson Punkte 7272

C++

  • Es ist viel zu einfach, den Speicher zufällig zu beschädigen und fast unmöglich zu findende Fehler zu erzeugen (obwohl, Valgrind trägt viel zur Lösung dieses Problems bei).
  • Vorlage Fehlermeldungen.
  • Bei der Verwendung von Vorlagen kann es leicht passieren, dass man am Ende alles in eine Datei packen muss und dann blöde Kompilierzeiten bekommt.
  • Die Standardbibliothek ist im modernen Zeitalter ein Witz (immer noch keine Threads oder Netzwerke als Standard?)
  • Viele unangenehme kleine C-Bits, die sich durchsetzen (insbesondere alle Konvertierungen zwischen short/int/unsigned/etc..)

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