Perché C ha prevalso su Pascal? [chiuso]


68

La mia comprensione è che negli anni '80, e forse anche negli anni '90, Pascal e C erano praticamente testa a testa come linguaggi di produzione.

La morte definitiva di Pascal è dovuta solo alla negligenza di Delfi da parte di Borland ? O c'era di più, come la sfortuna o forse qualcosa di intrinsecamente sbagliato in Pascal (qualche speranza per il suo risveglio?).

Sono interessato ai fatti storici e alle osservazioni di cui si può sostenere, piuttosto che a simpatie e antipatie.


10
Se fondamentalmente hai solo una società in bancarotta che supporta la lingua con cui stai lavorando, sicuramente non aiuta (sto parlando del pre.Net Borland).
Let_Me_Be

48
Una sola risposta: Unix.
SK-logic,

4
Huh. Che cosa è C?
Lieven Keersmaekers,

8
alla fine Pascal ha perso perché utilizza stringhe basate su 1.
Pieter B,

7
@jk: per non parlare del fatto che in ISO Pascal, le stringhe potevano avere qualsiasi lunghezza, ma stringhe di lunghezze diverse avevano tipi diversi. Per mettere in maiuscolo qualsiasi stringa, avrai bisogno di 256 funzioni. Per aggiungere due stringhe casuali, ne avresti bisogno di migliaia!
MSalters il

Risposte:


43

Pascal ha perso la battaglia principalmente a causa di:

  • Verbosità ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Dialetti reciprocamente incomprensibili e lo standard ufficiale
  • Meno di impressionanti estensioni orientate agli oggetti
  • Il dialetto più efficace e pratico - Turbo Pascal - non è mai stato portato su piattaforme diverse da DOS / Windows. Inoltre Borland non ha mai aperto le fonti del compilatore.
  • "L'ultima speranza" di Pascal - Delphi - è stata posizionata da Borland come una piattaforma di sviluppo di database destinata agli ambienti aziendali. Questa è stata una sfortunata mossa di marketing (suppongo fatta da persone di marketing), perché gli ingegneri creativi odiano sia i database che gli ambienti aziendali. Quindi il fallimento di Delphi per Linux, Kylix.
  • Apple passò a C e successivamente a Objective-C e quindi uccise Pascal come linguaggio del sistema operativo

19
Il passaggio di Apple a Objective-C è arrivato a lungo, molto tempo dopo aver smesso di usare Pascal. Il sistema operativo e le librerie Macintosh originali sono stati scritti usando Pascal, ma Apple ha offerto un buon supporto per C subito dopo l'introduzione del Mac, ed era passato a C nei primi anni '90. Apple ha adottato Objective-C quando ha acquisito NeXT, che è accaduto dopo il ritorno di Steve Jobs alla fine degli anni '90.
Caleb,

36
Non credo che la verbosità sia un argomento rilevante. Poiché il codice viene letto più della verbosità scritta ha dei vantaggi.
johannes,

14
La verbosità non è esattamente ciò che è sostenuto oggi nelle lingue (pitone vs. perl)?
Rook,

7
Non credo che la verbosità sia stata una causa, al contrario è uno dei punti di forza di Pascal.

9
Questo non è corretto Turbo Pascal ebbe un grande successo. Il problema principale era che potevi usarlo solo su DOS / Windows.

44

C è la base di Unix. Negli anni '80 e '90, Unix ha ricevuto sempre più attenzione. Oggi un po 'di sapore di Unix è nel tuo smartphone.


16
Non solo UNIX. Windows e i suoi kernel sono stati scritti principalmente in C. Per non parlare del C ++ che sta arrivando forte, il che deve aver reso C almeno un po 'più popolare.
Yam Marcovic,

2
@ SK-logic È uscito nel 1984. Non direi che C avesse ormai conquistato il mondo. Avevi Smalltalk, Pascal e altri usati praticamente ovunque (per non parlare di COBOL).
Yam Marcovic,

3
@Yam: Unix e C erano già ampiamente diffusi negli anni '80. Quando ho studiato all'università (all'inizio degli anni novanta), Unix e C erano "la piattaforma" su cui ogni sviluppatore serio avrebbe voluto lavorare. Unix è stato implementato in C, quindi non ci sarebbe stato Unix senza C. Smalltalk, Pascal e COBOL non avrebbero avuto un ruolo così importante.
Giorgio,

2
@Giorgio Infatti dopo che Dennis Ritche e Brian Kernighan avevano reso stabile C, hanno riscritto UNIX in C, rendendo così molto più facile il porting su altri tipi di macchine.
Yam Marcovic,

2
@ Steve314 Punti positivi. Tuttavia, per quanto ho potuto vedere, anche i kernel di Windows precedenti sono stati sviluppati con Assembler. In Assembly, una convenzione di chiamata non è per definizione applicata in alcun modo (da qui la parola "convenzione"). Quindi sembra che il fatto che abbia ottenuto il nome di "Convenzione di chiamata Pascal" non significa necessariamente che sia stato introdotto dall'inventore del linguaggio di programmazione Pascal o che Windows sia stato sviluppato in Pascal. EDIT: ho appena letto il tuo recente commento. Immagino che non abbiamo nulla di intelligente da aggiungere qui a questo punto. :)
Yam Marcovic,

35

Il saggio Perché Pascal non è la mia lingua preferita di Brian W. Kernighan copre i punti principali della critica.

C è molto più versatile ed estensibile. Alcune persone hanno anche scoperto come fare (una sorta di) programmazione orientata agli oggetti con C ! Inoltre, l'assemblatore in linea e altre funzionalità di basso livello lo hanno reso un linguaggio importante per la programmazione dei sistemi.


9
Se ricordo bene, Turbo Pascal (il mio primo linguaggio di programmazione, tra l'altro) supportava l'assemblatore in linea. Ho già visto il saggio di Kernighan. Ma le sue critiche non sono superate presto?
Konrad Morawski,

2
@Morawski, TP degli anni '80, C degli anni '70. È arrivato con oltre un decennio di ritardo.
SK-logic,

9
@Morawski: Inoltre, Turbo Pascal era solo un'implementazione di Pascal. Lo standard descriveva un linguaggio che non era particolarmente utile, quindi gli implementatori dovevano inserire le loro piccole estensioni per consentire alle persone di scrivere programmi utili. La frammentazione era probabilmente un problema qui.
David Thornley,

@ SK-logic, PASCAL è stato definito per la prima volta nel 1970, e quindi sono stati disponibili i primi compilatori. Turbo Pascal si presentò ca. 1984, dopo che Jim Tyson fallì quando la domanda di JRT Pascal FAR superò la sua capacità di consegnare il prodotto. Inizialmente Turbo Pascal fu visto con notevole sospetto perché tutti ricordavano JRT Pascal e MOLTE persone ne erano state bruciate.
John R. Strohm,

@ JohnR.Strohm, ho risposto al commento di Konrad in merito all'assemblatore in linea in TP.
SK-logic,

23

Sebbene non fosse un uso esclusivo, Pascal è stato progettato per insegnare la programmazione, per non essere effettivamente utilizzato come lingua principale.

Delphi e Object Pascal hanno cambiato questo. Ma a quel tempo, era già troppo tardi.


4
Tuttavia BASIC non è stato progettato neanche per scopi professionali, ma è vivo e vegeto
Konrad Morawski,

11
@Morawski: Davvero? A parte VB?

5
@Let_Me_Be Ricordo alcune applicazioni Windows scritte in Borland (Object) Pascal o Delphi. È stato molto più semplice che scriverli in C / C ++. Penso che C # e Java servano questo dominio ora.
quant_dev,

11
Pascal divenne ben presto un vero linguaggio per tutti gli usi. Nessuno ha dovuto aspettare Delphi. Non vedo come insegnare (o essere in grado di insegnare) a molte persone un linguaggio di programmazione da giovani comporti la sua fine definitiva. Piuttosto il contrario.
Yam Marcovic,

10
@Morawski L'unico motivo per cui BASIC (beh, VB) è ancora parlato e usato oggi è che il primo prodotto di Microsoft è stato un interprete BASIC (quasi sicuro che non fosse un compilatore) e hanno continuato a spingerlo in gola. Se invece avessero scelto Pascal, parleremmo di VP.Net. Anche il mondo farebbe meno schifo.
MetalMikester,

18

Non credo che C abbia prevalso su Pascal. Per la maggior parte dei programmatori, Java ha prevalso su Pascal. La categoria di programmatori che era solita programmare in Pascal, ora sceglieva Java (o C #) per lo stesso lavoro. Coloro che erano soliti programmare in C rimanevano bloccati con C (e C ++).

La scomparsa di Pascal è l'IMHO principalmente causato dal fatto che Borland si attenga al suo modo di lavorare con la GUI, mentre i suoi clienti passano al Web. Borland non ha mai avuto un'offerta davvero interessante per lo sviluppo lato server. Solo negli ultimi anni, con Delphi morto per tutti gli scopi pratici, quelli che sono rimasti bloccati con Delphi sono passati al C #. C / C ++ è sempre stata una folla diversa rispetto alla folla Pascal / Java / C # penso, con i ragazzi C (++) molto più tecnici / di basso livello nel loro focus.


19
La fine di Borland è stata molto prima della necessità di sviluppo web. Il loro errore è stato semplice: si sono dimenticati di ciò che li ha resi leader in primo luogo (compilatori economici, veloci ed efficienti disponibili per le masse) e sono passati a strumenti aziendali costosi (in cui Microsoft e altri avevano già un buon vantaggio). Borland's la folla tradizionale ha dovuto passare a qualcos'altro.
MetalMikester,

@MetalMikester, ecco un po 'di verità di grado A proprio lì. Hanno gettato da parte i piccoli sviluppatori indipendenti mentre inseguivano i "grandi soldi" nelle vendite aziendali. E sfortunatamente, ne rimane ancora un po ', anche con i nuovi proprietari.
GrandmasterB,

detto ciò, hanno dovuto affrontare la mancanza di una buona opzione per lo sviluppo di applicazioni web allo stesso tempo (derivante dalla lunga insistenza sul client / server tutto nella loro linea di prodotti).
jwenting

2
Java e C # hanno sintassi C e sono molto simili a C, piuttosto che a Pascal ... anche Java era indirizzato ai programmatori C ++.
m3th0dman,

11

Per sminuire: C è un assemblatore portatile, PASCAL è un linguaggio educativo.

Questa sezione su Wikipedia lo copre bene in effetti.

modifica:
Sembra che alcuni qui fraintendono la mia risposta. O piuttosto piuttosto la domanda.
Questa domanda riguarda la popolarità. E il motivo per cui C è in definitiva più popolare di PASCAL è che uno è stato progettato e commercializzato come un linguaggio portatile che corre vicino al metallo, mentre l'altro è stato progettato e commercializzato come linguaggio educativo, garantendo molta sicurezza e chiarezza.
In definitiva, non importa nemmeno se una delle due lingue non ha raggiunto gli obiettivi prefissati o ha raggiunto risultati imprevisti. E chiunque cerchi di dedurre la differenza di popolarità dalla superiorità di C su PASCAL ha semplicemente torto.
La chiave di questa domanda sta nella storia e nell'isteria coinvolta in essa.


2
Ma anche la voce Wiki che stai collegando ammette chemany 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: Nonostante il fatto che Apple abbia subito enormi sforzi di sviluppo in quel momento, e che abbia potuto creare prodotti in gran parte in anticipo rispetto alle alternative, la loro quota di mercato era debole. Né Apple né PASCAL sono cattivi (in realtà PASCAL è stata la mia prima lingua e mi piace ancora). Ma entrambi non sono riusciti a soddisfare le esigenze della realtà del settore.
back2dos,

4
@ S.Lott Ottimo, quindi è un assemblatore PDP-11 portatile. Qual è la rilevanza ora? Perché dovrei preoccuparmi di PDP-11 nel 2011? C non è in alcun modo un assemblatore portatile x86.
quant_dev,

1
E Lisp è un linguaggio per la ricerca dell'IA, e allora?
Mojuba,

1
@mojuba: "lo scopo originale di una lingua può essere o non essere rilevante" - è qualcosa con cui sono totalmente d'accordo. Il mio punto era che in questo caso era rilevante . ;)
back2dos,

5

Durante gli anni '70 e nei primi anni '80, i compilatori C erano relativamente facili da trovare per i personal computer, sebbene la maggior parte facesse solo un sottoinsieme di C (motivo per cui vedrai così tante diverse inserzioni di compilatori "minuscole C" nelle riviste più vecchie ). Pascal era una lingua più grande e ingombrante ai tempi in cui solo i più ricchi hobbisti di computer avevano i dischi rigidi (e un disco rigido da 5 meg era di diverse centinaia di dollari). Per l'Apple 2 (il mio primo computer, e non era nemmeno un "plus"), l'esecuzione di Pascal richiedeva l'acquisto di una scheda di memoria aggiuntiva (aveva bisogno di 64k di RAM!) E il caricamento di numerosi floppy, mentre "tiny C" i compilatori si adattano a un singolo floppy (e potrebbero cavarsela con 16k di RAM).

Pascal è stato insegnato nei curricula di informatica, mentre il C era prevalentemente autodidatta (a volte insegnato nei curricula di ingegneria elettrica). Pascal aveva una reputazione tra i programmatori di cowboy per essere un "linguaggio di schiavitù e disciplina", che pensavo fosse immeritato poiché non avevano mai incontrato l' ADA .

I principali driver di Pascal negli anni '80 erano Apple (perché le API utilizzavano gli standard di chiamata Pascal) e Borland. I compilatori "Turbo" di Borland erano probabilmente i migliori disponibili sul mercato e la licenza "like a book" li ha resi molto più popolari delle aziende con licenze più viziose.

Borland perse la sua leadership nel mercato dello sviluppo quando Microsoft assunse i suoi principali sviluppatori e project manager (come Hejlsberg, Gross e oltre 35 altri), sviluppando infine .NET e Visual Studio. Borland e Microsoft hanno risolto la causa un paio di anni dopo, ma Borland non si è mai ripresa dalla perdita. A mio avviso, Delphi ha iniziato ad appassire in quel momento (poiché le persone che gli hanno dato attenzione e guida sono state assunte) e il cambiamento nel CEO allo stesso tempo ha portato Borland da una società di compilazione a una società ALM (gestione del ciclo di vita delle applicazioni) , cambiando il loro nome in Inprise un paio di anni dopo. Le ceneri di Borland sono ora di proprietà di Micro Focus.


Micro Focus? Quando è successo? Ho pensato che fosse di proprietà di Embarcadero (chiunque essi siano), almeno negli ultimi anni. Se Delphi è di proprietà di una società "famosa" per i suoi strumenti COBOL ...
Steve314,

@ Steve314, la divisione "codegear" è stata venduta a Embarcadero nel 2008 e Micro Focus ha acquistato il resto del Borland nel 2009. en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena

1
OK, ma Borland ha sviluppato compilatori, librerie e IDE (Delphi, the Builders) e ha sviluppato alcuni bla bla bla di cui nessuno si è mai preoccupato. Mi stai dicendo che a qualcuno importava abbastanza del bla bla bla per cremarla?
Steve314,

5

Holy fuma questo è un carico unilaterale di hooey, dove sono tutte le persone che hanno iniziato su questo sito e avevano Delphi come lingua preferita?

Quasi tutti menzionano Borland e 2/3 delle persone ritengono che Delphi abbia preso a calci il secchio. Beh, scusate gente, Embarcadero ha acquistato l'unità CodeGear di Borland qualche anno fa (per soldi, non per beneficenza) e hanno fatto cose piuttosto sorprendenti, amalgamando alcuni strumenti piuttosto sorprendenti nel loro IDE piuttosto sorprendente e creando una piattaforma piuttosto sorprendente per lo sviluppo multipiattaforma IN OGGETTO PASCAL. Per non parlare di Lazzaro e FreePascal sul lato open source delle cose.

Quindi, se questa è una domanda storica sul perché C ha prevalso su Pascal, allora OK, è un'affermazione accettabile per iniziare una domanda. Ma la paternità del codice in Object Pascal è in crescita, non so che l' indice TIOBE significhi molto per questo, ma dovrebbe essere chiaro che le persone stanno ancora scrivendo codice in Object Pascal e picchi di interesse ogni volta che Embarcadero rilascia nuovi strumenti, quindi gli umani reali interessati a scrivere un nuovo codice (e non solo a mantenere il vecchio) sono interessati a Delphi.

Non sono sicuro che tu possa dire lo stesso per tutto ciò che riguarda C.


3
Dovrebbe essere morto. Le uniche persone che hanno ancora un motivo per usarlo sono quelle come me, che sono bloccate a causa di molte app VCL esistenti. L'intero IDE Delphi / C ++ Builder è decaduto dallo stato dell'arte in un disordinato disordine negli ultimi 5 anni. I file della guida e la documentazione sono inesistenti. Il debugger è chiaramente imbarazzante. Se si mette da parte l'IDE, non c'è davvero alcun motivo per utilizzare la versione Object Pascal su C ++, a meno che non sia necessaria la retrocompatibilità. Il vantaggio principale per C ++ in questo caso è che ti consentirà di eseguire il porting del codice per sfuggire all'IDE scadente.

1
Per quanto riguarda C, prima di tutto è il linguaggio completamente dominante in tutto il settore embedded e tutti i nuovi strumenti che sono stati creati per C. L'intero sistema operativo Windows e Linux è C. Tutta la lanugine degli smartphone è scritta in versioni C. C o C ++ domina in quasi tutte le aree di applicazione in cui viene utilizzata la programmazione. Lo standard C ++ sta ottenendo un aggiornamento importante. I nuovi sottoinsiemi MISRA sicuri di C e C ++ hanno successo per le app integrate, il primo si trasforma in standard di fatto nel settore. Quindi no ... non ci sono picchi di interesse, c'è un interesse costantemente elevato.

2
@Lundin, stai scherzando, sto usando Delphi 7 negli ultimi 4 anni, finalmente aggiornato al 2009 e lavorando anche in XE2. Infine, non ho bisogno di riavviare l'IDE ogni 5 o 6 build per mantenere i miei punti di interruzione. Inoltre, Embarcadero ha creato un modo per utilizzare Delphi Code per i programmi Android e iOS che è nuovo, ma è piuttosto interessante, il vantaggio è che è interamente gestito da una società privata, quindi i miglioramenti lo rendono effettivamente nelle mani degli sviluppatori .
Peter Turner,

1
Anche se non sono un programmatore di PC, utilizzo Builder avanti e indietro dalla metà degli anni '90. Stava costantemente migliorando fino a quando da qualche parte attorno a dove girava Codegear, poi apparentemente alcuni attrezzi si sono rotti, perché ora è peggio di 10 anni fa. Comunque, questo è fuori tema, dal momento che Delphi / Builder ha iniziato a estinguersi molto prima del fiasco di Codegear / Embarcadero.

1

La mia opinione è che C e i principali linguaggi derivati ​​da esso, C ++, Java e C #, siano stati accolti dalle più grandi società di software, come Microsoft e Sun / Oracle, e attraverso i vari stack di sviluppo. Di conseguenza, divenne la "lingua madre" di Windows, Apple OS e Unix.

Pascal, nonostante gli sforzi migliori e spesso sbagliati di Borland, non ha raggiunto quel livello di penetrazione nel mercato.


3
Questo sembra far sorgere la domanda: perché C ha assunto il controllo delle più grandi aziende? MacOS è iniziato con Pascal ed è diventato più amico del C. Qual è stata la ragione?
David Thornley,

1
@DavidThornley - Penso che molto abbia avuto a che fare con l'assunzione di programmatori esperti di alto livello. C, combinato con assemblaggio, era il linguaggio di scelta per le applicazioni PC tradizionali a partire dalla metà degli anni '80. Adottando una base C, ha reso molto più semplice ed economico assumere programmatori qualificati (nessuna riqualificazione, ecc.).
jfrankcarr,

3
Ma hai appena respinto la domanda di un livello. Perché i programmatori esperti di alto livello sono passati? Perché C era la lingua preferita? Knuth ha fatto le sue prime cose di programmazione letterale in Pascal, poi è passato a C. Perché? Scoprire esattamente chi ha guidato il passaggio può essere utile, ma la domanda richiede delle ragioni.
David Thornley,

Ho lavorato in due società di software negli anni '80, non in un ruolo di programmatore ma in un ruolo di supporto. Sulla base di ciò che posso ricordare, sospetto che il passaggio da MASM a C sia stato più facile per coloro che sono già in profondità nella programmazione MASM. Ricordo una antipatia per Turbo Pascal, con cui i programmatori con cui ho lavorato hanno chiamato un linguaggio giocattolo, e non volevi che iniziassero su QuickBasic. Ho imparato prima MASM e C a causa di quella pressione tra pari. Questo potrebbe anche essere un fattore, sebbene ciò non arrivi alla genesi effettiva di esso.
jfrankcarr,

Alla fine degli anni '80, all'inizio degli anni '90, C era già molto popolare. È possibile trovare un compilatore come modulo standard in qualsiasi implementazione UNIX (e UNIX era IL sistema operativo su cui la maggior parte dei programmatori voleva lavorare). Non sto dicendo che era più popolare di Pascal, ma era molto popolare. Quindi C ++, Java e C # sono popolari perché lo era C, non viceversa.
Giorgio,

0

Pascal è diventato sempre più popolare in un singolo ambiente PC / DOS piuttosto limitato.

Anche allora c'erano tante applicazioni MicroFocus COBOL in esecuzione su PC quante erano le applicazioni pascal.

C era la base del sistema operativo UNIX e di tutti i sistemi operativi MS / Windows.

La combinazione di esecuzione efficiente su hardware limitato e accesso nativo al sistema operativo e alle librerie GUI sottostanti erano probabilmente le ragioni principali del successo di C. Pascal non l'ha mai realmente hackerato su Windows e Delphi è arrivato troppo tardi per fare la differenza.


Penso che il tuo commento ".. e tutti i sistemi operativi MS / Windows" possano essere in realtà errati. Windows è stato originariamente progettato e codificato in PASCAL. Da en.wikipedia.org/wiki/Talk:X86_calling_conventions : "Ho solo pensato di soppesare qui. Ho cercato la parola chiave __pascal nella Guida per l'utente di Watcom C / C ++, ed è chiaro che: __pascal si chiamava convenzione per OS / 2 API 1.xe 3.x di Microsoft Windows "
John R. Strohm

@ JohnR.Strohm Convenzioni di chiamata e linguaggi di implementazione non sono necessariamente la stessa cosa. Microsoft utilizza C probabilmente già da qualche tempo nel 1993 (Windows 3.1 è stato rilasciato nel 1992). Fonte di un tipo
un CVn

IIRC nei primi anni '80 Microsoft usava Xenix molto internamente e probabilmente ha iniziato su C in questo modo. Quello, e (Turbo) Pascal dopo tutto era il prodotto killer di un pericoloso concorrente, Borland. Allora la differenza di dimensioni tra Microsoft e altre grandi società di software come Lotus, Borland ... non era ancora enorme.
Wazoox,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.