====PL/1====

PL/1

Introdução

Assim como o FORTRAN é particularmente uma linguagem adaptada para programação de problemas matemáticos e o COBOL se adapta particularmente a programação de problemas comerciais, o PL/I,tendo-se baseado nas linguagens Fortran e Cobol, se adapta a programação de ambos problemas.

Quando pensamos em PL/1, logo nos deparamos com algumas informações, comparando nossa linguagem com as demais.

Definindo a mesma facilmente em simples palavras: mais simples do que C, mas o mais estruturado do que Basic, o objetivo em criar esta linguagem foi para compilar um código mais compacto que seria executado de forma eficiente e segura.

Grupo

Origem: Universidade Federal de Pelotas, Brasil / Pelotas-RS

Grupo responsável:

  • André Basso
  • Carlos Yano
  • Henrique Maich

História

O projeto PL/I (Linguagem de Programação One), baseado nas linguagens ALGOL 60, COBOL, FORTRAN, começou em 1963, e foi concluido em 1964 em um os laboratórios da IBM no Reino Unido. Originalmente chamado NPL (New Programming Language), seu primeiro compilador foi entregue em 1966 e teve seu padrão aprovado em 1976. Como foi escrita uma linguagem tão grande, foi necessária uma definição formal, um projeto foi criado em 1967 na IBM, para realizar uma especificação completa. Estava à frente de seu tempo e, periodicamente, foi alvo de crítica equivocada de “puristas” na sociedade de computação.

Nos EUA nunca foi um sucesso, já na Europa, foi amplamente utilizado tanto em aplicações comerciais e científicas. No Leste Europeu, praticamente dizimou o Cobol e passou a ser a linguagem para escrever aplicações de negócios. No entanto, sua popularidade caiu drasticamente com a introdução de computadores pessoais. Por alguma razão, as linguagens de programação C (que, para muitas tarefas de programação é inferior) e Pascal (que em comparação, seria uma linguagem de brinquedo) tornaram-se mais populares. Possivelmente estar relacionado com a ausência de compiladores de baixo custo a pesar de seu dialeto PL / M ter sido apreciado alguma popularidade antes de ser deslocado com C.

A implementação desta linguagem foi desenvolvida para mainframes no final de 1960, mini computadores em 1970 e PCs em 1980 e 1990. Entretanto seu uso mais comum foi a de mainframes. Ele foi comercialmente implementado nas versões para DOS, Microsoft Windows, OS/2, AIX, Open VMS, e Unix.

Contribuição Para As Futuras Linguagens

XPL - Desenvolvido em um trabalho conjunto entre a Universidade de Stanford e a Universidade da Califórnia, Santa Cruz, o XPL foi meramente um dialeto customizado do PL/I. Foi anunciado e 1968 na Fall Joint Computer Conference em São Francisco, Califórnia.

B - Desenvolvida pela Bell Labs (também conhecida como AT&T Bell Laboratories). Teve como maior influencia o BCPL embora haja parte da influencia do PL/I, futuramente substituido pelo C. Anunciado em meados de 1969.

PL/M - Desenvolvido por Gary Kildall em 1972 para os microprocessadores da Intel. Esta linguagem incorpora ideias do PL/I e também do ALGOL e do XPL, e teve a integração com macro processadores.

ReXX - Desenvolvia pela IBM, esta linguagem interpretada foi criada para ser uma linguagem de alto-nível de fácil compreensão e aprendizagem. Anunciado em 1979.

SP/k - Deselvolvida por R.C. Holt, D.B. Wortman, D.T. Barnard and J.R. Cordy como uma linguagem criada para ensinar programação, usada durante décadas por mais de 40 universidades, escolas, laboratórios no Canada e nos EUA. Foi anunciada e implementadais por volta de 1974.

Fatia Do Mercado

As principais fatias do mercado onde o PL/I atua são as de processamento de dados, computação numérica, computação cientifica, e programação de sistemas. Como esta linguagem suporta recursos abrangentes e preparado para situações de alto nível de processamento, torna-se extremamente eficiente com algoritmos complexos.

Características

Recursos estruturais do PL/I:

  • Possibilidade de uso recursivo;
  • Programação estruturada;
  • Manipulação estrutural de dados compartilhados;
  • Ponto-fixo;
  • Ponto-flutuante;
  • Números Complexos;
  • Manipulação de strings de caracteres[2];
  • Manipulação de strings de bit;

Hello Word

Normalmente quando apresentamos uma linguagem, sempre nos utilizamos o exemplo Hello Word.

HELLO:   PROCEDURE OPTIONS (MAIN);

             /* A PROGRAM TO OUTPUT HELLO WORLD */
             FLAG = 0;

LOOP:     DO WHILE (FLAG = 0);        
             PUT SKIP DATA('HELLO WORLD!');
          END LOOP;
END HELLO;

Estrutura padrão

  LABEL:     PROC OPTIONS (MAIN) ;         Identificação do programa
  DECLARE    arquivos ,                    Declaração de variáveis
             campos ,
             PICTUREs de edição ,
             tabelas ,
             estruturas ,
             inicializações ,
             redefinições ,
             funções (BUILT-IN) ,
             rotinas externas;
  ON CONDITIONS ;                          Tratamento de condições
  COMANDOS ;                               Comandos / Instruções
    movimentações ;
    expressões ;
    concatenação ;
    condições ;
    LOOPs ;
    manipulação de arquivos ;
    manipulação de banco de dados ;
    chamadas de rotinas internas;
    chamadas de rotinas externas;
  COMANDOS ;
  ROT-LABEL: PROC ;                        Identificação da
                                           Sub-rotina interna
  END ROT-LABEL ;                          Finalização da
                                           Sub-rotina interna
  END LABEL ;                              Finalização do programa

Operadores de comparação

Comando Significado
= Igual
!= Diferente
> Maior
< Menor
>= Maior ou Igual
>= Menor ou Igual
Ordem de precedência dos comandos:
1. Expressões entre parênteses
2. Prioridade dos operandos
3. Dentro da mesma prioridade da esquerda para a direita 
Depois analisamos
1º **, ¬, +(PREFIXO), -(PREFIXO)
2º *, /
3º +(INFIXO), -(INFIXO)
4º || (CONCATENAÇÃO)
5º >, >=, =, !=, <=, <,
6º &   (AND)
7º |   (OR)

Expressões e operações

Exponenciação

Operador: ∗∗

Ex:

  A = A ∗∗ 3

Multiplicação

Operador: *

Ex:

  A = B * C

Divisão

Operador: /

Ex:

  A = B / C

Infixo

Operadores: +, -

Prefixo

Operador: +, -

Concatenação

Operador: ||

Ex:

  A = 'AB', B = 'CD', C = A || B
  C = 'ABCD'

Sintaxe De Expressões Condicionais

IF

A estrutura condicional do comando if segue o seguinte padrâo:

IF --<condição>-- THEN --<comando>--;
                  ELSE --<comando>--;
                  

SELECT

Também conhecido como comando Switch Case, ele segue a seguinte estrutura:

SELECT (<campo>);
  WHEN (<valor> ou <condição>) --<comando>--;
  ...
  WHEN (<valor> ou <condição>) --<comando>--;
  OTHERWISE --<comando>--;
END;

DO

A estrutura do pode ser usado em 2 situações diferentes.

Ela pode ser usada para produzir blocos de programas como no exemplo a seguir:

IF --CONDICAO—- THEN
  DO;
    --COMANDOS--;
  END;
ELSE
  DO;
    --COMANDOS--;
  END;

Ele também pode ser usado como uma estrutura de repetição semelhante a estrutura conhecida como FOR desde que siga a seguinte sintaxe:

DO I = 0 TO 10 BY 2;  
  --COMANDOS--;                                 
END;

WHILE

Seguindo a estrutura condicional conhecida como while, na linguagem PL/1 ela é dada desta forma:

DO WHILE (--CONDICAO--);
  --COMANDOS--;
END;

UNTIL

Segue o mesmo estilo do comando while, a unica diferença é que o teste condicional é feito apenas depois de executar o bloco:

DO UNTIL (--CONDICAO--);
  --COMANDOS--;
END;

MISTO

Bom este comando é um pouco diferente do usual pois ele combina vários comandos respetivos descritos acima, a estrutura dele segue este exemplo:

DO COD = 1 TO 10 WHILE (--CONDICAO--);
  --COMANDOS--;
END;

Delaração de campos

 DCL <identificação> <ocorrência> <tipo> (<tamanho><,decimais>)
                           <alocação> INIT(<inicialização>);
                           

IDENTIFICAÇÃO

29 caracteres de nome NÃO podendo iniciar por número Caracteres alfabéticos (A ~ Z), numéricos (0 ~ 9) e alguns caracteres especiais ('#', '@', '$' e '_')

TIPO

CHARACTER (CHAR) - alfanumérico PICTURE (PIC) – numérico zonado DECIMAL FIXED (FIXED) – numérico compactado DECIMAL FLOAT (FLOAT) – numérico ponto flutuante BINARY FIXED (BIN FIXED) – numérico binário POINTER – endereço

TAMANHO

CHAR – de 1 à 32767

Ex.:

  CHAR(10)

PIC – de 1 a 15 (inclusive decimais)

Ex.:

   PIC '(13)9V99' - 15 dígitos onde 13 inteiras e 2 decimais

FIXED – de 1 a 15 (inclusive decimais)

Ex.:

  FIXED(15,2) – 15 dígitos onde 13 inteiras e 2 decimais
  

FLOAT – de 1 a 33 (não há decimais)

Ex.:

  FLOAT(06)

BIN FIXED – 15 (2 bytes) ou 31 (4 bytes) (não há decimais)

Ex.:

  BIN FIXED(15)

Não utilizar para operações de multiplicação e divisão com campos que contenham decimais.

POINTER – tamanho implicitamente definido (4 bytes)

BIT – utilizado para testes lógico / zero (0) é falso e 1 (um) é verdadeiro)

Ex.:

 
  BIT(01)

Alguém Ainda Usa?

Praticamento apenas os amantes de PL/1 a utilizam atualmente, PL/1 foi usada em varias aplicações a algumas décadas atras, porém foi substituídas por linguagens mais modernas como Cobol ou C na maioria dos casos.

Um exemplo é a empresa SAS Institute Inc que usou a linguagem PL/I em seu software chamado SAS. Porém com o numero baixo de programadores PL/I a linguagem foi substituída por C.

No mercado de mainframes aonde foi bastante difundido a linguagem PL/I com o passar do tempo, a linguagem começou a ficar ultrapassada e foi gradualmente sendo substituídas pelo Cobol, que em alguns casos é usado até hoje, mesmo já sendo considerada por alguns, uma linguagem ultrapassada também.

A IMB acabou adotando o dialeto da linguagem PL/I e acabou criando sua própria linguagem chamada PL/S, que acabou sendo bem aceita pela sua comunidade.

Outras linguagens adotaram as grandes vantagens do PL/I em suas linguagens combinando suas próprias vantagens com as da linguagem PL/I. Um exemplo disso são as linguagens Cobol e Fortran.

 
pl1-1-trabalho.txt · Last modified: 2012/03/30 18:47 by clp · [Old revisions]