Introduzindo aos poucos o shell script

Eis nossa pergunta primordial…

“Shell Script… Que bicho é esse”?

Que merece uma resposta simples, franca e de entendimento imediato:

Shell Script é uma linguagem de programação de alto nível interpretada por uma shell.

- Mas, espere um pouco… Como assim, “uma resposta simples”!!!

Se o que foi dito anteriormente não lhe foi suficiente para sanar suas duvidas, temos agora como missão altamente possível, descrever cada uma das partes do verbete “shell script“, para que o pretenso “jedi” que nos acompanha nesta leitura sofra poucas dores de cabeça e por conseguinte seja introduzido com mais prazer no até então enigmático mundo da programação de computadores.

Deixando um pouco de lado este estilo de dialéctica que pode parecer um pouco maliciosa, mas já amaciando nossos miolos que já devem estar ansiosos por estas informações, podemos afirmar através de análise extremamente superficial, que:

Shell Script = Shell + Script

Eu também achei demasiadamente óbvia esta equação ao ponto de ser nojenta e triste como um gol anulado do time para qual você torce nos últimos momentos da prorrogação da partida final do campeonato mundial porém, a eficácia didáctica da mesma equação seria maior se já possuíssemos em mãos alguns conceitos básicos que pretendemos expor no decorrer deste artigo. Então, vamos a eles???

Linguagens e níveis de necessidade

- O que é um computador?

Uma máquina análoga a uma chave de fenda comum…

Ou seja, apenas uma ferramenta sem vida alguma esperando para que os seres pensantes, nós humanos providos de inteligência natural (alguns mais, outros menos e muitos nenhuma), possamos manipulá-lo para alcançarmos resultados que satisfaçam nossas necessidades.

- E que necessidades seriam estas?

As necessidades de resolver problemas de nosso dia a dia (necessidade de criar soluções).

Estou falando além, mas não só, do uso comum. Como por exemplo, digitar um texto em um editor qualquer. Ou inserir dados em uma planilha, escutar música, ler um e-book, assistir um filme, somar dois números, "consumir" pornografia internética etc.

Sim, tudo isso é por demais corriqueiro. E são exactamente estas coisas e muitas outras de motivação mais científica ou complexa do que as anteriormente listadas que são a razão de programarmos computadores.

Quando programamos computadores, estamos dizendo a eles o que fazer com as informações que nele são inseridas por um usuário de um programa.

Estamos de certa forma dando vida ao “ser” até então inanimado (não que você possa programar seu sistema computacional para andar pela sua casa, escritório ou quarto e/ou ainda conversar com vocênão que isso já não esteja acontecendo na mente de alguns tipos de malucos).

Facilmente, agora, podemos perceber como os computadores são totalmente desprovidos de auto suficiência, cabe aos "seres humanos" os manipular de forma inteligente para que seja alcançada uma meta pretendida, ou seja, a resolução de um problema da forma mais rápida possível, segura e, portanto a mais económica. Esses são os principais motivos de programarmos computadores.

E para tal tarefa dispomos de ferramentas básicas chamadas linguagem de programação.

- Mas, o que são linguagens de programação?

São um conjunto de símbolos (caracteres) escritos sobre julgo de regras pré-determinadas em um arquivo texto comum (texto plano) que usualmente chamamos de código fonte ou simplesmente código, onde devemos seguir a risca estas regras para que o computador possa entender com absoluta segurança o que nós pretendemos que ele faça por/para nós.

Essas linguagens possuem regras rígidas que não admitem forma coloquial, como as usadas na linguagem humana comum, como o sentido duplo ou artifícios gesticulares, expressões faciais, estas duas últimas, obviamente, pelo código ser escrito.

Apresentam como característica principal a classificação por nível de abstracção em relação ao nosso entendimento. Ou seja, a forma ou quantidade de informação entendidas imediatamente por nós humanos comuns, mas que é suficiente para que o computador entenda estas ordens de forma clara, que por não ser nenhum pouco inteligente e portanto não é dotado naturalmente de malícia (leia aqui – criatividade usada para se adaptar a dinâmica do meio exterior) só entende zero e um (a famosa linguagem binária: bite desligado igual a zero, ligado igual é a um).

Como foi dito anteriormente, quanto maior a abstracção desta linguagem, mais distante da linguagem humana ela estará, logo teremos um baixo nível de entendimento imediato por nós humanos.

É através deste quesito que classificamos sumariamente as linguagens de programação como: de baixo nível e alto nível. Logo é necessário um programa que traduza (compile) o código fonte ou o interprete.

Assim temos uma nova classificação dentro de nossa explanação: linguagens compiladas e linguagens interpretadas.

Traduzir ou reescrever é preciso…

- O que são linguagens compiladas?

Nesta modalidade de desenvolvimento, após escrito o código fonte, nenhum resultado (aplicação/programa) é gerado a menos que seja dada a ordem a um tipo de programa especial chamado de compilador para traduzir nossas ordens passadas ao nosso amigo burrinho através do código fonte para a linguagem de máquina, gerando assim o “executável” binário (zero ou um).

Antes deste processo de tradução um outro tipo de programa (um depurador) examina o código fonte a procura de eventuais erros (verificar a sintaxe) conforme as regras da linguagem.

Mensagens serão geradas por esse bondoso programa caso ocorra alguma falha na sintaxe concebida por nós auxiliando-nos na depuração do código (retirar/consertar erros – bugs de programador).

Os exemplos mais famosos de linguagens compiladas são as linguagens C (considerada como médio nível ) e C++ e de compilador o gcc (GNU Compiler Collection).

– O que são linguagens interpretadas?

Nesta outra modalidade de desenvolvimento, após escrito o código fonte, nenhum código extra é gerado (compilado/traduzido).

Apenas damos ordem a um programa “externo” para que ele interprete as ordens dadas ao computador para que tenhamos em mão o resultado esperado (aplicação/programa).

Como exemplo brutalmente banal de linguagem interpretada temos o código das páginas da Internet que não passam de texto plano interpretado por um programa especial (um browser - navegador ) como o Mozilla Firefox, que “joga na tela” toda a parte visual como formatos de fontes e suas cores, alinhamentos de parágrafos, imagens e tudo mais o que vier.

É importante notar que o browser não depura o código html. Ele tenta adivinhar as intenções do escritor do mesmo e o roda sem apresentar mensagens de erro, pois estes erros são (na maioria) visíveis, conforme a intenção do individuo que o escreveu, e portanto fáceis de perceber.

Principais vantagens e desvantagens dos tipos de linguagens de programação

Quanto a forma com que as linguagens de programação são apresentadas aos seres humanos, podemos classificá-las como:

Linguagens de alto nível

- assim classificadas por apresentarem proximidade com dialeto humano escrito e portanto nos oferecem um bom entendimento imediato.

Linguagens de baixo nível

- nos oferecem um péssimo nível de entendimento por nossa limitada cabeça animal.

Quanto a forma com que as linguagens são “apresentadas” aos computadores, é prudente as classificar, como:

Linguagens Compiladas

– necessitam de um programa que as traduza, mas apresentam alta velocidade de execução do aplicativo gerado e redução do consumo de memória RAM, por outro lado não temos acesso ao código fonte, a menos que sejamos os desenvolvedores do mesmo, diminuindo a capacidade de adaptação do programa por outros, com excepção óbvia que o código fonte seja distribuído, como acontece com os softwares livres, mas aumentando a segurança, já que o resultado gerado só pode ser entendido/lido por máquinas.

E ainda a portabilidade do código fonte entre sistemas operacionais estará impossibilitada (a menos que seja feita uma tradução de S.O para S.O), resultante das características peculiares de cada um o que não será explicada aqui pois, está claro que o escopo deste texto é outro;

Linguagens Interpretadas

- necessitam de um programa que as interprete em tempo real para o computador, e como um segundo programa é executado, temos um consumo extra de memória e processamento, e por consequência uma diminuição no desempenho se comparado com as linguagens compiladas, porém um alto nível de portabilidade, pois basta que tenhamos o programa interpretador instalado no sistema computacional para executarmos o nosso programa, além do acesso ao código fonte extremamente facilitado.

Shell: “Eu sou o ator”

- Sim... Mas e o Shell Script... O que é MEU DEUS???

Em sistemas *nix (como o Linux, é claro), uma shell é o primeiro programa a ser carregado (aquela tela negra cheia de letrinhas subindo), em alguns tipos de shell é a interface de baixo nível entre usuário e a maquina.

É este programa que carrega automaticamente os módulos do kernel, nossas configurações pessoais, preparando todo o ambiente de trabalho. E depois de tudo isso, fica piscando para nós o seu cursor suplicando pela nossa atenção (ainda me lembro da minha primeira vez, minhas mãos tremeram meus olhos brilharam, caiu um fio de baba do canto esquerdo da boca…).

A partir deste momento façamos então o login nosso de cada sessão para que possamos usar nosso computador, fornecendo comandos com variados objectivos (dos mais comuns e curtos até os mais extensos e rebuscados), como entrar em um directório e listar os arquivos dentro deste e/ou ler o conteúdo de um dos arquivos de forma interactiva usando uma shell como a bash.

A um conjunto de comandos (ordens), como os que tem como objectivos os citados anteriormente, escritos em um arquivo texto, (comumente com permissões de execução) para serem interpretadas, damos o nome de script.

E como a palavra script pode ser traduzida como roteiro. Logo ele, o computador (através da shell), segue este roteiro de comandos escritos no texto, ou seja, ele interpreta o script de acções (comandos).

E por esses comandos serem extremamente familiares aos usuários de um sistema GNU/Linux, por culpa de na sua maioria serem bastante intuitivos, podemos dizer que este texto, chamado de código fonte, está escrito em uma linguagem de alto nível.

Então, Jedi, a afirmação:

Shell script é uma linguagem de programação de alto nível interpretada pela Shell.


Não dói mais!

Até e muita boa sorte!!!
Creative Commons License
O texto desta obra está licenciada sob uma
Licença Creative Commons

Nenhum comentário:

Postar um comentário


Nos reservamos o total direito de publicar ou não os seus comentários sem quaisquer justificativas.