Heim > Artikel > Backend-Entwicklung > 10 Sprachfunktionen, die Programmierer verwirren
Jede Sprache hat ihre eigenen einzigartigen Merkmale, wie z. B. eine besondere Syntax, ungewöhnliche Funktionen oder nicht standardmäßige Ausführungsmethoden. Egal, ob Sie ein Neuling oder ein erfahrener Spieler sind, Sie werden sich beim Betrachten einer bestimmten Funktion plötzlich betrinken. Der Artikel fasst 10 „seltsame“ Funktionen zusammen, die oft erwähnt werden.
1. Javascript: + ist ein Konnektor
Problembeschreibung: In JS wird das +-Zeichen zwischen Zahlen verwendet und kann für die reguläre Addition verwendet werden, aber wenn es auf Zeichen trifft, kann es auch verwendet werden als Zeichenanschluss verwendet werden. Beispiel: Das Ergebnis von „1“ + 1 ist 11.
Ursachenanalyse:
Der Hauptgrund ist, dass JS eine schwach typisierte Sprache ist. Beispielsweise verwendet Python auch das +-Zeichen als Zeichenverbinder, aber da es sich um eine stark typisierte Sprache handelt, wird es, sobald es feststellt, dass ein Zeichen zu einer Ganzzahl hinzugefügt wurde, darauf hinweisen, dass es sich um eine Fehleroperation handelt.
Meinungen von Internetnutzern:
„Das Problem ist, dass es sich um eine unvorhersehbare erzwungene stille Konvertierung handelt, die leicht zu ignorieren ist.“
„JS sollte mit dieser Situation umgehen.“ Ausnahmen. ” crgwbr
„Die Verwendung von + für die Zeichenverkettung ist ein Albtraum“ Matteo Riva
2. Perl: Modul muss TRUE-Wert zurückgeben
Problem , muss das Perl-Modul mit der 1;-Anweisung enden. Andernfalls meldet das System einen Fehler, wenn der Rückgabewert der letzten Anweisung nicht TRUE ist.
Ursachenanalyse:
Das Perl-Modul enthält anfänglichen Code und Unterroutinen. Wenn die Moduldatei geladen wird, ermittelt Perl anhand der Rückgabe von TRUE, ob der Code erfolgreich ausgeführt wurde. Auch wenn kein Anfangscode vorhanden ist, erwartet Perl dennoch, dass die letzte Anweisung TRUE zurückgibt, andernfalls wird ein Fehler gemeldet.
Meinungen von Internetnutzern:
„Das bereitet mir normalerweise ein Unbehagen.“ Drew Hall
„Das ist der am wenigsten praktische Nutzen“ Schwern
3 . C/C++: Verwendung von drei Buchstaben
Problembeschreibung:
Wenn das System beispielsweise ??! sieht, wird es automatisch in | umgewandelt, siehe ??(wird sein in [ umgewandelt. Dies kann leicht zu unerwarteten Ergebnissen führen und die Lesbarkeit des Codes erheblich beeinträchtigen.
Ursachenanalyse:
Bei der Programmierung in der Anfangszeit ist die Tastatur nicht direkt möglich Geben Sie bestimmte Sonderzeichen wie geschweifte Klammern ein, daher wird diese indirekte Methode verwendet
Meinungen von Internetnutzern:
„Selbst wenn Sie so sachkundig sind wie Google, werden Sie es nicht verstehen können . Was ist ??!??! Sensible Verarbeitung
Problembeschreibung:
PHP ist bei der Fallverarbeitung ziemlich verwirrend und unterscheidet an einigen Stellen und an anderen nicht. Zum Beispiel: Variablennamen, Konstantenfunktionsnamen, Methodennamen, Klassen . Der Name ist nicht zu unterscheiden.
Ursachenanalyse:
Es handelt sich wahrscheinlich um ein künstliches Produkt, das während der Entwicklung von PHP aus einem CGI-Skript entstanden ist, das auf eine ausgereifte Programmiersprache gesetzt wurde > Meinungen von Internetnutzern:
„Deshalb sind PHP-Programmierer daran gewöhnt, Funktionen mit Unterstrichen anstelle von Groß-/Kleinschreibung zu benennen.“ paperstreet7
„In PHP ist alles möglich!“ Grzechooo
5. Ruby: 0 als wahrer Wert
Problembeschreibung:
In Ruby entspricht der 0-Wert dem TRUE-Wert. Dies ist nützlich für Programmierer mit C und Python Hintergrund. Es ist ein Albtraum, Nein zu sagen.
Ursachenanalyse:
Nur die booleschen Werte FALSE und Null sind gleichbedeutend mit TRUE das Gleiche.
Meinungen der Internetnutzer:
„Das ist einfach verrückt, obwohl die Absicht gut gemeint ist.“ Chris Lutz
„0== Stimmt! Das Sprachgehirn steht kurz vor dem Zusammenbruch! verwendet Einrückungsstufen, um die Position jeder Codezeile zu verdeutlichen. Eine falsche Anzahl von Leerzeichen (oder eine inkonsistente Anzahl von Leerzeichen und Transpositionszeichen) kann dazu führen, dass das Programm einen Fehler meldet:
Der PY-Autor Ziel ist es, den Code besser lesbar zu machen, unnötige Eingaben zu reduzieren und zu hoffen, dass Programmierer selbst die Verantwortung für die Aufrechterhaltung der Codeklarheit übernehmen.
Meinungen der Internetnutzer:
„Im Ernst, das ist der Hauptgrund, warum ich mich von PY fernhalte.“ Wir sind wirklich zu faul! und i[a] sind austauschbar und beide Schreibmethoden führen zum gleichen Ergebnis.
Ursachenanalyse:
In C gibt es für Speicherblöcke keinen Unterschied zwischen Arrays und Zeigern, das heißt:
a[i] = *(a + i) = *(i + a) = i[a].
Meinungen von Internetnutzern:
„Im C-Sprach-Verwirrungscode-Wettbewerb ist das wertlos.“ Verwirrung
„Ich denke, das enthüllt nur den Kern der Sprache, Hinweise und direkterer Umgang mit dem Gedächtnis „Michael Neale
8. Perls: Vordefinierte Variablen
Problembeschreibung:
Perl hat eine sehr lange Liste spezieller Variablen und die Namen darin sind sehr kompliziert (obwohl es entsprechende lange englische Wörter gibt). Daher ist es üblich, die Perl-Dokumentation wiederholt zu lesen, es sei denn, Sie sind ein erfahrener Perl-Entwickler.
Ursachenanalyse:
Diese Variablen haben unterschiedliche Bedeutungen, wie zum Beispiel: Prozess-ID ($$), Fehlermeldung ($@), Übereinstimmung mit regulären Ausdrücken ($^R).
Meinungen von Internetnutzern:
„Sehr ärgerlich!“ Diese Variablen sind: Sie können nicht über Google gefunden werden! von selbst eingefügt werden, auch wenn der Code kaputt geht. Dies führt häufig zu Fehlern.
Ursachenanalyse:
Die ursprüngliche Absicht der Automatisierung besteht darin, vor allem Einsteigern Komfort zu bieten.
Meinungen von Internetnutzern:
„Wenn wir Benutzer beim Entwerfen von Sprachfunktionen immer als Dummköpfe behandeln, wird es Probleme geben.“ Rob Van Dam
„Das automatische Einfügen von Semikolons ist eines davon.“ einer der problematischsten Aspekte von JS.“ fennec
10. Java: Autoboxing und Integer-Caching
Problembeschreibung:
Java konvertiert grundlegende Typdaten automatisch in Objekte (automatisch). Boxing), wie etwa die Konvertierung von int in ein Integer-Objekt. Gleichzeitig beträgt der Wert des zwischengespeicherten Integer-Objekts standardmäßig -128 bis 127. In diesem Fall treten Probleme auf, wenn == verwendet wird, um zwei Integer-Objekte mit demselben Wert zu vergleichen (WAHR innerhalb von -128 und 127 und FALSCH für den Rest).
Ursachenanalyse:
Die Der automatische Boxing-Mechanismus reduziert die Menge der Codeeingabe und der Integer-Cache verbessert die Verarbeitungsgeschwindigkeit.
Meinungen von Internetnutzern:
„Zum Glück bin ich nur ein C#-Programmierer.“ Will
„Das ist kein Fehler, aber es gibt uns eine Möglichkeit, es zu nutzen.“ die ursprünglichen Gründe für die numerische Verarbeitung von Typen (z. B. boolesche Werte) „RaviWallau
.