Qual è il miglior linguaggio di programmazione per sviluppare un'applicazione GUI?
Una cosa che dovresti guardare è la programmazione funzionale reattiva (FRP). Date un'occhiata a Che cos'è la programmazione reattiva funzionale? per una rapida introduzione al concetto.
Ho trovato che FRP rende il codice più breve e modulare rispetto alle solite soluzioni basate sugli eventi che tendono a scendere in codice spaghetti alimentato da callback abbastanza rapidamente. È un livello più alto, un modo più dichiarativo di scrivere UI e vale la pena imparare anche se è completamente diverso da quello a cui siete abituati.
Haskell è un buon linguaggio per FRP. È abbastanza espressivo da avere alcune librerie FRP davvero eleganti come Reactive Banana. Questa è la mia libreria FRP preferita - penso che segua abbastanza da vicino la semantica che vogliamo.
Per i widget veri e propri, avete due buone opzioni. Se volete davvero un'applicazione nativa, potete usare wxWidgets che sono supportati da reactive-banana-wx. I collegamenti a wxHaskell sono ben progettati come libreria, ma wx stesso è un po' doloroso da costruire.
Un'altra opzione è quella di usare un'interfaccia utente basata sul web. C'è una grande libreria leggera chiamata threepenny-gui. Questa libreria sembra una normale programmazione GUI, ma in realtà crea un piccolo server web Haskell in background che può essere collegato ad un browser web. È molto facile da usare e sorprendentemente versatile, ma non so come distribuire programmi con essa. Questa libreria viene fornita con il proprio modulo FRP pesantemente basato su Reactive Banana.
Un'altra buona opzione è compilare il vostro programma in JavaScript e distribuire il tutto come web app. Potreste provare ad usare un compilatore Haskell->JavaScript come ghcjs o potreste usare Elm (Elm) che è un linguaggio Haskell-like per usare FRP nel browser. Elm è molto interessante perché fa di FRP il fulcro dell'intero linguaggio, rendendo molto facile scrivere programmi completi in questo stile. Ci sono alcuni grandi esempi sul sito web di Elm.
Articoli simili
- Python è un cattivo linguaggio per implementare una GUI?
- Qual è la differenza tra linguaggio macchina, linguaggio assembly e linguaggio di alto livello nei computer?
- Qual è il miglior linguaggio di programmazione per sviluppare applicazioni mobili multipiattaforma?
- Il linguaggio assembly è considerato un linguaggio di programmazione funzionale?