Un linguaggio di programmazione è un insieme di programmi o un insieme di istruzioni?

5

Da Structured Computer Organization di Tanenbum

A program is a sequence of instructions describing how to perform a certain task.

  • Quando provo a vedere un linguaggio di programmazione come un linguaggio formale aggiunto con la semantica, ho sentito che un linguaggio di programmazione è un insieme di programmi validi (valido in base alla sintassi e ad altri aspetti di la lingua).

  • Durante la lettura di Structured Computer Organization di Tanenbum, ho capito che un linguaggio di programmazione è un insieme di istruzioni , da

    Each machine has a machine language, consisting of all the instructions that the machine can execute.

Quindi mi chiedo se un linguaggio di programmazione sia un insieme di programmi o un insieme di istruzioni? Grazie.

    
posta Tim 08.02.2015 - 20:42
fonte

4 risposte

19

Dal punto di vista della teoria del linguaggio di programmazione

Direi nessuno dei due. Un linguaggio di programmazione è 3 cose

  1. Un insieme di regole per la costruzione di programmi: la grammatica della lingua.
  2. Un insieme di regole per determinare se un particolare programma è un programma valido senza che lo esegue: la semantica statica della lingua *
  3. Un insieme di regole per valutare effettivamente un programma su un valore: la semantica dinamica (questo è ciò che la maggior parte delle persone chiama "semantica")

Non puoi semplicemente chiamare il set di programmi un linguaggio di programmazione perché noi, come programmatori, ci preoccupiamo molto del modo in cui interpreti quel programma. Se ti dicessi che ho costruito un nuovo linguaggio chiamato Nothyp che aveva la stessa sintassi di Python (accettava lo stesso insieme di programmi) ma faceva girare tutto indietro (semantica dinamica diversa) sarebbe stato caratterizzato come lo stesso linguaggio se solo avessimo guardato il programmi che accettano!

Inoltre, in questa forma che prova qualcosa come sicurezza di tipo, garanzie di terminazione, o valori canonici, il lemma è in realtà abbastanza piacevole.

* La semantica statica cattura l'essenza del controllo dei tipi e tutte le altre cose che un compilatore catturerà prima del runtime

    
risposta data 08.02.2015 - 20:49
fonte
2

Si noti che quest'ultima definizione parla solo della lingua machine di alcuni computer, non della programmazione dei linguaggi in senso generale. Suppongo che il linguaggio macchina sia un linguaggio di programmazione, ma quando trattiamo i linguaggi di programmazione come insiemi di programmi, possiamo riconciliarlo con quest'ultima definizione riformulandolo in questo modo: Il linguaggio macchina è l'insieme di stringhe di istruzioni macchina (o sequenze di istruzioni macchina).

Si noti che questo si adatta perfettamente alla prima definizione (programma = sequenza di istruzioni). Questo perché la definizione deriva dalla prospettiva di uno sviluppatore di sistemi operativi: in quel libro, Tanenbaum non si preoccupa dei linguaggi di alto livello, solo dei binari che possono essere eseguiti dalla CPU.

Inoltre, nessuna di queste definizioni è normativa. Ci sono molte altre prospettive utili e difendibili su programmi e linguaggi di programmazione.

    
risposta data 08.02.2015 - 20:57
fonte
1

Perché non citare solo wikipedia? Lo consiglio a mio avviso:

Un linguaggio di programmazione è un linguaggio costruito in modo formale progettato per comunicare istruzioni a una macchina, in particolare un computer. I linguaggi di programmazione possono essere utilizzati per creare programmi per controllare il comportamento di una macchina o per esprimere algoritmi. Wikipedia - Linguaggio di programmazione

    
risposta data 08.02.2015 - 21:08
fonte
0
Il programma

computer è una sequenza di istruzioni, scritte per eseguire un'attività specificata con un computer (da Wikipedia)

Non ha nulla a che fare con il linguaggio di programmazione . è solo la definizione del programma.

Che cos'è il linguaggio di programmazione?

Un linguaggio di programmazione è una lingua (come inglese, persiano, arabo, ecc.), ha sintassi e semantica (sintassi: frasi valide e frasi non valide). Il significato delle frasi (semantico), tuttavia, dipende dall'ascoltatore (computer). se vuoi comunicare con il computer dovrebbe capire cosa intendi (linguaggio macchina). Tuttavia, puoi utilizzare un linguaggio di programmazione di alto livello e un compilatore o un interprete che traducono la tua lingua nella lingua della macchina.

Il linguaggio di programmazione è un insieme di programmi che accetta?

È un'altra definizione di lingua e riguarda principalmente la sintassi . Dice che un linguaggio di programmazione è tutti i programmi che sono validi in quella lingua.

Ad esempio, la lingua inglese è tutti i testi (infiniti) che sono secondo le parole e la grammatica inglese. Ma non puoi garantire che questi testi abbiano un significato mentre li leggi. Tuttavia, se includiamo la precisione semantica (che è significativa correlata al pubblico di destinazione, ad esempio il computer), allora sì quella frase è vera.

    
risposta data 15.02.2015 - 08:13
fonte

Leggi altre domande sui tag