PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO 1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Desde o seu surgimento, o manuseio da computação é baseado em linguagens de programação. Ela permite que sejam construídos aplicativos para automatizar e gerenciar processos nas organizações. Ou seja, sem as linguagens de programação, os computadores não teriam utilidade nenhuma para as pessoas. Todas as linguagens de programação são formadas por: Tipos de dados que permitem e definem o uso da memória e das informações Um conjunto de instruções, onde cada uma possui uma função bem definida. O uso em conjunto dessas instruções permite a modelagem e construção de processos simples e complexos, além de construir novos tipos de dados; Uma série de regras para a construção dos programas. Existem várias linguagens de programação de diferentes composições. Algumas linguagens possuem aplicações afins, outras possuem aplicações bem específicas. Elas são divididas em diversas categorias, conforme sua composição, principalmente às regras que regem o manuseio das mesmas. Estas categorias são chamadas de paradigmas de linguagens de programação. O objetivo dessa disciplina é estudo comparado dos diversos paradigmas e características das linguagens de programação. Assim os alunos vão conhecer os diversos conceitos e técnicas de programação associados aos principais tipos de linguagens de programação. DEFINIÇÃO DE PARADIGMA DE LINGUAGEM DE PROGRAMAÇÃO Um paradigma de linguagem é a metodologia ou visão de construção de programas adotada na implementação da linguagem, a qual influencia diretamente na forma de aprendizado de desenvolvimento de sistemas de informação. Apesar de haverem diferentes linguagens de programação, elas são agrupadas em poucos grupos de paradigmas. Esta característica é bastante interessante, pois é muito mais simples aprender a programar em linguagens que pertencem ao mesmo paradigma, além de formar uma base para o aprendizado em linguagens de outros paradigmas. WILIAM HIROSHI HISATUGU PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Exemplo: Se uma pessoa tem conhecimentos de programação básica em linguagem C, ela terá maior facilidade em aprender a linguagem Pascal, pois elas pertencem ao mesmo paradigma: Código em Linguagem C int funcao(int a) { int b, c; return (a*b/c); } Código em Pascal function funcao(a): integer; var: a,b,c: integer; begin funcao = a*b/c; end. Os paradigmas de linguagem de programação têm origens históricas e de necessidades específicas. Pelo lado histórico, as linguagens de programação tiveram sua estrutura modificada para facilitar o manuseio das linguagens, introduzindo conceitos como, por exemplo, a modularização. Esta evolução também acompanhou novas necessidades do mercado consumidor de sistemas de informação como, por exemplo, interface gráfica e acesso à Internet. Em outros casos foi necessário o desenvolvimento de linguagens específicas para determinadas aplicações como, por exemplo, sistemas especialistas ou baseados em conhecimento. Estas linguagens possuem características bem diferentes das linguagens utilizadas para fins comerciais e industriais, o que acabou por alterar a própria metodologia de programação. 1.2 OBJETIVOS DA DISCIPLINA O objetivo principal da disciplina Paradigmas de Linguagem de Programação é apresentar os principais paradigmas de linguagem existentes e suas principais características e diferenças. WILIAM HIROSHI HISATUGU PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Serão apresentados alguns casos de uso e alguns fatores a serem considerados na escolha de uma linguagem pelas características de paradigmas de desenvolvimento detectadas. Também serão apresentadas de forma bastante sucinta algumas linguagens dos diferentes paradigmas. Ao final da disciplina, o aluno deverá estar apto a: 1. Associar uma linguagem de programação a um determinado paradigma, mesmo sem ter conhecimento profundo da mesma; 2. Distinguir as principais formas de classificação das linguagens de programação; 3. Escolher uma, dentre um conjunto de linguagens apresentadas, para ser usada em um projeto de Sistemas de Informação, tomando por base as necessidades e tarefas que devem ser satisfeitas. 1.3 CLASSIFICAÇÕES COMPLEMENTARES Antes de dar seguimento ao estudo dos paradigmas serão dadas algumas informações úteis para a melhor compreensão e aproveitamento da disciplina. Como primeira forma de classificação de linguagem de programação está o seu modo de execução: Compilador – é um aplicativo que converte um programa escrito em alguma linguagem em linguagem de montagem, o qual é um pseudocódigo de máquina. Um compilador deve fazer uma análise sintática do programa antes de convertê-lo, pois se ele não foi editado conforme as regras da linguagem, haverá problemas no processo de conversão. Um ponto importante é que para cada linguagem de programação existe um compilador. Após a compilação é feita uma tradução para linguagem de máquina gerando um código executável. Interpretador – é um aplicativo que interpreta cada instrução ou conjunto de instruções do programa e o executa sem a conversão para um pseudocódigo e conseqüentemente sem um código de máquina. Apesar disso, também é feita uma análise sintática e, se for encontrado um erro, o programa não será executado. Pelo fato de ser interpretado, a execução de um programa feito em linguagem interpretada é mais lenta que a de um programa compilado. Outra maneira de classificar as linguagens de programação está o nível de facilidade de programação: WILIAM HIROSHI HISATUGU PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO 1. Baixo Nível – é a linguagem de máquina e a linguagem Assembler. Ou seja, a programação feita diretamente no nível de microarquitetura. 2. Alto Nível – algorítmicas, imperativas, prescritivas, procedimentais (apoiadas sobre processos), determinísticas e quantitativas. Papel determinante do cálculo numérico. 3. Altíssimo Nível – Idealmente são linguagens não algorítmicas, declarativas, não determinísticas e qualitativas. Criadas para o processamento simbólico (como cálculo formal, manipulação de fórmulas algébricas, processamento de língua natural), conduzindo a programas mais abstratos. O programador descreve o problema em função de relações sobre objetos. Com uma descrição precisa o computador resolverá o problema sem qualquer outra intervenção. 4. Nível Médio – alguns autores e pesquisadores consideram a linguagem C de médio nível e não de alto nível, devido aos seus recursos de uso direto da máquina e fácil interface com a linguagem de máquina. Uma forma bastante interessante de classificação das linguagens de programação é a sua aplicação: 1. Científicas – ARGOL, FORTRAN, MATLAB; 2. Comerciais – Cobol, Dataflex, Forms Developers; 3. Processamento de Listas – LISP; 4. Gerais – Pascal, C, Visual Basic; 5. Inteligência Artificial – PROLOG; 6. Aplicativos para Internet – PHP, Java, HTML; 1.4 PARADIGMAS A SEREM ESTUDADOS Imperativo – O modelo Imperativo é baseado na perspectiva do computador: a execução seqüencial de comandos e o uso de dados são conceitos baseados no modo como os computadores executam programas no nível de linguagem de máquina. Este modelo é o predominante. As imperativas são de fácil tradução. Um programa imperativo é equivalente a uma seqüência de modificações de locações de memória. Funcional – focaliza o processo de resolução do problema. A visão funcional resulta num programa que descreve as operações que devem ser efetuadas para resolver o problema. WILIAM HIROSHI HISATUGU PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Lógico – está relacionado à perspectiva da pessoa: ele encara o problema de uma perspectiva lógica. Um programa lógico é equivalente à descrição do problema expressa de maneira formal, similar à maneira que o ser humano raciocinaria sobre ele. Orientado à Objetos – focaliza mais o problema. Um programa OO é equivalente a objetos que mandam mensagens entre si. Os objetos do programa equivalem aos objetos da vida real (problema).A abordagem OO é importante para resolver muitos tipos de problemas através de simulação. A primeira linguagem OO foi Simula, desenvolvida em 1966 e depois refinada em Smalltalk. Existem algumas linguagens híbridas: Modelo Imperativo mais características de Orientação a Objetos (OO). WILIAM HIROSHI HISATUGU