Per iniziare informatica

Qui si parla di libri, film, fumetti, documentari, software di argomento matematico o scientifico.
Carlein
Messaggi: 315
Iscritto il: 26 nov 2007, 18:16
Località: Napoli

Per iniziare informatica

Messaggio da Carlein »

Ho letto molte cose sugli obbiettivi e gli sviluppi di questa scienza e mi interessa da morire:ma non ho alcuna cognizione tecnica;chi mi consiglia un buon modo per iniziare ad approcciarla in modo efficace?ovvero che testi o dispense internet mi consigliate per farmi una buona preparazione di base?
Ciao :D
Lo stolto è colui che dice quello che sa.Il saggio è colui che sa quello che dice.
"And then one day you find,ten years have got behind you,no one told when to run,you missed the starting gun"
alienone
Messaggi: 7
Iscritto il: 16 mar 2008, 10:10

Messaggio da alienone »

Io ti consiglio di imparare prima di tutto un linguaggio di programmazione...
Tibor Gallai
Messaggi: 1776
Iscritto il: 17 nov 2007, 19:12

Messaggio da Tibor Gallai »

Sì, impara a programmare in assembler, e smanetta con linux.
Come libro, ci sarebbe il Cormen, Leiserson, Rivest, che non ho mai letto ma sembra essere la bibbia dell'algoritmica, e il libro preferito da quelli che fanno le oli-info.
Lo so anch'io che l'informatica non è l'algoritmica, ma comunque credo sia un buon punto di partenza.
Avatar utente
pa
Messaggi: 81
Iscritto il: 14 feb 2008, 16:14
Località: Genova

Messaggio da pa »

assembler? :? almeno C...
paolo
fph
Site Admin
Messaggi: 3956
Iscritto il: 01 gen 1970, 01:00
Località: in giro
Contatta:

Messaggio da fph »

Spesso persone diverse intendono cose diverse per "informatica"... Puoi spiegarti un po' meglio su cosa ti interessa? prepararti per le olimpiadi di informatica e gare simili, imparare a programmare per hobby, lavoro o esame, far andare più veloce il computer che hai davanti... ?
--federico
[tex]\frac1{\sqrt2}\bigl(\left|\text{loves me}\right\rangle+\left|\text{loves me not}\right\rangle\bigr)[/tex]
Carlein
Messaggi: 315
Iscritto il: 26 nov 2007, 18:16
Località: Napoli

Messaggio da Carlein »

@fph A me interessa imparare a programmare essenzialmente per curiosità: forse vi sembrerà sciocco, ma sono un forte appassionato di intelligenza artificiale da quando ho letto un libro di un pionere dell'informatica ,Minsky, circa il problema di programmare un sistema automatico che possa avere un comportamento il più possibile approssimato alla flessibilità dell'intelligenza, ovvero lo studio di come l'interazione di parti automatiche possa creare un sistema che perda le caratteristiche di automaticità delle singole parti, e dunque studiare il cervello come un sistema informatico(Minsky definisce il cervello un computer di carne).Dunque ho pensato che iniziare a programmare potesse essere il modo migliore per pensare a questi problemi in maniera meno vaga.....anche perchè sto per finire il liceo e dovrei fare presto a trasformsare ste fantasie in studio....ora posso rivolgermi @alienone e Tibor: per iniziare a smanettare con quei programmi come si fa?basta iniziare a leggere uno di quei libri che dice Tibor?oppure bisogna iniziare direttamente dal computer?perchè in questo caso avrete capito che io non so nemmeno da dove iniziare...seconda domanda: secondo te quei libri si trovano su internet?..grazie e buona pasqua :D
Lo stolto è colui che dice quello che sa.Il saggio è colui che sa quello che dice.
"And then one day you find,ten years have got behind you,no one told when to run,you missed the starting gun"
Startrek
Messaggi: 120
Iscritto il: 18 lug 2007, 22:18

Messaggio da Startrek »

Ciao
Ti sconsiglio assolutamente l'Assembly per cominciare: ne potresti rimanere scioccata e non capirne le potenzialità (che poi sono molto relative e giusto per certi scopi).
Ti consiglio, invece, di cominciare ad imparare il linguaggio C: abbastanza semplice (rispetto all'Assembly) ma abbastanza generale per fornirti buone basi. Infatti, piano piano capirai che studiare il C è importante non tanto per imparare il C ma per cominciare a capire la logica della programmazione: l'importante, infatti, è trovare l'algoritmo, il procedimento per risolvere un problema. Tradurre poi questo algoritmo in un linguaggio di programmazione è relativamente semplice (dipende sempre dal tuo grado di esperienza). Studiare il C, quindi, ti dovrebbe servire per permetterti di riuscire ad imparare poi qualsiasi altro linguaggio senza troppe difficoltà in quanto, alla fine, cambiano solo le parole chive e la sintassi ma la logica resta la stessa.
Nel frattempo, dato che ti interessi anche di intelligenza artificiale, dovresti comciare a capire come è strutturato un computer, almeno nelle sue parti principali. Dopo potrai cominciare a pensare all'Assembly ed a Linux (se cominci ad interessarti a Linux prevedi di buttarci molto tempo se vuoi ottenere dei risultati seri, sempre se pensi che ne valga la pena).
Dopo il C, potresti passare alla programmazione ad oggetti (C++ e Java) e, nel frattempo, al web (almeno per sapere di cosa si tratta): HTML, CSS, MYSQL, PHP.
Quando avrai una buona conoscenza del C e delle principali strutture dati, potrai cominciare anche ad interssarti agli algoritmi ed ai problemi delle Olimpiadi dell'Informatica.
Le guide, almeno all'inizio, le puoi benissimo trovare su Internet cercando con Google: in tal modo potrai capire se un argomento ti interessa senza buttare troppi soldi in libri che poi nemmeno leggeresti. Così potrai avere un'infarinata di un po' di tutto e comprare dei libri per approfondire gli argomenti che veramente ti interessano.
Studiare l'Assembly è un'esperienza molto formativa ma penso che tu la possa lasciare come ultima del percorso che ti ho suggerito.
Quindi:
  1. C e principali strutture dati
  2. Struttura e funzionamento del computer
  3. Programmazione ad oggetti: C++, JAVA.
  4. Web, Assembly o quello che vorrai.
Chiedi pure se hai dubbi.
Ciao,

Startrek

P.S. 1. Puoi trovare gratuitamente e legalmente su Internet anche gli strumenti per programmare.
P.S. 2. Buona Pasqua a tutti! :D
Carlein
Messaggi: 315
Iscritto il: 26 nov 2007, 18:16
Località: Napoli

Messaggio da Carlein »

Ti ringrazio molto Startrek per il programma di studi che mi hai fatto: veramente esauriente...penso che a questo punto metterò anche questa carne a cuocere nel barbecue di quest ultimo anno perchè mi sa che dopo il cazzeggio tra una scienza e l'altra è un lusso che purtroppo non ci si potrà più permettere tanto. :D Grazie mille ancora...
Ciao!
p.s: tanto per chiarire ed evitare eventuali ambiguità:il genere dell'aggettivo della tua prima frase è sbagliato... :lol:
Lo stolto è colui che dice quello che sa.Il saggio è colui che sa quello che dice.
"And then one day you find,ten years have got behind you,no one told when to run,you missed the starting gun"
Avatar utente
dimpim
Messaggi: 300
Iscritto il: 01 gen 1970, 01:00

Messaggio da dimpim »

Da quel che ho capito ti interessa l'intelligenza artificiale: imparare un linguaggio di programmazione è solo il primo passo, e se non hai avuto altre esperienze in passato richiederà un po' di tempo. Dopodiché dovrai entrare nello specifico dell'argomento, procurandoti qualche libro o dispensa di reti neurali...
Carlein
Messaggi: 315
Iscritto il: 26 nov 2007, 18:16
Località: Napoli

Messaggio da Carlein »

si me l'aveva consigliato pure un'amico del forum: e mi ha passato alcune dispense universitarie, però usavano un botto di matematica universitaria,mi pare almeno Analisi 2(però proprio perchè non conosco quegli argomenti non lo posso dire con certezza!)...e comunque mi è stato detto che a matematica ad esempio reti neurali si fa al 3 anno,applicando un bel pò di roba degli anni precedenti.Me lo confermi oppure basta avere solo qualche piccola conoscenza di matematica più avanzata e poi il resto è leggibile? perchè io quest'estate oltre alla preparazione standard ai test volevo fare qualche approfondimento di matematica superiore e se quello mi potesse bastare per iniziare a leggere qualcosa già all'inizio dell'anno prossimo,sarebbe molto bello.Infatti la mia idea è di fare matematica per i prossimi 3 anni, però tenendo parallelamente sempre un'occhio fisso su questi argomenti,per avere anche questa strada disponibile alla fine del 3 anno: che tu sappia l'eventuale passaggio dopo 3 anni di matematica a questa branca scientifica può essere particolarmente traumatico,oppure è una cosa alquanto naturale?Perchè vorrei evitare di dover applicare in pieno il proverbio che ogni scelta è una rinuncia!
Lo stolto è colui che dice quello che sa.Il saggio è colui che sa quello che dice.
"And then one day you find,ten years have got behind you,no one told when to run,you missed the starting gun"
Tibor Gallai
Messaggi: 1776
Iscritto il: 17 nov 2007, 19:12

Messaggio da Tibor Gallai »

Per l'AI hai provato il Prolog?
Avatar utente
dimpim
Messaggi: 300
Iscritto il: 01 gen 1970, 01:00

Messaggio da dimpim »

Carlein ha scritto:che tu sappia l'eventuale passaggio dopo 3 anni di matematica a questa branca scientifica può essere particolarmente traumatico,oppure è una cosa alquanto naturale?
Sinceramente non sono un esperto del settore, ma un appassionato come te che quando ha del tempo libero cerca di documentarsi, quindi non so dirti con certezza quali conoscenze matematiche siano richieste. Da quel che ho visto si basa tutto sul teorema di Bayes: un veloce corso di probabilità è sufficiente per capire di cosa si sta parlando (oppure, se ne sai già quanto basta, gli articoli di Wikipedia al riguardo dovrebbero esserti utili). Fino ad ora concetti di Analisi 2 non ne ho visti.

Per quanto riguarda il passaggio da matematica a IA posso solo dirti che molti grandi ricercatori del settore sono in realtà matematici, quindi non credo che il collegamento tra le due discipline sia una cosa innaturale, anzi.
marcuz
Messaggi: 70
Iscritto il: 26 feb 2007, 21:54
Località: Pisa
Contatta:

Messaggio da marcuz »

Ti consiglio innanzitutto di imparare a programmare. Secondo me "C corso completo di programmazione" della coppia Deitel (editore Apogeo) è un buon libro da cui iniziare, dal momento che si rivolge a chi non ha mai programmato.
Nessun uomo è un'isola (J. Donne)
fph
Site Admin
Messaggi: 3956
Iscritto il: 01 gen 1970, 01:00
Località: in giro
Contatta:

Messaggio da fph »

dimpim ha scritto:Da quel che ho visto si basa tutto sul teorema di Bayes: un veloce corso di probabilità è sufficiente per capire di cosa si sta parlando (oppure, se ne sai già quanto basta, gli articoli di Wikipedia al riguardo dovrebbero esserti utili). Fino ad ora concetti di Analisi 2 non ne ho visti.

Per quanto riguarda il passaggio da matematica a IA posso solo dirti che molti grandi ricercatori del settore sono in realtà matematici, quindi non credo che il collegamento tra le due discipline sia una cosa innaturale, anzi.
Io ho sfiorato l'argomento "machine learning" in un corso (principalmente support vector machines, che sono una mezza alternativa alle reti neurali), e devo dire che qualche corso di matematica di base (due annetti di analisi, uno di geometria) era necessario per capir qualcosa del "setting". Per quel poco che ho visto anche per le reti neurali c'è un po' di analisi dietro.
Forse però dipende dal "taglio" con cui ho visto presentate le cose -- va detto che a informatica prima o poi queste cose si fanno, e il 90% degli informatici che ho incontrato quando sente le parole "spazio vettoriale" si spaventa, quindi dev'esserci modo di capirci qualcosa anche senza. :D

Del resto anche la probabilità a volerla sistemare per bene si basa tutta su analisi 2 e oltre, però per fare la maggior parte delle cose sul discreto basta un'impostazione un po' alla buona.
--federico
[tex]\frac1{\sqrt2}\bigl(\left|\text{loves me}\right\rangle+\left|\text{loves me not}\right\rangle\bigr)[/tex]
Kripke
Messaggi: 4
Iscritto il: 05 mag 2008, 09:39
Località: Prato

Messaggio da Kripke »

Come informatico praticante (da oltre venti anni), ti posso consigliare solo di approfondire innanzi tutto l'approccio scientifico al calcolatore e le sue peculiarità matematiche.

I linguaggi di programmazione vanno e vengono con le mode: portando volutamente il concetto al limite, in casi come il tuo si studiano quasi unicamente per cultura generale. Certo non fa male conoscerli. ma guai ad invaghirsi di questa o quella "novità".

Al momento, e per molti anni a venire, non rientra nelle tue competenze creare un interprete o un compilatore, o ideare un linguaggio del tutto nuovo. Molto meglio avere da subito un'idea generale della complessità, delle semantiche (almeno quella operazionale, all'inizio) e delle basi comuni ai linguaggi di programmazione.

Inoltre i linguaggi specifici per la IA, ed in generale i paradigmi "alternativi" (funzionale, logico, dichiarativo, constrained..) sono di "altissimo livello", dove questa espressione indica il più elevato grado di indipendenza del linguaggio dall'architettura della macchina sottesa, e nel contempo la massima vicinanza al dominio del problema ed linguaggio naturale (sebbene questa definizione possa risultare assai discutibile).

Per pura curiosità, i linguaggi di più basso livello sono il linguaggio macchina e l'assembly ad esso correlato, inscindibili dal processore o sottofamiglia di processori sui quali sono implementati. Segue a ruota il linguaggio C, una sorta di macroassemblatore che si lascia utilizzare come tale per i compiti di più "basso livello" (ovvero, più vicini all'hardware ed al sistema), senza eccessive penalità prestazionali. Tutti gli altri sono classificati come HLL, High Level Languages.

Come logico e epistemologo, è peraltro mio dovere avvertirti che Minsky è superato ampiamente e costituisce un capitolo chiuso nella IA, assieme a Newell, Simon, McCarthy, Fodor, Putnam e vari portatori d'acqua. Il loro approccio simbolico non ha prodotto molto più che avanzato engineering (e qualche malalingua aggiunge "stupidità artificiale"): backtrace, simulated annealing, tunneling, e molte altre tecniche assodate nella IT ma che i giovani oggi neppure sanno più in che contesto siano nate. Questo tipo di sapere è oggi condensato in tomi come il Russell-Norvig in due volumi: tuttavia, io stesso farei fatica a definirla IA, nel senso preciso di Turing, Church, Von Neumann.

Oggi il filone maggiormente promettente fa capo principalmente alle idee di Hopfield e Smolensky, cha hanno profonde radici storiche nella sistemica di Von Bertalanffy ed in alcuni spunti dello stesso geniale Von Neumann - forse l'ultimo grande genio matematico universale, e certamente l'unico in grado di superare sé stesso in più occasioni.
fph ha scritto:Per quel poco che ho visto anche per le reti neurali c'è un po' di analisi dietro.
Forse però dipende dal "taglio" con cui ho visto presentate le cose -- va detto che a informatica prima o poi queste cose si fanno, e il 90% degli informatici che ho incontrato quando sente le parole "spazio vettoriale" si spaventa, quindi dev'esserci modo di capirci qualcosa anche senza. :D

Del resto anche la probabilità a volerla sistemare per bene si basa tutta su analisi 2 e oltre, però per fare la maggior parte delle cose sul discreto basta un'impostazione un po' alla buona.
Ti ringrazio moltissimo per aver sollevato un argomento di capitale importanza, attorno al quale sembra esserci ancora un tabu.

La differenza tra la matematica "classica" pura e quella verticalizzazione che Knuth chiama "Concrete Mathematics" è molto più profonda e consistente di un paio di esami o di una risistemazione della probabilità in termini di piccionaia. Con voluta esagerazione, si può parlare di due scienze formali diverse, come fa in certi punti Chaitin.

Alcuni carissimi amici, fisici teorici, pensano di glissare sull'argomento dicendo che per "leggere" la natura si usano al bisogno sia modelli continui che discreti, secondo la scala, le circostanze e varie condizioni al contorno. In questo modo li considerano almeno equipotenti, il che é già un passo avanti, ma non è tutto.
C'è invece dietro una profondissima questione epistemologica e gnoseologica: l'approccio discreto ha la medesima dignità di quello classico, ma il suo utilizzo richiede un cambio di paradigma radicale, oltre ad una diversa presentazione della materia (effettuabile senza perdita di rigore, da un punto di vista logico) e allo sviluppo di diverse facoltà mentali ed abilità di calcolo !

Gian-Carlo Rota, indimenticato Maestro, è stato contemporaneamente il primo e il più grande interprete di questo approccio, che possiamo a buon diritto chiamare un nuovo modo di fare matematica, il quale peraltro coglie anche contributi essenziali dell'intuizionismo di Brouwer, Heyting e Kleene - spodestando dopo un buon mezzo secolo di assoluta preponderanza didattica il connubio di iperformalismo bourbakista e analisi continua.

Francamente qui non si tratta solo di sostenere la validità di dimostrazioni computazionali come quella del 4CP contro le obiezioni dei nostri maestri ormai ottuagenari e dei loro maestri che hanno stretto la mano a Peano: è un vero e proprio modo nuovo, diverso e fecondo di vedere e di fare la Matematica.

Naturalmente, come esistono talenti in grado di eccellere allo stesso modo in (ad esempio) topologia algebrica e teoria additiva del numero, così possiamo coltivare la capacità di fare matematica sia in modo classico che discreto, con enorme influenza sulle applicazioni: si pensi solo alla teoria dei sistemi ad eventi discreti ed al controllo logico che ne deriva, enormemente diverso dalla teoria classica del controllo ottimo. Non si deve però sottovalutare il fatto che si tratta, in astratto, di due figure diverse di matematici, non sovrapponibili.

Ad esempio, nel mio caso (esagero un po' per sorriderne insieme, ma non troppo) quando vedo una equazione differenziale o un limite inizio a borbottare anatemi ed esorcismi, il calcolo variazionale mi fa venire l'orticaria, ma sono perfettamente a mio agio con le logiche temporali, il lambda calcolo, l'algebra degli insiemi finiti e le gerarchie di automi FSM... :D
"Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk." (Leopold Kronecker)
Rispondi