Perché diversi linguaggi di programmazione popolari sono influenzati da C? [chiuso]

21

I primi 10 linguaggi di programmazione, secondo l' indice TIOBE sembrano essere pesantemente influenzato da C:

1. Java

The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. - wikipedia.org

2. C

C is one of the most widely used programming languages of all time and there are very few computer architectures for which a C compiler does not exist. - wikipedia.org

3. C #

During the development of the .NET Framework, the class libraries were originally written using a managed code compiler system called Simple Managed C (SMC). In January 1999, Anders Hejlsberg formed a team to build a new language at the time called Cool, which stood for "C-like Object Oriented Language". - wikipedia.org

4. C ++

It was developed by Bjarne Stroustrup starting in 1979 at Bell Labs as an enhancement to the C language. - wikipedia.org

5. Objective-C

Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. - wikipedia.org

6. PHP

He rewrote these scripts as C programming language Common Gateway Interface (CGI) binaries, extending them to add the ability to work with Web forms and to communicate with databases and called this implementation "Personal Home Page/Forms Interpreter" or PHP/FI. - wikipedia.org

8. Python

Python was conceived in the late 1980s and its implementation was started in December 1989 by Guido van Rossum at CWI in the Netherlands as a successor to the ABC programming language (itself inspired by SETL) capable of exception handling and interfacing with the Amoeba operating system. - wikipedia.org

ABC (programming language) Its designers claim that ABC programs are typically around a quarter the size of the equivalent Pascal or C programs, and more readable. - wikipedia.org

9. Perl

Perl borrows features from other programming languages including C, shell scripting (sh), AWK, and sed. - wikipedia.org

10. JavaScript

JavaScript uses syntax influenced by that of C. - wikipedia.org

Sembra che molti di loro prendano in prestito la loro sintassi da C e / o siano strongmente influenzati in molti altri modi, almeno all'inizio. Perché?

    
posta John Isaiah Carmona 17.02.2012 - 11:14
fonte

5 risposte

40

Con l'ascesa di UNIX negli anni '70, il suo linguaggio di programmazione di sistemi standard C divenne rapidamente la lingua franca del mondo di programmazione. Per un po 'di tempo, C era praticamente obbligatorio per ogni programmatore. Come tale, il fatto che C abbia influenzato quasi tutti i linguaggi di programmazione che sono venuti dopo in un modo o nell'altro non sorprende, per due ragioni:

  • Quando si progetta una nuova lingua, ha senso basare la sua sintassi, ove possibile, su un linguaggio esistente già esistente che può essere presumibilmente condiviso.
  • Un nuovo linguaggio ha maggiori probabilità di successo se la curva di apprendimento è superficiale e una sintassi che assomiglia a una lingua già conosciuta è generalmente più facile da imparare (a meno che non si comporti radicalmente diverso nonostante le apparenti somiglianze). Quindi i linguaggi che prendono in prestito la sintassi da C generalmente ottengono la trazione più rapidamente di quelli che non lo fanno.

Ma esistevano altri linguaggi, e alcuni lo fanno ancora prima di C - c'è la famiglia LISP (CL, Clojure e Scheme sono i dialetti moderni più popolari), la famiglia ML (con molti dialetti moderni), c'è un l'intero esercito di dialetti BASIC (VB.NET e VBA sono implementazioni moderne), c'è Pascal ei suoi parenti (Delphi è il più noto) e molti linguaggi "strani" che hanno influenzato da molti altri linguaggi e hanno inventato alcune cose; gli esempi includono Go, Python, Lua, Haskell (e il suo predecessore, Miranda), Prolog ed Erlang. Mentre nessuno di questi linguaggi (eccetto Python) è tra i primi 10, molti di loro hanno una base di utenti stabile e una comunità attiva; certamente non stanno andando via.

Inoltre, va notato che la quantità di influenza C in questi linguaggi differisce selvaggiamente, che va dai linguaggi C + e C Objective-C quasi al 100% compatibili, fino a Python (che abbandona deliberatamente molte delle caratteristiche di sintassi di C). E questa è solo la sintassi: in termini di semantica, la maggior parte delle lingue su quella lista non hanno molto in comune con C. La stragrande maggioranza ha incorporato la gestione della memoria nel linguaggio e, di conseguenza, copia semantica, argomento passando, ecc. sono molto diversi JavaScript, ad esempio, ha forti influenze semantiche da Scheme, mentre la sua sintassi è stata progettata per assomigliare a Java (che, a sua volta, basa la sua sintassi bits-and-pieces su C, ma non la sua semantica). Altre differenze (ad eccezione di C ++ e Objective-C, che sono per lo più retrocompatibili con C) includono gestione degli errori, regole degli scope, librerie standard, inclusione di codice esterno ( #include ) e il fatto che molte di queste lingue sono "virtualizzati", ovvero, vengono eseguiti su un interprete, un compilatore JIT o una macchina virtuale.

Python, a proposito, ha qualche influenza C, ma non è certamente "basato su" C. Sia la sintassi che la semantica differiscono radicalmente da C, e questo è in base alla progettazione. Python prende in prestito solo le caratteristiche di C dove altre alternative sono ugualmente "buone" (come per lo "Zen di Python" - digita import this in un interprete python).

Per quanto riguarda il futuro della programmazione; le previsioni variano. L'influenza di C non sta scomparendo, ma i recenti sviluppi nell'hardware (le macchine multi-core diventano GPU comuni e potenti, la CPU che cessa di essere il collo di bottiglia tipico delle prestazioni, connessioni di rete veloci e affidabili, ecc.) Richiedono approcci radicalmente diversi alla programmazione in generale. Chiunque abbia mai scritto un'applicazione distribuita multithread in un linguaggio imperativo può dire che è incredibilmente difficile, mentre linguaggi come Haskell hanno funzionalità che rimuovono la maggior parte dei problemi tipici e offrono un approccio più astratto e più strutturato all'elaborazione distribuita, simultanea e parallela (la purezza è un concetto importante in questo contesto). I linguaggi di programmazione più recenti (ad esempio C # o D) includono già molte funzionalità per supportare tale idioma. In ogni caso, né il strong impatto che C ha fatto sulla programmazione, né l'esistenza di linguaggi non simili a C sta andando via.

    
risposta data 17.02.2012 - 11:52
fonte
2

Questo è un po 'come chiedere perché l'inglese è la lingua dominante negli Stati Uniti. Perché non lo spagnolo o il francese? Hanno controllato più del territorio degli Stati Uniti rispetto alle colonie inglesi. Perché non olandese? La prima capitale americana era in un'ex colonia olandese. Non sono sicuro che ci possa essere una "risposta" a questo.

Tuttavia, la cronologia "Cronologia delle lingue del computer" ( link ) fornisce tutta la risposta che può esserci.

    
risposta data 17.02.2012 - 13:10
fonte
0

Se crei un nuovo linguaggio di programmazione, avere una sintassi simile a quella delle lingue esistenti rende l'apprendimento più facile per i tuoi nuovi utenti. Soprattutto se molti concetti sono simili tra le lingue.

Inoltre, penso che la sintassi in stile C sia relativamente facile da leggere. Per confrontare con Pascal, usare i simboli "{" e "}" per i blocchi di codice è più leggibile di "begin" e "end", che sono otticamente molto simili agli identificatori. Python è ancora più leggibile, ma includere lo spazio bianco nella sintassi apre una nuova serie di problemi con la modifica. Un altro esempio: Lisp e JavaScript condividono alcune idee, ma quando la stessa cosa è scritta in sintassi in stile C, è meno oscura.

Sono sicuro che molte persone non sarebbero d'accordo con il secondo paragrafo, perché ognuno ha la propria lingua preferita, ma penso che la popolarità della sintassi in stile C sia parzialmente una coincidenza storica, ma in parte mostra anche che gli autori di C hanno fatto alcune buone decisioni.

    
risposta data 17.02.2012 - 17:30
fonte
-1

I linguaggi di programmazione si evolvono nel tempo proprio come i linguaggi naturali, con alcune lingue più vecchie che influenzano questa evoluzione in modo più strong di altre, mentre altre si attenuano nell'oscurità e la loro influenza è più difficile da tracciare a livello di superficie, cioè sintassi.

L'influenza di C proviene da molte fonti: è un livello basso, molto diffuso, che ha avuto supporto sia nei circoli di Unix che di Microsoft. È anche la sopravvivenza del problema più adatto - è facile vedere la sintassi concatenata simile a C aveva più appeal rispetto alla verbosa sintassi derivata da Algol di Pascal e di altri concorrenti di C negli anni '70 e '80. Quindi è stato ampiamente adottato dalle lingue che lo hanno seguito.

Con l'attuale crescita dell'importanza della programmazione multithread e dei linguaggi funzionali che sono particolarmente adatti a questo, direi che vedremo la loro influenza crescere in futuro. Caso in questione: Python, che ha anche fatto quella lista nella domanda posta.

Una bella vista temporale della storia linguaggio di riflettere su di

    
risposta data 17.02.2012 - 11:50
fonte
-3

La maggior parte delle lingue che hai elencato non hanno praticamente nulla a che fare con C a parte somiglianze sintattiche irrilevanti. Gli unici due derivati C reali sono Objective-C e C ++.

    
risposta data 17.02.2012 - 14:20
fonte

Leggi altre domande sui tag