[Python] sviluppare applicazioni android tramite python

enrico franchi enrico.franchi a gmail.com
Gio 29 Dic 2011 00:25:38 CET


2011/12/28 Carlos Catucci <carlos.catucci a gmail.com>

> Carlos ma che due balle con sta storia che Python è meglio a
>
>>  prescindere e tutto il resto è merda,
>>
>>
>> Questo effettivamente e' poco motivato.
>>
>
> Il problema reale e' che Python e' un linguaggio che mi sembra essere nato
> prendendo solo il meglio degli altri.
>

Diciamo che è stato ben pensato. Purtroppo tante cose carine non possono
entrarci e va bene cosi'.


>  A volte, sopratutto all'inizio, mi sembravano assurde alcune scelte (non
> avere switch/select/case per dirne una), poi lavorandoci mi sono dovuto
> ricredere. Tutto e' fatto secondo logica. Altri linguaggi non hanno questa
> caratteristica.
>

E'... ma quale e' la logica di *non* avere uno switch statement?
Sinceramente non lo so.
Personalmente non ne sento il bisogno, ma non e' completamente chiaro
perche' non ci sia.

Ci sono casi in cui sento profondamente che un dizionario e' la cosa giusta
da usare. Casi in cui e' un pochetto meglio una classe (a me per dire un
dizionario infarcito di lambda non piace mica tanto).

Ma non e' che direi che Python sarebbe "peggiore" se avesse uno switch.


> Parliamodi Java, per fare un esempio. No, ereditarieta' multipla no,
>

 Pensa, io trovo molto sensata la mancanza di ereditarietà multipla. Primo,
per averla ad minchiam come in C++ e' meglio non averla.
Secondo credo che in ~8-9 anni di Python l'ho usata per la prima volta 2
mesi fa. Principalmente perchè per pigrizia mentale ho copiato il design
precedente di una vecchia incarnazione e non mi sono deciso a fare con
strategy quello che facevo con template method.

In generale ereditarieta' di interfaccia (multipla) non mi da problemi e mi
serve. Ovviamente se sono statico. In Python in un certo senso non serve in
un altro e' automatica. L'ereditarieta' di implementazione la posso avere
facilmente con delegazione.

Poi io sono decisamente sul lato "deleghiamo".

Confcordo hai espresso meglio di me il concetto. Anche perche' spesso gli
> studi sono influenzati dalle idee di chi li esegue. Se lo facessi io
> probabilmente salterebbe fuori che Python e' il migliore in assoluto. Alla
> fin fine si prendono iun esame sempre le cose che piu' si adattano ai
> nostri modi di vedere le cose.
>

Non e' detto che siano influenzati dalle /idee/ di chi li esegue.
Scientificamente parlando e' un po' come affermare la malafede.
No, credo che siano facilmente influenzabili da semplici condizioni al
contorno difficili da valutare. Qualunque sia il risultato.
Per quello mi interessava vedere gli studi.


2. Io ho sempre considerato le IDE come una cosa che piu' che altro tappa i
>> buchi di linguaggi con caratteristiche abbastanza peculiari. Linguaggi
>> molto verbosi, con informazione ripetuta (pensa a Java e al fatto che un
>> file deve riportare all'interno del file il path e che deve anche essere
>> esattamente in quella posizione relativa.. e' il tipo di cose che un umano
>> deve fare "due volte" per fare quasi la stessa cosa).
>>
>
> Un buon IDE e' una cosa utile. Pero' se SENZA non riesci a fare una cippa
> (.NET ad esempio, voglio vederti a scrivere cose senza IDE sotto) allora il
> linguaggio ha qualcosa che non va.
>

Ma no... non e' che "ha qualcosa che non va". E' semplicemente concepito
diversamente. Smalltalk, giocaci senza IDE. E sinceramente, al di la che
non mi piace la sintassi, non mi sembra abbia molto che non va. E' un caso
estremo: e' un linguaggio che essenzialmente non e' file-based e di
conseguenza un semplice editor non ce la potrebbe proprio fare.

Certo, il fatto che un linguaggio richieda tools molto sofisticati può
essere un indice di un qualche problema. Per esempio del semplice fatto che
e' verboso. E' una cosa che in genere mi scrota, ma a volte amen.

Oppure trovo gli IDE molto sensati anche quando lavorano bene con il
>> framework in questione (e.g., Python + Django e' molto comodo con un IDE).
>>
>
> Quale? Io uso un semplice editor (Sublime Text2) pero' se devo gestire un
> PROGETTONE passo a Wing Ide.
>

Ho mollato wing per PyCharm. Dovrebbero essere grosso modo equivalenti.
Diciamo che usando gia' IntelliJ la cosa per me ha molto senso. E in
aggiunta, come dire... GTK su mac os non e' esattamente un fiore. Più
PyCharm ragiona con pypy... su cui piano piano mi voglio spostare.

Come editor dopo tanti esperimenti mi sto adagiando su vim.


>
>
>> Come sai non conosco .Net. Conosco abbastanza bene Java, pero'.
>>
>
> Diciamo che C# e' quello che Java avrebbe potuto essere. Ma non ce l'ha
> fatta.
>

Ammetto candidamente di non conoscere C#. So che ha un sacco di cose che
Java non ha e che sarebbe bene che avesse. Forse alcune delle più critiche
le aggiungeranno con la 8, dopo tipo 20 anni di esistenza. Ma vabbe'.

Fatto sta che ormai Java lo conosco bene, so come muovermici intorno e mi
e' piuttosto comodo.

A direil vero anche solo smazzare uelal roba basterebe a farmelo
> prediligere. Quando devo srotolare ua srie di liste e dizionari (in quei
> casi array e hashtables) uno dentro l'altro con altri linguaggi c'e' da
> divenare di gomma.
>

Non so su C#... ma su Java non e' particolarmente scomodo. E' scomodo
principalmente in C++ (veramente una cifra) o in C.
La rottura di palle (in Java) e' che manca una sintassi fancy per
costruirli, ma amen.

Oggettivamente a seconda del codice che scrivi puö facilmente capitarti
molto poco di lavorare a quel livello di astrazione.

A me capita spesso.


> 3. Nonostante tutto sono d'accordo, ma in un senso diverso. Ovvero oltre
>> un certo livello di complessità la complessità inerente del linguaggio
>> probabilmente diventa trascurabile rispetto quella del progetto. Linguaggi
>> maturi come Java hanno una serie di librerie che aiutano, ma spesso sono
>> abbastanza complicate e la loro complessità finirebbe per dominare la
>> complessita' di un progetto medio. Viceversa su un progetto molto complesso
>> si ripagano.
>>
>
> Le libreire di linguaggi complessi sono complesse. E rendono complessi
> ancora di piu' i progetti.
>

Si e no. Nel senso che ci sono librerie che sono complesse "il giusto". Sul
progetto piccolo non le paghi, su quello grosso non le senti realmente.



>
>
>> Assolutamente. Ognuno fa le sue scelte. Pero' non necessariamente sono
>> scelte ottime.
>> Pero' non metterei la cosa in hobby vs. azienda (sotto-intendendo che la
>> logica aziendale sia migliore [0]).
>> Semplicemente uno si fa le sue scelte sulla base di motivazioni tecniche.
>>
>
> Tipo conoscere meglio (non parlo del singolo ma del team) un dato
> linguaggio rispetto ad un altro. Vero che (parlo di almeno altre 5
> esperienze oltre a quella personale, tra cui quella di Eric Raymond, e il
> fetchmail conf GUI) scrivere un qualocsa in python senza averlo mai visto
> predne pochi giorni di cui 2 o 3 al massimo per impararlo. Altri linguaggi
> questa simpatica caratteristica non la hanno.
>

Aspetta pero'. Questi sono una serie di aspetti complicatissimi. Uno,
quello che fa esr e' poco esplicativo. Probabilmente con la testa che ha
prende su K in 4 giorno invece che 2. Per il resto mi sentirei anche di
confermare la cosa. Python lo si impara facilmente in poco tempo.

Il problema e' chi sei prima di impararlo. Mi spiego: se sei un cattivo
programmatore prima di imparare Python, impari Python in 3 giorni e
continui ad essere un cattivo programmatore. Adesso scriverai cattivi
programmi in Python invece che in VB! :)

Poi sono d'accordo che da un punto di vista didattico Python faccia del
bene (ma si vede relativamente a lungo termine) e permetta un relativamente
rapido miglioramento, per chi vuole migliorare. Vuoi la community, vuoi una
serie di proprietà accessorie alla community stessa (e.g., readability
counts -> i sorgenti dei programmi scritti anche da persone molto sveglie
sono proprio leggibili e si impara un sacco). Vuoi il fatto che ti permette
di risolvere rapidamente tanti problemi che di conseguenza ti fa accumulare
rapidamente esperienza.

Pero' se hai un team ben agguerrito su Java, che sa il fatto suo in Java
non sono convinto che passando a Python diventeranno improvvisamente molto
piu' produttivi. per tutta quella serie di menate ambientali che uno impara
piano piano con il tempo.


> IMHO questo esempio non calza troppo. Cioe' se prendi un software (scritto
>> in qualunque linguaggio) e lo evolvi o molto a lungo o molto in fretta o
>> semplicemente male (che sicuramente non e' il vostro caso) tipicamente hai
>> un carrozzone che diventa sempre meno mantenibile. Non mi risulta che
>> questo tipo di cose non possano succedere con .NET.
>>
>
> Au contraire, li succedono anche piu' spesso. E non dico sia colpa del
> linguaggio. Solo che come PHP, un certo tipo di semantica, di strutture
> etc. portano a lavorare in maniera tale da favorire il casino. Non e' colpa
> del linguaggio in se, ma delle strutture mentali di chi lo usa.
>

Scusa, non sono d'accordo. Contestualizziamo. C# e' un linguaggio ad
oggetti. Mi risulta anche uno piuttosto pulito.

Se sai fare buona programmazione e design ad oggetti non sono esattamente
convinto che il programma che scrivi in C# sia "intrinsecamente" poco
mantenibile. Ci possono essere alcune feature mancanti che renderebbero lo
sviluppo piu' rapido (anche lo sviluppo di "aggiunte"), ma non vedo perche'
dovrebbe incasinarsi il design.

Se invece stiamo parlando del "Python effect" allora non aggiungo altro e
fine della storia. Ma non e' esattamente colpa di C#, e' semplicemente
colpa del fatto che di qua ci potrebbe essere un pochino di selezione a
monte.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20111229/e654c54c/attachment.html>


Maggiori informazioni sulla lista Python