Sunday, September 4, 2011

Dificuldades em produzir um algoritmo em Portugol ou Português Estruturado



Olha, segue aqui a minha opinião quanto ao assunto...

Em quase todos os cursos que fazemos da área de Tecnologia da Informação, nós somos apresentados a tal técnica que é dita ser preliminar à programação, uma codificação genérica que serve para qualquer linguagem, pois é não é dependente de uma linguagem em específico.

Sinceramente, na minha opinião, o tal do Português estruturado deve ser bom demais para linguagens da época do onça, coisas antigas como C, Pascal, Clipper, etc. Contudo, do Java pra cá, ainda mais agora com o .NET da Microsoft forte no mercado com as linguagens C# e VB.NET, Delphi, C++, etc., linguagens onde temos um aparato enorme de recursos para programar através de bibliotecas e assistentes (wizards), eu não vejo o Português estruturado como uma coisa pertinente, e vou dizer o porquê na minha ótica.

Como toda linguagem, o Português Estruturado possui sua própria sintaxe, com instruções genéricas que são escritas de forma específica dentro do universo de cada linguagem. Eu vejo que o universo de sintaxe do Português Estruturado é algo tão simplório que atende apenas as linguagens muito antigas acima mencionadas. Como exemplo, eu cito:

Como fazer para computar o tamanho de uma string de caracteres em C (antigo) e em Java (mais moderno) por exemplo?

Em Java, nós temos uma função (método) criada para isso, de forma que o desenvolvedor simplesmente pegue-a e a utilize, obtendo como retorno o valor inteiro do tamanho da string, coisas do tipo:

size();
length();

Em C, mesmo que este exemplo não seja o mais apropriado, o que quero dizer é que a linguagem não dispõem de tantos recursos já prontos, sendo que teríamos que inventar o nosso próprio método de obter o tamanho de uma string, dentre outras coisas.

Java contém um tipo de dado chamado String, ao passo que C trata strings como arrays do tipo “char”, o que é uma das diferenças.
Voltando ao Português Estruturado, sua sintaxe permite fazer o que hoje pode ser chamado como reinventar a roda, escrever códigos estilo linguagem C ou Pascal para a obtenção do que queremos. Contudo, com o que dentro do Português Estruturado nós podemos chamar uma rotina do tipo size() ou length() do Java ou do C#, por exemplo?

Quem programa com linguagens modernas não codifica dentro do universo do Portugol, sua sintaxe é obsoleta para as linguagens atuais, que diferentemente da época do C e do Pascal onde a programação era estrutural, hoje o paradigma mais utilizado é a Orientação a Objeto, algo importantíssimo e que introduz uma nova maneira de tratar as coisas, através de Classes, Objetos, Herança, Encapsulamento, Polimorfismo, etc. coisas que o Português Estrutural nem sonha.

Resumindo, querer criar um algoritmo em Portugol hoje em dia e na sequência tentar implementar um programa com ele, com uma linguagem moderna, significa jogar fora toda a API de programação moderna e sair reinventando a roda, programando dentro do ambiente .NET no estilo linguagem C, por exemplo, o que praticamente ninguém deve fazer no mundo, ninguém vai desprezar a Orientação a Objeto, coisas que o Java e o .NET nem permitem realizar pra se ter uma idéia.

Senti tal dificuldade ao tentar criar um algoritmo para a conversão de números Binários para Decimal, onde senti na pele a limitação de não poder chamar um método length() para determinar o tamanho de uma String, e sim ter que criar o método do zero (reinventar a roda) como seria feito em linguagens mais antigas. Confesso que desisti da tentativa, embora o programa em Java saiu e está postado antes deste texto (em Inglês), onde ainda fiz o possível para não utilizar Orientação a Objetos, tentando simplificar as coisas.

Na vida real, no mercado de trabalho, em anos, nunca vi ninguém criando Português Estruturado antes de sair programando. O que se costuma fazer é a criação de um diagrama de classes (recurso da Orientação Objeto), e não há nem tempo para se aventurar em como utilizar um recurso tão antigo para dificultar no desenvolvimento de aplicativos comerciais dos dias de hoje.

Apesar de tudo, vejo o Portugol como um recurso excelente para desenvolvimento de lógica de programação, desde que o mesmo código genérico seja implementado em uma linguagem como o C, pois seria um treinamento grandioso sobre como fazer as coisas da forma mais complexa (hoje em dia tudo está mais simplificado). Isso ajuda no raciocínio lógico, mas ao mesmo tempo, é algo que não se usa no mercado de trabalho ao lado da modernidade do mundo do desenvolvimento de software.

Para terminar, deixo a pergunta no ar, até que ponto vale a pena aprender isso na faculdade? Não é melhor ensinar Orientação a Objeto e coisas realmente utilizadas no mercado do século XXI?

Código em Português Estruturado que parei no meio frente às dificuldades acima explicitadas:

programa CONVERSAO_PARA_DECIMAL

var
      numeroBinario: string
      numeroCaracteres, potenciaMaxima: inteiro
      arrayCaracteres: conjunto[] de caracteres
      array Strings: conjunto[] de strings
      arrayInteiro: conjunto[] de inteiros
      potenciaDigitos: conjunto[] de inteiros

inicio

escreva “Qual o numero binário a ser convertido?”
leia numeroBinario

numeroCaracteres = tamanho_numeroBinario;
potenciaMaxima = numeroCaracteres - 1;

var i: inteiro
para i de 0 até numeroCaracteres passo 1 faça
      se (numeroBinario <> 0 E numeroBinario <> 1)
            escreva “Você não inseriu um número binário”
            fim
      fim_se
fim_para

para i de 0 até numeroCaracteres passo 1 faça
      arrayCaracteres[i] =

Razão: há coisas que não dá para serem expressas em Português Estruturado, ao menos que você esteja disposto a desenvolver as coisas com as “facilidades” dos anos 80 e início dos 90.

Quem quiser o código do programa em Java, basta ler a postagem imediatamente anterior a esta.

Fica aí minha opinião,

Abraços!

No comments:

Post a Comment