Programmazione funzionale

di il
5 risposte

Programmazione funzionale

Si possono creare delle GUI, o piccoli giochi non a linea di comando, con il paradigma funzionale, ad es con linguaggi tipo Haskell o Clojure, per citarne due abbastanza recenti, ed esistono alcuni esempi?

5 Risposte

  • Re: Programmazione funzionale

    Di nuovo: che domanda bischera fai????

    RAGIONA!!!!

    Perche' con il paradigma funzionale non dovresti poter fare le stesse cose che fai con il paradigma ad oggetti (tanto per citarne uno ) ????

    E parli solo del paradigma funzionale. E perche' non quello logico?

    E' come dire: mediante un paradigma non puoi implementare certi tipi di algoritmi.

    Ma, poiche' in qualunque paradigma puo' implementare la Macchina di Turing Universale, da questo che deduci ????
  • Re: Programmazione funzionale

    Eh no, deduco che è un dato di fatto c'è un gran parlare del fatto che la OOP "rappresenta meglio" le GUI con gli oggetti e le loro proprietà, etc, etc, che non la programmazione funzionale, che rappresenta meglio i concetti più accademici ed eleganti della programmazione.... e se poi questo gran parlare è aria fritta non è colpa mia.

    Quindi perchè signori linguaggi come Haskell non sono comunemente usati per le GUI? Ad es. perchè Apple usa Obj C e Swift e non Haskell o SCHEME?
  • Re: Programmazione funzionale

    Il dato di fatto e' che il programmatore quadratico medio si e no sa programmare con il paradigma procedurale, fa finta di saper programmare con il paradigma ad oggetti (spesso lo usa in modo procedurale) immaginarsi programmare con paradigmi piu' evoluti

    Comunque, una GUI ha una relazione praticamente 1:1 con il modello ad oggetti.
    Questo non vuol dire che nella programmazione funzionale non si possa implementare la programmazione ad oggetti.
    Anzi, se il compilatore non e' particolarmente bischero, puo' fare anche meglio della OOP.

    Considera questo:
    
      r = object.method(p1, p2)
    
    non e' molto diverso da
    
      r = function(object, p1, p2)
    
    Dove 'method' viene scelto in base alle regole di ereditarieta', overloading, ecc.

    Ora, se il compilatore funzionale e' in grado di supportare una sintassi del tipo:
    
    
       def function(object: O1, p1: T11, p2: T12): R1 { ... }
       def function(object: O2, p1: T21, p2: T22): R2 { ... }
    
       r = function(o, a1, a2)
    
    ed e' in grado di discriminare le varie definizioni di funzioni in base al tipo dei parametri con cui la funzione viene chiamata, ecco che hai appena implementato il modello ad oggetti usando un linguaggio funzionale. Ma non solo, riesci a supportare anche il concetto di multimetodo che attualmente il modello ad oggetti non supporta (estensione proposta, tra l'altro, anche da Stroustrup).

    Tieni presente che i lunguaggi funzionali hanno il concetto di gerarchia dei tipi.
  • Re: Programmazione funzionale

    Grazie migliorabile sei un grande. E lo dico senza ironia.

    Ma la mia domanda è infatti rivolta al perchè le grandi aziende (che non penso abbiano assunto soltanto programmatori quadratici medi) usino nella stragrande maggioranza linguaggi OOP (o meglio le implementazioni OOP di tali linguaggi) per le loro GUI, e perchè i linguaggi funzionali siano praticamante relegati al campo didattico e accademico... il che è sicuramente una bella cosa quest'ultima, ma ad es perchè non è popolare scrivere un gioco con GUI con il paradigma funzionale. Trovami un libro di informatica che sia uno, che ci spiega come scrivere una semplice GUI con il paradigma funzionale o con quello logico.....
  • Re: Programmazione funzionale

    Ad esempio, il mondo BigData/Hadoop usa Scala (anche se quello che fai in Scala lo puoi fare pari pari in Java), linguaggio funzionale (con supporto alla programmazione OOP, visto che si basa sulla vm Java).

    I linguaggi OOP sono piu' semplici dei linguaggi funzionali, piu' efficienti, e molti problemi sono facilmente risolvibili mediante un paradigma OOP piuttosto che uno funzionale.

    Il paradigma di programmazione va scelto in base a come semplificare la soluzione del problema, non lo applichi alla cieca.

    Quando lo fai, ti stai dando martellati sui mignoli.

    Per esempio, puoi fare OOP con un linguaggio procedurale, ma e' un suicidio.

    Invece, ad esempio, la programmazione parallela, sopprattutto quella massiva (schede grafiche, grandi cluster di computer, ...) si adatta bene ai linguaggi funzionali, dove, invece, usare un OOP, o anche procedurale, e' un bagno di sangue.

    https://wiki.haskell.org/Game_Developmen
    https://wiki.haskell.org/Fra
    http://lambda-the-ultimate.org/node/433
Devi accedere o registrarti per scrivere nel forum
5 risposte