January 21, 2009

CFD, Linux e vim

Quem usa amplamente o CFD, usa cluster. Quem quer grande eficiência no uso do cluster, usa GNU/Linux. E quem usa GNU/Linux, usa o vim.

A questão que fica é que nem sempre quem estuda/usa CFD conhece o suficiente do GNU/Linux para lidar corretamente com as ferramentas de terminal. Tudo bem, todo mundo tem sua curva de aprendizado, e é verdade que o terminal, mesmo não sendo complicado, não é o melhor lugar para começar a aprender.

E o problema fica por conta do fato de que clusters nem sempre possuem interface gráfica. Ou possuí interface gráfica, mas você sempre trabalha via ssh, o que nem sempre fornece uma velocidade de conexão agradável se você for abrir três/quatro programas gráficos para utilização remota junto com outros 20 usuários fazendo a mesma coisa. O outro problema é que na nossa área não são raros os usuários do windows que fazem o acesso a clusters com linux via terminal, o que raramente permite uma fácil conexão gráfica (eu realmente sugiro que instale uma distribuição linux para trabalhar com CFD). Por essas e outras não mencionadas, conhecer o terminal do GNU/Linux é fundamental para quem usa CFD.

Tenho certeza de que todos rapidamente aprenderam a listar os arquivos com o ls, a copiar arquivos com o cp, a mover arquivos com o mv, a mudar de diretório com o cd. Mas e editar um arquivo ? O que você faz ?

Existem três opções aqui. Copiar o arquivo para sua máquina de trabalho, modificar e voltar o arquivo para o lugar (isso nem sempre é possível, porque as vezes queremos editar o arquivo que controla a solução do seu problema que está atualmente rodando no cluster, qualquer erro aqui pode ser faltal). Utilizar um aplicativo gráfico remotamente para editar o arquivo (nem sempre é possível por motivos já mencionados) ou editar o arquivo com um editor de terminal (o que é sempre possível).

Ficaria impressionado se eu dissesse que os melhores editores de texto são os feitos para o terminal ? Pois é, parece contraditório, mas não é. Reza a lenda (bem próxima da verdade) que são os editores utilizados por 10 entre 10 dos maiores programadores do mundo. E entre eles temos o vim.

O vim é um dos mais poderosos editores de texto do mundo. Eu costumo dizer que é um sistema operacional disfarçado de editor de textos. Seus inúmeros recursos mal podem ser listados, de tão numerosos e valiosos que são. Devem ser experimentados, para perceber a mesma coisa que eu percebo quando preciso editar um texto e meu instinto abre o terminal para usar o vim, mas não abre o gedit. E ainda conta com inúmeros plugins fazem quase tudo que uma pessoa precisa para sobreviver diante de um computador.

Quer a melhor parte ? O Sergio Luiz Araújo Silva, o autor do VIVAOTUX, lançou um livro em português sobre o vim. Você pode ajudar a melhorar ele, enviando sugestões e correções, ou até, para o caso de quem já conhece bem o vim, enviando novas dicas. O livro é um projeto colaborativo. Também foi criado um grupo em torno do livro para unir quem deseja colaborar com o mesmo diretamente, você também pode ajudar divulgando o livro e o grupo.

De qualquer forma, eu considero um livro obrigatório para qualquer um que utiliza linux para resolver CFD, especialmente, para os usuários do OpenFOAM. E um livro muito importante para qualquer um que queira aprender um pouco mais sobre o GNU/Linux.

12 comments:

  1. boa dica! eu só acrescentaria também o vim tips, um site com idéias e truques praticamente inesgotáveis de como utilizar melhor seu editor favorito; abraço!

    ReplyDelete
  2. Achei o Mitre em seu habitat, super computação, adicionei o RSS para acompanhar esta saga :)

    ReplyDelete
  3. Só para manter a tradição "geek holy war":

    Prefiro o Emacs!

    O vi possui dois modos de operação: o que fica bipando e o que destrói tudo.
    Já o Emacs é quase um sistema operacional completo. Só falta um bom editor de textos. :)

    ReplyDelete
  4. Well,
    eu deixei subentendido que existia mais de uma opção interessante, a outra é o emacs.

    Eu também já gostei do emacs, mas ele apresenta alguns problemas. Um você mencionou, ele é um sistema operacional completo, tão impressionante que o modo de edição é complexo.

    O outro é a popularidade em clusters. Não me pergunte o motivo, mas o fato é que você sempre acha o vi, mas nem sempre acha o emacs.

    Mas vamos deixar essa guerra de preferências de lado !!!

    [ ]'s

    ReplyDelete
  5. Olá pessoal, particularmente gosto muito do emacs ao invés do vim. A velocidade com que consigo editar textos no emacs não consigo com nenhum outro.

    Mas é fato que o vim, por ser muito mais leve e menor, vem por padrão em praticamente qualquer distro. Então, aprendi vim "na marra" e uso-o quase tão bem quanto uso o emacs. O que me ajudou (muito mesmo) foi o livrinho de resumo dos comandos do vim da Novatec. Além de barato, é pequeno e muito útil. Pra quem está começando, recomendo.

    Abraços

    ReplyDelete
  6. Daniel,
    como eu disse, é esse o ponto. O gosto e habilidade ficam pouco importantes frente a necessidade.

    Eu também considero o emacs muito mais complexo de aprender (trocando em miúdos, é um editor com uma curva de aprendizado muito mais aguda do que o vim). Imagina ter que explicar isso a um aluno de iniciação científica que nunca sequer usou linux para apenas descobrir que também terá de ensinar o vim, porque o emacs não está instalado !

    Quanto ao guia novatec, eu tenho vários desses, mas nunca vi um de "vim"; vou dar uma procurada.

    1[ ]

    ReplyDelete
  7. Segue o link pro site da Novatec:

    http://www.novatec.com.br/guias/vi/

    Abraços

    ReplyDelete
  8. Pois é, Daniel, eu ia dizer exatamente o que o anônimo disse, mas não tive tempo ontem...

    O vi é diferente de vim. Contudo, eu fico muito confuso quando vejo um guia assim.

    O motivo é simples, o vi é muito pouco usado no linux. O comando vi é um atalho para outro aplicativo. Na maioria das ditros, para o vim, em outras, para o pico ou o nano (o vi tradicional mesmo nem é encontrado).

    Eu também não tenho certeza do quanto um guia de vi se aplica no vim, mas acho que é muito. O inverso é que é pouco. É claro que o título pode ser uma jogada de propaganda e, na verdade, ser um guia de vim (visto que o vi em si é um programa em desuso)

    De qualquer forma, é interessante saber que existe um guia rápido com esse tipo de conteúdo.

    Um abraço

    ReplyDelete
  9. Bem, quase todas as distribuições linux vem só com o vim mesmo, o comando vi na verdade é um link pro próprio vim, e em alguns casos é um link que executa o vim em modo de compatibilidade, ou seja, ele roda com as características idênticas ao vi original (que é bem inferior).

    O vim incorpora todos os comandos do vi. Além disso, o guia possui uma seção com os comandos que só funcionam no vim. Mas o básico é idêntico aos dois.

    Abraços

    ReplyDelete
  10. Só mais uma dica: De tempos em tempos vocês terão novas versões neste link --> http://code.google.com/p/vimbook/downloads/list

    É que o projeto está recebendo modificações diárias. :)

    ReplyDelete