Benvenuto nel team di sviluppo del JetLUG.

La tua prima missione sara' aiutarci a sviluppare un potentissimo algoritmo per la ricerca dell'anima gemella.
Ecco come raggiungere tale scopo:

1 - facciamoci un'idea su cosa andremo a fare chiaredo cos'e' la programmazione, cos'e' un programma, cos'e' un linguaggio di programmazione

https://it.wikipedia.org/wiki/Linguaggio_di_programmazione
https://it.wikipedia.org/wiki/Programmazione_%28informatica%29


2 - andiamo un po' piu' nello specifico, ovvero Python

http://docs.python.it/html/tut/tut.html

3 - tutti ai posti di partenza: creazione dell'ambiente di sviluppo

   >appuriamo che python sia installato, eventualmente installarlo tramite gestore pacchetti

   $python -V
   Python 2.7.6

   >python ha un suo gestore di pacchetti chiamato pip (vedi https://en.wikipedia.org/wiki/Python_Package_Index )
   >usiamolo per installare virtualenv, il software che ci permettera' di creare un ambiente di sviluppo specifico per la nostra applicazione

   $pip install virtualenv

   >creamo l'ambiente virtuale

   $virtualenv anima-gemella-env

   >attiviamo il nostro ambiente virtuale

   $source anima-gemella-env/bin/activate

   >fino a quando il tuo prompt iniziera' con (anima-gemella-env) il tuo ambiente virtuale sara' attivo. In futuro potrai disattivarlo uscendo dalla shell o usando il comando 'deactivate'. Un ambiente virtuale ha numerosi vantaggi tra cui la possibilita' di sapere quali pacchetti, e con quale versione, sono necessari al nostro programma, replicare facilmente l'ambiente necessario al nostro software, evitare conflitto di pacchetti, mantenere il nostro pc di sviluppo indipendente dai vari software che sviluppiamo.
   
4 - definiamo cosa vogliamo ottenere

   >in programmazione e' utile avvalersi di strumenti di verifica del proprio codice. Verificare il proprio codice vuol dire stabilire dei comportamenti che nostro programma dovrebbe avere ed assicurarsi che questi avvengano. Ad esempio nel nostro caso si vuole che inserendo il nome 'Licia' il programma restituisca a video la scritta 'Mirko'e inserendo 'Mirko' restituisca 'Licia'.
   >python permette di scrivere tali test all'interno del codice stesso come integrazione ai commenti. Questo strumento si chiama doctest. (https://docs.python.org/2/library/doctest.html)
   >Ecco il nostro test

   >>> partner_di('Licia')
   Mirko
   >>> partner_di('Mirko')
   Licia

5 - facciamo in modo che cio' accada

   >Lanciamo l'interprete python in modalita' doctest e vediamo cosa succede

   $python -m doctest anima-gemella.py

   >'ipdb' e' una dipendenza che ho inserito nel programma esattamente come 'sys'. La differenza sta nel fatto che 'sys' e' parte integrante di python ipdb e' un programma in python scritto da terzi. Aggiungiamolo al nostro ambiente virtuale.
   
   $pip install ipdb

   >ipdb ci servira' per eseguire il debug della nostra applicazione.
   >python ha un suo modulo nativo per il debug che si chiama pdb.
   >per entrare in modalita' debug inserisci la seguente riga dove vuoi che il programma si interrompi e scopri la differenza tra ipdb e pdb.

   ipdb.set_trace()

   >oppure
   
   import pdb; pdb.set_trace()

   >Quando il test avra' esito positivo avrai realizzato la versione beta del programma :)
   >Buon divertimento!


#import serve ad aggiungere al nostro programma funzionalita' provenienti
#da altri moduli
import ipdb
import sys


#def viene usato per definire una funzione
def partner_di(nome):
   #ipdb.set_trace()
   pass
   
partner_di(sys.argv[1])