Che significato ha un SUGGERIMENTO quando viene utilizzato nell'ingegneria del software?

3

L'ho visto ora in un numero di luoghi e in un certo numero di contesti, ad esempio in SQL.

Non riesco a definire il significato di un "suggerimento" che sembra chiaro abbia qualche applicazione o parte di un modello / tecnica di disegno più grande.

Che cosa è esattamente un suggerimento quando viene utilizzato nell'ingegneria del software?

    
posta Aaron Anodide 12.05.2012 - 23:30
fonte

3 risposte

10

La nozione di suggerimenti è un modo particolare per esprimere un apposito contratto , o forse più precisamente, la mancanza di ciò. L'idea di base è che lo sviluppatore dell'applicazione trasmetta alcune informazioni al sistema / libreria sottostante senza alcuna garanzia che verrà preso in considerazione.

Personalmente mi piace il modo in cui questo è descritto in Documenti API OpenGL per glHint :

specify implementation-specific hints... a symbolic constant indicating the desired behavior.

  • Nota la parola desiderata : questo è il punto. Lo sviluppatore di applicazioni esprime il desiderio che l'implementazione si comporti in un modo particolare. Il desiderio non è un requisito obbligatorio, può essere ignorato.

L'articolo di Wikipedia su suggerimenti SQL menziona:

Oracle implements hints by using specially-crafted comments in the query that begin with a + symbol, thus not affecting SQL compatibility.

  • Nota sopra significa praticamente la stessa "autorizzazione ad ignorare" poiché un database che non supporta gli hint specifici di Oracle eseguirà istruzioni SQL senza queste.
risposta data 13.05.2012 - 00:44
fonte
6

In SQL non si specifica come fare le cose (al contrario di linguaggi come Java, C #, VB); invece si specifica quale dovrebbe essere il risultato. Esempio: "Voglio tutti gli studenti di grado A"

SELECT * FROM students WHERE grade = 'A'

Questa è una situazione molto semplice; tuttavia in query complesse il motore di database spesso non sa quale sarebbe il modo migliore per eseguire la query. Se, ad esempio, sai che un certo indice velocizzerebbe la query molto meglio di un altro, puoi dare un suggerimento e dire al motore del database di usare questo indice.

Questo non è un modo standard per scrivere istruzioni SQL. È una tecnica avanzata per l'ottimizzazione delle query lente. Se sei nuovo alla programmazione SQL, puoi tranquillamente ignorare questi suggerimenti per iniziare.

Aggiorna

Un esempio completamente diverso è il rendering di caratteri vettoriali (come i font TrueType). Il rendering implica la conversione della descrizione basata sul vettore della forma di un carattere in un modello di pixel. Potrebbe verificarsi un problema se si esegue il rendering di una "m", ad esempio. A seconda della dimensione risultante, i due archi della "m" potrebbero ottenere una larghezza diversa, a causa degli effetti di arrotondamento. Se la larghezza risultante della "m" ha un numero pari di pixel, i due archi non possono avere la stessa larghezza. Quindi la descrizione della "m" ha un SUGGERIMENTO, che dice al riproduttore di fare lo stesso con l'arco sinistro e quello destro. Se la larghezza calcolata misurerebbe 8 pixel, ad esempio, il renderer decide di renderlo di 7 o 9 pixel di larghezza.

Tre "m" con larghezza di 8, 9 e 7 pixel

0·00·00·    0·00··00·    000·00·
00··0··0    00··00··0    0··0··0
0···0··0    0···0···0    0··0··0
    
risposta data 13.05.2012 - 02:09
fonte
5

Significa la stessa cosa che significa in inglese: un suggerimento è un indizio. Ad esempio, alcuni processori migliorano le loro prestazioni prevedendo se un determinato ramo verrà o meno preso. Se il processore indovina, deve eseguire il backup e riempire la pipeline di istruzioni; se si indovina correttamente, il codice viene eseguito rapidamente perché non ci sono pause nella pipeline. Il programmatore o il compilatore può spesso dire se un ramo è probabile o meno, e può fornire un suggerimento al processore per migliorare l'accuratezza della sua ipotesi e quindi migliorare le prestazioni. Quindi, il processore finirà con il risultato giusto con o senza il suggerimento, e otterrà anche il risultato giusto se la sua previsione di branca è errata al 100% delle volte. Tuttavia, la previsione accurata dei rami accelera le cose e fornire un buon suggerimento può aumentare tale precisione.

    
risposta data 13.05.2012 - 00:38
fonte

Leggi altre domande sui tag