Fork me on GitHub
#clojure-italy
<
2019-07-29
>
manuel06:07:52

buon lunedì ☁️

reborg07:07:11

☀️ 20 gradi, buondello

Lu08:07:29

Buongiorno!

alan08:07:43

Buondì P.S.: @reborg bella vita!! Qui ce ne sono già 28!!!!

reborg08:07:08

vero… che fa bene al lavoro, meno alla vacanza. Per entrare in acqua da queste parti c’e’ una finestra di 2 settimane in cui non ti congeli completamente.

😂 4
dmaiocchi09:07:37

@justalanm tu fai anche python code giusto?

dmaiocchi09:07:58

come fai a sopravvivere a tutto python quando switch da clojure? ;grin

dmaiocchi09:07:40

e uno dei problemi che ho in questo momento in un codebase python, la gente mette oggetti dappertutto, quando uno in python puo usare dizionari

dmaiocchi09:07:06

e usare funzioni che ricevono quel dict invece che un method 😞

dmaiocchi09:07:18

ma e veramente difficile cambiare PEP religion

alan09:07:04

@darioszr se vuoi puoi fare il male assoluto con questo https://github.com/cnuernber/libpython-clj 😁

alan09:07:01

Puoi letteralmente "spaccare" sia classi che oggetti (che in realtà sotto sotto sono dizionari) e ti ritrovi con delle mappe Clojure. Ad ogni modo non si può fare molto se non un po' di evangelizzazione, traduci parte della codebase e poi mostra quanto è più semplice ed intuitiva in quel modo. Piccolo problema, i dizionari Python sono mutable e non ci sono tutte le facilities che ci sono in Clojure per gestirli, io di solito mi faccio una serie di generatori specifici per simulare alcuni di questi, ma in quel caso addio semplicità e chiarezza per i non adepti 😅

dmaiocchi12:07:21

Ho trovato nel web delle persistent datastrcuture in python

dmaiocchi12:07:05

ci daro un occhio. e si sto cercando di evangelizzare certi colleghi pythonist

mdallastella12:07:47

In realtà, se non ricordo male anche le NamedTuple sono immutabili

dmaiocchi12:07:09

e una delle data structure che mi piace la

dmaiocchi12:07:27

il mio problema e che uno potrebbe gia scrivere buon codice python attualmente

dmaiocchi12:07:36

non lo facciamo per religioni

dmaiocchi12:07:42

non dico che sia come clojure

dmaiocchi12:07:59

ma uno potrebbe gia fare data driven python senza classi e methods

dmaiocchi12:07:06

ma PEP scrive ovunque

dmaiocchi12:07:32

il contrario

mdallastella12:07:12

Certo. Ho visto un talk qualche settimana fa, "Solving Problems the Clojure Way" (https://www.youtube.com/watch?v=vK1DazRK_a0) i cui esempi erano in Javascript

dmaiocchi12:07:57

penso che il problema nella nostra industria sono i people mind

dmaiocchi12:07:07

se PEP lint dice tutto e oggetto

dmaiocchi12:07:17

la gente vi si agrappa al 80%

dmaiocchi12:07:43

non dico che uno possa raggiungere il livello di clojure, ma sicuramente puo aiutare e rendere le cose semplici. Dipende per me dal livello tecnico della gente

dmaiocchi12:07:18

purtroppo anche la FP e soggetto a critiche e luoghi comuni che e veramente difficile

dmaiocchi12:07:00

smentire alle volte. soprattuto se uno fa un PR del genere in un python codebase, dove la gente pensa che non e pythonic/javascriptonic/whatevertonic/gin-tonic

😁 8
helios13:07:29

gin tonic per me, grazie

😁 4
alan13:07:35

I decoratori sono considerati pythonic, ma spesso mi è capitato di dover spiegare a cosa servano e perché un wrapper è utile in quella situazione

dmaiocchi13:07:33

Il decorator python a me sinceramente mi danno reazioni allergiche

alan13:07:08

E' solo zucchero, un po' come le threading macro -> in Clojure, e piuttosto che ritrovarsi a scrivere ed estendere 8 classi per fare la stessa cosa, meglio il decoratore 😄

dmaiocchi17:07:36

bhe la -> e molto diretta e semplice

dmaiocchi17:07:49

ma un decorator in python richiede libri su marketing

dmaiocchi17:07:57

nel senso x me , se devi estendere 8 classi mi sa che hai un problema, poi anche filosoficamente non capisco

dmaiocchi17:07:20

cosa vuol dire estendere una cosa con un decorator? xke uno non fa un altra funzione allora?

dmaiocchi17:07:04

la stessa cosa, per i list-comprehension in python, mi sono chiesto xke gli hanno inventati , se esiste map/filter/reduce

alan10:07:40

reduce non esiste nelle librerie core (a Guido non è mai andato giù), le list comprehension ci sono anche in Clojure (for [a b] a) e i 'wrapper' (leggi high order functions) li usiamo estensivamente in Clojure, i decoratori sono solo zucchero per evitare di scrivere myfunc = wrapper(wrapped). Ad ogni modo Python è quello che è, ovvero un linguaggio di scripting e al massimo di prototyping

dmaiocchi11:07:18

Si concordo grazie per le risposte

dmaiocchi11:07:51

Tecnicamente verissomo purtoppo l industria abusa di questo lingua x me

dmaiocchi17:07:15

x me ignoranza

dmaiocchi17:07:45

a parte quello, quando introduco una map e ho chiesto anche ad un mio amico, la gente vuole list_comprhension in python 😁

dmaiocchi17:07:18

ma bom, a parte i trolls, quello che mi preoccupa molto in python e parlo da dev che fa codice su linux in legacy code

dmaiocchi17:07:35

quindi se lancio la mia app, la devo mantenere magari per 10 anni, non solo io ma chi verra dopo anche

dmaiocchi17:07:33

quello che mi preoccupa in python e la totale assenza di riguardi dell'ecosystems. pip, virtualenv etc, sono gioccattolini e python2 python3 in produzione, e forse il dramma piu grande del IT

dmaiocchi17:07:01

non sai quante cose ho visto in giro per risolvere sistemi che usano python2 e poi hai codice in python3

dmaiocchi17:07:19

non fai piu backports ma fai una patch differente per ogni sistema

dmaiocchi17:07:48

x me, uno dei motivi x cui amo clojure e la sua community xke non sono dei kiddy o accademics che vivono nella loro ricerca

dmaiocchi17:07:21

il problema del'ecosystems e differenti piattaforme/etc , longterm support e preso molto seriamente x me in clojure. (

dmaiocchi17:07:10

oggi parlavo con un pythonic guy di questo, e mi ha detto che non parlavo di programmazione. x me 60% dei bugs che abbiamo sono dovuti al ecosystem oggi giorno e saranno ancora piu importanti in futuro

dmaiocchi17:07:51

(ecosystem come jvm, pkg manager, sono cose molto importanti, che x me uno se ne rende conto se fa codice in prod e deve mantenere cose)

dmaiocchi17:07:29

se fai lavoro in universita o magari in aziende piccole poco eterogenee, ma su linux e python potrei scrivere una favola horror

dmaiocchi17:07:55

x una tool di ricerca una codice 100 line per una poc va bene python anche se sinceramente io non lo userei lo stesso. Se facessi ricerca userei forse haskell

dmaiocchi17:07:12

in clojure, se dovessi proporre una nuova app per un sistema non mi farei troppi problem sul punto di vista del ecosystem

reborg19:07:29

Lavoro sulle performance. Idee? Senza passare al lato oscuro se possibile.

(defn powerset [coll]
  (let [bits (Math/pow 2 (count coll))] 
    (for [i (range bits)]
      (for [j (range i)
            :while (< j cnt)
            :when (bit-test i j)]
        (nth coll j)))))
(powerset [1 2 3])
;; (() (1) (2) (1 2) (3) (1 3) (2 3) (1 2 3))

helios19:07:55

lato oscuro = no roba volatile? 😛

reborg19:07:08

mah, sto comunque riformulando volatile per vedere se non e’ troppo orribile 😄

dmaiocchi21:07:36

E gia oscura senza il lato oscuro per me @reborg