paulo1205
(usa Ubuntu)
Enviado em 14/01/2023 - 03:17h
Essa discussão é impregnada de muita opinião e de gosto pessoal, além de atravessar barreiras de idiomas.
Dicionaristicamente falando, a palavra inglesa
array pode ser traduzida para o Português como
arranjo ou
disposição. Por si só, a mera palavra (ou sua tradução) não quer dizer muita coisa com relação à implementação num computador, em geral, ou numa linguagem de programação em particular, tal como o C ou o C++.
Já a palavra vetor (que em Inglês se diz
vector) tem um sentido matemático para além da simples disposição de elementos. Eu acredito que, sendo muitos dos pioneiros da computação digital engenheiros, matemáticos e físicos, eu imagino que uma parte deles não desejasse carregar esse sentido matemático para uma coleção de dados genérica, que não necessariamente teria relação nenhuma com espaços vetoriais em R², R³ ou R^n.
Por outro lado, muitos usuários de sistemas de computação os usavam justamente para fazer cálculos matemáticos com vetores e matrizes, e isso provavelmente ajudou a popularizar esses termos, a ponto de extrapolar os domínios tipicamente associados à computação científica voltada para Matemática, Física e Engenharia.
Nesses domínios específicos, contudo, as ferramentas associadas, quer em nível de bibliotecas, de linguagem de programação ou mesmo de
hardware, normalmente tratam vetores de uma forma particular, que não necessariamente é aplicável a uma coleção genérica de elementos. Por exemplo, em pacotes de Álgebra Linear, a representação interna de vetores e matrizes costuma ser bem diferente de uma mera disposição sequencial na memória, em virtude de que a imensa maioria das aplicações trabalha com dados esparsos (muitos elementos valendo zero), de modo que um “vetor” ou, especialmente, uma “matriz” para tais ferramentas é uma estrutura de dados pensada para economizar o máximo possível de memória, ao mesmo tempo em que procura fazê-lo sem prejudicar muito o desempenho.
Na documentação do C e do C++, o termo usado para definir agregados de dados de um mesmo tipo é
array, até porque o padrão é escrito em Inglês. Eu acho uma escolha acertada, em função de
vetor (
vector) ter a bagagem matemática associada, mais o comportamento específico associado historicamente ao armazenamento de dados esparsos.
Nós, brasileiros, geralmente não falamos nativamente Inglês, e muitos preferem não usar termos em Inglês sempre que é possível usar um termo em Português. Não é o meu caso, mas muitos desses que gostam de traduzir tudo acabam usando
vetor como uma tradução de
array, ignorando o aspecto matemático que o termo carrega, e muito menos aspectos de representação e armazenamento de dados esparsos que alguma aplicações implicam a esse termo.
Na biblioteca padrão de
templates do C++, o nome escolhido para o
container de dados de um mesmo tipo e armazenamento sequencial, porém com alocação, realocação e liberação automáticas em tempo de execução foi na linha de chamar de vetor (
std::vector). Eu acredito que essa escolha foi deliberada, porque, apesar de também não ser voltado para o mesmo uso matemático ou ter características usadas em computação científica, tal tipo tem características bem distintas de
arrays nativos, incluindo a possibilidade de mudar a quantidade de elementos em tempo de execução e a não-conversibilidade automática em ponteiro para o primeiro elemento. Assim sendo, do meu ponto de vista pessoal, apesar de não gostar tanto do nome escolhido, entendo que é positivo ter um nome que marque a diferença de funcionalidade.
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)