Come posso passare da Java a Clojure?
-
05-07-2019 - |
Domanda
Dopo aver scoperto Clojure ho trascorso gli ultimi giorni immerso in esso.
Quali tipi di progetti si prestano a Java su Clojure, viceversa e in combinazione?
Quali sono esempi di programmi che non avresti mai provato prima di Clojure?
Soluzione
Clojure si presta bene a programmazione concorrente . Fornisce strumenti meravigliosi per gestire il threading come la memoria transazionale del software e riferimenti mutabili.
Come demo per il gruppo di sviluppatori di massa occidentali, Rich Hickey ha fatto una simulazione di colonie di formiche in cui ogni formica era il suo thread e tutte le variabili erano immutabili. Anche con un numero molto elevato di thread le cose hanno funzionato alla grande. Questo non è solo perché Rich è un programmatore straordinario, ma anche perché non ha dovuto preoccuparsi di bloccare mentre scriveva il suo codice. Puoi dare un'occhiata alla sua sulla colonia di formiche qui .
Altri suggerimenti
Se hai intenzione di provare la programmazione simultanea, penso che il clojure sia molto meglio di quello che ottieni da Java immediatamente. Dai un'occhiata a questa presentazione per capire perché:
Ho documentato i miei primi 20 giorni con Clojure sul mio blog
http://loufranco.com/blog/files /category-20-days-of-clojure.html
Ho iniziato con le lezioni SICP e poi ho creato un setaccio di numeri primi parallelo. Ho anche giocato con le macro.
Quali tipi di progetti si prestano all'utilizzo di Java su Clojure, vice versa o in combinazione?
Un progetto in cui uno strumento di costruzione della GUI (come Matisse in Netbeans) è necessario sarebbe un caso in cui Java potrebbe ancora richiesto. Qualsiasi cosa fatta Java può essere fatto abbastanza in Clojure prontamente, con proxy e gen-class if necessario o semplicemente accedendo a Java come necessario (., doto, nuovo, ecc.). Questo consente ai progetti Clojure di essere facilmente utilizzati Librerie Java o codice Java legacy.
Quali programmi non avresti mai tentato prima di Clojure?
Prima di trovare Clojure, lo ero contemplando un progetto che ha richiesto JDBC, verrebbe eseguito in un servlet container, e ho anticipato di fare un molto sviluppo iterativo perché non era chiaro quali metodi sarebbero stati lavorare per i dati che dovevo analizzare. L'ho messo sul bruciatore posteriore perché io non ho avuto il tempo o la pazienza per la compilazione-debug-deploy-validation ciclismo richiesto da Java. Ho adesso scritto l'applicazione in Clojure, e sono molto contento della facilità di fare cambiamenti al volo ed essere in grado di esaminare i risultati subito. Per non parlare della gioia di programmazione ed essere senza blocco liberato dal dover sviluppare (e refactor) gerarchie di classi.
- " MikeM " tramite la clojure@googlegroups.com mailinglist
Quali tipi di progetti si prestano a Java su Clojure, viceversa e in combinazione?
Se vuoi sviluppare un framework che deve essere consumato da Java e Clojure, ho trovato che scrivere le principali astrazioni (interfacce di classi base di annunci) in Java sia preferibile rispetto a scriverle in Clojure (trovo il codice proxy
).
Se sei un utente di Hibernate o di qualsiasi altro framework che faccia un uso pesante delle annotazioni Java senza offrire un'alternativa programmatica, avrai qualche problema, dal momento che non è banale emulare POJO annotati con le strutture dati di Clojure.
A parte questo, non ho riscontrato casi d'uso per i quali Clojure è meno appropriato di Java; devi far fronte alla perdita della digitazione statica, ovviamente, che all'inizio sembra un po 'sconcertante, ma tende ad andare via.