¿Por qué no populares lenguajes de programación utilizan algún otro carácter para delimitar cadenas?[cerrado]

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

Pregunta

Cada lenguaje de programación que conozco (Perl, Javascript, PHP, Python, ASP, ActionScript, Commodore Basic) utiliza las comillas dobles y simples para delimitar cadenas.

Esto crea una situación de tener que ir a las grandes longitudes para el tratamiento de las cotizaciones correctamente, ya que el presupuesto es muy común en los contenidos de las cadenas.

¿Por qué los lenguajes de programación no uso algún otro carácter para delimitar cadenas, uno que no se utiliza en la conversación normal \, | o { } por ejemplo), de modo que podemos hacer con nuestras vidas?

Es esto cierto, o estoy con vistas a algo?Hay una manera fácil de dejar de usar las comillas para las cadenas de un lenguaje de programación moderno?

imprimir <<
Yo sé acerca de aquí el documento la sintaxis, pero para menores de manipulación de cadenas es demasiado complicado y se complica el formato.
END;

[ACTUALIZACIÓN] Muchos de ustedes hicieron un buen punto acerca de la importancia de utilizar sólo caracteres ASCII.He actualizado los ejemplos para reflejar que (el barra diagonal inversa, el tubería y llaves).

¿Fue útil?

Solución

Python tiene un tipo de cadena adicional, el uso de triples comillas dobles,

"""like this"""

Además de esto, Perl le permite utilizar cualquier delimitador desea,

q^ like this ^

Creo que en su mayor parte, los delimitadores de cadenas regulares se utilizan porque tienen sentido. Una cadena se envuelve entre comillas. Además de esto, la mayoría de los desarrolladores están acostumbrados a utilizar su sentido común cuando se trata de cadenas que alteran drásticamente la forma como las cadenas se presentan podría ser una curva de aprendizaje difícil.

Otros consejos

Perl permite utilizar los caracteres que te gusta

 "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

La sintaxis se extiende a otras características, incluyendo expresiones regulares, lo cual es útil si usted está tratando con URIs.

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

Actual:"Máquina de escribir" 'cita' marcas

Hay muchas buenas razones para el uso de las comillas en la actualidad estamos usando:

  • Las cotizaciones son fáciles de encontrar en los teclados - así que son fáciles de escribir, y que tiene que ser fácil, porque las cadenas son necesarias tan a menudo.

  • Las citas son en ASCII - la mayoría de las herramientas de programación sólo manejar bien ASCII.Usted puede utilizar ASCII en casi cualquier entorno imaginable.Y eso es importante cuando se trata de la fijación de su programa a través de una conexión telnet en algunos lejos-lejos-lejos de servidor.

  • Citas vienen en muchas versiones - las comillas simples, comillas dobles, espalda comillas.Así que un idioma puede asignar significados diferentes para diferente de las cadenas entre comillas.Estos diferentes citas también puede resolver la " cita "dentro de" citas problema.

  • Las citas son naturales - Inglés utiliza comillas para marcar pasajes de texto mucho antes de que los lenguajes de programación seguido.En lingüística comillas se utilizan de la misma manera como en los lenguajes de programación.Las citas son naturales de la misma manera + y - son naturales para la adición y la sustracción.

Alternativa:"tipográficamente" 'correcto' citas

Técnicamente son superiores.Una gran ventaja es que se puede diferenciar entre comillas de apertura y cierre.Sin embargo, son difíciles de escribir y que no están en ASCII.(Tuve que poner en un titular para hacerlos visibles en este StackOverflow fuente en absoluto.)

Esperemos que en un día cuando ASCII es algo que sólo los historiadores se preocupan y los teclados han cambiado en algo totalmente diferente (si estamos aún va a tener teclados en todos), llegará un lenguaje de programación que utiliza mejores cotizaciones...

Python tiene un delimitador de cadena alternativa con la cita triple doble "" "Algunos cadena" "".

Las comillas simples y dobles se utilizan en la mayoría de los idiomas, ya que es el delimitador de serie en los idiomas más escritos.

Idiomas (debería) tratar de ser lo más sencillo de entender como sea posible, y el uso de algo diferente de las cotizaciones para hacer frente a las cadenas introduce una complejidad innecesaria.

El uso de comillas para definir un conjunto de caracteres como algo separado del texto circundante es más natural para nosotros, y por lo tanto más fácil de leer. Además, "y 'están en el teclado, mientras que los otros personajes que mencionas no son, por lo que es más fácil de escribir. Puede ser posible utilizar un personaje que está ampliamente disponible en los teclados, pero no puedo pensar en una que ganó 't tiene el mismo tipo de problema.

E: Me perdí el carácter de canalización, que en realidad puede ser una alternativa viable. Excepto que está actualmente ampliamente utilizado como el operador OR, y la cuestión sigue en pie la lectura.

Debido a esos otros caracteres que no son ASCII enumeró. No estoy seguro de que estamos preparados para, o necesita un lenguaje de programación en Unicode ...

EDIT: En cuanto a por qué no utilizar {}, | o \, así todos esos símbolos ya tienen significados en la mayoría de los idiomas. Imagínese C o Perl con dos significados diferentes para '{' y '}'!

| significa o, y en algunos idiomas concatenar cadenas ya. y ¿cómo se obtiene \ n si \ fue el delimitador?

En el fondo, yo realmente no veo por qué esto es un problema. Es \" realmente tan difícil? Quiero decir, en C, a menudo hay que usar \%, y \ y varios otros personajes de dos caracteres por lo ... Meh.

Debido a que nadie ha creado un lenguaje utilizando algún otro carácter que se ha hecho popular.

Creo que es en gran parte debido a que la demanda de cambiar el carácter no está allí, la mayoría de los programadores se utilizan para la cita estándar y no ven ninguna razón de peso para cambiar el status quo.

Comparar lo siguiente.

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.¤

Por mi parte, no me siento igual que el segundo es más fácil o más legible.

Ah, por lo que desea anticuada FORTRAN, el lugar donde quiere citar al contar el número de caracteres en la cadena y la incrustación en un formato H, tales como: 13HHello, World!. Como alguien que hizo algunas cosas con FORTRAN de vuelta en los días en que el nombre del idioma era todo en mayúsculas, comillas y escapar de ellos es buena cosa. (Por ejemplo, no se atornillan totalmente si usted está fuera por una en su cuenta de carácter manual.)

serio, no existe una solución ideal. Siempre será necesario, en algún momento, tener una cadena que contiene cualquier carácter de comillas te gusta. A efectos prácticos, los delimitadores de cotización deben estar incluidos en el teclado y de fácil acceso, ya que son muy utilizados. q@...@ sintaxis de Perl fallará si una cadena contiene un ejemplo de cada carácter posible. Las constantes Hollerith de FORTRAN son incluso peores.

Usted dice "tener que hacer un gran esfuerzo para tratar correctamente las frases"; pero es sólo en la representación de texto. Todos los idiomas modernos tratan como cadenas binarias bloques, por lo que realmente no se preocupan por el contenido. Recuerde que la representación de texto es sólo una forma sencilla para el programador para indicar al sistema qué hacer. Una vez que se internó la cadena, que no tiene ningún problema para la gestión de las cotizaciones.

Una buena razón probablemente sería que si esta es la única cosa que quiere mejorar en un lenguaje existente, usted no está realmente creando un nuevo lenguaje.

Y si va a crear un nuevo lenguaje, recogiendo el carácter adecuado para las comillas de cadena es probablemente manera manera abajo en la lista de tareas de cosas para aplicar en la práctica.

Es probable que fuera mejor elegir un delimitador que existe en todos los teclados comunes y conjuntos de representación del terminal, por lo que la mayor parte de los que sugerimos son nada más sacarlo ...

Y, en cualquier caso, todavía será necesario un mecanismo citando ... a obtener una reducción en el número de veces que se utiliza citando a costa de hacer más difícil para el lenguaje no especializado para leer.

Así que no es del todo claro que esta es una victoria, y luego está la fuerza de la costumbre.

Ada no utiliza comillas simples para las cadenas. Esos son sólo para los caracteres, y no tienen que ser escapado el interior de las cadenas.

Me parece muy raro que el carácter de doble cita viene en una cadena de texto normal que entro en un programa de ordenador. Cuando lo hace, es casi siempre porque yo estoy pasando esa cadena a un intérprete de comandos, y la necesidad de incorporar otra cadena en ella.

Me imagino que la razón principal por ninguno de esos otros personajes son utilizados para delimitadores de la serie es que no están en la tabla original de código ASCII de 7 bits. Tal vez eso no es una buena excusa en estos días, pero en un mundo donde la mayoría de los diseñadores de lenguajes tienen miedo de ir contra la sintaxis de C increíblemente malo, que no van a obtener una gran cantidad de compradores para una elección inusual cadena delimitadora.

Python le permite mezclar comillas simples y dobles para poner comillas en cadenas.

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

También puede utiliza las comillas triples anteriormente mencionados. Estos también se extienden a través de múltiples líneas que le permiten mantener también de tener que imprimir nuevas líneas.

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

Por último, puede imprimir cadenas de la misma manera que los demás.

print "Please welcome Mr Jim \"Beaner\" Wilson."
>>> Please welcome Mr Jim "Beaner" Wilson
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top