prolog ha scritto:Conosco già il linguagio C che ho fatto in modo approfondito.
Se lo conosci davvero in modo approfondito (che non vuol dire ricordare a memoria in che header stanno le varie funzioni o quante funzioni ci sono nella libreria standard) perché non hai già implementato il tuo interprete?
Capire davvero il C è una cosa che ha come prerequisito la capacità di pensare davvero ai programmi e ancor prima agli algoritmi e alle strutture dati su cui si basano: il C a differenza di praticamente qualsiasi altro linguaggio procedurale/OO di uso corrente non ti regala mai nulla, ma ha gli strumenti per fare tutto. Una volta che hai davvero capito il C, l'unica cosa che ti separa dalla facoltà di implementare un programma è lo studio delle fondamenta matematiche dell'ambito cui il programma fa riferimento (e ovviamente l'esperienza).
A me dispiace tantissimo dover essere netto e "duro", ma se vuoi davvero andare avanti ci sono delle convinzioni e delle modalità di pensiero di cui devi necessariamente comprendere la disfunzionalità.
prolog ha scritto:Il python lo conosco meno del C, ma il primo l'ho studiato fino alle iterazioni con "for ...in_range()" , quindi so fare le iterazioni col ciclo for senza iterare i vari indici come si fa invece col C.
Che vuol dire "fino alle iterazioni con
for..in_range()"? Quale metodo stai seguendo? Hai un testo di riferimento?
Quando insegno Python io quella struttura iterativa la faccio vedere dopo un bel po', perché non è assolutamente necessaria al fine di scrivere programmi sensati; altre persone, invece, preferiscono mostrarla subito (approccio che io non condivido, ma non ho la presunzione di essere la misura del mondo). Stando così le cose, dirci "fino a dove sei arrivato" non è un'informazione particolarmente sensata se non ci dici anche come stai studiando.
Andando al tuo codice, ho alcune domande strutturali e algoritmiche (che non per forza sottolineano dei tuoi errori... se sei in grado di rispondere):
1) Usi una classe per la rubrica... perché?
2) Usi un file JSON... perché non un semplice file di testo? Cosa ti ha portato a questa scelta?
3) Perché ci sono funzioni che maneggiano il file della rubrica fuori dalla classe che descrive la rubrica?
4) Perché nella funzione di inserimento di una nuova voce (che hai chiamato in modo terribile peraltro) cancelli il file e lo ricrei? Non sarebbe meglio aggiornare un file già esistente? (Collegata alla domanda n° 2)
5) Per quale motivo nella funzione di visualizzazione della rubrica riutilizzi la variabile "lista" che hai ricevuto come parametro e non definisci invece una variabile locale?
6) Esattamente qual è l'algoritmo che implementi con la tua funzione di modifica?
prolog ha scritto:La stessa cosa feci con le librerie ANSI del C, ma ne uscirono 400 righe come ridere.
Come sopra, il C non ti regala nulla mentre linguaggi come Python nascondono buona parte della complessità e ti danno l'impressione di sapere quando invece non hai la minima idea.
prolog ha scritto:Ho già delle buone basi con python.
Cosa ti rende convinto di quest'affermazione?