View Full Version : [PYTHON] Liste
~FullSyst3m~
25-01-2008, 15:27
Sono arrivato qui http://www.python.it/doc/Easytut/easytut-it/node10.html
## Questo programma verifica la vostra conoscenza.
true = 1
false = 0
# Prima ottieni il questionario, successivamente sarà modificato
# per l'uso del file IO.
def get_questions():
# Nota come il dato viene magazzinato in una lista di liste.
return [["What color is the daytime sky on a clear day?","blue"],\
["What is the answer to life, the universe and everything?","42"],\
["What is a three letter word for mouse trap?","cat"]]
# Questo verificherà una singola domanda, restituirà vero, se l'utente
# ha scritto la risposta corretta, altrimenti restituirà falso.
def check_question(question_and_answer):
# Estrai la domanda e la risposta dalla lista.
question = question_and_answer[0]
answer = question_and_answer[1]
# Poni la domanda all'utente.
given_answer = raw_input(question)
# Confronta le risposte dell'utente con quelle del test.
if answer == given_answer:
print "Correct"
return true
else:
print "Incorrect, correct was:",answer
return false
# Questa funzione effettuerà tutte le domande.
def run_test(questions):
if len(questions) == 0:
print "No questions were given."
# Esce dalla funzione.
return
index = 0
right = 0
while index < len(questions):
# Controlla la domanda.
if check_question(questions[index]):
right = right + 1
# Vai alla prossima domanda.
index = index + 1
# Attenzione all'ordine dei conteggi, prima moltiplica, poi dividi.
print "You got ",right*100/len(questions),"% right out of",len(questions)
# Adesso esegui la funzione sulle domande.
run_test(get_questions())
La domanda dalla lista e la risposta come la estrae? Non fa nessun riferimento alla funzione get_questions..
check_questions come parametro dovrebbe avere (question_and_answer), come fa ad avere (questions [index])? Come lo fa il controllo della domanda?
run_test dovrebbe avere (questions) come parametro, come mai allora ha (get_questions()) come parametro?
Ora prendo un pò d'aria e ci ragiono di nuovo a mente serena, è dalle 2 che ci sono sopra tra studiare la guida, scrivere il codice e cercare id capirlo.. credo proprio di avere un apprendimento lento, molto lento... :muro:
Ziosilvio
25-01-2008, 15:58
raw_input(prompt) stampa a schermo la stringa prompt, e legge l'input dell'utente, immagazzinandolo in una stringa "grezza".
Nella funzione check_question, l'argomento è una lista i cui elementi sono due stringhe, quindi una coppia di stringhe.
La funzione get_questions crea una lista siffatta.
Per cui, nelle chiamate a check_question, questions-di-i (scrivo così se no scatta il corsivo) è l'i-esimo campo della lista creata da get_questions... la quale, a sua volta, è una lista di coppie di stringhe.
~FullSyst3m~
25-01-2008, 16:36
Sinceramente non c'ho capito molto e cosa significa che la funzione get_questions crea una lista siffatta?
~FullSyst3m~
25-01-2008, 22:04
Ho provato a smanettare un pò con il codice e, se non sto sparando una cretinata, credo che la funzione check_question riesce ad estrarre le domande grazie a [0] e [1] che non sono altro che gli indici di ognuna delle tre liste. E' come se questi due indici ricercano nel codice le liste e le estraggono, non vorrei sbagliarmi però.
Poi guardando meglio ho visto i due return nella funzione check_question che dovrebbe servire a terminare la funzione nel caso in cui sia vera o falsa e quindi dovrebbero ritornare 0 oppure 1, ma non mi sembra che ritornano niente. Ho solo notato che togliendoli alla fine del programma la percentuale non viene visualizzata
Ultima cosa il parametro (questions) della funzione run_test: da dove viene preso questo parametro?
Non so se sia normale o se sia la stanchezza o se sia che non ho predisposizione alla programmazione o altro, ma mi sembra che sono molto lento nell'apprendere anche se è da poco che ho iniziato a studiare Python. Ho perso un giorno solo su questo esempio e ancora devo capire tutto il codice nel suo insieme e fare l'esercizio successivo... adesso vado a letto che sono stanchissimo e domani sveglia alle 6. Notte a tutti
wingman87
25-01-2008, 22:54
Allora, tento di spiegarti come funziona questo programma, però non posso andare troppo nel tecnico perché non conosco python.
Prima di tutto hai definito 3 funzioni, vediamole nel dettaglio:
get_questions() Questa funzione ritorna un array un po' particolare, infatti ogni elemento dell'array è a sua volta composto da un altro array che contiene due stringhe. Questo significa che se fai una cosa del tipo:
domande_risposte=get_questions()
in domande_risposte avrai un array di array, se poi fai:
domanda_risposta=domande_risposte[0]
in domanda_risposta avrai il primo array contenuto in domande_risposte. Questo è un array semplice composto da due elementi stringa, quindi se fai:
print domanda_risposta[0], " ",domanda_risposta[1]
stamperai prima la domanda (il primo elemento dell'array) e poi la risposta (il secondo)
check_question(question_and_answer) Questa funzione ritorna true se la risposta che viene data alla domanda è corretta, false altrimenti. La domanda da fare e la relativa risposta sono passate come argomento: question_and_answer. Esso è un array come domanda_risposta, quindi ora dovresti aver capito cosa fa il codice di questa funzione.
run_test(questions) Questo è il metodo che dato un array di domande e risposte (questions, che è un array del tipo particolare che restituisce la prima funzione) genera il questionario. Fa un ciclo da 0 alla lunghezza di questions e per ogni questions[index] (che è un semplice array di due stringhe) lancia il check_question, se questa restituisce true, e cioè la risposta è stata azzeccata, viene incrementato il contatore di risposte corrette right.
Infine tutto quello che fa il programma è richiamare run_test passandogli come argomento ciò che viene restituito dalla funzione get_questions().
banryu79
26-01-2008, 00:17
Non so se sia normale o se sia la stanchezza o se sia che non ho predisposizione alla programmazione o altro, ma mi sembra che sono molto lento nell'apprendere anche se è da poco che ho iniziato a studiare Python.
Se posso darti un consiglio spassionato: appena ti vengono in mente simili pensieri demoralizzanti lasciateli immediatamente alle spalle, buttali alle ortiche.
Tieniti solo i pensieri positivi ;)
Ho perso un giorno solo su questo esempio e ancora devo capire tutto il codice nel suo insieme e fare l'esercizio successivo... adesso vado a letto che sono stanchissimo e domani sveglia alle 6. Notte a tutti
Tranquillo che di giorni spesi su "un singolo esercizio" o sulla risoluzione di un singolo problema te ne capiteranno altri: fa parte del processo, ci siamo passati tutti, programmatori non si nasce, si diventa.
Dai tempo al tempo, sei appena agli inzi.
Ciao :)
~FullSyst3m~
26-01-2008, 06:14
Allora, tento di spiegarti come funziona questo programma, però non posso andare troppo nel tecnico perché non conosco python.
Prima di tutto hai definito 3 funzioni, vediamole nel dettaglio:
get_questions() Questa funzione ritorna un array un po' particolare, infatti ogni elemento dell'array è a sua volta composto da un altro array che contiene due stringhe. Questo significa che se fai una cosa del tipo:
domande_risposte=get_questions()
in domande_risposte avrai un array di array, se poi fai:
domanda_risposta=domande_risposte[0]
in domanda_risposta avrai il primo array contenuto in domande_risposte. Questo è un array semplice composto da due elementi stringa, quindi se fai:
print domanda_risposta[0], " ",domanda_risposta[1]
stamperai prima la domanda (il primo elemento dell'array) e poi la risposta (il secondo)
check_question(question_and_answer) Questa funzione ritorna true se la risposta che viene data alla domanda è corretta, false altrimenti. La domanda da fare e la relativa risposta sono passate come argomento: question_and_answer. Esso è un array come domanda_risposta, quindi ora dovresti aver capito cosa fa il codice di questa funzione.
run_test(questions) Questo è il metodo che dato un array di domande e risposte (questions, che è un array del tipo particolare che restituisce la prima funzione) genera il questionario. Fa un ciclo da 0 alla lunghezza di questions e per ogni questions[index] (che è un semplice array di due stringhe) lancia il check_question, se questa restituisce true, e cioè la risposta è stata azzeccata, viene incrementato il contatore di risposte corrette right.
Infine tutto quello che fa il programma è richiamare run_test passandogli come argomento ciò che viene restituito dalla funzione get_questions().
La funziona get_questions avevo capito come funzionava. Le cose che non mi tornano sono che il parametro di check_questions non si riferisce non è get_questions, ma uno messo a caso eppure richiama la coppia di stringhe? Perchè? Forse perchè mettendo gli indici il programma ricerca in automatico la lista nel codice? E la funzione run_test l'avevo capita pure, non capisco solo come effettua il controllo se è vera o falsa. C'è solo un if check_questions(questions[index]) che attiva la funziona check_questions, ma non c'è un if che, ad esempio, controlla se la funzione restituisce true o false
cdimauro
26-01-2008, 06:36
La funziona get_questions avevo capito come funzionava. Le cose che non mi tornano sono che il parametro di check_questions non si riferisce non è get_questions, ma uno messo a caso eppure richiama la coppia di stringhe? Perchè? Forse perchè mettendo gli indici il programma ricerca in automatico la lista nel codice?
Considera che tutte le domande e risposte sono memorizzate in una lista. Questa lista, a sua volta, è costituita da una lista che contiene esattamente due elementi: la domanda e la risposta.
A check_question viene passata, come parametro, esattamente una lista di questo tipo, dunque costituita da due soli elementi: il primo è la domanda e il secondo è la risposta; il primo ha indice 0 (all'interno di questa lista) e il secondo ha indice 1.
E la funzione run_test l'avevo capita pure, non capisco solo come effettua il controllo se è vera o falsa. C'è solo un if check_questions(questions[index]) che attiva la funziona check_questions, ma non c'è un if che, ad esempio, controlla se la funzione restituisce true o false
Non c'è bisogno perché check_questions ritorna vero o falso a seconda del controllo che fa al suo interno. In sostanza l'if non fa altro che prendere questo valore ritornato, e nel caso in cui è vero incrementare di 1 la variabile right.
Comunque questo tutorial non mi piace: è troppo vecchio e poco "pythonic".
Ti posto lo stesso programma, ma "aggiustato" un po':
## Questo programma verifica la vostra conoscenza.
# Prima ottieni il questionario, successivamente sarà modificato
# per l'uso del file IO.
def get_questions():
# Nota come il dato viene magazzinato in una lista di liste.
return [["What color is the daytime sky on a clear day?", "blue"],
["What is the answer to life, the universe and everything?", "42"],
["What is a three letter word for mouse trap?", "cat"]]
# Questo verificherà una singola domanda, restituirà vero, se l'utente
# ha scritto la risposta corretta, altrimenti restituirà falso.
def check_question(question_and_answer):
# Estrai la domanda e la risposta dalla lista, che è costuita esattamente dai questi due elementi.
# Con l'istruzione seguente i due elementi vengono presi da question_and_answer e memorizzati rispettivamente in question e answer.
question, answer = question_and_answer
# Poni la domanda all'utente.
given_answer = raw_input(question)
# Confronta le risposte dell'utente con quelle del test.
if answer == given_answer:
print "Correct"
return True
else:
print "Incorrect, correct was:", answer
return False
# Questa funzione effettuerà tutte le domande.
def run_test(questions):
if not questions:
print "No questions were given."
# Esce dalla funzione.
return
index = right = 0
while index < len(questions):
# Controlla la domanda.
if check_question(questions[index]):
right = right + 1
# Vai alla prossima domanda.
index = index + 1
# Attenzione all'ordine dei conteggi, prima moltiplica, poi dividi.
print "You got ", right * 100 / len(questions), "% right out of", len(questions)
# Adesso esegui la funzione sulle domande.
run_test(get_questions())
Le cose che ho cambiato:
- ho rimosso le definizioni di true e false, visto che esistono già True e False in Python per indicare un valore booleano vero o falso, rispettivamente;
- rimosso il carattere \ alla fine di ogni lista, perché è inutile quando si definisce un elenco;
- ho usato l'assegnazione question, answer = question_and_answer per "spacchettare" i due elementi della lista e assegnarli immediatamente alle rispettive variabili; in questo modo non ti devi nemmeno curare degli indici della lista, perché pensa a tutto Python;
- ho usato if not questions: al posto di if len(questions) == 0: per controllare se NON ci sono elementi nella lista.
Per adesso è tutto. Non so se mi collegherò ancora più tardi, perché ho tante cose da fare ma, se dovessi avere problemi, appena possibile vedrò di darti una mano. ;)
P.S. NON ti demoralizzare! Persevera e vedrai che anche tu imparerai a programmare. NON si nasce programmatori! Lo si diventa!!! ;)
~FullSyst3m~
26-01-2008, 13:13
C'è qualcosa che mi sfugge e non capisco cosa... cioè. il parametro di chek_questions non fa nessun riferimento alla funzione get_questions e le due variabili question, answer come estraggono la domanda senza fare alcun riferimento alla lista? E' questo che non capisco (non sapevo nemmeno che si potevano scrivere due variabili nella stessa linea separati da virgola)
wingman87
26-01-2008, 14:09
Prova a simulare l'esecuzione del programma, vedrai che check_question non ha alcun bisogno di richiamare get_questions.
Per simulare devi partire dall'ultima riga di codice
~FullSyst3m~
26-01-2008, 15:37
Ed è proprio questo il punto, che non ha bisogno, e la domanda che mi pongo è perchè? La lista deve estrarla obbligatoriamente da là. L'esecuzione di un programma si guarda dal basso verso l'alto? Io sapevo che si guarda dall'alto al basso, riga per riga
wingman87
26-01-2008, 16:30
Mi sa che non hai chiaro il concetto di "funzione", prova a riguardare il capitolo a riguardo nel tutorial/guida che stai seguendo.
cdimauro
26-01-2008, 17:33
C'è qualcosa che mi sfugge e non capisco cosa... cioè. il parametro di chek_questions non fa nessun riferimento alla funzione get_questions e le due variabili question, answer come estraggono la domanda senza fare alcun riferimento alla lista? E' questo che non capisco
Ed è proprio questo il punto, che non ha bisogno, e la domanda che mi pongo è perchè? La lista deve estrarla obbligatoriamente da là. L'esecuzione di un programma si guarda dal basso verso l'alto? Io sapevo che si guarda dall'alto al basso, riga per riga
Sì, ma dall'alto in basso trovi soltanto le DEFINIZIONI delle funzioni, che "non fanno nulla" (semplicemente da questo momento in poi Python "sa" che esistono quelle funzioni con quei parametri, e possono essere richiamate).
L'unica riga di codice vero e proprio, che quindi verrà eseguita, è proprio l'ultima, come ti è stato già indicato:
run_test(get_questions())
Da questa, se cominci a seguire passo passo l'esecuzione, capisci come funziona tutto: prima viene richiamata get_questions, che ritorna la lista di liste (formate dalla coppia domanda / risposta), e questa viene "data in pasto" a run_test, e così via.
(non sapevo nemmeno che si potevano scrivere due variabili nella stessa linea separati da virgola)
Questa sintassi serve per "spacchettare" le liste (e anche le tuple, ma ne parleremo più avanti, quando conoscerai anche questo tipo di dati) "in un colpo solo".
Esempio pratico.
Lista = ['Qui', 'Quo', 'Qua']
X, Y, Z = Lista
Print X, Y, Z
stamperà a video 'Qui', 'Quo' e 'Qua' perché alle variabili X, Y e Z sono stati assegnati rispettivamente quei valori.
Python rulez. :D
~FullSyst3m~
26-01-2008, 18:26
Mi sa che non hai chiaro il concetto di "funzione", prova a riguardare il capitolo a riguardo nel tutorial/guida che stai seguendo.
Mi vergognerei di me stesso se fosse cosi, ma mi sta venendo davvero il dubbio... sta guida mi sa che mi ha rovinato... :ncomment: :ncomment:
Sì, ma dall'alto in basso trovi soltanto le DEFINIZIONI delle funzioni, che "non fanno nulla" (semplicemente da questo momento in poi Python "sa" che esistono quelle funzioni con quei parametri, e possono essere richiamate).
L'unica riga di codice vero e proprio, che quindi verrà eseguita, è proprio l'ultima, come ti è stato già indicato:
run_test(get_questions())
Da questa, se cominci a seguire passo passo l'esecuzione, capisci come funziona tutto: prima viene richiamata get_questions, che ritorna la lista di liste (formate dalla coppia domanda / risposta), e questa viene "data in pasto" a run_test, e così via.
Questa non la sapevo, ho imparato una cosa nuova. Ma quando si scrive un programma, visto che l'esecuzione si guarda dal basso verso l'alto, come si dovrebbe procedere? Al contrario (spero di non aver sparato una caz...)?
Questa sintassi serve per "spacchettare" le liste (e anche le tuple, ma ne parleremo più avanti, quando conoscerai anche questo tipo di dati) "in un colpo solo".
Esempio pratico.
Codice:
Lista = ['Qui', 'Quo', 'Qua']
X, Y, Z = Lista
Print X, Y, Z
stamperà a video 'Qui', 'Quo' e 'Qua' perché alle variabili X, Y e Z sono stati assegnati rispettivamente quei valori.
Python rulez.
Ora è tutto chiaro (anche se lo avevo capito da prima questa cosa, ma volevo avere la certezza) ed è proprio per questo che mi chiedo: se question = question_and_answer[0] e answer = question_and_answer[1] (oppure question, answer = question_and_answer come hai scritto tu) a question_and_answer chi gli assegna la lista come valori? Cioè question_and_answer è il parametro e poteva anche esserci mezzo (tizio_e_caio) come parametro, ma chi gli assegna le liste se non c'è nessun riferimento alle liste? Dovrebbe esserci messo tipo
question, answer = get_questions E' questo che mi chiedo, ma sono sempre più convinto che sono stupido arrivato a questo punto e che sto perdendo un sacco di tempo sopra sto argomento e sopra sto codice... :muro: :muro: :muro: :muro: Che rabbia cavolo.... mi sono uno stupido davvero, un impotente (c'è viagra per aspiranti programmatori falliti in partenza?!?!)
Ora è tutto chiaro (anche se lo avevo capito da prima questa cosa, ma volevo avere la certezza) ed è proprio per questo che mi chiedo: se question = question_and_answer[0] e answer = question_and_answer[1] (oppure question, answer = question_and_answer come hai scritto tu) a question_and_answer chi gli assegna la lista come valori? Cioè question_and_answer è il parametro e poteva anche esserci mezzo (tizio_e_caio) come parametro, ma chi gli assegna le liste se non c'è nessun riferimento alle liste? Dovrebbe esserci messo tipo
question, answer = get_questions E' questo che mi chiedo, ma sono sempre più convinto che sono stupido arrivato a questo punto e che sto perdendo un sacco di tempo sopra sto argomento e sopra sto codice... :muro: :muro: :muro: :muro: Che rabbia cavolo.... mi sono uno stupido davvero, un impotente (c'è viagra per aspiranti programmatori falliti in partenza?!?!)
quello che intendeva dire cdimauro non è che il codice si legge dal basso verso l'alto, ma che tutte le volte che incontri la parola chiave "def" significa che stai definendo una funzione, ma non la stai eseguendo in quel momento. semplicemente sai che quella funzione è stata definita e potrai utilizzarla in seguito.
detto questo la prima istruzione che verrà eseguita sarà:
run_test(get_questions())
perchè non si tratta di una definizione, ma di codice che va eseguito.
questo risponde alla tua domanda, perchè se passi come parametro get_questions() significa che dentro run_test la variabile "questions" ha lo stesso valore di quello che viene restituito da get_questions(), cioè la lista di domande e risposte.
cdimauro
26-01-2008, 19:19
Mi vergognerei di me stesso se fosse cosi, ma mi sta venendo davvero il dubbio... sta guida mi sa che mi ha rovinato... :ncomment: :ncomment:
Diciamo che non è un MUST per chi inizia a programmare... :stordita:
Questa non la sapevo, ho imparato una cosa nuova. Ma quando si scrive un programma, visto che l'esecuzione si guarda dal basso verso l'alto, come si dovrebbe procedere? Al contrario (spero di non aver sparato una caz...)?
Come ti ha risposto correttamente kont3, l'esecuzione parte sempre dall'alto verso il basso. Semplicemente ci sono istruzioni che definisco delle cose (la definizione di funzioni, ad esempio) e altre che eseguono effettivamente delle azioni (la chiamata a funzione che è presente come ultima riga).
Ora è tutto chiaro (anche se lo avevo capito da prima questa cosa, ma volevo avere la certezza) ed è proprio per questo che mi chiedo: se question = question_and_answer[0] e answer = question_and_answer[1] (oppure question, answer = question_and_answer come hai scritto tu) a question_and_answer chi gli assegna la lista come valori? Cioè question_and_answer è il parametro e poteva anche esserci mezzo (tizio_e_caio) come parametro, ma chi gli assegna le liste se non c'è nessun riferimento alle liste? Dovrebbe esserci messo tipo
question, answer = get_questions
Se, come ti dissi in precedenza, ripercorri l'esecuzione passo passo, arriverai velocemente a dove vengono presi questi valori, come ti ha esposto anche kont3.
E' questo che mi chiedo, ma sono sempre più convinto che sono stupido arrivato a questo punto e che sto perdendo un sacco di tempo sopra sto argomento e sopra sto codice... :muro: :muro: :muro: :muro: Che rabbia cavolo.... mi sono uno stupido davvero, un impotente (c'è viagra per aspiranti programmatori falliti in partenza?!?!)
Sì, è il libro che t'ho consigliato prima. :p
~FullSyst3m~
27-01-2008, 11:35
Come ti ha risposto correttamente kont3, l'esecuzione parte sempre dall'alto verso il basso. Semplicemente ci sono istruzioni che definisco delle cose (la definizione di funzioni, ad esempio) e altre che eseguono effettivamente delle azioni (la chiamata a funzione che è presente come ultima riga).
Si è vero, pensavo proprio questo io ma ho scritto una cretinata, chissà dove avevo la testa
questo risponde alla tua domanda, perchè se passi come parametro get_questions() significa che dentro run_test la variabile "questions" ha lo stesso valore di quello che viene restituito da get_questions(), cioè la lista di domande e risposte.
Ora è tutto chiaro...è vero! Come ho fatto a non vederlo prima! Che stupido! Cioè a run_test viene passsato get_questions come parametro ed è da lì che prende la lista. Successivamente if check_question (questions[index]) è come se avesse (get_questions[index]) visto che questions è uguale a get_questions e controlla se la risposta dell'utente è uguale a question, che ha come valore answer_and_questions che a sua volta è uguale a question[index] che sua volta è uguale a get_questions[index] e se ritorna true aggiunge right + 1, altrimenti passa all'altra domanda... giusto oppure ho sparato una cretinata gigantesca?
cdimauro
27-01-2008, 19:57
Finalmente ci siamo. :D
~FullSyst3m~
27-01-2008, 21:21
Ma vieniiiiii........ :sofico:
~FullSyst3m~
28-01-2008, 00:00
EDIT: piccola curiosità: ma il valore true o false a quanto ho capito python lo "riconosce" in automatico visto che non c'è nessun controllo nella funzione run_test ma aumenta di +1 right se la risposta è giusta... o sbaglio?
cdimauro
28-01-2008, 08:00
EDIT: piccola curiosità: ma il valore true o false a quanto ho capito python lo "riconosce" in automatico visto che non c'è nessun controllo nella funzione run_test ma aumenta di +1 right se la risposta è giusta... o sbaglio?
Sì, True e False (con la prima maiuscola) sono costanti già definite in Python, e puoi testarle "automaticamente", come dici tu:
PythonRulez = True
if PythonRulez:
print 'Python rulez!!!'
else:
print 'Devi essere un seguace di Torvalds che ha taroccato la virtual machine di Python. Eretico!!!'
AnonimoVeneziano
28-01-2008, 09:52
http://upload.wikimedia.org/wikipedia/commons/6/69/Linus_Torvalds.jpeg
:asd:
mi aggiungo alla schiera di eretici :O
~FullSyst3m~
28-01-2008, 12:54
Troppo forte... e non ho ancora finito di leggere il topic su Linus (quello di Snoopy, ci assomiglia un pò però...)
cdimauro
28-01-2008, 13:23
mi aggiungo alla schiera di eretici :O
Conversione o morte: per voi ci sono soltanto queste due possibilità. :D
~FullSyst3m~
28-01-2008, 13:42
Emh.... conversione?!
Emh.... conversione?!
Python p = (Python)k0nt3;
ERROR! Unhandled exception :Prrr:
^TiGeRShArK^
28-01-2008, 13:50
Python p = (Python)k0nt3;
ERROR! Unhandled exception :Prrr:
ClassCastException + che altro :O
:asd:
~FullSyst3m~
28-01-2008, 14:04
Passoparola...
~FullSyst3m~
03-03-2008, 17:35
Ciao a tutti! Riuppo il thread dopo tanto tempo, sapete il tempo non basta mai. Volevo rendervi partecipi di una mia riflessione. Stamattina ho parlato con un mio amico che è tornato dopo un pò di tempo, lavora a Roma come programmatore informatico (senza laurea, gli autoditatti credo siano i più bravi). Parlando con lui mi sono chiesto: ma fino a quanto conviene studiare Python in un mondo dove tutto, anche il caffè tra un pò, si può fare dal web? Non sarebbe meglio imparare un linguaggio tipo html, PHP, java, javascript e simili?
cdimauro
03-03-2008, 20:44
HTML e JavaScript sono l'essenza del Web (specialmente il web 2.0), ma Python e PHP da questo punto di vista sono sostanzialmente sullo stesso piano (essendo server-side).
A mio avviso è meglio separare la generazione dei dati dalla loro presentazione.
Tutto il lato di presentazione delle informazioni può essere effettuato da framework come questi http://extjs.com/ che si basano esclusivamente su HTML e JavaScript.
La parte di generazione del codice la può realizzare qualunque linguaggio, ma qui ti consiglio Python perché ti rende la vita molto più facile grazie alle API standard in dotazione (a cui io, in ogni caso, ho affiancato il mio piccolo moduletto che mi rende la vita ancora più facile :cool: ).
@~FullSyst3m~
per imparare un linguaggio c'è sempre tempo, ma per imparare a programmare no :read:
~FullSyst3m~
04-03-2008, 12:34
HTML e JavaScript sono l'essenza del Web (specialmente il web 2.0), ma Python e PHP da questo punto di vista sono sostanzialmente sullo stesso piano (essendo server-side).
A mio avviso è meglio separare la generazione dei dati dalla loro presentazione.
Tutto il lato di presentazione delle informazioni può essere effettuato da framework come questi http://extjs.com/ che si basano esclusivamente su HTML e JavaScript.
La parte di generazione del codice la può realizzare qualunque linguaggio, ma qui ti consiglio Python perché ti rende la vita molto più facile grazie alle API standard in dotazione (a cui io, in ogni caso, ho affiancato il mio piccolo moduletto che mi rende la vita ancora più facile :cool: ).
Di che moduletto parli?
per imparare un linguaggio c'è sempre tempo, ma per imparare a programmare no
Il fatto è che ho già 20 anni e so pochissimo di Python... sono troppo indietro... :muro:
banryu79
04-03-2008, 13:07
Il fatto è che ho già 20 anni e so pochissimo di Python... sono troppo indietro... :muro:
Ti consiglio di abbandonare questa linea di pensiero e lasciartela alle spalle... io ho 28 anni e sono entrato nel mondo della programmazione a 25, senza un background solido, imparando molto da autodidatta e ora con queste conoscenze ci lavoro e sono contento.
Se poi il tuo obiettivo è scriverti da solo un nuovo sistema operativo... però ci sono passatempi meno dolorosi :D
Quoto kont3 & cdimauro: concentrati nell'imparare a programmare, pian pianino poi amplierai i tuoi orizzonti, ma metti in preventivo un grosso lasso di tempo per assimilare bene le basi, e non darti scadenze o pensare all'età.
Ho notato in post passati che questo aspetto di crea una certa ansia, che non ha ragione di esserci.
Abbandonalo, e tu continua per la tua strada ;)
Se pensi di potercela fare allora ce la puoi fare :)
cdimauro
04-03-2008, 13:13
Di che moduletto parli?
Ho realizzato un modulo Python per rendere l'accesso a un database ancora più semplice e versatile rispetto alle API standard.
~FullSyst3m~
04-03-2008, 16:30
Ti consiglio di abbandonare questa linea di pensiero e lasciartela alle spalle... io ho 28 anni e sono entrato nel mondo della programmazione a 25, senza un background solido, imparando molto da autodidatta e ora con queste conoscenze ci lavoro e sono contento.
Se poi il tuo obiettivo è scriverti da solo un nuovo sistema operativo... però ci sono passatempi meno dolorosi :D
Quoto kont3 & cdimauro: concentrati nell'imparare a programmare, pian pianino poi amplierai i tuoi orizzonti, ma metti in preventivo un grosso lasso di tempo per assimilare bene le basi, e non darti scadenze o pensare all'età.
Ho notato in post passati che questo aspetto di crea una certa ansia, che non ha ragione di esserci.
Abbandonalo, e tu continua per la tua strada ;)
Se pensi di potercela fare allora ce la puoi fare :)
E' proprio cosi, mi demoralizza di brutto questa cosa, soprattutto vedendo ieri quel mio amico che uscito dal licelo già fa il programmatore in un'azienda... Però quello che hai scritto e vista la tua esperienza mi rassicura un pò
Ho realizzato un modulo Python per rendere l'accesso a un database ancora più semplice e versatile rispetto alle API standard.
Wow...
DioBrando
04-03-2008, 18:40
Ciao a tutti! Riuppo il thread dopo tanto tempo, sapete il tempo non basta mai. Volevo rendervi partecipi di una mia riflessione. Stamattina ho parlato con un mio amico che è tornato dopo un pò di tempo, lavora a Roma come programmatore informatico (senza laurea, gli autoditatti credo siano i più bravi).
Mmm se ne potrebbe discutere :D
Parlando con lui mi sono chiesto: ma fino a quanto conviene studiare Python in un mondo dove tutto, anche il caffè tra un pò, si può fare dal web? Non sarebbe meglio imparare un linguaggio tipo html, PHP, java, javascript e simili?
Il linguaggio è il tuo marmo grezzo che dovrai scolpire con lo strumento che preferisci (alias ambiente di programmazione/IDE ecc.) per ottenere il risultato che hai in testa.
Ma se non sai come scolpire qualsiasi materiale e strumento ti saranno inadatti.
Questa metafora per farti capire, come giustamente hanno scritto gli utenti prima di me, che il punto essenziale è imparare a programmare, formarsi un certo tipo di mentalità, di capacità di analizzare e risolvere i problemi, qualità che prescindono dal contesto in cui ti troverai.
Ah la metafora artistica l'ho scelta appositamente per mettere l'accento sull'importanza della creatività.
Imparare i principi che governano le metodologie di sviluppo è fondamentale (come lo era lo studio dell'anatomia, della geometria per gli artisti rinascimentali), ma la componente intuitiva, istintiva e creativa è insostituibile e non è nemmeno tanto insegnabile.
Può però essere coltivata, questo sì :)
Per quanto riguarda i linguaggi citati, beh HTML non è un linguaggio di programmazione ma di markup e basta veramente poco per iniziare a cimentarsi.
Javascript è il suo passo successivo tuttosommato.
PHP e Python e Java con JSP sono linguaggi di programmazione lato server con diverse similitudini.
La considerazione che fai sul web è corretta, ci sono però diversi dibattiti in corso ( e qui si aprirebbe un lungo OT, magari puoi prenderla come occasione per aprirne uno ex novo così non sporchiamo questo :)) ed in merito all'esplosione del fenomeno delle applicazioni-web, in particolare a tutto quel che ruota intorno ad acronimi come RIA e AJAX.
Non è tutto necessariamente oro quel che luccica...
~FullSyst3m~
04-03-2008, 19:29
Mmm se ne potrebbe discutere :D
Il linguaggio è il tuo marmo grezzo che dovrai scolpire con lo strumento che preferisci (alias ambiente di programmazione/IDE ecc.) per ottenere il risultato che hai in testa.
Ma se non sai come scolpire qualsiasi materiale e strumento ti saranno inadatti.
Questa metafora per farti capire, come giustamente hanno scritto gli utenti prima di me, che il punto essenziale è imparare a programmare, formarsi un certo tipo di mentalità, di capacità di analizzare e risolvere i problemi, qualità che prescindono dal contesto in cui ti troverai.
Ah la metafora artistica l'ho scelta appositamente per mettere l'accento sull'importanza della creatività.
Imparare i principi che governano le metodologie di sviluppo è fondamentale (come lo era lo studio dell'anatomia, della geometria per gli artisti rinascimentali), ma la componente intuitiva, istintiva e creativa è insostituibile e non è nemmeno tanto insegnabile.
Può però essere coltivata, questo sì :)
Per quanto riguarda i linguaggi citati, beh HTML non è un linguaggio di programmazione ma di markup e basta veramente poco per iniziare a cimentarsi.
Javascript è il suo passo successivo tuttosommato.
PHP e Python e Java con JSP sono linguaggi di programmazione lato server con diverse similitudini.
La considerazione che fai sul web è corretta, ci sono però diversi dibattiti in corso ( e qui si aprirebbe un lungo OT, magari puoi prenderla come occasione per aprirne uno ex novo così non sporchiamo questo :)) ed in merito all'esplosione del fenomeno delle applicazioni-web, in particolare a tutto quel che ruota intorno ad acronimi come RIA e AJAX.
Non è tutto necessariamente oro quel che luccica...
Non lo dico che molti autodidatti sono molto più bravi di quelli laureati, ma anche altre persone. Poi non so sinceramente, mi baso su quello che ho letto e sentito
E se uno si ritrova in più di un contesto?
cdimauro
04-03-2008, 20:50
Non lo dico che molti autodidatti sono molto più bravi di quelli laureati, ma anche altre persone. Poi non so sinceramente, mi baso su quello che ho letto e sentito
E se uno si ritrova in più di un contesto?
Puoi essere "bravo" quanto vuoi, ma posso assicurarti che la formazione che ti dà una buona università (posto che tu non ci vada per scaldare il banco :p) difficilmente la potrai acquisire da autodidatta...
L'autodidatta di buono ha lo stimolo a sperimentare, che è sicuramente molto utile per iniziare e farti una base, ma la forma mentis che acquisisci con l'università ti può realmente cambiare il modo di pensare.
E' chiaro pure che, dopo l'università, puoi benissimo imparare tanto altro da autodidatta, ma parti già con un piede diverso.
Ovviamente dipende tutto da persona a persona: io ti riporto la mia esperienza. ;)
Puoi essere "bravo" quanto vuoi, ma posso assicurarti che la formazione che ti dà una buona università (posto che tu non ci vada per scaldare il banco ) difficilmente la potrai acquisire da autodidatta...
L'autodidatta di buono ha lo stimolo a sperimentare, che è sicuramente molto utile per iniziare e farti una base, ma la forma mentis che acquisisci con l'università ti può realmente cambiare il modo di pensare.
E' chiaro pure che, dopo l'università, puoi benissimo imparare tanto altro da autodidatta, ma parti già con un piede diverso.
Ovviamente dipende tutto da persona a persona: io ti riporto la mia esperienza.
*
:O
~FullSyst3m~
04-03-2008, 22:43
Puoi essere "bravo" quanto vuoi, ma posso assicurarti che la formazione che ti dà una buona università (posto che tu non ci vada per scaldare il banco :p) difficilmente la potrai acquisire da autodidatta...
L'autodidatta di buono ha lo stimolo a sperimentare, che è sicuramente molto utile per iniziare e farti una base, ma la forma mentis che acquisisci con l'università ti può realmente cambiare il modo di pensare.
E' chiaro pure che, dopo l'università, puoi benissimo imparare tanto altro da autodidatta, ma parti già con un piede diverso.
Ovviamente dipende tutto da persona a persona: io ti riporto la mia esperienza. ;)
Mi fido ciecamente della tua esperienza...
DioBrando
04-03-2008, 23:06
Non lo dico che molti autodidatti sono molto più bravi di quelli laureati, ma anche altre persone. Poi non so sinceramente, mi baso su quello che ho letto e sentito
Ma guarda, senza fare discorsi tipo "mi ha detto mio cuggino", ti dico solo che è un argomento spinoso di cui si può discutere ampiamente, tu hai fatto un'affermazione perentoria che è tutta da dimostrare.
Questo era quello che volevo sottolineare.
Poi chiaramente se andiamo nel particolare, è soggettivo, ci sono persone portate brave indipendentemente dal curriculum scolastico e che riescono ed altre viceversa brillanti nel proprio percorso accademico ma che poi "non riescono".
Ci sono tante componenti in gioco, fortuna compresa.
Quello però su cui si può discutere fino a un certo punto è che un universitario magari farà meno esperienza sul campo (perchè i giorni sono fatti di 24 ore per tutti e se dedichi del tempo allo studio, lo porti via alla pratica) ma è altrettanto vero che sviluppa capacità e competenze soprattutto di tipo analitico che difficilmente si possono apprendere e immagazzinare in un percorso completamente autodidatta.
Questo rientra anche nella discussione che abbiamo fatto poco tempo fa' su queste pagine in merito all'importanza dell'età in cui si inizia a programmare.
Per me, ribadisco, è molto + importante oltre alla voglia, la passione, anche un certo tipo di applicazione.
Potrò iniziare a 10 anni, ma poi non conoscere per esempio principi che si studiano formalmente nelle materie di un curriculum accademico (che non sono legate per forza all'informatica intendiamoci...io intendo tutte quelle come quelle matematiche che sviluppano una certa forma mentis e elasticità mentale) sono lacune difficilmente rimpiazzabili in toto dalla pratica.
Ne parlavo giusto l'altro giorno con un ragazzo (ingegnere informatico), veramente in gamba, che ha fatto 2 stage in Inghilterra.
Il problema del mercato IT in Italia è che non esiste la consapevolezza del valore aggiunto che un laureato, lasciato crescere e formato in azienda, può dare rispetto a uno "smanettone".
Gli stipendi sono da fame perchè si è convinti che il geek di turno che tira su siti con CMS già pronti o che si è dilettato da solo con un qualche linguaggio di programmazione da quando aveva 16 anni può dare lo stesso contributo in termini quantitativi e qualitativi rispetto a un neolaureato.
Lui ha estremizzato il concetto (per me è un po + complessa la cosa, perchè la colpa è sia per la parte offerta che domanda di lavoro) ma sinceramente non mi sento così in disaccordo.
Ecco la mentalità che hai fatto risaltare tu con quella frase precedente sull'autodidatta è il perfetto esempio di come ragiona spesso un'azienda quando si trova nella posizione di assumere nuovo personale della categoria.
E se uno si ritrova in più di un contesto?
In che senso?
~FullSyst3m~
05-03-2008, 05:55
Ma guarda, senza fare discorsi tipo "mi ha detto mio cuggino", ti dico solo che è un argomento spinoso di cui si può discutere ampiamente, tu hai fatto un'affermazione perentoria che è tutta da dimostrare.
Questo era quello che volevo sottolineare.
Poi chiaramente se andiamo nel particolare, è soggettivo, ci sono persone portate brave indipendentemente dal curriculum scolastico e che riescono ed altre viceversa brillanti nel proprio percorso accademico ma che poi "non riescono".
Ci sono tante componenti in gioco, fortuna compresa.
Quello però su cui si può discutere fino a un certo punto è che un universitario magari farà meno esperienza sul campo (perchè i giorni sono fatti di 24 ore per tutti e se dedichi del tempo allo studio, lo porti via alla pratica) ma è altrettanto vero che sviluppa capacità e competenze soprattutto di tipo analitico che difficilmente si possono apprendere e immagazzinare in un percorso completamente autodidatta.
Questo rientra anche nella discussione che abbiamo fatto poco tempo fa' su queste pagine in merito all'importanza dell'età in cui si inizia a programmare.
Per me, ribadisco, è molto + importante oltre alla voglia, la passione, anche un certo tipo di applicazione.
Potrò iniziare a 10 anni, ma poi non conoscere per esempio principi che si studiano formalmente nelle materie di un curriculum accademico (che non sono legate per forza all'informatica intendiamoci...io intendo tutte quelle come quelle matematiche che sviluppano una certa forma mentis e elasticità mentale) sono lacune difficilmente rimpiazzabili in toto dalla pratica.
Ne parlavo giusto l'altro giorno con un ragazzo (ingegnere informatico), veramente in gamba, che ha fatto 2 stage in Inghilterra.
Il problema del mercato IT in Italia è che non esiste la consapevolezza del valore aggiunto che un laureato, lasciato crescere e formato in azienda, può dare rispetto a uno "smanettone".
Gli stipendi sono da fame perchè si è convinti che il geek di turno che tira su siti con CMS già pronti o che si è dilettato da solo con un qualche linguaggio di programmazione da quando aveva 16 anni può dare lo stesso contributo in termini quantitativi e qualitativi rispetto a un neolaureato.
Lui ha estremizzato il concetto (per me è un po + complessa la cosa, perchè la colpa è sia per la parte offerta che domanda di lavoro) ma sinceramente non mi sento così in disaccordo.
Ecco la mentalità che hai fatto risaltare tu con quella frase precedente sull'autodidatta è il perfetto esempio di come ragiona spesso un'azienda quando si trova nella posizione di assumere nuovo personale della categoria.
In che senso?
Io ho solo detto quello che ho letto girando per il forum e quello che ho sentito dire ad alcune persone. Ho esposto solo quello che ho sentito.
Hai scritto:
qualità che prescindono dal contesto in cui ti troverai.
E se uno sviluppa determinate capacità in un determinato contesto, cosa succede quando cambia, se cambia, contesto? Si trova spiazzato perchè ha imparato a ragionare in un determinato contesto?
cdimauro
05-03-2008, 07:03
Mi fido ciecamente della tua esperienza...
Non farlo: devi sempre prendere tutto "con le pinze", anche da chi si millanta come "guru".
Devi valutare TU, sulla scorta del confronto con altre persone o sulle fonti che ti vengono riportate, come stanno le cose.
Un buon professionista deve imparare un concetto fondamentale: ragionare con la propria testa (facendo tesoro dell'esperienza accumulata, ovviamente).
Io ho solo detto quello che ho letto girando per il forum e quello che ho sentito dire ad alcune persone. Ho esposto solo quello che ho sentito.
Hai fatto bene a esporlo, perché in questo modo hai dato ad altre persone la possibilità di confutare ciò che hai sentito.
Adesso sta a te farti una TUA idea e decidere autonomamente cos'è meglio fare nella tua (novella) vita da programmatore. :)
banryu79
05-03-2008, 08:48
Ari-quoto in toto cidimauro e DioBrando.
Pensa con la tua testa.
Fattori come l'età, il percorso scolastico/accademico e altro sono, appunto, solo fattori.
Presi e valutati singolarmente sono certamente degli spunti di dibattito interessanti ma possono portare a conclusioni fuorvianti.
Bisogna valutare tutto l'insieme.
Il top che puoi imparare ad acquisire, come atteggiamento, imho, è imparare a distinguere tra l'essenziale e il secondario.
Per il tuo cammino di apprendimento lungo la programmazione è facile pronosticare, ad esempio, che pensieri pessimistici circa le tue possibilità di riuscita e il tempo speso a divagare su queste questioni sono secondari, o addirittura negativi nel momento in cui ti si ritorcono contro.
(ma è stato positivo tirarle fuori per dipanare i dubbi, ora però bisogna procedere in avanti!)
Per concludere: in un post precedente ho scritto che mi sono addentrato nella programmazione da autodidatta, è vero, ma poi ho avuto anche la fortuna di lavorare in un'azienda che ha investito sulla mia formazione: 6 mesi presso il DIMEG di Padova seguito da due persone su formazione C++ e database; inoltre il progetto su cui lavoro ormai da due anni lo svolgo in collaborazione con due sviluppatori navigati, che lavorano da 20 anni nel campo.
La conoscenza e la forma mentis che si possono acquisire all'università sono degli strumenti preziosi, mi pare un luogo comune privo di fondamento dire che gli autodidatti sono migliori...
Detto questo, buono studio :)
io tra un autodidatta, un laureato e uno che ha iniziato da autodidatta e poi si è laureato sceglierei quest'ultimo :asd:
cdimauro
05-03-2008, 13:11
Infatti nei colloqui che facciamo ai candidati pongo sempre puntualmente la domanda: "ma tu smanetti per i fatti tuoi"? Per capire se, oltre al pezzo di carta, mostra anche la passione che, a mio avviso, può fare la differenza... ;)
~FullSyst3m~
05-03-2008, 13:22
Non farlo: devi sempre prendere tutto "con le pinze", anche da chi si millanta come "guru".
Devi valutare TU, sulla scorta del confronto con altre persone o sulle fonti che ti vengono riportate, come stanno le cose.
Un buon professionista deve imparare un concetto fondamentale: ragionare con la propria testa (facendo tesoro dell'esperienza accumulata, ovviamente).
Hai fatto bene a esporlo, perché in questo modo hai dato ad altre persone la possibilità di confutare ciò che hai sentito.
Adesso sta a te farti una TUA idea e decidere autonomamente cos'è meglio fare nella tua (novella) vita da programmatore. :)
Senza dubbio, ma ho avuto modo di vedere che fai dei ragionamenti giustissimi e che hai molta esperienza nel campo quindi puoi essere d'aiuto a chi inizia come me. Spero tanto di poter realizzare il mio sogno, solo questo chiedo. Non ho mai avuto niente, almeno questo spero di ottenerlo... con sacrificio e impegno logicamente
DioBrando
05-03-2008, 17:06
Io ho solo detto quello che ho letto girando per il forum e quello che ho sentito dire ad alcune persone. Ho esposto solo quello che ho sentito.
Certo e hai fatto bene :)
La mia non era una critica alla tua esposizione, ma all'idea che circola.
E in ogni caso + campane senti (verificandolo magari sulla tua pelle) e + chiare avrai le tue idee.
Hai scritto:
E se uno sviluppa determinate capacità in un determinato contesto, cosa succede quando cambia, se cambia, contesto? Si trova spiazzato perchè ha imparato a ragionare in un determinato contesto?
Ah sì.
Il punto è questo, fondamentalmente:
l'autodidatta impara dalla pratica la teoria ed impara i principi, le metodologie di sviluppo guardando quel che avviene quando smanetta, fa le sue prove col codice.
Questo processo empirico però non funziona per tutto, ci sono cose che vanno imparare a priori e che ribadisco escono spesso dalla logica dell'informatica intesa come programmazione.
In questo spazio si inseriscono tutte le materie dei curriculum di ingegneria, informatica o affini, spesso estremamente teoriche e poco applicate e che servono sostanzialmente a farti ragionare, a farti entrare in una mentalità per cui qualsiasi sarà il problema che ti troverai davanti, avrai gli strumenti per poterlo risolvere.
Questo non succede, per esempio, per coloro che si formano su corsi molto specializzati/professionali dove si impara uno strumento di sviluppo (bene), si impara UN linguaggio e una volta che si esce dal quel contesto, si trova in grosse difficoltà per riadattarsi alla situazione.
Non se ora ho spiegato meglio quello che intendevo :)
~FullSyst3m~
05-03-2008, 17:28
Hai spiegato benissimo, quindi la cosa migliore sarebbe proprio quella di apprendere dei concetti studiando all'università in modo da avere una mente elastica e poter imparare nuovi linguaggi e adattarli alla situazione che serve invece di imparare bene uno strumento di sviluppo e un linguaggio di programmazione soltanto... credo che volevi dire questo no?
DioBrando
05-03-2008, 17:41
Hai spiegato benissimo, quindi la cosa migliore sarebbe proprio quella di apprendere dei concetti studiando all'università in modo da avere una mente elastica e poter imparare nuovi linguaggi e adattarli alla situazione che serve invece di imparare bene uno strumento di sviluppo e un linguaggio di programmazione soltanto... credo che volevi dire questo no?
Esatto :)
Anche perchè banalmente, una volta che sai programmare, che tu utilizzi Java, C++, Python, PHP cambierà poco.
Una volta appresa la sintassi, imparato le peculiarità o le librerie che userai maggiormente sarai a posto.
E utilizzare + linguaggi è altresì la prova del 9 per capire se hai veramente imparato cosa sia una classe (esempio), come utilizzarla.
Perchè se lo sai fare con 2 linguaggi vuol dire che per forza hai capito come fare.
L'esperienza cmq è fondamentale, così come la voglia e la passione.
Quindi non ti abbattere se nel tuo percorso sarai scoraggiato, è capitato a chiunque.
L'importante è non mollare mai, spinti dalla convinzione che sia effettivamente quello che desideri fare nella vita. ;)
~FullSyst3m~
05-03-2008, 17:45
Lo desidero eccome...
cdimauro
05-03-2008, 19:20
E allora alzati, e va dove ti porta il core...
http://upload.wikimedia.org/wikipedia/commons/6/6b/68020-16.jpg
Oops, scusa, un deja-vù... :p Volevo dire:
http://www.foxserve.it/media/python.png
"In Python we trust" - (C) 2008 cdimauro :cool:
~FullSyst3m~
05-03-2008, 19:56
E allora alzati, e va dove ti porta il core...
http://upload.wikimedia.org/wikipedia/commons/6/6b/68020-16.jpg
Oops, scusa, un deja-vù... :p Volevo dire:
http://www.foxserve.it/media/python.png
"In Python we trust" - (C) 2008 cdimauro :cool:
Voglio il tuo autografo...
E allora alzati, e va dove ti porta il core...
O meglio "non avrai altro core all'infuori di me". Come noto, python e' monocorista. :stordita: :D
~FullSyst3m~
07-03-2008, 12:34
Io ho un quad core... meglio averne sempre qualcuno di riserva
cdimauro
07-03-2008, 13:10
No, è che Marco si riferiva a un problema "noto" di Python, in merito ai sistemi multicore.
Comunque... http://www.parallelpython.com/ :fiufiu:
"In Python We Trust" :sofico:
~FullSyst3m~
07-03-2008, 19:46
Si si lo so a cosa si riferiva, ho fatto una battuta io
~FullSyst3m~
17-04-2008, 20:25
Rieccomi di nuovo sulla programmazione raga... purtroppo sono ancora fermo alle liste (sull'altro manuale però, il primo dal quale studiavo non era molto buono e ho anche avuto la conferma di cdimauro), ho passato un brutto periodo. Ma vado riprendendomi e voglio dare tutto me stesso a Python e alla programmazione. I giorni passano purtroppo e io divento sempre più vecchio...
cdimauro
17-04-2008, 21:10
Azz. E allora io? Sarei già con un piede nella fossa?
SGRAT SGRAT SGRAT
banryu79
18-04-2008, 08:49
I giorni passano purtroppo e io divento sempre più vecchio...
Voglio pensare che fosse una battuta :D
Azz. E allora io? Sarei già con un piede nella fossa?
SGRAT SGRAT SGRAT
Toccata generale di maroni :asd:
~FullSyst3m~
18-04-2008, 12:46
:D :D Sei sicuramente giovane dentro però dai...
by_to_by
03-06-2008, 17:29
io non imparerò mai. leggo guide, provo e riprovo ma niente. non riuscirei a fare nemmeno una cretinata di programma e in giro ci sono "bambini" che fanno cose assurde. forse dovrei pensare ad un altro lavoro
cdimauro
03-06-2008, 19:51
Prendi la guida di cui ho passato il link e studia, possibilmente senza lamentarti: vedrai che un po' alla volta comincerai a capire come si programma.
NESSUNO, e ribadisco NESSUNO è nato "imparato" qui.
secondo voi conviene iniziare a programmare (per imparare) usando programmi semplici come vb6?
o è solo una perdita di tempo?
perche sono indeciso se passare a vb2008 o continuare ad esercitarmi in vb6 visto che sono ancora inesperto e sto imparando da autodidatta..
by_to_by
03-06-2008, 22:50
Prendi la guida di cui ho passato il link e studia, possibilmente senza lamentarti: vedrai che un po' alla volta comincerai a capire come si programma.
NESSUNO, e ribadisco NESSUNO è nato "imparato" qui.
quale link di quale guida?
^TiGeRShArK^
03-06-2008, 23:02
secondo voi conviene iniziare a programmare (per imparare) usando programmi semplici come vb6?
o è solo una perdita di tempo?
perche sono indeciso se passare a vb2008 o continuare ad esercitarmi in vb6 visto che sono ancora inesperto e sto imparando da autodidatta..
passa senza pensarci a VB 9.
non c'è paragone tra i due linguaggi.
L'ideale imho sarebbe C# in ambito .net, ma tra VB6 e VB9 c'è comunque un abisso.
variabilepippo
04-06-2008, 00:01
secondo voi conviene iniziare a programmare (per imparare) usando programmi semplici come vb6?
o è solo una perdita di tempo?
perche sono indeciso se passare a vb2008 o continuare ad esercitarmi in vb6 visto che sono ancora inesperto e sto imparando da autodidatta..
Se studi VB6 per passare a VB.NET fai 3 fatiche:
1) Studi VB6 (un linguaggio vecchio, dichiarato morto esepolto dalla stessa Microsoft)
2) Devi "disimparare" VB6 per imparare VB.NET (sono 2 strumenti molto diversi tra loro)
3) Una volta disimparate le cattive abitudini di VB6 dovrai iniziare a pensare in termini di VB.NET
Tanto vale acquistare un buon libro su VB.NET, sei giovane ed hai tanto tempo (libero) per studiarlo. ;)
Nessuno ti vieta di partire direttamente da C# (o da Python, come qualcuno presto ti suggerirà).
cdimauro
04-06-2008, 08:09
secondo voi conviene iniziare a programmare (per imparare) usando programmi semplici come vb6?
o è solo una perdita di tempo?
perche sono indeciso se passare a vb2008 o continuare ad esercitarmi in vb6 visto che sono ancora inesperto e sto imparando da autodidatta..
Sei nelle giuste condizioni per partire da Python. :)
Se studi VB6 per passare a VB.NET fai 3 fatiche:
1) Studi VB6 (un linguaggio vecchio, dichiarato morto esepolto dalla stessa Microsoft)
2) Devi "disimparare" VB6 per imparare VB.NET (sono 2 strumenti molto diversi tra loro)
3) Una volta disimparate le cattive abitudini di VB6 dovrai iniziare a pensare in termini di VB.NET
Tanto vale acquistare un buon libro su VB.NET, sei giovane ed hai tanto tempo (libero) per studiarlo. ;)
Nessuno ti vieta di partire direttamente da C# (o da Python, come qualcuno presto ti suggerirà).
:cool: :p
by_to_by
06-06-2008, 00:23
studio ma non riesco a fare nulla. che brutta sensazione, e pensare che ci sono persone più giovani di me che sono dei mostri :muro: :muro: :muro: :muro: :muro:
cdimauro
06-06-2008, 07:55
Ti prego, non ti continuare: l'enorme quantità di lamentele di ~FullSyst3m~ sono state più che sufficienti.
Rimboccati le maniche, STUDIA e LAVORA.
~FullSyst3m~
06-06-2008, 09:14
Ti prego, non ti continuare: l'enorme quantità di lamentele di ~FullSyst3m~ sono state più che sufficienti.
Rimboccati le maniche, STUDIA e LAVORA.
:mbe: :mbe: :mbe: :mbe: :mbe: :mbe: :mbe:
Lamentele?! Ho solo detto le mie impressioni e quello che vedo che mi circonda! Quali lamentele?!!
Allora è questo che pensi di me eh cdimauro???
banryu79
06-06-2008, 09:18
:mbe: :mbe: :mbe: :mbe: :mbe: :mbe: :mbe:
Lamentele?! Ho solo detto le mie impressioni e quello che vedo che mi circonda! Quali lamentele?!!
Allora è questo che pensi di me eh cdimauro???
Zitto e nuota! :)
~FullSyst3m~
06-06-2008, 09:26
Zitto e nuota! :)
Cosi mi annega cdimauro altro che nuotare! Il mio mito che dice queste cose.... ecco perchè non voglio studiare i miti a scuola! Ti colpiscono nel profondo... :cry:
cdimauro
06-06-2008, 13:49
:mbe: :mbe: :mbe: :mbe: :mbe: :mbe: :mbe:
Lamentele?! Ho solo detto le mie impressioni e quello che vedo che mi circonda! Quali lamentele?!!
Allora è questo che pensi di me eh cdimauro???
Scusa: è oggettivo che ti sei lamentato spesso. Ma l'aiuto non t'è mai mancato, no? ;)
~FullSyst3m~
06-06-2008, 15:34
Scusa: è oggettivo che ti sei lamentato spesso. Ma l'aiuto non t'è mai mancato, no? ;)
Ma non mi sono lamentato dai, ho solo fatto delle osservazioni e poi molte volte scherzavo.. se tu prendi tutto alla lettera allora adesso mi avrebbero dovuto bannare dal forum da un pezzo.. :rolleyes:
cdimauro
06-06-2008, 21:32
http://www.hwupgrade.it/forum/showpost.php?p=21389216&postcount=36
~FullSyst3m~
06-06-2008, 21:39
http://www.hwupgrade.it/forum/showpost.php?p=21389216&postcount=36
Ma queste non sono lamentele, sono riflessioni personali che ho fatto e condiviso
by_to_by
11-06-2008, 18:09
esercizio 4.6 di questo link http://www.python.it/doc/Howtothink/Howtothink-html-it/chap04.htm
def Confronta (x, y):
if x > y:
print x, "è maggiore di", y
elif x < y:
print x, "è minore di", y
else:
print x, "e", y, "sono uguali"
Confronta (2, 5)
def ElaboraScelta (scelta):
if scelta == "prova":
print "scelta esatta"
elif scelta == "prova2":
print "scelta giusta"
else:
print "scelta errata"
ElaboraScelta ("prova")
è giusto?
DanieleC88
11-06-2008, 20:37
E allora alzati, e va dove ti porta il core...
http://upload.wikimedia.org/wikipedia/commons/6/6b/68020-16.jpg
Oddio, questa me l'ero persa. Raggelante. Certo che cdimauro se ci si mette è peggio di me in quanto al livello delle battute... :doh:
:D
by_to_by
11-06-2008, 20:41
esercizio 4.6 di questo link http://www.python.it/doc/Howtothink/Howtothink-html-it/chap04.htm
def Confronta (x, y):
if x > y:
print x, "è maggiore di", y
elif x < y:
print x, "è minore di", y
else:
print x, "e", y, "sono uguali"
Confronta (2, 5)
def ElaboraScelta (scelta):
if scelta == "prova":
print "scelta esatta"
elif scelta == "prova2":
print "scelta giusta"
else:
print "scelta errata"
ElaboraScelta ("prova")
è giusto?
non vi dimenticate di me
by_to_by
11-06-2008, 22:40
e oltre a quello che è scritto nel messaggio sopra a questo, vorrei spiegata questa parte che si trova nel paragrafo 4.9 sempre del link di prima:
La funzione ContoAllaRovescia che aveva n=1; e poi ritorna.
La funzione ContoAllaRovescia che aveva n=2; e poi ritorna.
E quindi torna in __main__ (questo è un trucco)
ma quando la funzione arriva ad essere x == 0 non dovrebbe terminare? cosa c'entrano queste tre righe che ho quotato?
khelidan1980
11-06-2008, 22:49
e oltre a quello che è scritto nel messaggio sopra a questo, vorrei spiegata questa parte che si trova nel paragrafo 4.9 sempre del link di prima:
ma quando la funzione arriva ad essere x == 0 non dovrebbe terminare? cosa c'entrano queste tre righe che ho quotato?
magia della ricorsione.....ti manca proprio questo concetto
DanieleC88
11-06-2008, 23:17
ma quando la funzione arriva ad essere x == 0 non dovrebbe terminare? cosa c'entrano queste tre righe che ho quotato?
Spiegare nei dettagli senza tirare in ballo lo stack non è facile, ti basti sapere che la funzione fa quel che deve fare e poi chiama se stessa con un n decrementato: la funzione "figlia" ripeterà gli stessi passi, e quindi continuerà a replicare il procedimento fino a rendere vera la condizione n == 0 (caso base di terminazione). A quel punto, l'ultima funzione chiamata può terminare, e così potrà terminare l'istanza superiore di ContoAllaRovescia() che l'aveva invocata, e così via fino alla funzione principale, quella invocata originariamente dalla main(). A quel punto le viene restituito il controllo, et voilà.
Spero di non averti confuso ancora di più le idee. :D
~FullSyst3m~
11-06-2008, 23:20
Spiegare nei dettagli senza tirare in ballo lo stack non è facile, ti basti sapere che la funzione fa quel che deve fare e poi chiama se stessa con un n decrementato: la funzione "figlia" ripeterà gli stessi passi, e quindi continuerà a replicare il procedimento fino a rendere vera la condizione n == 0 (caso base di terminazione). A quel punto, l'ultima funzione chiamata può terminare, e così potrà terminare l'istanza superiore di ContoAllaRovescia() che l'aveva invocata, e così via fino alla funzione principale, quella invocata originariamente dalla main(). A quel punto le viene restituito il controllo, et voilà.
Spero di non averti confuso ancora di più le idee. :D
Io credo che gli hai fatto fondere il cervello :asd:
DanieleC88
11-06-2008, 23:33
Lo so, non sono il massimo come insegnante. :cry: :help: :muro:
by_to_by
11-06-2008, 23:34
Lo so, non sono il massimo come insegnante. :cry: :help: :muro:
non è vero dai, è che sono all'inizio
DanieleC88
11-06-2008, 23:37
Be', no, ho veramente fatto una spiegazione bella incartocciata. Il fatto è che così in due parole non riesco a farti capire come funziona, ma non volevo dilungarmi troppo. :)
by_to_by
11-06-2008, 23:39
Be', no, ho veramente fatto una spiegazione bella incartocciata. Il fatto è che così in due parole non riesco a farti capire come funziona, ma non volevo dilungarmi troppo. :)
fa niente non preoccuparti, ho aperto un topic apposito, qualcuno mi risponderà!
banryu79
12-06-2008, 08:11
fa niente non preoccuparti, ho aperto un topic apposito, qualcuno mi risponderà!
La spiegazione di DanieleC88 a me è sembrata adeguata...
Cmq se vuoi saperne di più sforzandoti di capire di tua iniziativa ti consiglio il metodo classico in questi casi: google -> search for: Ricorsione
Ti leggi un po' di roba e poi riguardi il codice/esercizi dove se ne fa uso o dove ne viene richiesto l'uso; a quel punto avrai molti meno dubbi: i punti che ti rimarranno ancora oscuri sono quelli da cui partire per fare delle domande più specifiche nel forum ;)
Ottenute le risposte "solidifichi" il tutto facendo altri esercizi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.