«

»

out 23 2015

Um “SysAdmin” precisa conhecer Linguagem de Programação?

                               Um SysAdmin precisa conhecer Linguagem de Programação
sysadmin Dia 13/09 comemorou-se o dia do programador. Vendo um post no Google sobre o tema, me veio a memória as perguntas feitas pelos alunos dos cursos tecnológicos de Redes de Computadores nas IES onde ministrei disciplinas ou coordenei cursos:

  • Por que existe a disciplina Algoritmos e Programação na Grade do Curso?
  • Um administrador de redes (SysAdmin) precisa saber programar em alguma linguagem de Programação?
  • Em que momento um SysAdmin usará uma linguagem de programação em suas tarefas diárias?

Minha resposta para essa curiosidade dos alunos eram sempre a mesma: Sim! Mas um simples sim por si só não contentaria àqueles jovens curiosos e duvidosos da minha assertividade. Então eu dividia as justificativas sob duas óticas diferentes. Vejamos as respostas.

Necessidade Acadêmica.

Se pensarmos sob a ótica acadêmica legal, e considerarmos o conteúdo que o INEP- Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira propõe que seja cobrado no ENADE – Exame Nacional de Desempenho de Estudantes, assuntos relacionados a Programação de Computadores são cobrados nas questões relacionadas com Gerenciamento de Redes baseado nas linguagens orientadas a scripts.

Logo, se pensarmos na importância do ENADE na conclusão de um curso universitário e os desdobramentos do bom desempenho, não dá para menosprezar as disciplinas que trabalham Linguagens de Programação.

Necessidade Profissional

Se por outro lado você imaginar nas tarefas e atribuições de um “SysAdmin”, certamente irá se deparar com rotinas repetitivas que poderiam ser automatizadas com a utilização da simples linguagem orientadas a scripts.

O Bash, e seus Shell scripts, padrão para muitas distribuições LINUX, UNIX e, pasmem, também no Windows é uma linguagem de scripts muito utilizada pelos “Sysadmin’s” do mundo LINUX, sendo também suportada em IOS´s de vários fabricantes através da qual é possível automatizar tarefas repetitivas, a realização das mais diversas atividades administrativas e de manutenção do sistema, podendo executar tarefas muito mais complexas e elaboradas.

Alguém, ou os mais puristas, poderá declarar que Scripts não podem ser considerados como linguagem de programação. Será que eles têm razão?

Definindo de forma simplificada o que é uma linguagem de programação podemos afirmar: que uma linguagem de programação é um método padronizado para comunicar instruções para um computador. Assim como qualquer linguagem de comunicação, por exemplo, português, inglês e outras, possui um conjunto de símbolos, normalmente verbos da língua inglesa, assim como regras sintáticas e semânticas. A combinação ordenada desses símbolos e regras constituem um programa de computador.

Além disso, também de forma muito simples, a teoria da computação define que para ser considerada uma linguagem de programação, esse arranjo de símbolos e regras, deve ter ainda, os seguintes elementos: variáveis, expressões, atribuições, estruturas de decisão e estruturas de repetição, procedimentos e funções.

Na perspectiva dos paradigmas de programação, a programação Imperativa define que todos os programas podem ser compostos apenas por três estruturas básicas: Seleção, repetição e sequencia e adicionalmente fazer uso de funções e procedimentos.

A linguagem orientada a Script, atendem a essas três premissas, portanto podem ser consideradas, sem a menor sombra de dúvidas, como Linguagem de Programação

As Linguagens de Scripts, são em sua essência destinadas a construção de scripts, embora concebidas sob o paradigma imperativo (estruturado) já existem dialetos orientados a objetos e com a evolução de seu objetivo inicial, não se restringindo a apenas a automatização de tarefas.

Mas, por que linguagens orientadas a Scripts?

Esta pergunta, com certeza, vem à cabeça do leitor quando ele tenta entender o motivo da adoção de uma linguagem de “scripting”. De Java a Perl, Python, Scheme ou Tcl, todas são linguagens que têm essa característica comum. A razão dessa popularidade se deve a diversos fatores:

·         Desenvolvimento rápido. Uma linguagem como Tcl pode aumentar consideravelmente a velocidade de desenvolvimento, pois já estão à disposição do SysAdmin ferramentas de alto nível que executam funções que precisariam de vários comandos numa outra linguagem;

·         Extensibilidade. Como o programa é um script, qualquer usuário (com algum conhecimento) pode alterar as propriedades funcionais da aplicação em pouco tempo, ou mesmo introduzir suas próprias extensões, sem ter que modificar o núcleo do sistema.

·         Interfaces gráficas (GUIs). Tanto o Tcl (que possui o toolkit nativo tk), como a maioria das linguagens dessa família, possuem ou toolkits próprios ou extensões do tk. (como é o caso com o PerlTk para o Perl, e o TkInter para Python)

·         Aprendizado. É sem dúvida mais fácil trabalhar com a maioria das linguagens orientadas a Scripts, principalmente quando há um certo relaxamento na rigidez sintática das construções, e quando (o que normalmente acontece) há mecanismos de depuração suficientemente possantes para que, mesmo o principiante, consiga “enxergar” qual o caminho que toma a execução do seu código.

Existem diversas Linguagens de Scripts, sendo a Bash Script, Python, TLC/Tk, Perl, Ruby, Scheme e VBScript, dentre outras, são utilizadas como ferramentas que os “SysAdmin’s” utilizam para o gerenciamento de uma Rede de Computadores.

Que tarefas um SysAdmin pode executar com as Linguagens de Scripts?

Abaixo, listamos algumas das muitas tarefas que podem ser automatizadas com Linguagens Scripts:

·         Manipulação de IOS´s: CISCO, Juniper, Mikrotik, Palo Alto Networks e outros;

·         Manutenção e/ou correção de erros do GNS3. Este Graphical Network Simulator foi escrito com uma linguagem de Script (O Python)

·         Execução de rotinas no OpenStack, Este Open Source Software é chamado de Sistema Operacional da Nuvem, foi escrito com uma linguagem de Script (O Python)

·         Desenvolvimento de Plugins para o NÁGIOS

·         Programação de aplicações para Redes de Sensores sem Fio – RSSF;

·         Configurar o Open Source IPTables para montar um firewall

E as outras linguagens? Podem ou não ajudar nas tarefas de um SysAdmin.

Construção de Drivers, interfaces e Aplicações

Considerando que senão completamente ou em grande parte um IOS, compiladores e interpretadores são desenvolvidos em assembler, C ou Java, sempre é possível desenvolver rotinas, drivers ou aplicações utilizando essas linguagens. Por exemplo, Implementação do protocolo TCP/IP para sistemas de instrumentação, drivers para comunicar uma estação com uma porta serial do roteador ou switch; aplicações como o Nipper, Monitores de QoS, interfaces para geração de gráficos, etc.

Especificação de protocolos.

Protocolos de comunicação são muitos complexos e são os componentes fundamentais de sistemas distribuídos e redes de computadores. Além disto, características como: eficiência, confiabilidade e portabilidade de protocolo têm se tornado de vital importância com o crescimento das redes de comunicação. Os usos de técnicas informais no desenvolvimento de sistemas de comunicação geralmente produzem sistemas com erros e comportamento indesejáveis. Muitos destes problemas são devido ao fato de que as linguagens naturais são ambíguas e a especificação informal não garante a precisão exigida e desejada para solução destes problemas.

Para contornar esta situação, organizações como ITU, ISO, IEEE têm desenvolvido métodos formais para especificação de protocolos. Estas Técnicas de Descrição Formais (TDFs) possibilitam especificações precisas e sem ambiguidades. O uso destas metodologias tem conduzido ao desenvolvimento de ferramentas (linguagens) e técnicas permitindo, com precisão, a análise da especificação formal e do desempenho, simulação, portabilidade e assim por diante.

AS LINGUAGENS.

SDL.

A SDL – Specification and Description Language, foi projetada pelo CCITT – Comité Consultatif International Téléphonique et Télégraphique, hoje ITU – International Telecommunication Union, para especificação de funções para aplicações orientadas a telefonia. Ela é parte de uma família de linguagem a qual pertencem as linguagens de alto nível: CHILL – CCITT High Level Language e a linguagem MML – Man-Machine Language. Como a SDL foi projetada para especificação de sistemas para telefonia ela é particularmente adequada para sistemas concorrentes de larga escala em tempo real.

LOTOS.

A LOTOS – Language of Temporal Ordering Specification é baseada na ideia que sistemas podem ser especificados pela definição de relações temporais entre suas observáveis interações externas. Ela foi desenvolvida com o fim específico de permitir a especificação para o padrão OSI – Open System Interconnection.

VDM-SL.

A VDM-SL – Vienna Development Method — Specification Language (Linguagem de Especificação de Método de Desenvolvimento VIENA) é baseada em um rico conjunto de tipos básicos e compostas com sintaxe que permite a definição de funções, estado global e operações que podem modificar o estado.

Z.

Z é uma linguagem de especificação atualmente submetida à padronização internacional. Z é baseada na tipificada teoria dos conjuntos onde os tipos dos valores são bem definidos e podem ser relacionados. As semânticas da linguagem Z são fornecidas em um estilo denatocional usando um especial desenvolvimento na álgebra relacional

BNF (BACKus-Naur Form).

A Backus-Naur Form (BNF), [60, 61] também conhecida como Backus Normal Form é uma meta-sintaxe, isto é uma sintaxe para descrever a sintaxe de uma linguagem, usada para expressar uma gramática formal na qual cada regra é expressa na forma: V → w que é um meio formal para descrever linguagens formais.

PROLAC.

A linguagem para compilação de protocolo – PROLAC – Language for Protocol Compilation é uma Linguagem Orientada por Objeto, e desta forma ela contempla todo o poder que uma linguagem que segue esse paradigma possui.

ESTELLE.

ESTELLE (Extended State Transition Language) é uma Técnica de Descrição Formal (TDF) desenvolvida pelo ISO e padronizada em 1989. A Técnica de Descrição Formal Estelle é menos abstrata que muitas outras TDFs e é orientada diretamente à implementação.  Estelle é extremamente relacionada com a linguagem Pascal e suas declarações, procedimentos e funções, com algumas extensões. Especificações com Estelle consistem de descrições de módulos, onde cada módulo é uma Máquina de Estado Finita Estendida e a comunicação entre os módulos acontece através de envio e recepção de mensagens assíncronas sobre canais FIFO. As semânticas da Linguagem Estelle são baseadas em uma extensão de Máquinas de Estado Finitas. Um sistema é modelado por um conjunto de instâncias de módulos que enviam mensagens assíncronas a outros módulos sobre dados canais.

Existem muitas outras linguagens destinadas a especificação de protocolo. Certamente em uma boa pesquisa o caro leitor descobrirá pelo menos uma dezena dessas ferramentas.

Neste artigo, esperamos ter justificado a existência de disciplinas como Algoritmos e Linguagem de programação nos projetos de cursos tecnológicos de Redes de Computadores. Temos a expectativa de ter demonstrado a importância desse ferramental nas tarefas diárias de um SysAdmin, assim como a relevância na especificação e construção de protocolos. Além disso, temos a perspectiva de ter motivado aqueles profissionais que atuam como SysAdmin, que não consideravam a necessidade de conhecer uma linguagem de programação, a aprender, dominar essa ferramenta, automatizando tarefas, processos e melhorando seu desempenho nas atividades de gestão de uma rede de computadores.

Referências

COSTA, G. Daniel, Administração de Redes com Scripts – Bash Script, Python e VBScript; Brasport; São Paulo.

Budkowski, S.; Dembinski, P.; “An Introduction to Estelle: A Specification Language for Distributed Systems,” Computer Networks and ISDN Systems;

Wing, J. M.; “A Specifier’s Introduction to Formal Methods,” IEEE Computer, vol. 23, no. 9, Sept. 1990.



Comente usando o Facebook!
0
0

Deixe uma resposta