Topic: Consigli per progetto  (Letto 590 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline eciap

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Consigli per progetto
« il: Dicembre 28, 2015, 22:10 »
Chi non avesse voglia di leggersi il pippone salti pure subito al succo del discorso  :D

Premessa
Ormai qualche annetto fa ho tentato di avvicinarmi a python da principiante praticamente assoluto. Una volta appresi i concetti base che già conoscevo relativamente ad altri linguaggi di programmazione, quando si è trattato di approfondire le cose e di impararne di nuove e più complicate, le mie motivazioni non erano abbastanza forti ed alla fine ho abbandonato i miei buoni propositi mollando il tutto.
Ora ci sto riprovando ma questa volta per evitare di commettere lo stesso stupido errore mi sono posto una serie di obbiettivi (programmi da realizzare) alcuni abbastanza semplici, altri sicuramente più complessi. Spero che questo mi serva da motivazione e mi permetta di tenere duro anche quando sbatterò la testa ripetutamente su cose che mi risulteranno incomprensibili   :|

Il succo del discorso
Il principale progetto che prima o poi vorrei riuscire a realizzare sarebbe quello di creare un programma che, dato un insieme di elementi di peso diverso, collegati tra loro in un certo modo, specificando un certo sottoinsieme, mi restituisca tutti i possibili elementi che hanno il "peso" specificato, rispettando l'ordine di partenza. Ad esempio: ponendo che io dia in imput una struttura di questo tipo e specificando che voglio tutti i sottoinsiemi di peso "16" che però mantengano la "struttura di partenza", lui dovrebbe restituirmi questi risultati:

INPUT


OUTPUT


Questo naturalmente è solo un esempio, il tipo di arrangiamento può essere diverso come anche il peso di ogni punto.
Ora, essendo un supernabbo una cosa di questo tipo suppongo che sia non impossibile ma abbastanza complicata da realizzare e di certo non sarà alla mia portata subito. Come ho detto ho altre idee più semplici da realizzare "lungo la via dell'apprendimento" ma la domanda che voglio porvi è: quali sono gli strumenti di cui dovrei avere una buona conoscenza per riuscire a creare un programma di questo tipo? In poche parole, una volta imparate e consolidate le "basi" su cosa dovrei concentrarmi?
É un progetto effettivamente molto complesso come credo oppure è solo il mio essere nabbissimo a renderlo tale?

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Re: Consigli per progetto
« Risposta #1 il: Dicembre 30, 2015, 09:03 »
Io consiglierei di cominciare a mostrare il codice che hai sviluppato e gli errori che ti da.
Da quel punto si potrà dare delle indicazioni a migliorare.

Mi pare una SdG

Offline Max74

  • python neanderthalensis
  • ****
  • Post: 383
  • Punti reputazione: 0
    • Mostra profilo
Re: Consigli per progetto
« Risposta #2 il: Dicembre 30, 2015, 12:30 »

É un progetto effettivamente molto complesso come credo oppure è solo il mio essere nabbissimo a renderlo tale?

Complesso? Abbastanza, dipende da molti fattori. Di certo abbozzare qualcosa di funzionante è complicato, ma non così tanto. A patto di avere una buona conoscenza. Renderlo efficiente invece lo è molto di più.
Qualche indicazione molto approssimativa su cosa studiare?
Innanzitutto quello è un grafo connesso e se googli trovi ogni riferimento matematico e di programmazione relativi ai grafi, a come si visitano, ecc.
Studia gli alberi e come si attraversano in modo efficiente.
Dal punto di vista concettuale anche vedere come è stato risolto il problema delle otto regine ti può aiutare.

Ora, però, mi viene una curiosità. In genere chi si tuffa nello studio di un linguaggio si pone obiettivi concreti. Ciò che invece ti proponi tu invece è un problema astratto, troppo astratto per non far pensare che dietro ci sia qualcos'altro, tipo un progetto molto concreto che per qualche oscuro motivo deve rimanere segretissimo, ovvero potrebbe essere un esercizio che qualcun altro ti ha dato da fare.

Offline eciap

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Re: Consigli per progetto
« Risposta #3 il: Dicembre 30, 2015, 18:54 »
Rispondo con ordine:

Mi pare una SdG

Boh, forse hai ragione, non lo so. Il mio problema è sempre stato che non sono in grado di imparare cose giusto per il gusto di saperle. All'università ho sempre avuto problemi per questo motivo ed invece, ora che sono un dottorando è una vera pacchia. Devo studiare le cose perchè le voglio mettere in pratica e questo mi spinge a farlo velocemente ed al meglio. Sto cercando di fare la stessa cosa con l'apprendimento di python. Tanto per fare un esempio vorrei creare un'applicazione che mi funga da timer. Potrà sembrare una cosa stupida ma devo fare degli esperimenti di laboratorio estremamente complicati dal punto di vista temporale ed una cosa di questo tipo mi salverebbe un sacco di errori stupidi che a volte mi fanno perdere giornate di lavoro (senza contare il costo dei materiali). So creare un'interfaccia grafica? No ma so come la voglio e quando arriverò a studiare le interfacce grafiche sarò motivato a farlo perchè ho un obbiettivo per sfruttarle ^^
Quello che ho riportato nel primo post è per adesso l'obbiettivo più complesso che mi sono promesso di raggiungere e credo che senza di quello non avrei la motivazione necessaria per investire del tempo nell'apprendere cose sempre più complesse.

Ora, però, mi viene una curiosità. In genere chi si tuffa nello studio di un linguaggio si pone obiettivi concreti. Ciò che invece ti proponi tu invece è un problema astratto, troppo astratto per non far pensare che dietro ci sia qualcos'altro, tipo un progetto molto concreto che per qualche oscuro motivo deve rimanere segretissimo, ovvero potrebbe essere un esercizio che qualcun altro ti ha dato da fare.

Innanzi tutto ti ringrazio davvero per i suggerimenti che mi hai dato.
In realtà non c'è niente di misterioso ed ho esposto la cosa nel modo più generico possibile perchè fosse comprensibile. Come per il discorso del timer, anche questo mi servirebbe per risolvere un problema di laboratorio. La cosa è abbastanza articolata ma detto in modo semplice, il programma dovrebbe prendere in input una struttura molecolare (parlo di roba piccola eh, non proteine), ne calcola il peso molecolare ed una volta inserito un peso molecolare minore mi restituisce tutte le parti di quella molecola che hanno il peso da me indicato. Al momendo mi trovo a dover fare tutto questo a mano ed è una gran rottura di *****. Esistono delle suite per la chimica sintetica che tra le miliardi di funzioni hanno anche qualcosa del genere ma sono software che costano uno sproposito e che non userei praticamente per fare altro quindi sarebbe una spesa inutile.

Offline Claudio_F

  • python sapiens sapiens
  • ******
  • Post: 1.157
  • Punti reputazione: 2
    • Mostra profilo
Re: Consigli per progetto
« Risposta #4 il: Dicembre 30, 2015, 18:57 »
É un progetto effettivamente molto complesso come credo oppure è solo il mio essere nabbissimo a renderlo tale?

Ci sono almeno tre aspetti, uno è il linguaggio in se stesso (sintassi, semantica), uno la modellizzazione di qualcosa usando i tipi e le strutture dati disponibili, e il terzo l'algoritmo necessario per risolvere un certo problema. Le tre cose, seppur legate nell'aspetto pratico finale, sono macroargomenti che richiederebbero un intero corso ciascuno.

A me il compito descritto, cioè realizzare un "algoritmo esplorativo" adatto sembrava difficile, ero curioso di leggere qualche altro parere, in ogni caso non mi sembra rientri nei problemi banali (indipendentemente dalla buona conoscenza o meno del linguaggio).

Ciò che appare banale al nostro pensiero può non esserlo affatto, la mente usa euristiche subsimboliche evolutesi in migliaia di anni per interagire con un mondo fisico estremamente vario e mutevole, e racchiudere tutto ciò in un insieme di regole formali limitate è altrettanto non banale... insomma, se chiedessi quali passi elementari compie la tua mente per riconoscere i pattern desiderati che mi diresti? E per passi elementari intendo "operazioni" di confronto e decisione meccaniche prive di "consapevolezza globale".

Siccome so che studiare un manuale quasi come una lezione di storia imparata a memoria, senza uno scopo/motivazione precisi, o senza micro-scopi / micro-soddisfazioni intermedi, è pesantissimo (anche se potrebbe essere più veloce), personalmente porterei avanti tutti tre gli aspetti, tanto le lacune e le cose da approfondire diventano subito evidenti.