Bem-vindo ao Blogs do BABOO Entrar | Cadastre-se | Ajuda

GOTO - programação estruturada ou não?

GOTO é um comando encontrado em diversas linguagens de programação. Quando executado, ele provoca uma transfência incondicional do PC (Program Counter, ou Contador de Programa) para outra parte do código. Este comando é utilizado especificando-se algum tipo de label, que pode ser um identificador ou número da linha, dependendo da linguagem. No nível de linguagem de máquina, o goto é um considerado um tipo de salto (mnemônico jmp).

O comando GOTO é encontrado na maioria das linguagens de alto nível, como Ada, FORTRAN, Algol, COBOL, BASIC, Common List, C, C++, C#, D, Pascal, Perl, Visual Basic, Batch (MS-DOS), entre outras.

Em algumas linguagens, a funcionalidade do goto está presente sem a presença explícita de seu identificador, como, por exemplo, as instruções break ou continue.

Existem algumas linguagens de alto nível que não suportam o comando goto. Por exemplo, Java, onde goto é uma palavra reservada, mas não realiza nenhuma função. Hypertalk, TranScript (também conhecida como Revolution), AppleScript e Rubytambém não possuem goto.

Crítica ao uso de GOTO

O comando GOTO é alvo de muitas críticas, que alegam que seu uso produz códigos difíceis de serem lidos e mantidos, criando o que é chamado "spaghetti code". Como a programação estruturada se tornou popular nas décadas de 60 e 70, muitos cientistas da computação chegaram a conclusão que os programas sempre devem usaram comandos de controle de fluxo "estruturados", tais como laços e if-then-else ao invés de GOTO. No entando, outros acreditam que seu uso não torna o código complicado e pobre, e que algumas tarefas não poderiam ser realizadas o uso de um ou mais GOTO's como, por exemplo, sair de laços aninhados e tratamento de exceções.

Provavelmente a crítica mais famosa ao GOTO foi uma carta de Edsger Dijkstra de 1968, chamada Go To Statement Considered Harmful. Nessa carta, Dijkstra argumenta que o uso livre de GOTO deve ser abolido das linguagens de alto nível porque dificultam a tarefa de analisar e verificar a correção de programas (principalmente aqueles envolvendo laços). Um ponto de vista alternativo é apresentado por Donald Knuth, Structured Programming with go to Statements, que analisa muitas tarefas de programação comuns e concluir que o uso de GOTO é o melhor método a ser usado.

Postado por Doppler | 0 Comentário(s)
Tags da mensagem: ,

Paradigma de programação

Um paradigma de programação fornece (e determina) a visão que o programador possui sobre a estruturação e execução do programa. Por exemplo, em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si, enquanto em programação funcional os programadores abstraem o programa como uma sequência de funções executadas de modo empilhado.

Assim como diferentes grupos em engenharia de software propõem diferentes metodologias, diferentes linguagens de programação propõem diferentes paradigmas de programação. Algumas linguagens foram desenvolvidas para suportar um paradigma específico (Smalltalk e Java suportam o paradigma de orientação a objetos enquanto Haskell e Scheme suportam o paradigma funcional), enquanto outras linguagens suportam múltiplos paradigmas (como o LISP, Python e o C++).

Os paradigmas de programação são muitas vezes diferenciados pelas técnicas de programação que proíbem ou permitem. Por exemplo, a programação estruturada não permite o uso de goto. Esse é um dos motivos pelo qual novos paradigmas são considerados mais rígidos que estilos tradicionais. Apesar disso, evitar certos tipos de técnicas pode facilitar a prova de conceito de um sistema, podendo até mesmo facilitar o desenvolvimento de algoritmos.

O relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo pelo fato de linguagens de programação poderem suportar mais de um paradigma.

Postado por Doppler | 3 Comentário(s)
Tags da mensagem: ,