> Posso dire nel mio piccolo la mia su Python vs Java ? Non ho grandi > esperienze in nessuno dei due linguaggi, però vengo dal mondo ovattato di > Visual Studio e come programmatore sono stato viziato e cresciuto nella > bambagia.
Ah questi mollaccioni :) VS e', lo ammetto, un bell'IDE. Se togliamo pero' la parte di design grafico delle form direi che WingIDE (ad esempio) nulla abbia da invidiare, anzi. > Dopo aver provato per poche settimane entrambi i linguaggi a pelle mi sta più > simpatico Python di Java, però a volte ha degli atteggiamenti che mi stanno > un po sulle balle. It' the Guido's way :) > Ci sono due programmatori Python, Tizio e Caio. > Un giorno Tizio, che è un programmatore sciatto che non inserisce nemmeno una > riga di docstrings, scrive: > > def gigetto(a, b): > return a + b > > Il giorno dopo arriva Caio, legge il codice e si domanda cosa fa gigetto. > Somma due numeri? Concatena due stringhe? Si perchè quando Caio prova a > passare diversi parametri ottiene risultati diversi > > print(somma(4, 3)) # Restituisce il numero 7 > print(somma("Ajeje", "Brazorv")) # Restituisce "AjejeBrazorv" > > Vero che Tizio avrebbe potuto scrivere due righe di codice in più per > verificare i tipi dei parametri passati a gigetto, però è altrettanto vero > che in java un problema non si sarebbe posto, perchè tizio avrebbe > probabilmente scritto: > > public int gigetto(int a, int b) { > return a + b; > } In python il secondo programmatore, democraticamente, picchia il primo. Il primo inizia a mettere la docstring. Problema risolto in maniera semplice ed efficiente :) > e se Caio ci prova soltanto a scrivere: > System.out.println(gigetto("Ajeje", "Brazorv")) > Java s'incavola chiedendogli cosa diavolo vuole fare: Lessi un tempo (tanto tempo fa, visto che era un libro sul C++ Builder di Borland) un esempio calzante. Paragone tra Pascal e C. Nel primo sei costretto a fare le cose in maniera pulita ed ordinata pena la non compilazione del codice. Non puoi fare porcate o prendere scorciatoie pericolose. Il secondo ti lascia libero di fare le peggio cose, e se hai un bug poi sono tutti c....i tuoi. Ma potendo scegliere scegli un linguaggio (C) dinamico e agiloe oppure uno (pascal) bolso e rigido? Come sempre la risposta e': dipende da chi sei, da come ti piace lavorare, da cosa devi fare, etc. Io preferisco l'agilita' di Python. Fare refacttoring in ython e' per me 100 volte piu' semplice che in Java. Cosi' come farl;o in Java (o C#) e 100 volte piu' facile che farlo in C++. Poo de gustibus. > Io difatti per risolvere il problema alla radice in python scrivo: > > def gigetto(a, b): > assert isinstance(a, int) > assert isinstance(b, int) > return a + b > e questo mi aiuta ad ottenere un comportamento simile a quello di Java. > Sono io che sbaglio qualcosa o è normale e ci devo fare l'abitudine ? Formallmente corretto, personalmente forse cercherei una strada diversa. A naso gia' eseguire il controllo (soo uno ) sul valore da tornare ad esempio, se proprio devo. C'e' da dire che probabilmente il nome della function o method sarebbe parlante (tipo sommaInteri( a, b ): ) e non gigetto. Carlos -- Se resiste al "-9" sinceramente non so come ammazzarlo. (Andrea Baron) _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python