Newsgroup: it.comp.www.php
Titolo: [OT] Python, Java e PHP

Salve,
 
sono tre cose differenti e soprattutto l'argomento potrebbe essere o 
forse lo è molto [OT] però a parte comp.lang.python in inglese non ho 
trovato altri luoghi dove poter parlare dei tre!
 
Python mi è stato dipinto come una soluzione addirittura migliore di 
Java che permette ad esempio di programmare per Arduino o in generale 
per quelle macchine che in azienda si occupano di automazione, 
programmare per il web e creare software "standalone", creare app per 
smarphone oltre al poter dialogare con tutti i database presenti sul 
mercato!
 
Non avendo conoscenza in materia mi son dovuto sorbire tutti i pro senza 
riuscire a descriverne i contro quindi se qualcuno di voi riuscisse a 
darmi qualche ragguaglio tra i tre ovvero tra l'intraprendere una delle 
tre strade in termini di studio!
 
Saluti.
^Bart

 tre strade in termini di studio!
 
Premesso che sono tutti e tre linguaggi procedurali/OOP con elementi di
programmazione funzionale, e che 2 su 3 hanno sintassi C-like (PHP e
Java) mentre il terzo (Python) è abbastanza simile anche se non uguale,
direi che imparare le basi di uno dei tre darebbe comunque buone basi
anche per gli altri due.
 
Il dubbio può venire quando si iniziano a fare cose più complicate, ma a
quel punto quello che interessa davvero è l'ecosistema intorno.
 
PHP è estremamente orientato al web, e, secondo me, ancora il linguaggio
migliore nel 90% dei casi per fare siti web e API, per via proprio
dell'ecosistema. Ci sono librerie, framework e componenti per
praticamente tutto, con una buona storia di test e debug che li rendono
anche (in generale) molto solidi.
 
Python, dopo anni di "non so esattamente a cosa servo" e dopo aver
portato allo spawn di Ruby+Rails per fare web (perché Python era pessimo
per il compito) ha trovato la sua dimensione in campo matematico prima e
in generale scientifico poi. Tutti i migliori tool di machine learning
si basano su python e danno python come scontato per partire. Da lì ha
iniziato a conquistare altri campi, tipo il web ("hey, ho fatto un tool
di ML in python, come lo espongo su Internet?" ed ecco che la gente
inizia a usarlo per fare siti web.
 
Ora Ruby sta lentamente morendo per "colpa" di Go, Elixir, Js e anche un
po' PHP e Python, e Python si sta lentamente riprendendo quote di
mercato che aveva perso.
 
Java è stato spinto fin dall'inizio per le grosse app enterprise. Prima
come standalone, poi cercando di conquistare il web. Sul web ha fallito
miseramente (tranne appunto in grosse aziende che venivano "spinte" da
Sun prima e da Oracle poi) e personalmente preferisco diventare
contadino che aver ancora a che fare con roba tipo Tomcat o JBoss.
 
Ma nel frattempo ha accumulato un certo numero di librerie utili in
ambito enterprise e, grazie anche ad alcuni dialetti, si è guadagnato un
posto nel campo dei DB e in generale dello storage (Hadoop,
Elasticsearch, Kafka sono in Java) e nelle infrastrutture di rete.
 
Parlandi di dialetti, sono stati la sua fortuna e saranno presto la sua
"rovina". Scala e Groovy prima e Kotlin adesso stanno praticamente
massacrando il mercato di Java (non della JVM, solo del linguaggio)
perché sono più semplici, più flessibili e in generale migliori in
alcuni campi: Scala per FP e calcolo scientifico, Kotlin su Android,
Groovy per automazione e simili.
 
Anche la predominanza nel campo dei tool di rete sta cedendo quote a Go,
che è più flessibile, leggero e veloce (vedi Docker, Kubernetes e
compagnia) anche se ancora grezzo, e il campo dei DB verrà (secondo me)
presto intaccato da Go e Rust (che prenderanno anche un po' di mercato
da C e C++) man mano che l'ecosistema diventerà più vario e stabile.
 
A tutti i linguaggi che ho nominato dovresti aggiungere Javascript,
Swift e Erlang per avere un quadro completo di cosa potresti voler
studiare. :D
 
Il mio consiglio è di scegliere esattamente in quale "mercato" vuoi
entrare e scegliere il linguaggio basandoti su quello.
 
Ma soprattutto di non smettere di imparare quando ne hai imparato uno.
 
Se non conosci nessun linguaggio, focalizzati per un paio d'anni su uno,
ma poi prenditi come obiettivo di impararne almeno uno nuovo ogni anno.
 
Bye.

tre strade in termini di studio!
 
Non c'è una soluzione migliore per tutti. Cos'è che devi fare, quanto tempo ti
ritrovi, quali i progetti, e che formazione hai?
 
Leonardo
-- 
 
"You all presumably know why" :-) :-(

 Bye.
 
Saluti!
^Bart
 

 Leonardo
 
Saluti.
^Bart
 

database centrale (te l'ho fatta semplice ma dovresti aver capito!)
 
Sì. In effetti se hai macchine tipo CNC ecc. - a meno di andare su prodotti di
fascia molto alta - azzardo che Python sia la scelta migliore rispetto a PHP o
Java.
 
Almeno finché non ti trovi una macchina che ha solo supporto per Python 3 e la
sua vicina ha solo il software in Python 2.7, e a quel punto le cose diventano
interessanti :-)
 
Per applicazioni prevalentemente web, sono abbastanza fiducioso nel PHP.


 Leonardo
 
Saluti!
^Bart

i linguaggi, se sei tu a decidere ne tieni una dappertutto!
 
Eeeeh. All'inizio pare facile. Poi viene fuori che la libreria taldeitali
funziona solo con Python 3, l'altro aggeggio vuole Python 2.7, ma l'unico
pacchetto disponibile va a cercare non so bene cosa in /opt, mentre tu ce
l'hai in /usr/lib/soassai...


 Leonardo
 
Saluti.
^Bart
 

 il suo punto debole?
 
Il suo punto debole è stato rompere la compatibilità tra versione 2 e 3. 
Questo ha frammentato l'ecosistema talmente tanto che alla fin fine sono 
due linguaggi diversi, anche se la sintassi è simile.
 
La sua fortuna è che i matematici e gli scienziati l'hanno adottato e 
subito dopo è esploso il machine learning, altrimenti sarebbe morto 3-4 
anni fa. :P
 
Bye.

 Bye.
 
Saluti!
^Bart

 me è ancora molto nebuloso! :D
 
Non so niente di CNC. :D
 
Machine learning è praticamente dare in pasto a un programma una certa 
mole di dati, dare delle indicazioni al software (tipo: "questo è A, 
quello è B") e poi chiedergli di identificare da solo nuovi dati 
basandosi su quello che conosce ("cosa è quest'altro, A o B?")
 
Tipo: gli dai 1000 foto di cani, 1000 foto di gatti e poi gli passi foto 
di elefanti e gli chiedi se sono cani o gatti. :P
 
Questo in soldoni, poi ci sono varie branche (tipo "questa è la 
scacchiera, queste sono le regole degli scacchi, queste sono le 
condizioni di vittoria, calcola tutti i modi per vincere questa 
partita", oppure "guarda tutti questi dati, cerca un pattern", ecc. ecc.)
 
Bye.

Azz... sei un "pentito" di Python?! Lol! :D
 
No, io non mi pento di niente :-D
 
Python è pratico, veloce, comodissimo.
 
Se solo fosse sviluppato un po' più "à la Apple", che ho visto cose che quasi
mi han fatto rimpiangere il "DLL Hell" di mamma Microsoft.
