Vantaggi dello stile imperativo rispetto allo stile funzionale [duplicato]

3

Al momento c'è molto clamore sui linguaggi funzionali, e ho passato l'ultimo anno a studiare Haskell come mia introduzione alla FP di conseguenza. Vedere i vantaggi offerti da FP è facile (come la trasparenza referenziale e una facile concorrenza dovuta all'enfasi sull'immutabilità).

La domanda che mi sono posto, ora, è se la programmazione imperativa fornisca un chiaro vantaggio sul paradigma funzionale? Non sto considerando vantaggi più controversi come, oh, più persone nel settore conoscono lo stile imperativo. Sto cercando più vantaggi inerenti allo stile, indipendentemente dalla popolarità (come, oh, in realtà è meglio per scrivere codice performante di basso livello rapidamente, o è più facile eseguire il debug a causa di x, yez ecc.). Potremmo fingere che sia un mondo ideale, se vuoi, quando parli di ogni paradigma (ad esempio, fingiamo che UNIX sia stato scritto in SML quando si parla di svantaggi funzionali, invece di dire, l'imperativo è vantaggioso perché UNIX è scritto in C) .

Sembra che oggigiorno stia passando un momento difficile a scoprire quali siano i vantaggi dello stile imperativo, specialmente se l'architettura del processore diventa più complessa, così che un'implementazione Haskell vs C del codice a basso livello ottimizzato mi sembra altrettanto spaventosa .

    
posta Josiah 10.04.2015 - 18:26
fonte

1 risposta

6

Bene, hai già accennato alla risposta. La programmazione imperativa è più vicina al metallo, quindi ha più senso in luoghi (come quelli incorporati) in cui lavori più vicino al metallo. Nessuno si preoccuperebbe di programmare un Arduino in Haskell (beh, tranne forse per @JimmyHoffa), anche se programmarne uno in Scheme non è inaudito.

Alcuni altri motivi:

  1. Il modello di calcolo si associa più facilmente all'hardware sottostante.

  2. I programmi imperativi possono essere scritti in uno stile funzionale, con un piccolo sforzo aggiuntivo.

  3. Un'enorme base di codice imperativo preesistente garantisce il bisogno di persone con competenze imperative.

L'ultimo punto è forse il più importante. Il codice imperativo ha un vantaggio perché è già là fuori, in grande volume. E finché continueremo a creare linguaggi come Java, ne scriveremo di più.

    
risposta data 10.04.2015 - 19:02
fonte