Por que C prevaleceu sobre Pascal? [fechadas]

68

Meu entendimento é que, na década de 1980, e talvez também na década de 1990, Pascal e C estavam praticamente frente a frente como linguagens de produção.

O fim definitivo de Pascal é apenas devido à negligência de Borland por Delphi ? Ou havia mais, como má sorte ou talvez algo inerentemente errado com Pascal (alguma esperança de seu renascimento?).

Estou interessado em fatos históricos e observações que alguém possa fazer backup, em vez de gostar e não gostar.

Konrad Morawski
fonte
10
Se você basicamente tem apenas uma empresa falida que suporta o idioma com o qual está trabalhando, isso definitivamente não ajuda (estou falando do pré-Net Borland).
Let_Me_Be
48
Resposta de uma palavra: Unix.
SK-logic
4
Hã. O que é C?
Lieven Keersmaekers #
8
em última análise, o pascal perdeu porque usa cadeias baseadas em 1.
Pieter B
7
@jk: Sem mencionar que no ISO Pascal, as cordas podiam ter qualquer comprimento, mas as de comprimentos diferentes tinham tipos diferentes. Para colocar em maiúscula qualquer string, você precisará de 256 funções. Para anexar duas seqüências aleatórias, você precisaria de milhares!
MSalters

Respostas:

43

Pascal perdeu a batalha principalmente por causa de:

  • Verbosidade ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Dialetos mutuamente incompreensíveis e o padrão oficial
  • Extensões orientadas a objetos menos que impressionantes
  • O dialeto mais bem-sucedido e prático - Turbo Pascal - nunca foi portado para plataformas além do DOS / Windows. Além disso, a Borland nunca abriu as fontes do compilador.
  • A "última esperança" de Pascal - Delphi - foi posicionada pela Borland como uma plataforma de desenvolvimento de banco de dados direcionada a ambientes corporativos. Foi uma infeliz jogada de marketing (feita por pessoas de marketing, suponho), porque os engenheiros criativos odeiam bancos de dados e ambientes corporativos. Depois, a falha do Delphi para Linux, Kylix.
  • A Apple mudou para C e, posteriormente, para Objective-C e, assim, matou Pascal como um idioma do SO
mojuba
fonte
19
A mudança da Apple para o Objective-C veio muito, muito tempo depois que ele parou de usar o Pascal. O sistema operacional e as bibliotecas originais do Macintosh foram escritos usando Pascal, mas a Apple ofereceu um bom suporte para C logo após a introdução do Mac e passou para C no início dos anos 90. A Apple adotou o Objective-C quando adquiriu o NeXT, que ocorreu após o retorno de Steve Jobs no final dos anos 90.
Caleb
36
Não acho que a verbosidade seja um argumento relevante. Como o código é lido, mais do que a verbosidade escrita traz benefícios.
Johannes #
14
A verbosidade não é exatamente o que é defendido nas linguagens hoje (python vs. perl)?
Rook
7
Não acho que a verbosidade tenha sido uma causa, pelo contrário, é um dos pontos fortes de Pascal.
9
Isto está incorreto. O Turbo Pascal foi amplamente bem-sucedido. O principal problema era que você podia usá-lo no DOS / Windows.
44

C é a base do Unix. Nos anos 80 e 90, o Unix recebeu cada vez mais atenção. Hoje, algum sabor do Unix está no seu smartphone.

mouviciel
fonte
16
Não é apenas o UNIX. O Windows e seus kernels foram escritos principalmente em C. Sem mencionar que o C ++ está forte, o que também deve ter tornado o C um pouco mais popular.
Yam Marcovic
2
@ SK-logic Foi lançado em 1984. Eu não diria que C havia dominado o mundo até então. Você tinha Smalltalk, Pascal e outros usados ​​praticamente em todos os lugares (para não mencionar COBOL).
Yam Marcovic
3
@Yam: O Unix e o C já foram amplamente divulgados nos anos 80. Quando eu estudei na Universidade (início dos anos 90), Unix e C eram "a plataforma" em que todos os desenvolvedores sérios gostariam de trabalhar. O Unix foi implementado em C, então não haveria Unix sem C. Smalltalk, Pascal e COBOL não tiveram um papel tão importante.
Giorgio
2
@Giorgio De fato, depois que Dennis Ritche e Brian Kernighan tornaram o C estável, eles reescreveram o UNIX em C, tornando muito mais fácil portar para outros tipos de máquinas.
Yam Marcovic
2
@ Steve314 Bons pontos. No entanto, até onde pude ver, os kernels anteriores do Windows também foram desenvolvidos com o Assembler. Na Assembléia, uma convenção de chamada, por definição, não é aplicada de forma alguma (daí a palavra "convenção"). Portanto, parece que o fato de ter o nome "convenção de chamada Pascal" não significa necessariamente que foi pioneiro pelo inventor da linguagem de programação Pascal ou que o Windows foi desenvolvido em Pascal. EDIT: Acabei de ler o seu comentário recente. Acho que não temos nada inteligente para adicionar aqui neste momento. :)
Yam Marcovic
35

O ensaio Por que Pascal não é minha língua favorita, de Brian W. Kernighan, aborda os principais pontos da crítica.

C é muito mais versátil e extensível. Algumas pessoas até descobriram como fazer (uma espécie de) programação orientada a objetos com o C ! Além disso, o assembler embutido e outros recursos de baixo nível fizeram dele uma linguagem importante para a programação de sistemas.

Felix Dombek
fonte
9
Se bem me lembro, o Turbo Pascal (minha primeira linguagem de programação, por sinal) suportava assembler em linha. Já vi o ensaio de Kernighan antes. Mas suas críticas não estavam ultrapassadas em breve?
Konrad Morawski
2
@Morawski, TP é dos anos 80, C é dos anos 70. Chegou mais de uma década atrasada.
SK-logic
9
@Morawski: Além disso, o Turbo Pascal foi apenas uma implementação do Pascal. O padrão descreveu uma linguagem que não era particularmente útil; portanto, os implementadores tiveram que colocar suas próprias pequenas extensões para que as pessoas pudessem escrever programas úteis. A fragmentação provavelmente foi um problema aqui.
David Thornley
@ SK-logic, o PASCAL foi definido pela primeira vez em 1970 e os primeiros compiladores estavam disponíveis na época. Turbo Pascal apareceu ca. 1984, depois que Jim Tyson faliu quando a demanda por JRT Pascal FAR superou sua capacidade de entregar produtos. O Turbo Pascal foi inicialmente visto com considerável suspeita, porque todos se lembraram do JRT Pascal, e MUITAS pessoas se queimaram com ele.
31578 John R. Strohm
@ JohnR.Strohm, eu tenho respondido ao comentário do Konrad sobre o assembler embutido no TP.
SK-logic
23

Embora não fosse o uso exclusivo, Pascal foi projetado para ensinar programação, para não ser realmente usado como idioma principal.

Delphi e Object Pascal mudaram isso. Mas naquela época, já era tarde demais.

Deixe me ser
fonte
4
No entanto BASIC não foi projetado para fins profissionais, quer, ainda é vivo e chutando
Konrad Morawski
11
@Morawski: Sério? Além do VB?
5
@Let_Me_Be Lembro-me de alguns aplicativos do Windows escritos em Borland (Object) Pascal ou Delphi. Era muito mais fácil do que escrevê-los em C / C ++. Eu acho que C # e Java servem esse domínio agora.
2261111
11
Pascal logo se tornou uma verdadeira linguagem de uso geral. Ninguém teve que esperar por Delphi. Não vejo como ensinar (ou ser capaz de ensinar) a muitas pessoas uma linguagem de programação quando elas são jovens, implica sua morte final. Muito pelo contrário.
Yam Marcovic
10
@Morawski A única razão pela qual o BASIC (bem, VB) ainda é falado e usado hoje é que o primeiro produto da Microsoft foi um intérprete do BASIC (com certeza não era um compilador) e eles continuaram empurrando-o pela garganta. Se eles tivessem escolhido Pascal, estaríamos falando sobre o VP.Net. O mundo também chuparia menos.
MetalMikester 18/10/11
18

Não acho que C tenha prevalecido sobre Pascal. Para a maioria dos programadores, o Java prevaleceu sobre o Pascal. A categoria de programadores que costumava programar em Pascal agora selecionaria Java (ou C #) para o mesmo trabalho. Quem costumava programar em C ficou com C (e C ++).

O desaparecimento de Pascal é causado principalmente pelo fato de a Borland aderir à sua maneira de trabalhar com GUI, enquanto seus clientes acessavam a Web. A Borland nunca teve uma oferta realmente atraente para o desenvolvimento no servidor. Somente nos últimos anos, com o Delphi morto para todos os fins práticos, aqueles que ficaram com o Delphi passaram para o C #. C / C ++ sempre foi uma multidão diferente da multidão de Pascal / Java / C #, eu acho, com os caras de C (++) muito mais técnicos / de baixo nível em seu foco.

Jaap
fonte
19
O desaparecimento da Borland foi muito antes da necessidade de desenvolvimento da web. O erro deles foi simples: eles esqueceram o que os tornou líderes em primeiro lugar (compiladores baratos, rápidos e eficientes disponíveis para as massas) e saltaram para ferramentas corporativas caras (onde a Microsoft e outros já tinham um bom avanço). multidão tradicional teve que mudar para outra coisa.
MetalMikester
@MetalMikester, isso é alguma verdade de Grau A ali. Eles jogaram de lado os pequenos desenvolvedores independentes enquanto perseguiam o 'grande dinheiro' nas vendas corporativas. E, infelizmente, ainda resta um pouco disso, mesmo com novos proprietários.
GrandmasterB
Dito isso, eles tiveram que lidar com a falta de uma boa opção para o desenvolvimento de aplicativos da Web ao mesmo tempo (decorrente da longa insistência no cliente / servidor em tudo em sua linha de produtos).
jwenting
2
Java e C # têm sintaxe C e são muito parecidos com C, em vez de Pascal ... também Java foi endereçado a programadores de C ++.
M3th0dman
11

Para simplificar: C é um montador portátil, PASCAL é uma linguagem educacional.

Esta seção da wikipedia aborda bem essa questão.

edit:
Parece que alguns aqui interpretam mal a minha resposta. Ou, na verdade, melhor a pergunta.
Esta pergunta é sobre popularidade. E a razão pela qual C é, em última análise, mais popular do que o PASCAL, é que um foi projetado e comercializado como uma linguagem portátil correndo próximo ao metal, enquanto o outro foi projetado e comercializado como uma linguagem educacional, impondo muita segurança e clareza.
Em última análise, nem sequer importa, se um dos idiomas falhou nos objetivos estabelecidos ou se realizou conquistas imprevistas. E qualquer um que tente deduzir a diferença de popularidade da superioridade de C sobre PASCAL está completamente errado.
A chave para essa questão está na história e na histeria envolvida nela.

back2dos
fonte
2
Mas mesmo a entrada Wiki que você está ligando admite quemany major development efforts in the 1980s, such as for the Apple Lisa and Macintosh, heavily depended on Pascal (to the point where the C interface for the Macintosh operating system API had to deal in Pascal data types).
Konrad Morawski
@Morawski: Apesar do fato de a Apple ter passado por um tremendo esforço de desenvolvimento na época e ter criado produtos amplamente à frente de alternativas, sua participação no mercado era incômoda. Nem a Apple nem o Pascal são ruins (de fato, o Pascal era minha primeira língua e eu ainda gosto disso). Mas ambos falharam em atender às necessidades da realidade da indústria.
Back2dos 18/10/11
4
@ S.Lott Ótimo, então é um montador PDP-11 portátil. Qual é a relevância agora? Por que devo me preocupar com o PDP-11 em 2011? C não é um montador portátil x86 por qualquer meio.
2261111
11
E Lisp é uma linguagem para pesquisa de IA, e daí?
Mojuba #
11
@mojuba: "o objetivo original de um idioma pode ou não ser relevante" - é algo com o qual concordo totalmente. Meu argumento era que, nesse caso , era relevante . ;)
back2dos 18/10/11
5

Durante os anos 70 e início dos anos 80, os compiladores C eram relativamente fáceis de encontrar para computadores pessoais, embora a maioria fizesse apenas um subconjunto de C (e é por isso que você verá tantos anúncios diferentes de compiladores "minúsculos C" nas revistas mais antigas ) Pascal era uma linguagem maior e mais complicada nos dias em que apenas os amadores de computadores mais ricos tinham discos rígidos (e um disco rígido de 5 megabytes custava várias centenas de dólares). Para o Apple 2 (meu primeiro computador, e não era nem um "mais"), executar o Pascal exigia a compra de um cartão de memória extra (ele precisava de 64k de RAM!) E levou vários disquetes para carregar, enquanto o "pequeno C" os compiladores cabem em um único disquete (e podem sobreviver com 16k de RAM).

Pascal foi ensinado nos currículos de ciências da computação, enquanto C era principalmente autodidata (às vezes ensinado nos currículos de engenharia elétrica). Pascal ganhou uma reputação entre os criadores de cowboys por ser uma "linguagem de escravidão e disciplina", que eu achava que não merecia, pois eles nunca conheceram a ADA .

Os principais motivadores do Pascal nos anos 80 foram a Apple (porque as APIs usavam os padrões de chamada Pascal) e a Borland. Os compiladores "Turbo" da Borland foram provavelmente os melhores disponíveis no mercado, e a licença "como um livro" os tornou muito mais populares do que as empresas com licenciamento mais cruel.

A Borland perdeu a liderança no mercado de desenvolvimento quando a Microsoft contratou seus principais desenvolvedores e gerentes de projeto (como Hejlsberg, Gross e mais de 35 outros), eventualmente desenvolvendo .NET e Visual Studio. Borland e Microsoft resolveram o processo alguns anos depois, mas Borland nunca se recuperou da perda. Na minha opinião, a Delphi começou a murchar naquele momento (quando as pessoas que deram foco e direção foram contratadas), e a mudança no CEO ao mesmo tempo levou a Borland de uma empresa de compiladores para uma empresa de ALM (gerenciamento do ciclo de vida de aplicativos) , alterando o nome para Inprise alguns anos depois. As cinzas da Borland agora são de propriedade da Micro Focus.

Tangurena
fonte
Micro Focus? Quando isso aconteceu? Eu pensei que era propriedade da Embarcadero (quem quer que seja), pelo menos nos últimos anos. Se Delphi é propriedade de uma empresa que é "famoso" para ele é ferramentas COBOL ...
Steve314
@ Steve314, a divisão "codegear" foi vendida para Embarcadero em 2008, e Micro Focus comprou o resto da Borland em 2009. en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena
11
Tudo bem, mas a Borland desenvolveu compiladores, bibliotecas e IDEs (Delphi, the Builders) e desenvolveu alguns blá blá blá com os quais ninguém se importava. Você está me dizendo que alguém se importava o suficiente com o blá blá blá para crema-lo?
Steve314
5

Caramba, isso é uma carga unilateral de hooey, onde estão todas as pessoas que começaram neste site que tinham o Delphi como seu idioma favorito?

Quase todo mundo menciona Borland e 2 / 3rds consideram que Delphi deu um chute no balde. Bem, desculpe pessoal, a Embarcadero comprou a unidade CodeGear da Borland há alguns anos (por dinheiro, não por caridade) e eles estão fazendo algumas coisas incríveis, juntando algumas ferramentas incríveis em seu IDE incrível e criando uma plataforma incrível para desenvolvimento de plataforma cruzada em Objeto Pascal. Sem mencionar Lazarus e FreePascal no lado do código aberto.

Portanto, se essa é uma pergunta histórica por que C prevaleceu sobre Pascal, tudo bem, essa é uma afirmação aceitável para iniciar uma pergunta. Mas a autoria do código no Object Pascal vem crescendo, não sei se o índice TIOBE significa muito para ele, mas deve ficar claro que as pessoas ainda estão escrevendo código no Object Pascal e picos de interesse sempre que a Embarcadero lança novas ferramentas, portanto, humanos reais interessados ​​em escrever código novo (e não apenas manter antigo) estão interessados ​​em Delphi.

Não sei se você pode dizer o mesmo para qualquer coisa relacionada a C.

Peter Turner
fonte
3
Deveria estar morto. As únicas pessoas que ainda têm um motivo para usá-lo são aquelas como eu, que estão presas a ele por causa de muitos aplicativos VCL existentes. Todo o IDE do Delphi / C ++ Builder decaiu do estado da arte para uma bagunça de baixa qualidade nos últimos 5 anos. Arquivos de ajuda e documentação são inexistentes. O depurador é bastante embaraçoso. Se você deixar o IDE de lado, não há realmente nenhuma razão para usar a versão do Object Pascal em C ++, a menos que você precise de compatibilidade com versões anteriores. A principal vantagem do C ++ nesse caso é que ele permitirá que você transforme seu código para escapar do IDE de baixa qualidade.
11
Em relação ao C, em primeiro lugar, é a linguagem completamente dominante em todo o setor incorporado e todas as novas ferramentas criadas para o C. Todo o Windows e Linux é C. Todo o fluff de telefone inteligente é escrito nos tipos de C. C ou C ++ domina em quase todas as áreas de aplicação em que a programação é usada. O padrão C ++ está recebendo uma grande atualização. Os novos subconjuntos MISRA seguros de C e C ++ são bem-sucedidos para aplicativos incorporados, o primeiro se transformando em padrão de fato do setor. Portanto, não ... não há picos de interesse, há um interesse constantemente alto.
2
@Lundin, você está brincando, eu tenho usado o Delphi 7 nos últimos 4 anos, finalmente atualizado para 2009 e trabalhando no XE2 também. Finalmente, não preciso reiniciar o IDE a cada 5 ou 6 compilações para manter meus pontos de interrupção. Além disso, a Embarcadero criou uma maneira de usar o Delphi Code para programas Android e iOS, o que é novo, mas é bem legal, a vantagem é que ele é totalmente gerenciado por uma empresa privada, para que as melhorias cheguem às mãos dos desenvolvedores .
Peter Turner
11
Embora eu não seja um programador de PC, eu uso o Builder de um lado para o outro desde meados dos anos 90. Ele estava melhorando constantemente até que, em algum lugar em que ele girava o Codegear, alguns equipamentos aparentemente quebravam, porque agora está pior do que há 10 anos. Enfim, isso é fora de tópico, desde que o Delphi / Builder começou a desaparecer muito antes do fiasco do Codegear / Embarcadero.
1

Minha opinião é que C e as principais linguagens derivadas dele, C ++, Java e C #, foram adotadas pelas maiores empresas de software, como Microsoft e Sun / Oracle, e entre as várias pilhas de desenvolvimento. Como resultado, tornou-se a 'língua mãe' do Windows, Apple OS e Unix.

Pascal, apesar dos melhores e muitas vezes equivocados esforços da Borland, não atingiu esse nível de penetração no mercado.

jfrankcarr
fonte
3
Isso parece implorar a pergunta: por que C assumiu o controle das maiores empresas? O MacOS começou com Pascal e tornou-se mais amigável ao C. qual foi a razão para isso?
David Thornley
11
@ DavidThornley - Acho que muito disso teve a ver com a contratação de programadores experientes de alto nível. C, combinado com o assembly, era o idioma de escolha para aplicativos de PC convencionais a partir de meados dos anos 80. Ao adotar uma base C, tornou a contratação de programadores qualificados muito mais fácil e barata (sem reciclagem, etc).
jfrankcarr
3
Mas você acabou de empurrar a questão de volta para uma camada. Por que os programadores experientes de primeira linha mudaram? Por que C era o idioma de escolha? Knuth fez seu primeiro material de programação em Pascal e depois mudou para C. Por quê? Descobrir exatamente quem liderou a transição pode ser útil, mas a pergunta pede razões.
David Thornley
Trabalhei em duas empresas de software nos anos 80, não como programador, mas como suporte. Com base no que me lembro, suspeito que a transição do MASM para o C foi mais fácil para aqueles que já estavam na programação do MASM. Lembro-me de uma aversão ao Turbo Pascal, que os programadores com quem trabalhei chamavam de linguagem de brinquedo e você não queria que eles iniciassem no QuickBasic. Eu aprendi MASM e C primeiro por causa dessa pressão dos colegas. Isso também pode ser um fator, embora não chegue à gênese real.
jfrankcarr
No final dos anos 80, início dos anos 90, C já era muito popular. Você pode encontrar um compilador como um módulo padrão em qualquer implementação do UNIX (e o UNIX era o sistema operacional em que a maioria dos programadores queria trabalhar). Não estou dizendo que era mais popular que Pascal, mas era muito popular. Portanto, C ++, Java e C # são populares porque C era, e não o contrário.
Giorgio
0

Pascal só se tornou popular em um único ambiente PC / DOS bastante limitado.

Mesmo assim, havia tantos aplicativos MicroFocus COBOL sendo executados em PCs quanto aplicativos pascal.

C era o básico do sistema operacional UNIX e de todos os sistemas operacionais MS / Windows.

A combinação de execução eficiente em hardware limitado e acesso nativo às bibliotecas subjacentes de SO e GUI foram provavelmente as principais razões para o sucesso de C. Pascal nunca realmente invadiu o Windows e Delphi chegou tarde demais para fazer a diferença.

James Anderson
fonte
Eu acho que seu comentário ".. e todos os sistemas operacionais MS / Windows" podem estar incorretos. O Windows foi originalmente projetado e codificado em PASCAL. De en.wikipedia.org/wiki/Talk:X86_calling_conventions : "Apenas pensei em pesar aqui. Pesquisei a palavra-chave __pascal no Guia do usuário do Watcom C / C ++ e ficou claro que: a convenção de chamada __pascal foi usada para OS / 2 1.xe APIs do Microsoft Windows 3.x "
John R. Strohm 23/01
@ JohnR.Strohm As convenções de chamada e as linguagens de implementação não são necessariamente a mesma coisa. A Microsoft já estava usando o C há algum tempo em 1993 (o Windows 3.1 foi lançado em 1992). Fonte de um tipo
um CVn
O IIRC, no início dos anos 80, a Microsoft usou muito o Xenix internamente e provavelmente começou o C dessa maneira. Afinal, e (Turbo) Pascal, afinal, foi o produto matador de um concorrente perigoso, a Borland. Naquela época, a diferença de tamanho entre a Microsoft e outras grandes empresas de software como Lotus, Borland ... ainda não era enorme.
wazoox