Brincando com vetores - complemento

Este é uma espécie de "complemento" do meu artigo anterior, sobre vetores. Neste eu apresento recursos como: utilizar a variável IFS com vetores, usar variáveis readonly, além de uma melhoria no método para passar um vetor como argumento para uma função. Espero que gostem.

[ Hits: 33.353 ]

Por: Leandro Santiago em 26/03/2007 | Blog: http://leandrosan.wordpress.com


Conclusão



Eu sei que muitas destas funções que apresentei não são tão úteis na programação em shell, pela simples função dessa linguagem, que é auxiliar as tarefas do sistema, como inicialização, controle de serviços, etc. Vetores de duas dimensões não são essenciais, pois se fossem, já fariam parte do bash nativamente, não é?

Outro problema das funções é sua extrema lerdeza. Para ter uma idéia, o comando abaixo, que gera um vetor 10x10, demorou aqui quase dois segundos!:

$ for ((i=0;i<10;i++)); do for ((j=0;j<10;j++)); do SetElemento array $i $j $RANDOM; done; done

Lembrando que há várias causas para isso:
  1. O algoritmo não é otimizado.
  2. Há chamadas de funções demais.
  3. Há comandos desnecessários, como o que protege as atribuições com espaço.
  4. A linguagem é naturalmente lenta, se comparada às linguagens clássicas, como c,pascal,fortran, java, etc., basicamente pela utilidade principal da mesma.
  5. Outras razões não tão óbvias, mas que certamente existem.

É claro que há várias outras maneiras de implementarmos essas funções, com o uso de ferramentas como o sed, por exemplo.

As ferramentas utilizadas para as tarefas do bash, são realmente comandos, como sabemos. Assim, quando usamos a função de ordenação do vetor, estamos usando um método muito mais lerdo que uma ordenação em mais baixo nível que o bash, como em c, que é a linguagem que o comando sort - usado na função - foi escrito. Assim, como o sort muito provavelmente tem um QuickSort no seu código, ao utiliza-lo, estamos realizando muitas tarefas além dessa ordenação, como os outros comandos ligados por pipes.

Aliás, que utilidade há em ordenar um vetor em nossos scripts?

Como disse várias vezes, esse artigo serviu para eu mostrar que existem muitas maneiras de criarmos coisas novas a partir do que o bash nos oferece. As funções apresentadas podem não ter muita utilidade, mas certamente serviram para mostrar que nem tudo é impossível.

Leituras recomendadas:
Muito obrigado, e até a próxima.

Página anterior    

Páginas do artigo
   1. A variável IFS
   2. Vetores read-only
   3. Passando valores por referência em funções
   4. Algumas funções que podem ser úteis
   5. Conclusão
Outros artigos deste autor

Mudando o tema dos cursores do mouse no Linux

Brincando com vetores

Ogle: O player de DVD

Recursos avançados do bash que você não aprende na escola

Rodando vídeos .rmvb no Linux

Leitura recomendada

Fazendo backup do seu MySQL com API do Dropbox

Fazendo o bash contar piadas

Formatando o bash com cores e efeitos

KeepAlive para conexão discada (ou não)

Alguns recursos do BASH para você utilizar em seus programas

  
Comentários
[1] Comentário enviado por removido em 27/03/2007 - 17:07h

Muito bom meu caro tenchi ;)

[2] Comentário enviado por fernandoamador em 08/04/2007 - 23:55h

Ótimo artgo...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts