La definizione di linguaggio basato su C.

4

Qual è la definizione del linguaggio basato su C?
C # è considerato C-based?
Java è considerato C-based?

Inoltre, che cosa significa per una lingua basarsi comunque su un'altra lingua?

    
posta Sonosar 24.05.2011 - 18:30
fonte

9 risposte

18

C basato in generale significa come C da una vista di sintassi. Non ha nulla a che fare con il funzionamento della lingua o le funzionalità che fornisce.

Qualsiasi cosa che assomigli al seguente sarà chiamata c come

Type Declaration([Type] Param)
{
    Type Var (Statement Ender)
    Var[Selctor]SubItem 
}

Dove tutto ciò che sembra potrebbe essere chiamato lisp based

(lambda (arg) (+ arg 1))

Alcune persone hanno lavorato molto e creato un albero del linguaggio per riferimento.

    
risposta data 24.05.2011 - 18:47
fonte
5

Non esiste una definizione fissa. Ma sì, molte persone considererebbero entrambe le loro radici in C.

Come regola empirica, le parentesi graffe e le definizioni della funzione capovolta che start con il tipo restituito ( return-type name(parameters) ) sono segni certi che un linguaggio ha le sue radici (sintattiche) in C .

Naturalmente, semanticamente, ci sono molte altre lingue che hanno avuto un'influenza maggiore su C # e Java di C. Ma sintatticamente, è abbastanza chiaro che entrambi sono basati su C.

    
risposta data 24.05.2011 - 18:36
fonte
5

La tua domanda potrebbe non avere una risposta definitiva perché i linguaggi di programmazione sono sviluppati su un modello e seguono paradigmi (come funzionale, orientato agli oggetti, procedurale, multi-paradigma ecc.) che possono essere influenzati da molti altri fattori (progettare in modo significativo e l'implementazione) e quindi non può essere basato esclusivamente su una singola lingua senza alcun cambiamento in nessuno di questi (se qualcuno lo ha provato non avrebbe molto senso) ma i linguaggi basati su C esistono come qui.

C era ed è un linguaggio di grande successo e molti programmatori lo conoscevano e lo conoscono quindi era logico che le lingue intese per essere catturate come linguaggio di programmazione generale seguano la sua sintassi già familiare per il codice come i blocchi all'interno di parentesi graffe e dichiarazioni di funzioni e così via e molti hanno fatto per esempio vedere Wikipedia "Elenco di lingue basate su C" e notare che C stesso deve qualcosa di simile a ALGOL. Una buona visualizzazione può essere trovata nella Wikipedia "Elenco generazionale dei linguaggi di programmazione" .

Ma come ho detto non considero questa risposta come definitiva perché un linguaggio può anche dirsi basato su un altro in molti modi dire basando i suoi paradigmi principali ma seguendo una sintassi diversa in modo che un linguaggio basato su C possa essere creato senza parentesi graffe e semi-punto, ma in molti casi questo ragionamento vale.

MODIFICA: da Wikipedia (il secondo link) uno generale (di nuovo non definitivo) per la tua seconda domanda sarebbe

the ancestor language with the strongest influence may be considered as the base language.

    
risposta data 24.05.2011 - 19:26
fonte
4

Quando I vedi (o dici) "linguaggio basato su C" o I pensa (o intendo) "un linguaggio che segue la sintassi C in natura ed è generalmente imperativo". Generalmente questo significa che il linguaggio è stato progettato per vendere ai programmatori C . (Ad esempio Pike, C ++ e Java - "è solo C con oggetti" o "C dinamica" o qualsiasi altra cosa.)

Quindi, per me , Java è un "linguaggio basato su C" - cioè anche se le meccaniche sottostanti in Java sono quasi completamente diverse segue ancora la sintassi imperativa di base di C. Tuttavia, oltre alle somiglianze sintattiche e alla natura imperativa, non vi sono molte somiglianze tra questi linguaggi, quindi è importante non leggere troppo in questo tipo di proposizioni.

Scala, d'altra parte, non sarebbe adatto a questo requisito perché non è "generalmente imperativo" (almeno quando usato in modo idiomatico).

Naturalmente, questo è solo il mio uso del termine ;-) Quindi, a causa della vaghezza, quando tali dichiarazioni / termini sono usati dovrebbero generalmente essere qualificati con "X is C- basato perché ... "per garantire un significato comune tra le parti.

    
risposta data 24.05.2011 - 18:40
fonte
2

"C-based" è un termine piuttosto nebuloso in generale. In questo caso, entrambi questi linguaggi potrebbero essere considerati "basati su C" perché prendono in prestito molti costrutti di sintassi da C (parentesi graffe, terminazioni di riga del punto e virgola, dichiarazioni di tipo prefisso, ecc.), Tuttavia sono lingue molto diverse tra loro termini di approccio / paradigma.

Di conseguenza, la classificazione di "C-based" è davvero molto utile in generale, tranne da una prospettiva storica.

    
risposta data 24.05.2011 - 18:35
fonte
2

La sintassi strana (ad esempio nuova) è più difficile da gestire per molte persone rispetto alla sintassi dall'aspetto familiare. Quindi, molte lingue sono progettate per assomigliare alla sintassi C per far sentire a proprio agio i nuovi utenti. In questo contesto, se una lingua (che potrebbe essere completamente diversa sotto) sembra abbastanza C da impedire ai programmatori di studenti C di scappare urlando troppe parentesi, parentesi, nuove parole chiave, punteggiatura APL, ecc., Allora si può dire che essere basato su C. Vari progettisti di linguaggi hanno affermato di nascondere Lisp, Scheme, Forth, Simula, Smalltalk, ecc. "Simili" implementazioni all'interno di una sintassi simile a C per aiutarli ad acquisire maggiore popolarità o accessibilità per la lingua.

    
risposta data 24.05.2011 - 21:19
fonte
1

Una lingua è basata su un'altra lingua se è stata progettata per modificare quella lingua. "Progettato modificando", ovviamente, è ciò che significa "basato su". Nel caso di Java e C #, si può vedere che entrambi sono stati progettati modificando C: hanno gli operatori C, la precedenza degli operatori di C, la maggior parte delle parole chiave di C, la sintassi del controvento di C, gli operatori booleani di cortocircuito di C, la sensibilità al caso di C, il comportamento di C per l'operatore di divisione, C fall-through per le istruzioni switch, ecc.

Inoltre, la parola ufficiale è che Java è strongmente influenzato dall'Obiettivo C . L'obiettivo C, come tutti sanno, è basato su C. C # è basato su Java. Ciò li renderebbe entrambi almeno strongmente influenzati da C.

Infine, questa è la terza frase della specifica della lingua Java :

The Java programming language is related to C and C++ but is organized rather differently, with a number of aspects of C and C++ omitted and a few ideas from other languages included.

Sembra un'affermazione chiara come si può ottenere che Java sia basato almeno in parte su C (con alcuni aspetti omessi e alcuni altri aspetti inclusi).

    
risposta data 24.05.2011 - 18:59
fonte
1

Penso che C sia effettivamente considerato un discendente di Algol. Algol e C sono rigorosamente procedurali e Java e C # sono orientati agli oggetti, quindi in realtà derivano da Simula, nonostante le molte somiglianze sintattiche con C.

    
risposta data 24.05.2011 - 18:41
fonte
0

È solo qualcosa che si dice di una lingua in due situazioni:

  • vuoi attribuire un po 'del suo svantaggio alla sua eredità C (dare la colpa da qualche altra parte o suggerire che la lingua è irrecuperabilmente cattiva)

  • vuoi rivendicare un aspetto familiare per ottenere nuovi programmatori suggerendo che ne sanno già la maggior parte.

Ciò che è condiviso da tutti questi linguaggi "basati su C" è così piccolo che non ha praticamente alcuna importanza.

    
risposta data 24.05.2011 - 18:46
fonte

Leggi altre domande sui tag