Migliore risposta
Ottima domanda!
La semantica nel linguaggio si riferisce a come cambia il significato se cambia la struttura; nella progettazione la semantica non dipende dalla sequenza (come nel linguaggio scritto o parlato), ma dagli elementi e da come questi interagiscono: materiale, dimensione, forma, consistenza, colore; tutto ciò fornisce indizi semiotici che permettono di capire come interagire con un particolare disegno.
Ad esempio, luso di un certo materiale può far pensare che un oggetto sia costoso o economico; il modulo (le dimensioni per esempio) può dare un suggerimento se è destinato a persone più giovani o più anziane (si pensi ad esempio ai blocchi di plastica, come i lego). La posizione di una sedia può comunicare che è destinata alla persona più importante nella riunione, e così via.
I progettisti devono tenere conto di tutte queste informazioni sottili (e non così sottili) al fine di creare oggetti con cui le persone possano interagire, senza manuali o imbarazzati per non sapere cosa fare.
Consiglierei di esplorare la teoria della cultura materiale.
Risposta
Sintassi e semantica sono entrambe parti della comunicazione tra di loro e con altre entità, come i computer.
Sintassi si riferisce alla disposizione grammaticale delle parole e segni di punteggiatura nelle frasi.
Semantica si riferisce al significato di parole e segni di punteggiatura disposti in modo sintatticamente accettabile.
Consideriamo un correttore sintattico ect esempio che allinizio non può essere compreso semanticamente dal nostro compilatore Plain English, che considera una frase da comprendere semanticamente quando può essere ridotta a una forma che può essere eseguita da un processore Intel x86.
frase evidenziata in questo programma …
… ovviamente necessita di lavoro.
Il problema è che il compilatore non sa cosa sia un” salvadanaio “. Ora sappiamo che un salvadanaio ha molte caratteristiche (dimensioni, forma, colore, ecc.)…
… ma lunica cosa che il programma deve sapere su un salvadanaio è che può contenere denaro in varie quantità. Quindi aggiungiamo una semplice definizione lungo queste righe (freccia rossa) e proviamo a compilare nuovamente il nostro programma:
Ratti! Ancora non comunico. Forse dovremmo PARLARE PIÙ FORTE !!! Ma no, linglese normale non fa distinzione tra maiuscole e minuscole. E aspetta … lerrore è cambiato. Questa volta, penso che sia la parola “dollaro” che il computer non capisce. Quindi spieghiamo “dollaro” come mostrato di seguito e proviamo a compilare di nuovo:
Ancora topi! Bene, vediamo se possiamo risolvere il problema aggiungendo una frase che dice al compilatore come pensare ai penny:
Et voilà ! Questa volta, quando compiliamo, siamo semanticamente compresi e quando eseguiamo il programma, funziona (output della console mostrato sotto):
Nel frattempo, allinterno …
Questo è il modo in cui è stata raggiunta la comprensione semantica di quella frase nel cervello del compilatore.
• “10 dollari” è stato riconosciuto come un letterale numerico seguito da ununità di misura ed è stato convertito in una variabile numerica con un valore di 1000 (10 dollari per 100 penny per dollaro).
• “Un salvadanaio” è stato inteso come una richiesta di una nuova variabile locale di tipo “salvadanaio” – che si riduce al tipo base “numero” – e lo spazio per questa variabile, inizializzata a zero, è stato allocato sullo stack.
• La frase “Aggiungi 10 dollari a un salvadanaio” è stata ridotta, internamente, solo allessenziale sciatto – “Aggiungi [dollari] in / in / a [salvadanaio]” – dove le parole in le parentesi quadre sono nomi di tipi.
• Nessuna routine di questo tipo è stata trovata in nessuno dei due programmi codice o nella “Noodle” – la libreria in inglese semplice di tipi, variabili e routine da dandy a portata di mano – in modo che le variabili siano state ridotte ai loro tipi di base, una alla volta, con ogni combinazione controllata per una routine di corrispondenza durante la discesa.
• Al livello inferiore – “Aggiungi [numero] in / in / a [numero]” – è stata trovata unintestazione di routine corrispondente nel Noodle. Eureka! In particolare, la seconda intestazione di questa routine …
… il cui corpo è stato scritto, come puoi vedere, in una lingua che I cervelli Intel x86 possono capire (le dichiarazioni del linguaggio assembler in blu sono commenti).
• Quindi il compilatore ha generato le istruzioni Intel x86 richieste per (a) inserire gli indirizzi delle due variabili sullo stack e per (b) chiama la routine sopra.
E questo è tutto per quella frase. Il resto del programma è stato compilato allo stesso modo.
Comprensione semantica.Un incontro di menti.
Et voilà!