Por que não linguagens de programação populares usar algum outro personagem para cordas delimitam? [fechadas]

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

Pergunta

Cada linguagem de programação eu sei (Perl, Javascript, PHP, Python, ASP, ActionScript, Commodore Basic) usa aspas simples e duplas para delimitar cadeias .

Isso cria a actual situação de ter que ir para grandes comprimentos para citações tratar corretamente, uma vez que a citação é extremamente comum no conteúdo de strings.

Por que as linguagens de programação não usar algum outro caractere para delimitar cadeias , que não é usado em uma conversa normal \, | ou {} por exemplo), para que possamos apenas continuar com nossas vidas?

Isso é verdade, ou estou esquecendo algo? Existe uma maneira fácil de parar de usar aspas para cordas em uma linguagem de programação moderna?

impressão <<< END
Eu sei sobre aqui documento sintaxe, mas para menor seqüência de manipulação é excessivamente complicado e dificulta a formatação.
END;

[UPDATE] Muitos de vocês fizeram um bom ponto sobre a importância de usar apenas caracteres ASCII. Eu atualizei os exemplos para refletir que (o barra invertida , o tubulação e chaves ).

Foi útil?

Solução

Python possui um tipo de cadeia adicional, utilizando triplas aspas,

"""like this"""

Além disso, Perl permite usar qualquer delimitador que você quer,

q^ like this ^

Eu acho que para a maior parte, os delimitadores de cordas regulares são usados ??porque eles fazem sentido. Uma corda é envolto em aspas. Além disso, a maioria dos desenvolvedores estão acostumados a usar seu senso comum quando se trata de cordas que alterar drasticamente a forma como cordas são apresentados poderia ser uma curva de aprendizado difícil.

Outras dicas

atual: "máquina de escrever" 'citação' marcas

Existem muitas boas razões para usar as aspas que estão usando atualmente:

  • Cotações são facilmente encontrados nos teclados -. Por isso eles são fáceis de digitar, e eles têm que ser fácil, porque as cordas são necessárias tantas vezes

  • Cotações estão em ASCII - a maioria das ferramentas de programação apenas segurar bem ASCII. Você pode usar ASCII em quase todo o imaginável ambiente. E isso é importante quando você está a fixação de seu programa através de uma conexão telnet em algum servidor distante distante.

  • Cotações vêm em muitas versões - aspas simples, aspas duplas, aspas costas. Então, uma língua pode atribuir significados diferentes para cordas de forma diferente cotados. Estas citações diferentes também pode resolver os 'aspas 'dentro' citações' problema.

  • Cotações são naturais - Inglês usou citações para marcação de passagens de texto muito antes de linguagens de programação seguido. Na linguística citações são usadas em bastante da mesma forma que em linguagens de programação. Citações são naturais da mesma maneira + e - são naturais para adição e subtração

  • .

Alternativa: “tipograficamente” aspas ‘corretas’

Tecnicamente eles são superiores. Uma grande vantagem é que você pode facilmente diferenciar entre a abertura e fechamento aspas. Mas eles são difíceis de escrever e eles não estão em ASCII. (Eu tive que colocá-los em uma manchete para torná-los visíveis nesta fonte StackOverflow em tudo.)

Esperamos que em um dia, quando ASCII é algo que somente os historiadores preocupam e teclados mudaram em algo totalmente diferente (se estamos indo mesmo ter teclados em tudo), haverá uma linguagem de programação que utiliza melhores citações ...

Python tem um delimitador de cadeia alternativa com a citação triple-double "" "Alguns String" "".

As aspas simples e aspas duplas são utilizados na maioria das línguas uma vez que é o delimitador padrão na maioria das línguas escritas.

Línguas (deve) tentar ser tão simples de entender quanto possível, e usando algo diferente de aspas para lidar com cordas introduz uma complexidade desnecessária.

O uso de aspas para definir um conjunto de caracteres como separado do texto anexando é mais natural para nós, e, portanto, mais fácil de ler. Além disso, "e" estão no teclado, enquanto que os outros personagens que você mencionou não são, por isso é mais fácil de digitar. Pode ser possível usar um personagem que está amplamente disponível nos teclados, mas eu não consigo pensar em um que won 't têm o mesmo tipo de problema.

E: Eu perdi o caractere pipe, o que pode realmente ser uma alternativa viável. Exceto que é atualmente amplamente utilizado como o operador OR, ea questão legibilidade continua de pé.

Porque esses outros personagens que você listou não são ASCII. Eu não tenho certeza de que estamos prontos para, ou precisa de uma linguagem de programação em unicode ...

EDIT: Quanto ao porquê de não usar {}, | ou \, bem aqueles símbolos todos já têm significados na maioria dos idiomas. Imagine-C ou Perl com dois significados diferentes para '{' e '}'!

| meios ou e, em alguns idiomas concatenar strings já. e como você iria ficar \ n se \ foi o delimitador?

No fundo, eu realmente não vejo por que este é um problema. É \" realmente difícil? Quero dizer, em C, muitas vezes você tem que usar \%, e \ e vários outros personagens de dois caracteres tão ... Meh.

Porque ninguém criou uma linguagem usando algum outro personagem que ficou popular.

Eu acho que é em grande parte porque a demanda para mudar o personagem não é apenas lá, a maioria dos programadores são usados ??para a cotação padrão e não vejo razão para mudar o status quo.

Comparar o seguinte.

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

Eu, pelo menos não realmente sentir como o segundo é mais fácil ou mais legível.

Ah, então você quer Fortran à moda antiga, onde você citar através da contagem do número de caracteres na cadeia e incorporá-lo em um formato de H, tais como: 13HHello, World!. Como alguém que fez algumas coisas com Fortran de volta nos dias em que o nome do idioma era tudo bonés, aspas e escapar deles são uma coisa boa. (Por exemplo, você não está totalmente ferrado se você estiver fora por um em sua contagem de caracteres manual.)

A sério, não há uma solução ideal. Será sempre necessário, em algum momento, ter uma string contendo o que citações personagem que você gosta. Para fins práticos, os delimitadores de citação precisa ser no teclado e facilmente acessível, uma vez que eles são usados ??pesadamente. sintaxe q@...@ do Perl irá falhar se uma seqüência contém um exemplo de cada personagem possível. constantes Hollerith do Fortran são ainda piores.

Você diz "ter que ir para grandes comprimentos de citações tratar correctamente a"; mas é apenas na representação de texto. Todas as línguas modernas tratam cordas como blocos de binário, para que eles realmente não se preocupam com o conteúdo. Lembre-se que a representação de texto é apenas uma maneira simples para o programador para indicar ao sistema o que fazer. Uma vez que a corda está internado, ele não tem nenhum problema gerir as aspas.

Uma razão boa provavelmente seria que, se esta é a única coisa que você quer melhorar em um idioma existente, você não está realmente criando um novo idioma.

E se você está criando uma nova linguagem, escolhendo o personagem certo para as cotações de cordas é provavelmente maneira maneira maneira para baixo na lista de tarefas de coisas para realmente implementar.

Você provavelmente seria melhor fora de escolher um delimitador que existe em todos os teclados comuns e conjuntos de representação de terminais, por isso a maioria dos que você sugerem estão fora certo ...

E, em qualquer caso, um mecanismo citando ainda será necessário ... você ganha uma redução no número de vezes que você usar citando o custo de fazer a língua mais difícil para não-especialista de ler.

Por isso, não está totalmente claro que esta é uma vitória, e depois há força do hábito.

Ada não usa aspas simples para strings. Essas são apenas para caracteres, e não tem que ser escapado dentro de strings.

Acho que é muito raro que o caractere de aspas duplas surge em uma cadeia de texto normal que eu entrar em um programa de computador. Quando isso acontece, é quase sempre porque eu estou passando essa string para um interpretador de comandos, e necessidade de incorporar uma outra corda nele.

Eu imagino o principal motivo nenhum desses outros personagens são usados ??para delimitadores de cordas é que eles não estão na tabela de códigos ASCII 7-bit original. Talvez isso não é uma boa desculpa estes dias, mas em um mundo onde a maioria dos designers de linguagem têm medo de reverter a sintaxe C insanamente ruim, você não está indo para obter uma grande quantidade de compradores para uma escolha incomum corda delimitador.

Python permite misturar aspas simples e duplas para colocar aspas em strings.

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

Você também pode utilizar as aspas triplas mencionados anteriormente. Estes também se estendem em várias linhas para permitir que você também não ter que imprimir novas linhas.

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

Finalmente, você pode imprimir cordas da mesma maneira que todos os outros.

print "Please welcome Mr Jim \"Beaner\" Wilson."
>>> Please welcome Mr Jim "Beaner" Wilson
scroll top