Você está na página 1de 4

Avaliao das Linguagens de Programao Clipper e Perl

Vicente Herclio da Costa e Silva Andrade


Curso de Cincia da Computao Fundao Universidade Federal do Tocantins - UFT Palmas, Brasil vicentehercilio@gmail.com compatibilidade com verses anteriores. Neste momento a empresa CA resolveu chamar o Clipper de CA-Clipper. O perodo de apogeu do Clipper se deu durante dos anos de 1980 e 1990 [4]. O grande destaque eram o tamanho dos programas gerados serem bem pequenos, em uma poca em que as unidades de armazenamento em massa no passavam de 10 MB. E a velocidade de compilao e execuo em computadores com processadores como o 386 e 486 e cuja memria RAM no passava dos 2MB. Atualmente o Clipper considerado obsoleto, mas existem iniciativas como a do projeto open-source Project Harbour que continuam oferecer suporte a sistemas baseados em XBASE mesmo sem o apoio da empresa que detm os direitos, a CA. III. HISTRICO DA LINGUAGEM PERL

ResumoEste artigo avalia as linguagens de programao Clipper e Perl sob os principais aspectos avaliativos estabelecidos por Sebesta (2000) para uma linguagem de programao. (Resumo) Clipper; Perl; legibilidade; ortogonalidade, escrita (palavras chave)

I.

INTRODUO

Com a crescente evoluo de hardware para suprir as exigncias da natural evoluo de software, as linguagens de programao tiveram que acompanhar e evolurem ou serem criadas para proporcionar a sociedade softwares cada vez mais sofisticados, modernos e seguros. Muitas das linguagens criadas no evoluram com o passar do tempo ou tiveram que ser remodeladas de acordo com as novas exigncias de projetos para poderem ser utilizadas adequadamente de acordo com o contexto. O objetivo deste artigo avaliar duas linguagens de programao (uma linguagem antiga e outra contempornea) sobre os critrios estabelecidos por Sebesta (2000). II. HISTRICO DA LINGUAGEM CLIPPER: A linguagem Clipper cujo nome original era Nantuket Clipper inspirado em um restaurante de frutos do mar o qual seus idealizadores frequentavam, era uma linguagem para inicialmente compilar para o banco de dados dBase. Com o lanamento da verso 5.0, o compilador aos poucos foi desvinculando-se do dBase, nesta mesma poca (meados de 1990), a empresa Computer Associates tinha a inteno de comprar a Nantuket (empresa idealizadora do Clipper). Em paralelo as negociaes, os funcionrios da Nantuket desenvolviam um projeto chamado informalmente de ASPEN, internamente conhecido como Clipper for Windows. Os diferenciais deste projeto eram a introduo de Orientao a Objetos (OO), ambiente grfico para plataformas Windows e um desempenho comparado a de linguagens como o C++. Foi ento que um dos maiores fracassos da tecnologia aconteceu quando a Computer Associates (CA) resolver comprar a Nantucket e adotar os novos projetos da empresa (programao para Windows VO (Visual Object)). Um dos principais motivos da no aceitao era a falta de

A linguagem Perl foi fundada por Larry Wall em dezembro de 1987. O nome foi inspirado em uma passage bblica de Mateus 13. Inicialmente a linguagem foi chamada de Pearl (Pratical Extraction And Language Report), mas por problemas de registro foi omitida a letra a e a linguagem recebeu o nome vigente: Perl (Pathologically Eclectic Rubbish Liste). Larry Wall criou a linguagem ao ser pressionado pelo seu chefe para desenvolver um sistema que controlasse todos os seis sistemas VAXen e todos os seis Suns. Surgiu ento nesse contexto, uma nova linguagem para que gerenciasse todos os sistemas mencionados, no fosse necessrio reescrever tudo do zero e que pudesse emitir relatrios de problemas [3]. IV. CRITRIOS PARA AVALIAO DAS LINGUAGENS DE PROGRAMAO CLIPPER E PERL

A. Legibilidade (Capacidade de Leitura) Segundo Sebesta (2000), a legibilidade um dos quesitos mais importantes para se julgar uma determinada linguagem de programao. Legibilidade em uma linguagem de programao a capacidade com que os programas podem ser lidos. Em termos de custo, a manuteno de um software algo muito considerado nos dias atuais principalmente pela reduo do custo. Um software cujo cdigo estiver legvel ser mais fcil de ser trabalhado e entendido.

1) Simplicidade global: Para Sebesta (2000), a simplicidade global em uma linguagem de programao afeta diretamente a legibilidade da mesma. Linguagens com um grande nmero de componentes bsicos certamente ser mais difcil de aprender se comparadas a linguagens com menos componentes. A multiplicidade de recursos, que se caracteriza como a forma de se escrever uma mesma operao, deve ser considerado como fator que pode vim a reduzir a legibilidade de uma linguagem de programao. Outro quesito que deve ser analisado como fator que pode contribuir ou no com a legibilidade a sobrecarga de operadores que consiste em um nico smbolo possuir mais de um significado. Linguagens que oferecem uma grande quantidade de sobrecargas de seus operadores tornam o cdigo menos legvel. Em Clipper, existe multiplicidade de recursos na utilizao do operador GET que pode ser combinado com outros GETs. J com relao sobrecarga de operadores, o operador @ utilizado para operaes na tela do usurio/sistema. Mas somente para esta funo. No geral, Clipper possui uma aceitvel simplicidade global. Em Perl, h utilizao de pacotes/namespaces para a modularizao do cdigo. Pragma script explicita as coisas em Perl como, por exemplo, o escopo das variveis e Pragma overload a sobrecarga de operadores em classes especficas. 2) Ortogonalidade: Ortogonalidade em uma linguagem de programao significa dizer que para um determinado nmero de primitivas (instrues simples) pode ser gerado um nmero maior de instrues vlidas. um conceito que deve ser utilizado de maneira limitada, pois uma linguagens muito ortogonal afeta a legibilidade e uma pouco ortogonal apesar de melhorar a legibilidade, diminuir a flexibilidade de escrita [1]. Clipper possui ortogonalidade com o operador de adio e subtrao que podem realizar operaes tanto entre inteiros como pontos flutuantes e somatrios de valores para variveis de controle de bordas e de elementos grficos [2]. Perl possui operadores para concatenao se strings, operadores para repetio de string, operadores de soma e subtrao em uso unrio e binrio, operadores relacionais para strings e variveis numricas. Ou seja, a ortogonalidade em Perl alta. 3) Instrues de Controle: Em parte, a revoluo nas linguagens estruturadas durante a dcada de 70 foi devido falta de estruturas eficientes para controle das instrues. O uso indiscriminado da instruo goto reduz a legibilidade do programa [1]. J com relao ao Clipper, este possui instrues de controles suficientes para elaborao de algoritmos claros. Instrues para condicionais como if, else, case esto presentes assim como while, do while. Em Perl, encontramos instrues para controle de fluxo como o if e elseif e instrues para implementao de loops como o while, for, foreach, next last.

4) Tipos de Dados e Estruturas: Tipos de dados podem contribuir com a legibilidade em uma linguagem. Linguagens que no contem tipos booleanos so menos legveis neste aspecto se comparadas com as que contm o mencionado tipo. O mesmo pode-se dizer com relao s estruturas de dados para armazenamento e operaes sobre registros. Uma linguagem de programao que no contm estruturas de dados ser bem menos legvel se comparada com uma que contm [1]. Clipper uma linguagem de tipagem dinmica, ou seja, os tipos so definidos em tempo de execuo. A partir da verso 5, foi introduzida a possibilidade de se informar os tipos s variveis. Clipper possui os tipos para variveis: NUMRICO, CARACTER, DATA, LGICO, MEMO, ARRAY, CODEBLOCK. Com relao a estruturas de dados, arrays multidimensionais so utilizados. Orientao a objetos tambm esta presente com a definio de TADs, mtodos, objetos [2]. Em Perl, a tipagem de variveis tambm dinmica e em tempos de execuo. As variveis podem ser consideradas nos seguintes grupos: Escalar que so valores individuais, Array para variveis plurais (colees), Hash para grupo de valores indexado por string, Sub-rotina e Typeglob para tudo que chamado struckt [3]. Com relao ao uso de estruturas de dados em Perl so utilizados Arrays para operaes com pilhas, filas, listas, rvores. E o uso de Orientao a Objetos (OO) utilizado para refinar a abstrao no uso de estruturas de dados. So implementadas em OO as classes, mtodos e objetos, heranas e sobrecarga de mtodos. 5) Consideraes sobre a Sintaxe: A sintaxe ou a forma dos elementos de uma linguagem tem um impacto significativo na legibilidade dos programas. Os trs principais exemplos de projetos sintticos a considerar so [1]: Formas identificadoras: Prejudicam a legibilidade caso os identificadores sejam pequenos demais ou grandes demais. Palavras especiais: As palavras especiais podem ter impacto na legibilidade de uma linguagem quando as mesmas no forem claras o suficiente para serem distinguidas e diferenciadas no cdigo (chaves no C, end if e end loop em Ada) ou quando palavras especiais tambm puderem ser variveis no programa. Formas e significado: um auxilio para a legibilidade quando instrues so projetadas a fim de indicar pelos menos, parcialmente sua finalidade.

Variveis em Clipper precisam ser declaradas com letras no incio ou caractere de sublinhado e podem conter letras e dgitos nas outras posies. Um detalhe que no se deve passar despercebido o fato da linguagem trabalhar com no mximo 10 (dez) caracteres para nome de variveis. Uma boa prtica para se declarar estas so utilizando letra maiscula sempre que se for iniciar nomes, exemplo: PullDown1, PullDown2. Palavras reservadas podem ser utilizadas em declarao de variveis o que pode afetar a legibilidade do cdigo [2].

Na linguagem Perl, as variveis precisam de identificadores especiais para a identificao do seu respectivo tipo ($, @, %, &, *). As variveis que tiverem valores singulares so chamadas de escalares e as que possuem mltiplos elementos so os arrays. As palavras reservadas em Perl podem ser utilizadas somente para nomear labels ou handles [3]. B. Capacidade de escrita Tem-se na capacidade de escrita de uma linguagem como uma medida do quo facilmente, determinada linguagem pode ser utilizada para criar programas para um domnio de problema escolhido. Escrever um programa exige do programador a releitura do mesmo, ento a maioria dos problemas que afetam a capacidade de leitura, afetar a capacidade de escrita de uma linguagem [1]. 1) Simplicidade e Ortogonalidade: Um grande nmero de construes em uma linguagem pode levar um programador escrita de cdigos absurdos para um determinado problema caso ele no esteja familiarizado com a maioria das construes da linguagem a se trabalhar. Certamente, um nmero menor de construes primitivas e um conjunto consistente de regras para combin-las melhor que um grande nmero de primitivas [1]. Em Clipper, um grande nmero de combinaes pode ser realizado com operadores relacionais, binrios e unrios. Um exemplo est no uso de operadores relacionais em comparao de strings, binrios, reais [2]. Em Perl, a capacidade de escrita diretamente relacionada com sua grande ortogonalidade. Existem classes de operadores relacionais distintas para strings e nmeros, assim como classes de operadores de igualdade. So encontrados tambm operadores de bit, operadores lgicos, operadores de atribuio [3]. 2) Suporte para Abstrao: Abstrao significa a capacidade de definir e, depois usar estruturas ou operaes complicadas de uma maneira que permita ignorar muitos dos detalhes. A abstrao influencia a capacidade de escrita em uma linguagem. Existem duas categorias distintas em linguagens de programao para a abstrao: processo e dados. Abstrao por processo consiste no uso de subprograma para implementar um algoritmo de classificao exigido diversas vezes em um programa. J a abstrao de dados consiste em aproximar o quanto for possvel a soluo que a linguagem proporciona do domnio do problema [1]. Em Clipper, um pacote adicional disponibiliza para a linguagem o paradigma de orientao a objetos o que torna a abstrao de problemas e reutilizao do cdigo em uma tarefa mais simplificada[2]. J em Perl a abstrao tambm realada, porm com maior intensidade e modernidade que na linguagem Clipper pela Orientao a Objetos [3]. 3) Expressividade: A expressividade pode-se referir a muitas caractersticas em uma linguagem. Na maioria das vezes, significa dizer existem formas bem mais convenientes

de se especificar computaes em vez de formas mais desajeitadas (cont++, for, while, and then) [1]. Em Clipper o uso de operadores pr-fixados e ps-fixados demonstra a expressividade na linguagem. A expresso cont++ pode ser escrita tambm como cont=cont+1. J em Perl, operadores unrios podem ser utilizados em notaes diferentes para poderem expressar a mesma operao, como por exemplo, cont++ que equivale a cont=cont+1. C. Confiabilidade Um programa dito confivel quando ele se comportar de acordo com suas especificaes sob todas as condies [1]. 4) Verificao de Tipos: Verificar tipos nada mais do que em tempos de execuo ou compilao, verificar se o tipo que esta sendo passado pela varivel realmente o tipo esperado. A verificao de tipos em tempos de compilao algo mais seguro e menos dispendioso que a verificao em tempos de execuo [1]. Em Clipper a verificao de tipos de variveis feita no momento de sua utilizao. Ou seja, a tipagem realizada dinamicamente [2]. Em Perl, a situao de verificao de tipos de variveis bem parecida com a de Clipper. A diferena esta no uso de operadores para distinguir os tipos de variveis. E a forma como a linguagem trata os tipos no explicitados que so tidos como escalares [3]. 5) Manipulao de Excees: Manipular excees significa tratar em tempos de execuo (na maioria das vezes) e por em prtica medidas corretivas em programas o que pode influenciar significativamente a segurana e confiabilidade [1]. As excees em Clipper so tratadas pelas instrues BEGIN SEQUENCE/END em tempos de execuo. J em Perl, as prticas mais adotadas para manipulao de excees a utilizao do eval BLOCK. 6) Aliasing: o recurso em uma linguagem de ter dois ou mais mtodos, ou nomes, distintos que fazem referncia a mesma rea de memria (clula de memria) em um sistema computacional. O alisiang pode comprometer drasticamente a confiabilidade em uma linguagem [1]. Em Clipper, assim como na linguagem C, o uso de distintos ponteiros que referenciam uma mesma rea de memria tambm permitido. Perl tambm permite este recurso. 7) Legibilidade e Capacidade de Escrita: Quanto mais fcil de escrever um programa, melhor ser do programador entende-lo e mais seguro ser. J a relao entre a legibilidade e a confiabilidade ser em programas onde a leitura fcil e certamente ser melhor de realizar escrita e manuteno neste cdigo [1]. Clipper possui como a maioria das linguagens suporte a comentrios, o que facilita na manuteno do cdigo e consequentemente influencia na segurana. O uso de tipos reservados da linguagem como variveis no uma boa prtica se usada em demasia. A sobrecarga de operadores tambm deve ser levada em considerao durante a etapa de

implementao de um projeto, pois seu excesso pode resultar em um no entendimento por parte de outros programadores [2]. Em Perl, a alta ortogonalidade dos operadores tende a dificultar a escrita do cdigo. O uso de tipos reservados tambm permitido, porm com algumas restries de uso o que tende a deixar o cdigo mais legvel e seguro do que o uso indiscriminado. As implementao de loops e condicionais para controle de fluxo alm de deixaram o cdigo mais elegante tendem a tornar as coisas mais claras do que o uso de gotos. Esses por sua vez existem em Perl, porm no so vistos com bons olhos o seu uso. Comentrios em Perl so suportados o que facilita a escrita, documentao e por conseqncia a segurana no cdigo e sua manuteno [3]. D. Custo O custo para implantao da linguagem Clipper em termos financeiros no chega a ser to alto devido ao fato de a linguagem no ter sido mais atualizada pela CA e ter sido descontinuada a produo em fbrica de seus kits. Existe uma vasta documentao disponvel sobre Clipper disponvel em meios eletrnicos e meios impressos. Porm o custo benefcio de implementar a linguagem em projetos atuais no positivo devido ao fato da linguagem no ter se atualizado juntamente com a evoluo de hardware e software. O que pode tornar as aplicaes limitadas e com aspecto datado se comparada com aplicaes desenvolvidas em linguagens atuais. Com relao linguagem Perl, ela um dos alicerces da programao para a Web e possui uma ativa comunidade que auxilia na manuteno e continuidade da mesma. Outro fator a se considerar para com a linguagem Perl o fato de ter custo zero em sua implementao, pois sua licena open-source. O que de fato teria como custo apenas o treinamento de pessoal para lidar com a linguagem. REFERENCIAS
[1] [2] [3] [4] SEBESTA, Robert W.. Conceitos de Linguagens de Programao. 4. ed. Porto Alegre: Bookman, 2000. 624 p. SPENCE, Rick. Clipper 5.2. So Paulo: Makron Books, 1994. 874 p. WALL, Larry; CHRISTIANSEN, Tom; ORWANT, Jon. Programao Perl. 3. ed. Rio de Janeiro: Campus, 2001. 1084 p. FEDELI, Ricardo Daniel; POLLONI, Enrico Giulio Franco; PERES, Fernando Eduardo. Introduo Cincia da Computao. So Paulo: Thomson, 2003. 238 p.