[Python] 2 neo pythonisti che affrontano un orda barbara di javisti - con quasi-rissa finale
Cesco
dev a cesco.it
Ven 1 Apr 2011 09:07:09 CEST
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.
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.
Sarà vero quello che dite voi, che Python insegna a responsabilizzarsi, sarà vero quello che scrive Marco Beri che Python è un linguaggio fortemente tipizzato, però... vi spiego il mio malumore con un esempio
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;
}
e se Caio ci prova soltanto a scrivere:
System.out.println(gigetto("Ajeje", "Brazorv"))
Java s'incavola chiedendogli cosa diavolo vuole fare:
"method gigetto in class X cannot be applied to given types
required: int, int
found: java.lang.String, java.lang.String"
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 ?
Maggiori informazioni sulla lista
Python