Perché le più comuni lingue di uso generale hanno adottato una sintassi più complessa? [chiuso]

-3

Forse questa domanda non significherebbe molto se C e C ++ sono contestualizzati, ma continuavo a chiedermi perché linguaggi successivi come Java e specialmente C # non siano stati resi più semplici per quanto riguarda la loro sintassi?

Ecco perché mi stavo chiedendo se ci sia un motivo importante per questo, perché per me sembra che queste lingue - C # è la mia scelta - sarebbero leggermente (o anche molto) più produttive se:

Punto e virgola 1.

2. La sensibilità del campo è stata interrotta: è molto fastidioso e non vedo alcun beneficio nell'utilizzarlo nelle lingue moderne.

3. Operatori logici in cui solo and e or invece di && e || (digitando più velocemente? - almeno trovo le lettere più veloci da digitare).

4.Se c'era un modo in cui non dovevi digitare i nomi delle classi ogni volta che chiami un metodo al suo interno (permettendo a uno di digitare solo WriteLine invece di Console.WriteLine )

E ce ne potrebbero essere molti altri - è interessante notare che ho capito modi più efficienti (più efficiente = meno battitura) per dichiarare metodi e variabili senza cambiare funzionalità, quindi il motivo per cui continuo a chiedermi perché le cose non erano fatto in modo diverso (non solo sulla programmazione).

Quindi, alla fine, esiste una ragione tecnica o storica per cui le lingue sono mantenute in modo simile e la sintassi più produttiva non viene adottata (il che sembra essere il caso delle lingue simili a C).

    
posta Ezequiel Barbosa 06.08.2016 - 01:49
fonte

2 risposte

1

Perché vedo questo fenomeno? Oppure: perché le poche lingue che sto imparando condividono la sintassi C-like?

Scomponiamo questa domanda in più parti.

  • Perché il designer originale (*) della lingua ha adottato una sintassi simile a C?
  • Per ogni elemento del design della sintassi (come quelli menzionati dal richiedente), ci sono ragioni o argomenti legittimi che favoriscono tale uso?
  • Perché tali lingue diventano popolari? La sintassi C-like presta alla popolarità di un linguaggio di programmazione?
  • Perché non ci sono linguaggi con crossover di sintassi da due o più lingue, ad esempio tra una sintassi simile a C e un'altra sintassi non simile a C?

Perché il designer originale (*) della lingua ha adottato una sintassi simile a C?

Molti linguaggi di programmazione hanno inizialmente un solo designer originale; alcuni ne hanno pochi; pochissimi linguaggi di programmazione sono stati progettati da un comitato fin dall'inizio.

Puoi trovare le interviste di questi designer linguistici su Internet. Spesso spiegheranno perché la decisione è stata presa.

Per ogni elemento di progettazione della sintassi (come quelli menzionati dal richiedente), ci sono ragioni o argomenti legittimi che favoriscono tale uso?

La domanda punto e virgola è stata richiesto prima . Se qualcuno ha qualcosa da aggiungere, ti preghiamo di andare oltre le risposte esistenti e aggiungerne uno nuovo se il tuo contributo è nuovo.

La distinzione tra maiuscole e minuscole è stata risposta Microsoft .

Per operatori logici , nei primi tempi si riteneva che una lingua avrebbe dovuto fornire sia il non-corto circuito (valutare entrambi) che valutazioni di cortocircuito per and e or .

Esempio (Pascal):

  • Entrambi gli operandi valutati: and , or
  • Cortocircuito valutato: and_then , or_else

Il parere sulla valutazione del cortocircuito si è spostato negli ultimi decenni.

La domanda Console.WriteLine è il risultato di un linguaggio di programmazione orientato agli oggetti. In breve, per fare una chiamata di funzione, è necessario specificare se la funzione è un membro della classe (se è un metodo statico) o un membro di un'istanza (se è un metodo di istanza).

Oltre a Console , ci sono diversi output di testo che sono comunemente usati nella programmazione in C #:

  • System.Diagnostics.Debug
  • System.Diagnostics.Trace

Se guardi la pagina di configurazione del progetto di Visual Studio, puoi scoprire che Debug e Trace possono essere abilitati o disabilitati in modo indipendente nelle build di debug.

Dal punto di vista del design del linguaggio, si può discutere se WriteLine debba appartenere a un output di testo oa una stringa. Considera queste alternative:

  • "Hello world\n".WriteTo(Console.Out);
  • Console.WriteLine("Hello world");

La prima alternativa può essere implementata definendo un metodo di estensione C # che ha un TextWriter come secondo argomento; il primo argomento è la stringa.

Perché tali lingue diventano popolari? La sintassi C-like presta alla popolarità di un linguaggio di programmazione?

Lascerò che gli altri rispondano a questa parte.

È sufficiente dire che la sintassi C-like non è l'unico fattore che determina la popolarità. Un sacco di lingue popolari, ad es. Python, Ruby ecc., Non hanno sintassi simile a C.

È anche sufficiente dire che il mondo degli affari non discrimina i linguaggi di programmazione sulla base della sintassi. Ad esempio, molte grandi aziende utilizzano Python.

Perché non ci sono linguaggi con crossover di sintassi da due o più lingue, ad esempio tra una sintassi simile a C e un'altra sintassi non simile a C?

o, in alternativa,

Perché non ci sono linguaggi con normalizzazioni sintattiche configurabili, in modo che due programmatori che lavorano sullo stesso file sorgente possano scegliere due diverse normalizzazioni della sintassi ed eseguire conversioni di sintassi al volo ogni volta che il file sorgente viene consegnato ?

Lascerò che gli altri rispondano a questa parte.

risposta data 06.08.2016 - 06:55
fonte
2

Per rispondere alla tua domanda diretta: perché C # non ha adottato queste quattro modifiche sintattiche?

Per quanto riguarda il # 4 - lo hanno fatto. In C # 6.0 con using static puoi effettivamente scrivere WriteLine che ti fa risparmiare un po 'di digitazione. Quindi hai esaudito il tuo desiderio!

Ma per gli altri 3 punti - questi non vengono adottati perché C # discende dalle lingue con uno stile diverso di sintassi e non ci sarebbe alcun chiaro vantaggio nel cambiare questa sintassi. Nonostante ciò che sostieni, non ci sono prove che la tua sintassi suggerita sia più produttiva in generale.

Puoi confrontare con BASIC (e le varie derivate come Visual Basic e VB.Net) che ha le caratteristiche richieste:

  • Nessun punto e virgola, vengono invece utilizzate interruzioni di riga
  • Non sensibile al maiuscolo / minuscolo
  • Gli operatori logici sono chiamati and e or
  • Una dichiarazione print .

Anche Python è quasi conforme, tranne che è case sensitive. BASIC è stato progettato per i principianti. Python è emerso anche dal tentativo di creare un linguaggio di insegnamento per principianti, e gli studi di usabilità sono stati effettivamente utilizzati per determinare la sintassi più semplice.

Java e C # hanno uno stile diverso di sintassi perché derivano da C ++ e C, quindi tutto si riduce a C (che a sua volta era basato su B e BCPL). Nessuna di queste lingue era destinata ai principianti o all'insegnamento. Erano linguaggi di programmazione dei sistemi destinati agli sviluppatori hard-core.

C ++ costruito su sintassi C perché è iniziato come un'estensione di C. Java costruito su sintassi C ++ perché è iniziato come un'estensione di C ++. C # ha copiato la sintassi Java, perché volevano attirare programmatori Java e C ++.

Detto questo, non ci sono prove che la sintassi BASIC o Python sia più produttiva come sembra dare per scontata. Sono progettati per essere più facili da imparare ma non è la stessa cosa più produttiva in generale da parte di uno sviluppatore competente. (Nota: non vi è alcuna prova del contrario. È notoriamente difficile misurare la produttività degli sviluppatori e confrontarla attraverso i linguaggi.)

Ad esempio, or è chiaramente più facile da capire di || per i non programmatori che conoscono la logica di base. Ma se conosci già la lingua a memoria, ho difficoltà a credere che uno debba essere significativamente più produttivo dell'altro. La ragione per cui C ha gli operatori di scelta rapida && e || è per la simmetria con gli operatori bit per bit & e | . VB.Net ha entrambi e li chiama Or e OrElse - certamente non più semplice o più facile da digitare!

Ci sono molti fattori che rendono un linguaggio più o meno produttivo e la sintassi è solo un fattore superficiale. Ad esempio, i linguaggi in stile C sono tutti tipizzati staticamente mentre BASIC / Python sono digitati dinamicamente, il che è una differenza molto più profonda.

Una cosa che menzioni, insensibilità alle maiuscole e minuscole, sicuramente not migliora la produttività per sviluppatori competenti. La distinzione tra maiuscole e minuscole può essere fonte di confusione per i principianti, ma qualsiasi sviluppatore competente sarebbe sempre coerente nel rivestimento per motivi di leggibilità. Non importa le difficoltà di piegatura del caso quando si utilizzano caratteri Unicode da vari script e linguaggi.

    
risposta data 06.08.2016 - 08:21
fonte

Leggi altre domande sui tag