Quanto è utile/interessante questa discussione:
Autore |
Discussione |
|
Giffredo
Nuovo Arrivato
92 Messaggi |
Inserito il - 18 marzo 2014 : 23:33:10
|
Ciao, sono un ragazzo che ormai ha finito la specialistica in Genomica funzionale. Mi servirebbe per il mio percorso professionale imparare da prima a programmare e poi a "scrivere" nuovi algoritmi. Che corsi della facoltà di informatica mi servirebbero? Potrei imparare qualcosa anche da autodidatta? come? premetto che le mie competenze si limitano a saper usare l'OS Unix e i vari tool bioinformatici usati per l'analisi dei risultati provenienti da new generation sequencing.
|
|
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
|
Giffredo
Nuovo Arrivato
92 Messaggi |
Inserito il - 19 marzo 2014 : 13:33:17
|
Ho letto quel libro di cui hai messo il link. Mah.. l'ho trovato leggero, autore simpatico, buono per una introduzione ma sembra più un manuale che un libro su cui imparare la teoria. Mi interesserebbe conoscere la teoria che è dietro allo scrivere un programma. Come il Karnel (immagino sia lui) riesce a trasformare un testo in un programma? Forse non è necessario, non lo so, mi sembra limitante però studiare comandi di un linguaggio e basta non credo sia questo saper programmare. Se si vuol fare un paragone con il lavoro del biologo in lab; programmare soltanto inserendo i giusti comandi sarebbe come seguire un protocollo per far correre un DNA su un gel, ma è il sapere cosa sta accadendo che ti permette di risolvere un eventuale problema.
Forse sbaglio e dietro alla programmazione magari non c'è un granché di teoria.. |
|
|
domi84
Moderatore
Città: Glasgow
1724 Messaggi |
Inserito il - 20 marzo 2014 : 01:15:48
|
(Non so se sono il più adatto a risponderti, ma ci provo) Ti segnalavo quel testo perchè mi sembrava di aver capito che stessi proprio a zero. Riguardo alla tua domanda, ti invito a leggere questo post: https://plus.google.com/+JeanBaptisteQueru/posts/dfydM2Cnepe Come puoi capire ci sono diversi livelli di "profondità" della conoscenza di come funziona un software. Usare tutte le funzionalità di un linguaggio di programmazione per scrivere un programma che risolva in modo efficiente un determinato problema può richiede anni di studio continuativo (ovviamente dipende dal problema, e quelli di natura biologica di solito sono complessi). Ovvio che se sei interessato a scrivere una parte di un sistema operativo, un nuovo linguaggio di programmazione o un firmware la situazione si complica e le tue conoscenze devono scendere ad una "profondità" maggiore. Quindi, per come la vedo io: di cosa hai bisogno? Devi creare un programma che risolva un determinato problema (biologico)? Puoi fiondarti su Python e Biopython: hai un sacco di strumenti e tutti gli strumenti per crearti nuovi strumenti. Vuoi creare un sistema operativo, un pezzo hardware che si interfacci con un pc o creare un nuovo linguaggio di programmazione... ...non ho la più pallida idea di cosa ti serve, non sono sceso a questo livello. Suppongo ci siano dei linguaggi di programmazione a basso livello che si usano. Collegandomi al tuo paragone, se vuoi semplicemente separare due frammenti di lunghezza diversa basta che fai una elettroforesi e che sai esattamente come funziona una elettroforesi, non c'è bisogno di sapere se il DNA assume una forma A, B o Z... |
Il mio blog: http://domi84.blogspot.com/ Le foto che ho scattato... |
|
|
Giffredo
Nuovo Arrivato
92 Messaggi |
Inserito il - 20 marzo 2014 : 10:52:04
|
Ok, ho capito, ci sono tanti livelli di profondità, ma sinceramente non so a che punto ha senso per me arrivare (e soprattutto dove potrei arrivare da autodidatta). Adesso in realtà mi basterebbe restare sulla superficie.. dovrei scrivere uno script che mi permetta di convertire e contare dei determinati caratteri. Nel pratico: ho un file mpileup il cui output è una tabella dove il simbolo "." sta per una base letta sul filamento forward e un "," nel filamento reverse. Vorrei che il io script possa contare tutti i "." darmi direttamente il numero e poi fare lo stesso con le ",". In più vorrei che mi traducesse i simboli provenienti dal codice ASCII che dovrebberò rappresentare i vari punteggi di qualità. Mi hanno consigliato di usare Perl e così farò (di mio avrei usato python perché era il solo che conoscessi un minimo.. ma mi dicono che sia più semplice con perl) Questo immagino sia un lavoro livello base; quello che mi piacerebbe sarebbe riuscire ad essere in grado di affrontare problemi più complessi anche se ancora non so quali potrebbero essere. Credo che potrei ottenere migliori risultati e in meno tempo creandomi script personali invece di mescolare tools già esistenti… o magari no.. dovrei avere un idea del potenziale di un linguaggio di programmazione e riuscire a stimare se un qualcosa è troppo complesso da attuare o no. Con la biologia molecolare riesco ad avere una stima del livello di complessità di una strategia, potendo dare delle buone motivazioni sul perché attuarla o in caso perché sarebbe meglio cambiare strada. Vorrei saper fare lo stesso quando approccio un problema di bioinformatica, è per questo che cerco la teoria d'altronde è grazie alla teoria e all'esperienza accumulata in biologia molecolare che riesco ad avere un'idea della fattibilità di un protocollo anche senza averlo mai eseguito prima.
P.S. mi pare di notare che tu sia un fan di python credi che possa essere più d'aiuto per problemi complessi imparare in profondità un solo linguaggio di programmazione o impararne di più ma restando per ognuno ad un livello superficiale? |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 20 marzo 2014 : 21:24:18
|
Citazione: Ok, ho capito, ci sono tanti livelli di profondità, ma sinceramente non so a che punto ha senso per me arrivare (e soprattutto dove potrei arrivare da autodidatta).
Io tanto tanto tempo fa (al liceo) imparai l'assembly da autodidatta... decisamente possibile se hai tempo da passarci su. Certo, dubito che ti serva arrivare a quei livelli per quello che vuoi fare tu.
Sicuramente per fare cose come l'esempio che hai scritto qualsiasi linguaggio va bene. Perl è ottimo per l'analisi di testi, ma puoi fare le stesse cose usando python (ma l'esempio che hai scritto si può fare tranquillamente anche in bash). Mi permetto di contraddire chi ti ha detto che è più semplice con perl. E' più semplice con perl a patto di saper programmare in perl.
Ricorda che le basi della programmazione sono indipendenti dal linguaggio. Un ciclo for, una scelta condizionale, una funzione gira e rigira sono le stesse in tutti i linguaggi, anche se la sintassi è diversa. Sinceramente una volta che hai capito come funziona un linguaggio, li hai capiti tutti (vabbè esagero, però diciamo che imparare un secondo linguaggio è più semplice che imparare il primo)
Certo, python ha il vantaggio di andare "dritto al punto". Lo stesso programma scritto in C++ sarà molto più lungo, ma avrà, ad es., il pregio di essere più veloce.
Personalmente eviterò di consigliarti o di sconsigliarti dei linguaggi (anche se ho i miei preferiti e quelli che non sopporto!). Quello che ti consiglio è: leggiti velocemente qualche tutorial di base in vari linguaggi e trova quello che ti piace di più a pelle. A questo punto trovati un problema semplice e prova a risolverlo in quel linguaggio. Ora cerca di rendere il problema un po' più complesso. Passa ad un nuovo problema e dopo un po' ritorna al codice del primo. Ci sono cose che puoi migliorare?
Ripeti il tutto in un altro linguaggio. Cerca di capire i punti forti dei vari linguaggi. Provali e troverai il tuo preferito, sapendo però anche utilizzare gli altri, anche se magari non in maniera ottimale.
Scrivi codice, scrivi codice e scrivi codice. Puoi studiare tutta la teoria del mondo, ma se non ti "sporchi le mani" non imparerai mai a programmare.
Un bel sito che mostra gli stessi algoritmi scritti in vari linguaggi è Rosetta Code |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
Giffredo
Nuovo Arrivato
92 Messaggi |
Inserito il - 25 marzo 2014 : 15:56:16
|
Citazione: Io tanto tanto tempo fa (al liceo) imparai l'assembly da autodidatta
mi chiedo il perchè?(curiosità pura) Comunque sono d'accordo con te che non siano cose difficili e non hanno certo bisogno di entrare nel mondo della programmazione. Oggi ho scoperto Bio::Perl e son contento di sapere che praticamente ogni cosa che ho fatto fino ad ora avrei potuto usare Perl per ottenere gli stessi risultati..
Citazione: Scrivi codice, scrivi codice e scrivi codice. Puoi studiare tutta la teoria del mondo, ma se non ti "sporchi le mani" non imparerai mai a programmare.
Deduco quindi che per imparare e' più utile la pratica che la teoria.. bene allora ci provero'..
Magari qualcuno sa se esiste una specie di shell per Perl del tipo www.codeskulptor.org/#8206; che è per Python |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 26 marzo 2014 : 11:43:19
|
Citazione: mi chiedo il perchè?(curiosità pura)
Perchè stiamo parlando di computer con 1Mb di RAM su cui scrivere codice in assembly portava dei vantaggi notevoli in termini di velocità, soprattutto se volevi fare della grafica
E poi perchè (se sei un geek) fa molto fico e puoi improvvisarti hacker e disassemblare qualche piccolo software (per motivi puramente educativi ovviamente...). |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
serbring
Utente Junior
486 Messaggi |
Inserito il - 31 marzo 2014 : 01:32:05
|
Citazione: Messaggio inserito da chick80
Citazione: Ok, ho capito, ci sono tanti livelli di profondità, ma sinceramente non so a che punto ha senso per me arrivare (e soprattutto dove potrei arrivare da autodidatta).
Io tanto tanto tempo fa (al liceo) imparai l'assembly da autodidatta... decisamente possibile se hai tempo da passarci su. Certo, dubito che ti serva arrivare a quei livelli per quello che vuoi fare tu.
l'ho studiato anche io a scuola. Interessante, mi piaceva molto e dava soddisfazione fare anche piccole cose.
Secondo me se hai necessità di fare qualche calcolo matematico buttati su matlab octave. Hanno delle routine specifiche che in poche righe ti permettono di fare tante belle cose che con un altro linguaggio ad esempio C hai bisogno di fare cicli for annidati. In caso ti butti su questi dimenticati buona parte di quello che sai perchè usano una logica di programmazione leggermente differente dagli altri. |
|
|
|
Discussione |
|
|
|
Quanto è utile/interessante questa discussione:
MolecularLab.it |
© 2003-18 MolecularLab.it |
|
|
|