Programmi = Strutture dati + Algoritmi [chiuso]

0

Niklaus Wirth ha scritto un libro che ha reso popolare l'equazione informale usata come titolo: "Strutture di dati + Algoritmi = Programmi". Mi piace scrivere questa equazione all'indietro come nel titolo della domanda, perché suggerisce un aspetto semplice ma sottile della programmazione: siamo responsabili di decidere quali idee dei nostri programmi vogliamo esprimere attraverso strutture dati e quali vogliamo esprimere con algoritmi.

C'è qualche indizio nel libro di Niklaus Wirth che egli sottoscrive o addirittura esprime questa visione, o questa libera interpretazione dell'equazione informale è una mera coincidenza?

Un esempio classico sarebbe utile per chiarire questo punto. Quando implementiamo un automa a stati finiti potremmo rappresentare lo stato usando funzioni reciprocamente ricorsive, rendendo quindi lo stato implicito nel nostro programma e dando più peso alla parte "algoritmo" del nostro programma - o usando una variabile esplicita che trattiene lo stato - quindi arbitrando a favore delle strutture dati. Nell'esempio più avanzato, questa scelta ha talvolta un'incidenza diretta sulla manutenibilità o estensibilità dei programmi.

    
posta Michael Le Barbier Grünewald 17.03.2016 - 18:37
fonte

1 risposta

3

Nella prefazione all'edizione 2004 di Algoritmi e strutture dati , Wirth dichiara:

Programs are concrete formulations of abstract algorithms based on particular representations and structures of data... Decisions about structuring data cannot be made without knowledge of the algorithms applied to the data and that, vice versa, the structure and choice of algorithms often depend strongly on the structure of the underlying data. In short, the subjects of program composition and data structures are inseparably interwined.

Se comprendo correttamente la tua domanda, allora sì, vorrei leggere dal paragrafo precedente che Wirth riconosce la fluidità del confine tra algoritmi e strutture dati, e che dove ciò si trova per una particolare implementazione sarà influenzato da considerazioni di performance , manutenibilità o altri fattori.

    
risposta data 17.03.2016 - 19:06
fonte

Leggi altre domande sui tag