Parece-me que as linguagens de programação destinadas ao uso em ciências e engenharia são consistentemente estranhas em comparação às linguagens de uso geral. Alguns exemplos em cima da minha cabeça:
- No Matlab, cada função deve ser colocada em um arquivo separado
- Em R, <- é o operador de atribuição, em oposição a = em quase todos os outros idiomas
- Matlab, R, Julia e outros são todos indexados em 1
- O Matlab usa% para comentários, e não o padrão # ou //
Claro, línguas todas têm várias características de design que realmente torná-los mais fáceis de usar para aplicações científicas, como a notação matricial mais natural. Ainda assim, todos eles inexplicavelmente fazem todas essas escolhas bizarras que não facilitam nada e poderiam facilmente ser evitadas se os designers de idiomas tivessem escolhido fazer o que 99% de outros idiomas fazem. O motivo é o bloqueio do fornecedor? Falta de contato com a comunidade mais ampla de desenvolvimento de software? Algo mais?
Eu li este tópico e não achei as explicações satisfatórias. Só porque R foi projetado como uma linguagem científica, não significa que ele tenha que ignorar completamente as convenções e usar <- em vez de =.
fonte
Respostas:
E mesmo se julgarmos apenas de acordo com os padrões de TI ... Desculpe, que padrões você quer dizer? Você já tentou escrever um programa em APL ou SNOBOL? Esses dois idiomas são, IMHO, os MAIS poderosos em campos apropriados (contagem e seqüências de caracteres). Mas a sintaxe é algo MUITO estranho (e eficaz) A leitura de uma linha de código APL pode levar dias. Por outro lado, essa linha é uma peça séria de SW. Você voltaria ao Mathlab com lágrimas de alívio.
Quanto a "=", muitas pessoas têm problemas para se acostumarem que não é igualdade, mas atribuição. BTW, em Pascal é igualdade e atribuição é ": =".
E você realmente acha que == para igualdade é mais natural? Pelo contrário, misturar = e == é o erro MAIS comum na programação C, ocorre com muita frequência mesmo nos IDEs contemporâneos, com seu controle automático.
Sobre a indexação de 1 - é o único natural. Quando você era criança, aprendeu poemas e canções, onde contava: um, dois, três ... E não 0,1,2 ... Na matemática da escola, estudamos que a contagem começa em 1 e que 0 não pertence a números naturais / contáveis. Somente com a definição de funções vêm índices não naturais. Afinal, o 0 foi inventado muitos milhares de anos depois que nosso ancestral levantou um dedo.
O início 0 foi mais simples de realizar e imediatamente entrou na prática de TI após a apresentação em C. Mas no Fortran, o primeiro idioma, a indexação 1 é usada. O mesmo acontece com outras línguas da época pré-industrial.
E sim, eu li o artigo de Dyjkstra sobre a naturalidade da contagem baseada em 0. E discordo totalmente de sua argumentação. É natural para os músicos. E mesmo 0 entusiastas que criam os compiladores C e Java, contam as linhas do código STARTING FROM 1!
fonte
A indexação de 1 não é estranha, é completamente normal e esperada, exceto para programadores , porque eles foram condicionados a esperar a contagem baseada em 0 por C (que foi condicionada pelas propriedades da arquitetura do processador).
Os comentários são indicados de várias maneiras diferentes em diferentes idiomas; não existe uma maneira padrão, todo idioma escolhe um símbolo ou dígrafo que ainda não foi usado.
A atribuição é igualmente um conceito estranho e incompreensível, exceto para programadores ; a maioria das pessoas não poderia me importar menos se é
=
ou:=
ou<-
, se esforçam para entender o significado (e para eles, é de fato melhor não para uso=
, porque isso enfatiza que a atribuição não é igualdade - o obstáculo mais comum para não-programadores para entender código).Em resumo, as linguagens de programação destinadas a pessoas que não sejam programadores profissionais parecem diferentes, porque as pessoas que as usam mais a desejam.
fonte
Existem três problemas:
Agora aos seus pontos específicos:
Como não conheço o Matlab, não posso comentar sobre os requisitos de organização de arquivos. Observe que o Java deseja que você use um arquivo por classe pública.
Em R, também
=
pode ser usado como operador de atribuição. Observe que ele precisa de vários operadores de atribuição<-
e<<-
lidar com seu conceito de escopo (<<-
atribui a um símbolo em um escopo externo em vez de criar um novo símbolo dentro de uma função). As setas podem ser usados em outra direção também, o que poderia tornar o código mais limpo:complex_calculation() -> x
.A indexação baseada em 1 é o padrão em matemática, com o qual os usuários do Matlab e R se sentem mais confortáveis do que C. Julia segue o Matlab para ter uma melhor curva de aprendizado.
%
para comentários também é usado no TeX / LaTeX. Esta#
é apenas uma convenção das linguagens de script Unix e seus descendentes.Você também ignora que linguagens de programação "reais" têm muitas partes estranhas. Por que o Scheme não usa
=
? Em vez de:Por que C usa
*
para desreferenciar, quando obviamente um sinal de intercalação^x
é mais comum em outras tradições?fonte
Eu acho que depende da sua exposição a outros idiomas. Em cima da minha cabeça:
fonte
<!-- ... -->
. O sinal de porcentagem é usado para codificação de URL:http://example.com/()
torna - sehttp://example.com/%28%29
.