Newsgroup: it.comp.programmare
Titolo: per sviluppo applicazione su intranet.

Salve.
Non sono un esperto programmatore ma ho intenzione di sviluppare
un'applicazione anche abbastanza complessa da dare come servizio agli utenti
della mia azienda e nel contempo approfittare di cio' per imparare
nuove tecnologie.
Si tratta di una gestione del personale dell'azienda, gestione presenze, ecc.
da utilizzare all'interno della intranet.
Come unica interfaccia gli utenti userebbero il browser.
Come tecnologie e come linguaggi cosa mi consigliate?
Php? Java? Ruby?
La piattaforma di sviluppo e' linux con debian woody.
Grazie.

 La piattaforma di sviluppo e' linux con debian woody.
Ottima piattaforma, ma se puoi sviluppare in modo portatile, anche se
oggi non ti serve subito, un domani potrebbe tornarti comodo (se mai
devi migrare a un altro Linux, o OpenBSD, o chissa`).  In altri termini,
ti suggerisco come strategia generale di usare caratteristiche specifiche
del dato sistema solo se cosi` ne trai un beneficio davvero enorme, se
no, resta portatile, e un giorno potresti esserne felice.
Alex

Cavolo quante informazioni, grazie veramente tanto sei stato gentile!
Mi informero' subito su python che tra l'altro sulla mia macchina con
linux ho gia' installato. 

 linux ho gia' installato.
Attento alla versione: mi pare che quello preistallato su debian woody
fosse ancora il vecchio 1.5.2 (perche` per un certo tempo ci sono stati
dibattiti se la versione successiva della licenza Python fosse o meno
compatibile con GPL; i dibattiti sono stati ora risolti cambiando un paio
di virgole o giu` di li` e oggi non ci sono piu` problemi).
Ci sono state parecchie migliorie nelle versioni recenti, e personalmente
suggerisco l'ultima, la 2.2.  Vedi 
www.python.org
.  Personalmente, i
programmi che uso piu` spesso io li istallo dai sorgenti (Python, vim, ...);
credo che ci siano anche .DEB di Python recenti, ma non so se vanno
bene con woody.
Per una "introduzione-lampo" a Python in Italiano, prova:
http://www.aleax.it/Python/ItaPythInst.htm
 .
Alex

 Php? Java? Ruby?
Piu` che Python, che qualcuno ti ha gia` indicato, io ti consiglio Perl. Si 
tratta di un linguaggio con il quale puoi fare tutto quanto detto da Alex 
Martelli nel suo messaggio, ed inoltre puoi contare su una liberia di 
moduli e di estensioni senza rivali (il CPAN, 
http://search.cpan.org
).
La maggiore diffusione del Perl (all'estero, purtroppo in Italia la scena 
e` ben diversa) ti permette inoltre di contare sul supporto di una 
community grandissima, che si espirime su forum, newsgroup, e soprattutto 
gruppi Perl Mongers (vedi 
http://www.perlmongers.it
 o 
http://www.pm.org
).
A mio avviso inoltre il Perl e` un linguaggio molto piu` divertente: dove 
il Python ti impone "rigore e disciplina", Perl significa liberta` e 
fantasia. Ovviamente e` una questione di gusti personali, ma prova anche il 
Perl e poi decidi. ;-)
Per quanto riguarda il web server, se usi Debian GNU/Linux (come me), 
sicuramente scegli Apache ed eventualmente mod_perl nel caso l'interfaccia 
CGI si dimostrasse insufficiente per le tue esigenze. A livello di database 
hai la scelta tra due prodotti open source: mySQL (velocissimo ma con 
feature limitate, almeno al momento) o pgSQL (meno efficiente, pero` 
supporta tutto). Entrambi si possono semplicemente interfacciare a Perl.
A presto, Michele.

fantasia.
De gustibus...
Python ti permette di leggere con semplicità il codice scritto da
altri (o il tuo dopo anni), Perl non fa niente per aiutarti :-)
Con questo non voglio però assolutamente aprire in flame.
Comunque orami anche per Python ci sono un'infinità di moduli.
Per curiosità, hai provato Python? In cosa ti senti limitato in modo
tale da non poter rinunciare a Perl?
-- 
Marco Barisione (ICQ 84277092)

 Perl e poi decidi. ;-)
Senza dubbio fra i "valori intrinseci" del Perl c'e` l'obbiettivo che
ogni dato compito possa essere svolto in tanti, tantissimi modi diversi
e disparati.  Al contrario, l'obbiettivo in Python e` che, per ogni dato
compito, ci sia UN modo ovvio, e idealmente uno solo, di svolgerlo.  Che
questo significhi "rigore e disciplina", invece, e` (con tutto il rispetto)
un'assoluta idiozia.  Non stiamo mica parlando di linguaggi rigidi,
come Eiffel o Ada, bensi` comunque di linguaggi dinamici e flessibili,
con aspetti interpretativi.
Prendiamo ad esempio il "JAPH" (sigla di "Just another Perl hacker,"),
cioe` il compito, appunto, di scrivere questa semplice scritta.  A
http://www.cise.ufl.edu/perl/japhs.txt
 trovi un'eccellente collezione
di un centinaio delle soluzioni che i tipici Perlisti hanno escogitato
per "svolgere questo compito", e puoi usare per calibrare i tuoi
"gusti personali" rispetto alla "cultura" del linguaggio stesso.
Non che in Python tu non POSSA accedere a potenza sostanzialmente
equivalente.  Prendiamo ad esempio il JAPH proprio in mezzo all'elenco,
dovuto come tanti altri all'ottimo Randal Schwarts, autore di libri
best-seller su Perl ecc ecc:
@p=split(//,",rekcah lreP rehtona tsuJ");p:print pop(p);goto p if @p;
Una traduzione abbastanza fedele (_non_ identica) in Python potrebbe
essere ad esempio:
p = list(",rekcah lreP rehtona tsuJ")
while p: print p.pop(),
Il punto non e` che *non si POSSA* fare; e` che nessun Pythonista,
"culturalmente" parlando, e` particolarmente interessato a programmare
per far vedere quanto e` furbo e scafato.  Piu` tipicamente, il
Pythonista e` interessato a svolgere un compito, usando il "modo
ovvio" di svolgere ogni suo sotto-compito.  Semplicita`, chiarezza,
efficacia.  I "cannoni" si usano (se mai) per affondare eventuali
corazzate nemiche, non per scacciare le mosche.  Nessun Pythonista
"ben acculturato" affronterebbe il "compito JAPH" altro che con:
    print "Just another Perl hacker,"
E` "rigore e disciplina"?  O non, piuttosto, semplice e ovvio
buonsenso?  Al lettore il giudizio.  Tieni presente, o lettore,
che un giorno vorrai LEGGERE del codice scritto nel linguaggio
che ora scegli.  Si e` detto ad esempio delle ricche biblioteche
di moduli, estensioni, esempi, ... presenti per ciascuno dei
linguaggi qui discussi.  Non solo, ma un programma riuscito
richiede manutenzione: leggere il TUO codice di sei mesi fa puo`
essere una faticata sei lo hai fatto "in modo furbo e scafato"
per puro amore di "liberta` e fantasia", mentre e` piacevole e
per nulla faticoso se hai scelto la semplicita` e la chiarezza.
Questione di gusti, certo.  Ma personalmente, non spenderei qualche
mese ad impadronirmi abbastanza di Perl per valutare a buon
giudizio se tutta quella furbizia e sottigliezza valgono la
candela; se mai, supponendomi un principiante di programmazione
con abbastanza tempo da investire, sceglierei linguaggi comunque
_semplici_ ma basati su principi diversi -- che so, Eiffel per il
rigore a tutti i costi, Haskell per il rigore matematico ancora
maggiore e ben giustificato, e Python per la pragmaticita` che
punta sulla produttivita` del programmatore attraverso flessibilita`
e chiarezza sia notazionale sia semantica.  Anche se dopo questo
studio si finisse per usare sempre uno solo dei tre linguaggi per
ogni effettivo compito pratico (e cio` mi pare probabile), si
avrebbe in questo caso un utile effetto culturale di ampiamento
delle proprie vedute.  Non credo che sia un caso che il medio
frequentatore di comp.lang.python tende a conoscere assai bene
vari linguaggi di programmazione (anche se poi in pratica usa
quasi solo Python): Python ti rende cosi` produttivo nello svolgere
gli effettivi compiti della programmazione, che ti resta il tempo
da investire, se vuoi, in ulteriori arricchimenti culturali...:-).
Alex

 tale da non poter rinunciare a Perl?
Ho usato Python per diversi mesi, ma alla fine sono tornato al Perl. 
Difficilmente riesco a fare a meno della grande sintesi che ti permette, 
della presenza di piu` moduli tra cui scegliere per fare le stesse 
operazioni, e della possibilita` di formattarmi il codice come voglio io. E 
non mi riferisco solo alle spaziature.
Michele.

     print "Just another Perl hacker,"
E questa e` la differenza che vedo anch'io tra un programmatore Python ed 
uno Perl. Il primo cerca il metodo piu` semplice ed immediato di fare le 
cose, il secondo vede ogni problema come una sfida, e cerca di aggirare 
l'ostacolo in piu` di un modo: puo` passarci in parte, sfondarlo, passarci 
sopra o sotto, ... Insomma, ci sono vari modi per affrontare un problema, 
ed il programmatore Perl ne va in cerca. Per lui programmare non e` solo 
risolvere il problema, ma anche studiare una soluzione tutta sua per farlo.
E` semplicemente un modo diverso di porsi dinanzi alla programmazione e, 
forse ma qui e` difficile generalizzare, alla vita in generale. Ma 
rimaniamo sulla programmazione va, meglio non calpestare il campo minato 
per troppo tempo. ;) Secondo me, e leggendo quello che scrivi anche secondo 
te, per un Pythonista programmare e` pragmaticita`, risolvere determinati 
problemi scrivendo codice proprio; per un Perlista e` tutto questo ed in 
piu` e` divertimento, sfida, gioco. 
Sulla leggibilita` del codice ho gia` risposto a Marco Barisione, vedi 
messaggio relativo.
Ah, se cercavi uno che da Python e` tornato a Perl... eccomi qua!!!
A presto, Michele.

 piu` e` divertimento, sfida, gioco.
Vedi, quello "scrivendo codice proprio" secondo me dimostra ancora una
scarsa comprensione.  Non e` questione di PROPRIETA` del codice, anzi.
Se un problema e` gia` risolto alla perfezione da "codice non mio",
*tanto meglio*: perche` reinventare la ruota?  Riuso piu` che volentieri
il codice esistente, in questo caso.
E non mi aspetterei (in teoria) di meno da nessuno che abbia delle
pretese di professionalita` (anche se in pratica so bene che "prime
donne" s'incontrino nella programmazione, quali orrende sindromi del
"ma questo non l'ho inventato IO!", e via piangendo).
Non preoccuparti, che il divertimento e la sfida arrivano da se`: ci
sono abbastanza difficolta` VERE da superare nella programmazione,
per arrivare a risultati davvero buoni, da non sentire minimamente il
bisogno di inventarsene delle altre "artificiali".  Il "grande gioco"
e` capire (idealmente _assieme_ al cliente) esattamente cosa gli
serve davvero, analizzando con lui i suoi problemi; progettare la
struttura mirata ma flessibile che fa proprio al caso suo, cogliendo
le opportunita` di _riusare_ l'ottimo codice ben sviluppato e testato
che si puo` reperire in rete e nelle librerie, ben lungi dal voler
fare tutto con "codice proprio"; sviluppare le batterie di test che
ci daranno la fiducia che quello che stiamo sviluppando e` davvero
quello che risolve i problemi del cliente; implementare l'analisi
secondo il progetto, soddisfacendo via via i test; sapere tornare
sempre indietro da un passo all'altro, man mano che il problema si
rivela, sempre meno celato, in un appassionante "strip tease", alla
nostra percezione imperfetta ma perfettibile.
A fronte di questi giochi grandi ed entusiasmanti, impallidisce
presto il "giochetto" dell'ego e della sua esaltazione, a mio parere.
Che buffo, sospettare di "mancanza del senso dei gioco" i praticanti
di un linguaggio il cui stesso NOME si rifa a... Monty Python...!
Alex

 presto il "giochetto" dell'ego e della sua esaltazione, a mio parere.
A proposito di questo, mi sembra che chi da piu` sfoggio del suo Ego sia in 
questo caso il programmatore Python. Sei tu a citarmi Marino e qualche 
altro autore e a sottolineare che il tuo codice viene presentato alla:
"10a conferenza internazionale di Python"
Io me ne sto qui nel mio angolino. ;-)
Inoltre, dai nostri messaggi si nota un'altra differenza tra un 
programmatore Python ed uno Perl, e cioe' la sintesi. Tu usi 250 righe per 
dirmi quattro cose, io ne uso meno della meta` per lo stesso compito. 
Certo, tu esponi meglio e con linguaggio piu` forbito; io invece sono piu` 
disordinato e commetto qualche errore grammaticale. Tu sei un ordinato e 
rigoroso programmatore Python, io sono semplicemente un Perlman. ;-)
Michele.

 rigoroso programmatore Python, io sono semplicemente un Perlman. ;-)
Ti ringrazio, ma ordinato e rigoroso non sono certo miei punti di forza.
"Forbito" (preciso, a differenza di quel discorso di "farlo proprio ma non
perche` sia mio" che a mio vedere tu sei ancora ben lunghi dal rendere
chiaro) e magari chiaro, lo spero -- e anche completo (mi pare onestamente
di avere portato assai piu` contenuto, a parte le questioni di forma, di 
quanto non ne abbia portato tu al dibattito).
Che questo si possa generalizzare a un caso di "Python e Perl"... non
farmi ridere.  Hai mai letto come scrivono, che so, L. Wall e /F Lundh?!
Alex

 a me tocca scrivere "Python *in a Nutshell*"...!-).
Lo leggero` volentieri quando esce, ma devo confessarti che sono in parte 
spaventato. Visto che sei riuscito ad impiegare ben 320 righe per scrivere 
le cazzate a cui sto rispondendo con altre cazzate (e mi meraviglio anche 
di me stesso, spero di trovare la forza di non rispondere al prossimo 
messaggio ;-)), il libro sara` lungo almeno 6000 pagine.
        A presto, Michele.

 messaggio ;-)), il libro sara` lungo almeno 6000 pagine.
Vedo che, o non hai letto, oppure non hai capito, o fingi di non
aver capito: a prezzo di sforzi mostruosi, posso raggiungere (con
l'aiuto di un buon editor, ma quelli, O'Reilly li ha:-) anche la
concisione, senza perdere in completezza e in chiarezza.  Ma non
sudo certo il mio sangue (e senza un editor...:-) per raggiungere
la concisione nei post, neppure quelli importanti, figurati
piccole flamewar da fornellino di cucina come questa; se ho la
completezza e la chiarezza, sono gia` ben soddisfatto:-).
Alex

 messaggio ;-)), il libro sara` lungo almeno 6000 pagine.
ti devo deludere: malgrado "dia molto" come al solito, pare sia stato
assai sintetico (non so come abbiano fatto, devono avergli fatto bere
qualche pozione magica ;))
--
saluti
f.riccardo

 qualche pozione magica ;))
;-)
Michele.

allontanandosi dal punto centrale della discussione. ;)
Che strano, li chiamano "gruppi di discussioni" e non appena
si discute, ci si trasforma in "flamewarriors" :)
"Usenet is a strange place" [Dennis Ritchie]
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)

 piu` fondamentali (connessione a web, database, interfacce grafiche).
[...]
... quante pagine ha il libro citato sopra?
Grazie a tutti
Ciao Roberto



 ... quante pagine ha il libro citato sopra?
720.  Vedi anche l'indice (oltre ad altri dettagli) a:
http://www.pearsonptg.com/book_detail/0,3771,0735710902,00.html
Alex