Warum nicht gängige Programmiersprachen ein anderes Zeichen verwenden, um Strings zu begrenzen? [geschlossen]

StackOverflow https://stackoverflow.com/questions/965425

Frage

Jede Programmiersprache Ich weiß (Perl, Javascript, PHP, Python, ASP, Actionscript, Commodore Basic) verwendet einfache und doppelte Anführungszeichen Strings zu begrenzen .

Dies schafft die laufende Situation auf große Längen gehen von Zitate korrekt zu behandeln, da das Zitat in dem Inhalt von Strings sehr häufig ist.

Warum Programmiersprachen nicht verwenden einige andere Zeichenfolge zu begrenzen , das nicht in einem normalen Gespräch verwendet wird \, | oder {} zum Beispiel), so können wir nur mit unserem Leben vorankommen?

Ist das wahr, oder bin ich etwas mit Blick auf? Gibt es eine einfache Art und Weise unter Verwendung von Anführungszeichen für Strings in einer modernen Programmiersprache zu stoppen?

Drucken <<< END
Ich weiß, über hier Dokument Syntax, aber für kleinere String-Manipulation, es ist zu kompliziert und es erschwert Formatierung.
END;

[UPDATE] Viele von Ihnen einen guten Punkt über die Bedeutung, die nur aus ASCII-Zeichen verwenden. Ich habe die Beispiele aktualisiert, um diese widerspiegeln (die Backslash , Rohr und Zahnspange ).

War es hilfreich?

Lösung

Python hat einen zusätzlichen String-Typen, Dreier- doppelte Anführungszeichen verwenden,

"""like this"""

Zusätzlich dazu, Perl können Sie ein beliebiges Trennzeichen verwenden Sie wollen,

q^ like this ^

Ich denke, für den größten Teil werden die regulären String-Trennzeichen verwendet, weil sie Sinn machen. Eine Zeichenfolge in Anführungszeichen gesetzt. Zusätzlich dazu werden die meisten Entwickler genutzt, um ihren gesunden Menschenverstand zu verwenden, wenn es um Strings kommt, dass die Art und Weise drastisch zu verändern Zöpfe sind eine schwierige Lernkurve sein könnte.

Andere Tipps

Perl können Sie verwenden was auch immer Zeichen, die Sie mögen

 "foo $bar" eq
 qq(foo $bar) eq
 qq[foo $bar] eq
 qq!foo $bar! eq
 qq#foo $bar# etc

Meanwhile
 'foo $bar' eq
 q(foo $bar) eq
 q[foo $bar] eq
 q!foo $bar! eq
 q#foo $bar# etc

Die Syntax erstreckt sich auf andere Funktionen, einschließlich reguläre Ausdrücke, was sehr praktisch ist, wenn man mit URIs handelt.

 "http://www.example.com/foo/bar/baz/" =~ /\/foo/[^\/]+\/baz\//;
 "http://www.example.com/foo/bar/baz/" =~ m!/foo/[^/]+/baz/!;

Aktuell: "Schreibmaschine" 'Zitat' markiert

Es gibt viele gute Gründe für die Verwendung der Anführungszeichen wir derzeit verwenden:

  • Die Kurse werden auf Tastaturen leicht gefunden -. So sind sie leicht zu geben, und sie müssen einfach sein, weil Strings benötigt werden so oft

  • Zitate sind in ASCII - die meisten Programmiertools nur gut ASCII behandeln. Sie können sich vorstellen kann jeder Umgebung ASCII in fast verwenden. Und das ist wichtig, wenn Sie Ihr Programm über eine Telnet-Verbindung in einem weit weit entfernten Server zu befestigen.

  • Zitate kommen in vielen Versionen - einfache Anführungszeichen, doppelte Anführungszeichen, zurück Anführungszeichen. So kann eine Sprache für unterschiedlich Anführungszeichen unterschiedliche Bedeutungen zugeordnet werden. Diese verschiedenen Zitate können auch die 'Anführungszeichen "inside" Anführungszeichen' Problem lösen.

  • Zitate sind natürliche - Englisch verwendeten Anführungsstriche für Textmarkierung bis Passagen lange vor Programmiersprachen gefolgt. In der Linguistik sind Zitate in genau der gleichen Weise wie in Programmiersprachen verwendet. Zitate sind natürlich die gleiche Art und Weise + und - sind natürlich für die Addition und Substraktion

  • .

Alternative: „typografisch“ ‚richtige‘ zitiert

Technisch sind sie überlegen. Ein großer Vorteil ist, dass man leicht zwischen Öffnen und Schließen Anführungszeichen differenciate kann. Aber sie sind schwer zu geben und sie sind nicht in ASCII. (Ich hatte sie in eine Schlagzeile zu setzen, um sie überhaupt in dieser Schrift Stackoverflow sichtbar zu machen.)

Wir hoffen auf einen Tag, als ASCII etwas ist, das nur Pflege Historikern über und Tastaturen haben in etwas ganz anderes geändert (wenn wir auch Tastaturen überhaupt haben werden), wird es eine Programmiersprache kommen, die besser Anführungszeichen verwendet ...

Python hat einen alternativen Zeichenfolgebegrenzer mit dem Triple-Double Zitat "" "Some String" "".

Single und doppelte Anführungszeichen sind in den meisten Sprachen verwendet, da, dass die Standard-Trennzeichen in den meisten Sprachen geschrieben sind.

Sprachen (sollten) versuchen, so einfach wie möglich zu verstehen, und mit etwas anderes als Zitate mit Strings umgehen führt unnötige Komplexität.

Mit Anführungszeichen einen Zeichensatz zu definieren, als getrennt von dem einschließenden Text natürlicher für uns, und damit leichter zu lesen. Auch "und" sind auf der Tastatur, während die anderen Zeichen, die Sie erwähnen nicht, so ist es einfacher zu geben. Es kann möglich sein, um ein Zeichen zu verwenden, die auf Tastaturen weit verbreitet ist, aber ich kann nicht glauben, eine, die gewonnen ‚t die gleiche Art von Problem hat.

E: Ich habe die Pipe-Zeichen verpaßt, das ist eigentlich eine brauchbare Alternative sein kann. Abgesehen davon, dass es zur Zeit ist weithin als der OR-Operator verwendet, und die Lesbarkeit Frage steht noch aus.

Da die anderen Zeichen sind nicht ASCII aufgeführt. Ich bin nicht sicher, dass wir bereit sind, für oder brauchen eine Programmiersprache in Unicode ...

EDIT: Wie, warum nicht verwenden {} | oder \, und haben diese Symbole bereits alle Bedeutungen in den meisten Sprachen. Stellen Sie sich vor C oder Perl mit zwei unterschiedlichen Bedeutungen für ‚{‘ und ‚}‘!

| bedeutet, oder, in einigen Sprachen verketten bereits Saiten. und wie würden Sie bekommen \ n, wenn \ war das Trennzeichen?

Im Grunde habe ich wirklich nicht verstehen, warum dies ein Problem ist. Ist \“wirklich so schwer? Ich meine, in C, Sie haben oft \% verwenden, und \ und mehrere andere zweistellige Zeichen so ... Meh.

Weil niemand eine Sprache geschaffen hat ein anderes Zeichen verwenden, die populär geworden ist.

Ich denke, dass vor allem deshalb, weil die Nachfrage das Zeichen für den Wechsel ist einfach nicht da, die meisten Programmierer zum Standard Zitat verwendet werden und sehen keinen zwingenden Grund, den Status quo zu ändern.

Vergleichen Sie die folgenden.

print "This is a simple string."
print "This \"is not\" a simple string."

print ¤This is a simple string.¤
print ¤This "is not" a simple string.¤

ich für eine nicht wirklich das Gefühl, wie die zweite einfacher oder besser lesbar ist.

Ah, so dass Sie altmodische Fortran wollen, wo Sie durch Zählen der Anzahl der Zeichen in der Zeichenfolge zitieren würde und es in einem H-Format, wie zum Beispiel das Einbetten: 13HHello, World!. Als jemand, der ein paar Dinge mit Fortran zurück in den Tagen tat, als die Sprache hieß alle Kappen, Anführungszeichen und entkommen sie sind eine gute Sache. (Zum Beispiel, Sie sind nicht vollständig eingeschraubt, wenn Sie weg sind von einem in Ihrer Handbuch Zeichenzählung).

Im Ernst, es gibt keine ideale Lösung. Es wird immer notwendig sein, an einem gewissen Punkt, um eine Zeichenfolge zu haben enthalten, was Anführungszeichen Sie mögen. Aus praktischen Gründen müssen die Kursbegrenzungszeichen auf der Tastatur und leicht zugänglich sein, da sie stark gewohnt ist. Perl q@...@ Syntax schlägt fehl, wenn eine Zeichenfolge ein Beispiel für jedes mögliche Zeichen enthält. Fortran die Hollerith-Konstanten sind noch schlimmer.

Sie sagen „auf große Längen gehen Anführungszeichen zu behandeln richtig“; aber es ist nur in der Textdarstellung. Alle modernen Sprachen behandeln Strings als binäre Blöcke, so dass sie wirklich über den Inhalt nicht kümmern. Denken Sie daran, dass die Textdarstellung ist nur eine einfache Art und Weise für die Programmierer das System zu sagen, was zu tun ist. Sobald die Zeichenfolge interniert wird, hat es keine Probleme, die Anführungszeichen zu verwalten.

Ein guter Grund wäre wahrscheinlich, dass, wenn dies die einzige Sache ist, dass Sie auf eine vorhandene Sprache verbessern wollen, sind Sie nicht wirklich eine neue Sprache zu schaffen.

Und wenn Sie eine neue Sprache erstellen, die richtigen Zeichen für die Zeichenfolge Anführungszeichen Kommissionierung ist wahrscheinlich Weg Weg Weg nach unten auf der To-do-Liste der Dinge tatsächlich umzusetzen.

Sie würden wahrscheinlich am besten dran, ein Trennzeichen Kommissionierung, die auf allen gängigen Tastaturen und Terminal Darstellung Sätze vorhanden, so dass die meisten von denen, die Sie vorschlagen, direkt aus sind ...

Und in jedem Fall wird ein Quoting-Mechanismus noch notwendig sein ... Sie eine Reduzierung der Anzahl, wie oft Sie gewinnen auf Kosten unter Angabe verwenden, um die Sprache schwieriger für Nicht-Spezialisten machen zu lesen.

So ist es nicht ganz klar ist, dass dies ein Gewinn ist, und dann gibt es die Macht der Gewohnheit.

Ada nicht einfache Anführungszeichen für Strings verwenden. Das sind nur für Zeichen, und müssen nicht innerhalb von Zeichenketten maskiert werden.

Ich finde es sehr selten, dass die doppelten Anführungszeichen kommt in einem normalen Textzeichenfolge, die ich in ein Computerprogramm eingegeben werden. Wenn es der Fall ist, ist es fast immer, weil ich diese Zeichenfolge an einen Befehlsinterpreter bin vorbei, und müssen sie eine andere Zeichenfolge einzubetten.

würde ich den Hauptgrund keines dieser anderen Charaktere vorstellen, für String-Trennzeichen verwendet wird, dass sie nicht in der ursprünglichen 7-Bit-ASCII-Code-Tabelle sind. Vielleicht ist das nicht eine gute Ausrede, in diesen Tagen, aber in einer Welt, wo die meisten Sprachdesigner haben Angst, die irrsinnig crappy C Syntax Buck, Sie sind nicht viele Abnehmer für eine ungewöhnliche Zeichenfolgebegrenzer Wahl in Gang zu bringen.

Python ermöglicht es Ihnen, einfache und doppelte Anführungszeichen zu mischen Anführungszeichen in Strings zu setzen.

print "Please welcome Mr Jim 'Beaner' Wilson."
>>> Please welcome Mr Jim 'Beaner' Wilson.

print 'Please welcome Mr Jim "Beaner" Wilson.'
>>> Please welcome Mr Jim "Beaner" Wilson

Sie können auch die bisher dreifachen Anführungszeichen erwähnt. Diese können auch über mehrere Zeilen erstrecken, damit Sie auch von halten, die neuen Zeilen zu drucken.

print """Please welcome Mr Jim "Beaner" Wilson."""
>>> Please welcome Mr Jim "Beaner" Wilson

Schließlich können Sie Strings die gleiche Art und Weise wie alle anderen drucken.

print "Please welcome Mr Jim \"Beaner\" Wilson."
>>> Please welcome Mr Jim "Beaner" Wilson
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top