Top Qs
Linha do tempo
Chat
Contexto
Information Processing Language
linguagem de programação Da Wikipédia, a enciclopédia livre
Remove ads
Information Processing Language (IPL) é uma linguagem de programação desenvolvida por Allen Newell, Cliff Shaw, e Herbert Simon da RAND Corporation e do Carnegie Institute of Technology criada cerca de 1956.[1] Newell tinha o papel de especificador linguagem programador da aplicação, Shaw era o programador do sistema e Simon assumiu o papel de programador do aplicativo do usuário.
A linguagem inclui recursos destinados a apoiar programas que poderiam executar programas para solução geral de problemas(GPS - General Problem Solving), incluindo listas, associações, esquemas (frames), alocação dinâmica de memória, tipos de dados, recursividade, recuperação associativa, funções como argumentos, (geradores de fluxos), e multitarefa cooperativa. IPL foi pioneira no conceito de processamento de listas, embora em um estilo de linguagem de montagem.
Remove ads
Um gosto da IPL
Resumir
Perspectiva
Uma computador IPL tem:
- Um conjunto de símbolos. Todos os símbolos são endereços e nomes de célula. Ao contrário dos símbolos nas linguagens posteriores, símbolos consistem de caracteres seguido por um números, e são escritos H1, A29, 9-7, 9-100.
- Nomes de células começando com uma letra são regionais, e são endereços absolutos.
- Nomes de células começando com "9 -" sãolocais, e são significativos dentro do contexto de uma lista única. Uma lista de 9-1 é independente de outra lista 9-1.
- Outros símbolos (por exemplo, puramente números) são internos.
- Um conjunto de células. As listas são construídas a partir de várias células com referência mútua. As células têm vários campos:
- P, um campo de 3 bits usado para um código de operação quando a célula é usada como uma instrução, e não usado quando a célula é de dados.
- Q, um campo com 3 valores usado para referência indireta quando a célula é usada como uma instrução, e não usado quando a célula é de dados.
- SYMB, um símbolo usado como o valor na célula.
- Um conjunto de processos primitivos, que seriam chamados de funções primitivas nas línguas modernas.
A estrutura de dados principal do IPL é a lista, mas as listas de IPL são estruturas mais complexas do que em muitas outras linguagens. Uma lista é constituída por uma única seqüência de símbolos ligados, como se poderia esperar -- acrescida de algumas listas de descrição, que são listas encadeadas subsidiárias, isoladamente, interpretadas como nomes de atributos e valores alternativos. IPL fornece primitivas para acessar e modificar o valor do atributo pelo nome. As listas de descrição recebem nomes locais (da forma 9-1). Assim, uma lista chamada L1 contendo os símbolos S4 e S5, e descrita pelo valor associado de V1 ao atributo A1 e V2 para A2, seria armazenada como se segue. 0 indica o fim de uma lista, os nomes de células 100, 101, etc são símbolos internos gerados automaticamente e cujos valores são irrelevantes. Essas células podem ser espalhadas por toda a memória; somente a L1, que usa um nome regional é que deve ser conhecida globalmente, tem de residir em um lugar específico.
IPL é uma linguagem de montagem para a manipulação de listas. Ela tem algumas células que são usadas como registradores de propósito especial. H1, por exemplo, é usada como contador de programa. O campo SYMB de H1 é o nome da instrução atual. Contudo, H1 é interpretada como uma lista; o LINK de H1, em termos atuais, é um ponteiro para a cabeça da pilha de chamadas. Por exemplo, chamadas de subrotinas empilham o SYMB de H1 na pilha.
H2 é a lista vazia. Procedimentos que necessitam alocar memória obtém células fora de H2; procedimentos que já terminaram com a utilização da memória a colocam em H2. À entrada para uma função, a lista de parâmetros é dada em H0, ao sair, os resultados devem ser devolvidos em H0. Muitos procedimentos retornam um resultado booleano indicando o sucesso ou fracasso, que é colocado em H5. Dez células, W0-W9, são reservados para armazenamento de trabalho em área pública. Os procedimentos são "moralmente vinculados" (para citar o artigo da Comunications of the ACM) para salvar e restaurar os valores destas células.
Há oito instruções, com base nos valores de P: chamada de subrotinas, empilhar/desempilhar S para H0; empilhar/desempilhar o símbolo em S para a lista anexa à S; copiar valor para S; instrução de seleção condicional. Nestas instruções, S é o alvo. S é tanto o valor do campo SYMB se Q = 0, o símbolo na célula nomeada como SYMB se Q = 1, ou o símbolo na célula nomeada pelo símbolo que está na célula nomeada por SYMB se Q = 2. Em todos os casos, exceto na ramificação condicional, o campo LINK da célula indica qual será a próxima instrução a ser executada.
IPL tem uma biblioteca de cerca de 150 operações básicas. Isso inclui operações como:
- Símbolos de teste para a igualdade
- Pesquisar, definir ou apagar um atributo de uma lista
- Localizar o próximo símbolo em uma lista; inserir um símbolo em uma lista, apagar ou copiar uma lista inteira.
- Operações aritméticas (em nomes simbolólicos).
- Manipulação de símbolos, por exemplo, testar se um símbolo representa um número inteiro, ou representa um símbolo local.
- Operações de Entrada/Saída
- "Geradores", que correspondem aos iteradores e os filtros na programação funcional. Por exemplo, um gerador pode aceitar uma lista de números e produzir a lista de seus quadrados. Um Geradore poderia aceitar funções devidamente projetadas - rigorosamente, os endereços de código das funções adequadamente concebidas - como argumentos.
Remove ads
História
Resumir
Perspectiva
A primeira aplicação do IPL foi demonstrar que os teoremas de Principia mathematica que eram laboriosamente comprovados a mão, por Bertrand Russell e Alfred North Whitehead, poderiam ser de fato provados por computação. De acordo com a autobiografia de Simon Models of My Life, esta primeira aplicação foi desenvolvida por meio de simulação manual, usando seus filhos como elementos de computação, enquanto escrevia sobre e segurando cartões com anotações como os registros que continham as variáveis de estado do programa .
IPL foi utilizada para implementar vários dos programas iniciais do campo da inteligência artificial, também pelos mesmos autores: o Logic Theory Machine (1956), o General Problem Solver (1957), e seus programas de computador para jogos de xadrez NSS (1958).
Várias versões do IPL foram criadas: IPL-I (nunca implementada), LPI-II (1957 por Johnniac), IPL-III (existiu momentaneamente), IPL-IV, IPL-V (1958, para os computadores IBM 650, IBM 704, IBM 7090, e muitos outros. Amplamente utilizada), IPL-VI.
No entanto, a linguagem foi rapidamente substituída pela linguagem de programação Lisp, que tinha características muito mais poderosas, uma sintaxe mais simples, e os benefícios da coleta de lixo automática coleta de lixo.
Remove ads
Legado para a programação de computadores
IPL provavelmente introduziu vários recursos das linguagens de programação:
- Manipulãção de Listas (somente listas de átomos, não listas em geral)
- Listas de propriedades (mas só quando ligado a outras listas)
- Funções de ordem superior (excetuando-se o fato de que a linguagem de montagem sempre foi capaz de calcular com endereços das funções de chamada; IPL foi uma tentativa de generalizar esta propriedade da linguagem assembly e fazê-la de maneira fundamentada.)
- Computatação com símbolos (exceto que os símbolos são formados por número+letra e não palavras completas)
- Máquina virtual
Muitos desses recursos foram generalizadas, clareados, e incorporados ao Lisp[2] e do Lisp para uma ampla gama de linguagens de programação ao longo das décadas seguintes.
Publicações
- Newell, A. and F.C. Shaw. "Programming the Logic Theory Machine." Feb. 1957. Proceedings of the Western Joint Computer Conference, pp. 230-240.
- Newell, Allen, and Fred M. Tonge. 1960. "An Introduction to Information Processing Language V." CACM 3(4): 205-211.
- Newell, Allen. 1964. Information processing language-v manual; Second Edition. Rand Corporation
[Allen Newell], Englewood Cliffs, NJ: Prentice-Hall.
Remove ads
Referências
- Wexelblat, Richard L.(Editor) (1981). History of Programming Languages. New York: Academic Press. p. 174. 758 páginas. ISBN 0-12-745040-8
- «Pré- História do LISP». Consultado em 6 de janeiro de 2012
Bibliografia
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads