Quem inventou a linguagem de programação pascal, quando e por quê? quais são os pontos fortes da linguagem de programação?

Quem inventou a linguagem de programação Pascal, quando e por quê? Quais são os pontos fortes da linguagem de programação?

o

Quem

e

Quando

são rápidos e fáceis.

Pascal

foi criado por

Niklaus Wirth

no final dos anos 1960 / início de 1070. O

Por quê

e

Forças

da linguagem demora um pouco para explicar.

Como resposta a alguns problemas percebidos com o FORTRAN, um idioma foi desenvolvido originalmente na década de 1950 chamado ALGOrithmic Language ou

ALGOL

. Algol foi baseado em princípios mais matemáticos que o FORTRAN. É interessante que a definição formal da linguagem, que foi introduzida com o

ALGOL-60

No relatório, o mesmo designer da FORTRAN, John Backus, nos deu o princípio da notação gramatical formal para linguagens de programação chamada

BNF

ou Backus-Naur.

À medida que a década de 1960 prosseguia e havia diferentes fabricantes de hardware de computador, surgiu na indústria a necessidade de idiomas serem definidos de alguma maneira "padrão"; de modo que os códigos de um fabricante tenham alguma chance de trabalhar no sistema de outro fabricante. Todo COBOL, FORTRAN e ALGOL acabaram com comitês de padrões, onde engenheiros, matemáticos e cientistas se reúnem para definir a sintaxe e a semântica de cada um [FWIW: o último padrão Fortran 2018 foi lançado no outono passado - veja

Fortran 2018 (anteriormente Fortran 2015)

]

Um desses grupos seria a Federação Internacional para Processamento de Informações (

IFIP

) uma organização internacional e (supostamente) apolítica, cuja 'missão' era “incentivar e auxiliar no desenvolvimento, exploração e aplicação da Tecnologia da Informação em benefício de todas as pessoas”.

No início dos anos 60, o comitê do Grupo de Trabalho 2.1 do IFIP foi criado com o mandato de projetar uma linguagem de programação para substituir o então padrão Algol 60. A nova definição estava sendo chamada

ALGOL-X

. Naquela época, havia deficiências conhecidas no ALGOL (muito menos as reclamações sobre o FORTRAN), como a falta de suporte para um tipo de dados de cadeia de bits.

Na época da reunião regular do comitê no outono de 1966, três propostas concorrentes haviam sido apresentadas. Uma das propostas, de um acadêmico chamado Niklaus Wirth, era para uma linguagem que oferecesse alguma melhora modesta em relação ao Algol 60. Uma proposta muito mais ousada, por

Adriaan Van Wijngaarden

, foi escolhido pelo comitê que mais tarde passou a ser chamado

ALGOL-68.

Portanto, o esforço do ALGOL-X / ALGOL 68 seguiu um caminho diferente e, portanto, foi criada uma nova linguagem, que era uma linguagem interessante, mas sofreu o '

segundo efeito de sistemas

'e era extremamente complexo e acabou sendo difícil de implementar.

Como resultado da decisão de prosseguir a proposta de Van Wijngaarden, vários membros do comitê, incluindo Wirth e

CAR Hoare

, abandonou o comitê (foi dito que foi uma reunião bastante intensa). Wirth desenvolveu sua proposta em uma linguagem no estilo Algol que, eventualmente, passou a ser conhecida como

Algol W

(como o Algol 60 antes, a gramática da linguagem Algol W foi formalmente descrita usando a notação BNF).

Embora menos ambiciosa do que a proposta de Van Wijngaarden, a linguagem de Wirth introduziu em Algol uma série de novos conceitos, incluindo:

  • um tipo de dados de ponto flutuante de precisão dupla
  • um tipo de dados complexo
  • um tipo de dados de string de bits
  • estruturas de dados dinâmicas (ou seja, o que agora consideramos estruturas e ponteiros para estruturas)
  • expressões de bloco

Wirth estava em Stanford na época, e ele definiu e implementou um compilador para uma nova linguagem, ALGOL-W, para a arquitetura IBM 360 que ele tinha acesso, juntamente com uma nova linguagem de programação de sistemas que ele chamava PL / 360. Depois que Wirth escreveu o compilador PL / 360 (IIRC ~ 1968), o PL / 360 foi usado para implementar o Algol-W na versão do OS / 360 de Stanford e foi portado para o TSS / 360 na CMU e o MTS na UMich.

Algol-W era (e ainda é) uma excelente linguagem de ensino, mas devido à sua curta vida, conheço alguns livros que existem para ela. Até onde eu sei, nenhum outro sistema realmente suportava a linguagem ALGOL-W até que uma implementação do UNIX apareceu há alguns anos, chamada

TEMOR

(com o qual eu brinquei, mas realmente não usei) FWIW, a implementação original do ALGOL-W foi um dos primeiros dialetos do ALGOL que eu usei como programador, alocado na CMU sob o TSS.

No final dos anos 1960, Wirth voltou a Zurique para se tornar professor na ETH e tomou outra

trabalhe no desenvolvimento de uma linguagem de programação para ensinar os conceitos e as ideias difíceis necessárias quando você escreve um programa para os alunos

. O novo idioma foi chamado

Pascal.

Foi originalmente direcionado para o mainframe CDC 6600, que é o sistema descrito por ele e sua co-autora, Kathleen Jensen: “

Manual e relatório do usuário Pascal

. ” A Wikipedia alega que a primeira implementação bem-sucedida do idioma foi desenvolvida em Max-Engeli, em linguagem C, chamada Scallop, e depois foi traduzida manualmente. O compilador CDC se tornou o compilador "raiz" de muitas implementações diferentes do Pascal que se seguiram.

Minha primeira introdução à linguagem foi no PDP-10, usando o compilador de HH Nagel e E. Kisicki, cuja origem do compilador ainda pode ser encontrada em

Compilador PDP-10 Pascal da DECUS Lib 10–06

. Se você procurar a origem dessa implementação do compilador, notará que ele foi iniciado como compilado em cruz a partir do compilador ETH original.

A equipe de Pascal da ETH queria propagar o idioma rapidamente. Assim, como nossos desenvolvedores posteriores que criariam Java alguns anos depois, os implementadores de Pascal desenvolveram um "kit de portabilidade" do compilador que incluía um

compilador

que gerou código para um

Máquina de pilha “virtual”

arquitetura e uma

intérprete para essa máquina de pilha

, em vez do destino CDC 6600. Isso levou o nome de sistema "Pascal-P". Uma das questões práticas do kit de portabilidade original era que as quatro versões das máquinas Pascal P de referência (

aka

P1 - P4), assumiu que o intérprete estava sendo executado em um CDC 6600 com um comprimento de palavra de 60 bits; quando a maioria dos sistemas de hardware do dia usava uma palavra de 16, 32 ou 36 bits.

No entanto, o sistema Pascal se espalhou rapidamente. A primeira versão 'byte code' da máquina P foi o UCSD Pascal. Ao usar a nova versão do intérprete P-Machine, a equipe UCSD criou um sistema que executava vários sistemas pequenos (8 bits) como o Apple-II e, posteriormente, o IBM-PC.

Dito isto, outros compiladores (estilo 'direto' e 'cruzado') que geraram código de máquina direto para a maioria dos ISAs de hardware do dia e foram portados para vários sistemas operacionais diferentes. Como resultado, Pascal apareceu rapidamente para diferentes sistemas DEC, hardware DG, GE / Honeywell, muito menos para microprocessadores como o 8080 / Z80, 6502, 68000 e similares.

O fato é que Pascal era uma linguagem de super ensino e apareceu junto com inúmeras implementações de si mesma no momento certo. Pessoalmente, acho que ainda é uma das melhores / senão a melhor linguagem de programação para novos programadores, mas existem outras linguagens, como Smalltalk, que também disputam essa distinção.

Eu recomendo ir ao

Pascal grátis

e faça o download do sistema e brinque com ele, pois o Free Pascal System pode gerar código para muitos sistemas diferentes e é provável que "apenas funcione" no computador que você está usando, leia esta resposta.

Iniciantes ou especialistas, acredito que você pode aprender muito; especialmente se você puder desenterrar uma cópia usada de um dos excelentes livros sobre a linguagem e a programação em si, como Clancy e Copper '

Oh Pascal

e tente os exercícios contidos. Tudo o que você aprende sobre como programar em geral será mapeado para as linguagens atuais, como C, C ++, Java, Rust ou Go; e Pascal lhe dará um pouco de arnês de segurança que os outros não [como dizer em outras respostas, não colocamos novos pilotos em um caça a jato, colocamos em Piper Cub ou Cessna 150).

Mas a popularidade de Pascal e seu alvo original como um

linguagem de ensino

causou alguns problemas enormes tentando usá-lo como uma prática

linguagem de produção

por profissionais de informática. O Relatório Pascal original definia um idioma que foi projetado para ser compilado como um aluno:

um programa completo de cada vez.

Fundamentalmente, a linguagem carecia de suporte para muitos recursos que 'programadores profissionais' precisavam. Não vou tentar descrevê-los todos aqui, mas sim apontar para um artigo de Brian Kernighan chamado: “

Por que Pascal não é minha linguagem de programação favorita

. ” que ele escreveu após sua experiência reescrevendo seu livro original baseado em FORTRAN: "

As ferramentas de software ”[ISBN 020103669X (ISBN13: 0785342036695)]

tornar-se "

As ferramentas de software em Pascal

. ”

Muitos dos problemas com a linguagem Pascal que Brian descreve foram tratados ao longo dos anos. Não que os problemas com o idioma fossem fatais, pois muitos

diferentes implementações de Pascal os resolveram

; mas infelizmente

De maneiras diferentes

. Assim programa

portabilidade

tornou-se um problema; o que é um grande problema para programadores profissionais. Além disso, a representação de dados se tornou outra questão prática. Strings, por exemplo, foram definidas como contendo um comprimento armazenado em um campo de comprimento antes do início da string [C não mantém um comprimento em suas strings, mas sim um marcador de fim de string]. Como a maioria dos sistemas definiu o comprimento da string Pascal em um byte e um byte como 8 bits, isso significa que as strings estavam limitadas a menos de 256 caracteres; para essas implementações. Outras implementações (como CDC, onde um byte foi definido como 6 bits, armazenou o comprimento em uma palavra), outras ainda em uma palavra de 16 bits. De qualquer forma, você pode ver para onde isso está indo ... ele criou um código diferente entre diferentes implementações do Pascal.

O idioma acabou sendo padronizado e a maioria das extensões diferentes se uniram. O mundo comercial criou

Object Pascal

e Delphi para o IBM / PC, que são variantes OOP do Pascal (suportadas pelo Free Pascal). O próprio Wirth seguiu Pascal com várias outras línguas, principalmente

Modula

, então Modula II, Modula III e, finalmente, o

Oberon

família.

Ao todo, Pascal teve um ótimo passeio. Certamente, durante as décadas de 70 e 80, houve um debate feroz entre os mundos C e Pascal. Os 'tipos puros de CS' tendiam a preferir Pascal e os tipos de 'Programação de Sistemas' (como eu) tendiam a preferir C. Eu, pessoalmente, sempre achei que a razão pela qual o C ++ ganhou tanta popularidade entre muitos na comunidade de CS foi dessa maneira 'C não ganhou.

Verdade seja dita, eu uso o que preciso quando programa. Eu escrevi muito mais código C do que qualquer outra coisa em meus 40 anos de carreira, mas Pascal ou Fortran são ótimas ferramentas. O Fortran provavelmente tem mais futuro apenas porque há muito código por trás dele e nada disso está indo a lugar algum, mas Pascal (principalmente em Delphi) ainda tem seguidores muito menores, mas ainda um pouco vibrantes. Não tenho tanta certeza sobre a Cobol neste momento, porque a maioria dos bancos de dados mudou de Codasyl e o próprio código personalizado da Cobol foi substituído principalmente por produtos comerciais, por isso tende a não ser econômico manter o código antigo em funcionamento.

Esta resposta foi cortada de

Ajustei a resposta 06/06/19 para adicionar uma introdução melhor e limpar alguns parágrafos que agora que não faziam parte da outra resposta precisavam de um pouco de ajuste.