Ho appena finito la 3° itis informatica e anche quest'anno non ho imparato nulla.

(chiedo preventivamente scusa se questo non è il subreddit adatto)

Come si può capire dal titolo frequento un itis, indirizzo informatica, e mi sono accorto di non sapere (praticamente) nulla di programmazione. Mi chiedevo, quindi, se qualcuno potesse consigliarmi un qualche argomento fondamentale per cominciare a imparare qualcosa di effettivamente utile.

Posted Jun 7, 2015, 9:03 PM UTC

1013
pinusc•

Dalla domanda particolarmente aperta deduco che non sai esattamente cosa fare. In tal caso la cosa migliore è prendere un linguaggio semplice e con cui puoi fare quello che ti aggrada, e di impararlo bene. Poi passare a qualunque altro linguaggio sarà facilissimo.

Detto questo, ti consiglio fortemente di leggere Learn Python The Hard Way. Lo trovi gratuitamente (legalmente) online. Il suo pregio è che non solo ti insegna il Python, che è un linguaggio moderno e molto utilizzato, ma anche e soprattutto ti insegna a cercare materiale da te, a usare google come qualunque programmatore deve saper fare.

Ti troverai poi in condizioni di non sapere cosa farci, con le tue skill informatiche. Un eccellente esercizio (che io ho trovato, da sedicenne autodidatta, estremamente utile) è project euler. Ci sono circa 800 problemi di informatica risolvibili con l'algoritmica, che rappresentano una vera e propria sfida di programmazione e tentando di risolverli si impara davvero tanto. Per la teoria che c'è dietro, ti direi di leggere un testo di algoritmica,a sono perlopiù costosi e di difficile comprensione. Piuttosto un libro che sto trovando molto utile è "Mathematics for Computer science" del MIT, anche questo gratis in rete (linkerei ma sono da mobile ed è difficile)

Dopo aver imparato bene un linguaggio, ed esseri esercitato nella programmazione, impararne altri verrà naturale e saprai meglio su cosa concentrarti, magari web o game development. La cosa importante è imparare imparare imparare.

P.S. anche se non fosse il subreddit giusto (ma credo che lo sia) non è male vederci un po' di attività. Anyway, forse per consigli da persone con più esperienza ti conviene chiedere in un subreddit straniero. Su r/learnprogramming ti sapranno aiutare meglio di me

P.P.S. La migliore risorsa di sempre per la programmazione resta StackOverflow. È un sito di domande e risposte di programmazione, con una community attivissima e nel quale trovi di tutto, e se non trovi basta chiedere.

6
_kanaanOP•

Perfetto, mi hai fornito un casino di roba che sembra utile e appena possibile la proverò, grazie.

2
grigio•

La domanda é un po' troppo aperta, in generale posso consigliarti di imparare l'inglese, gli algoritmi e seguirti i video screencast che ci sono su youtube. Poi dipende effettivamente quello che vuoi imparare. Se ti interessa il web posso consigliarti javascript, meteorjs, reactjs, se invece ti interessano cose più a basso livello il linguaggio rust (rustlang)

2
_kanaanOP•

Per quanto riguarda l'inglese credo di essere già a buon punto, per il resto apprezzo molto i consigli. La domanda è troppo generica e chiedo scusa, ma, purtroppo, non sono ancora convinto di cosa voglio imparare precisamente. Quel poco che ho visto dei linguaggi a basso livello mi ha incuriosito, ma credo che javascript e gli altri potrebbero essere più utili per trovare un lavoro in futuro (ma forse mi sbaglio)

1
[deleted]•

[deleted]

1
_kanaanOP•

Ho dato un'occhiata veloce e sembra interessante, grazie mille.

1
[deleted]•

[deleted]

1
[deleted]•

[deleted]

1
lucaunliked•

Avevo scritto una roba fatta bene ma visto che non sono capace a formattare ho cancellato tutto per sbaglio.

Se il corso del tuo itis è uguale a quello che ho fatto io, quest'anno hai fatto giusto qualche base tipo if - cicli - strutture dati. In quarta dovresti fare la programmazione ad oggetti (che è fondamentale se vuoi approcciarti a un linguaggio tipo Java che è ultra richiesto nel mondo del lavoro ora come ora) e in quinta dovresti fare i database (che è fondamentale per tipo tutto). Per cui se non vuoi bruciare le tappe, con le conoscenze che hai ora puoi o sbattere la testa contro il C (non tanto vendibile come lavoro ma assolutamente utile per l'esperienza di uno sviluppatore sw) oppure fare un po' di esperienza nel web design (il contrario di sopra più o meno). Dipende un po' da che strada vorrai prendere nel futuro!

1
_kanaanOP•

Ho fatto esattamente quello, quindi presumo che il corso sia uguale. In pratica io vorrei bruciare le tappe, quello che ho imparato negli ultimi 9 mesi l'avrei potuto imparare (credo) in un mesetto di studio da autodidatta e mi sembra di star perdendo solo tempo. Probabilmente approfondirò C per poi provare uno dei linguaggi che mi hanno suggerito gli altri. Grazie comunque per i consigli.

2
ceeph•

Anche io frequentai l'ITIS, indirizzo Informatica. Ad ottobre prenderò la Laurea in Informatica (triennale), per poi passare alla Magistrale in Computer Science.

Ricordo però che in terzo ci fecero fare una bella scorpacciata di C e soprattutto con i vari laboratori ci fecerò applicare molti algoritmi. Non studiandoli, per carità, ma avevamo le mani in pasta.

Io ti direi fondamentalmente che dipende da quello che vuoi fare. Per la programmazione un linguaggio di basso livello aiuta a capire come funzionano molte cose. A partire dal compilatore fino alla gestione della memoria ecc ecc, per questo C è largamente utilizzato. Poi passando a C++ e Java o C# ti ritroverai tutto molto più semplice e ti si apriranno le porte del paradiso.

Detto questo, un linguaggio vale l'altro. L'importante è capire l'approccio per progettazione ad oggetti e non, poi si tratta semplicemente di sintassi differente fino ad un certo livello. Poi ovvio che a livelli avanzati dovrai avere conoscenze approfondite di un determinato linguaggio, ma per ora questo non ti interessa.

Di linguaggi lì fuori da imparare ce ne sono quanti vuoi: Java, C (insieme a C++ e C#), JavaScript per il Web, Ruby o Python, PHP ecc ecc. Ognuno ha un suo scopo.

Se vuoi progettare software, allora la teoria è molto importante. Impara a conoscere gli algoritmi, più avanti avrai a che fare con la complessità, scegli un linguaggio e imparalo. Non dimenticare di andare a vederti le best practises o style-guide che siano. Imparare dei pattern corretti è meglio, così da evitare di doversi levare dei brutti vizi in futuro.

Per adesso ti consiglierei di divertirti e cercare di trovare quale ramo ti piace di più. L'informatica è più vasta di quello che pensi, quindi ti consiglio di spaziare più che puoi fino a trovare un qualcosa che ti appassioni e sviluppare poi quel ramo. In bocca al lupo!

1
_kanaanOP•

Grazie mille, guarderò la differenza tra i vari linguaggi che mi hai elencato vedendo quale mi attira di più e proverò ad impararne le basi.

1
la_patata•

Anch'io ho fatto l'itis e capisco la tua frustrazione. Sarò breve e andrò dritto al punto: crea crea e crea ancora. A mio avviso un bravo programmatore non è colui che sa tanto ma colui che impara in fretta e il modo migliore di allenarsi è uscire dal "comfort zone".

Fatti venire in mente dei progetti (semplici) che vorresti realizzare e impara quello che ti serve per realizzarli. E non ti frustrare se all'inizio fai fatica, è normale. Fatti coraggio e vai avanti ;)

1
profSisReti•

Mi addolora leggere il tuo post. Insegno laboratorio di sistemi operativi e reti presso un'ITIS (quest'anno avevo addirittura cinque terze) . Non mi sento di aggiungere altro materiale a quanto ti e' gia' stato proposto: molte delle risorse che ti hanno indicato qui sono per me fonti abituali di materiale. Nella speranza che tu non sia uno dei miei alunni, dico la mia: il ministero lascia parecchia libertà di scelta sugli argomenti da trattare durante l'anno: questo e' positivo, dato che l'informatica si evolve velocemente e il MIUR e' proverbialmente affetto da un'incurabile elefantiasi. Nel primo anno di autentica specializzazione (i programmi del nuovo biennio sono tuttora in una sorta di era di transizione) io ed i miei colleghi cerchiamo di insegnare le basi della programmazione, in particolare quest'anno ho trattato questi argomenti:

introduzione all'uso della shell

  • manipolazione dei files e navigazione nel file system
  • il manuale man
  • diagnostica (ps, top, who, w, last...)
  • permessi
  • editors ed altre utilities (grep, sed)
  • introduzione alle regex
  • esempi di compilatore, interprete e macchina virtuale (jvm)
  • installazione mediante pacchetti o partendo da sorgente
  • il ridirezionamento dei flussi e la concatenazione di comandi

il linguaggio C

  • le variabili: tipi di dato fondamentali, le costanti, il casting
  • le header: il precompilatore, il compilatore
  • i cicli e i test
  • i diagrammi della memoria, la simulazione
  • la formattazione dell'output
  • la generazione di numeri pseudo-casuali
  • le funzioni
  • tipologie di variabili in base alla visibilita' ed al ciclo di vita
  • il passaggio per referenza,i puntatori, i vettori, le stringhe
  • le enumerazioni, i record
  • i parametri del main
  • stesura di varie funzioni per la manipolazione delle stringhe
  • esempi di ricorsione

arduino

  • output digitale: i led
  • la macchina a stati e le variabili statiche: il semaforo
  • input digitale: il pulsante
  • l'input analogico: i potenziometri
  • l'uso della console seriale (I/O)
  • l'output analogico: onda PWM, il fotoresistore, il buzzer

assemblaggio di un calcolatore le macchine virtuali in emulazione e l'installazione di sistemi operativi

A questi argomenti i ragazzi possono aggiungere gli altri laboratori (informatica e tecnologie) durante i quali si impara a lavorare con visualstudio (c# console) e si studiano HTML, CSS e un poco di javascript.

Mi chiedo quindi quali siano invece gli argomenti che tu hai affrontato durante l'anno, per un confronto. Ne approfitto infine per chiedere a chi voglia dedicarmi un poco di tempo, una valutazione sui programmi che svolgiamo. Grazie

1
_kanaanOP•

Gli argomenti che ho affrontato sono quasi completamente diversi tranne per il programma di informatica, cercherò di fare un breve riassunto (chiedo scusa se è disordinato ma ho dovuto sfogliare tutti gli appunti di quest'anno e probabilmente ho dimenticato qualcosa) :

● Informatica:

teoria: algoritmi, linguaggi di programmazione, diagramma a blocchi e poi siamo passati a C (costanti, il casting, selezione/iterazione, funzioni, visibilità della variabile, array, stringhe e cominciato i record. Niente ricorsione, i parametri del main me li sono cercati da solo per curiosità. Precompilatore? Formattazione dell'output? Puntatori? Per i numeri random ci ha dato delle righe di codice senza spiegazione e le abbiamo imparate, fine. Per la manipolazione delle stringhe abbiamo visto 2 funzioni di string.h e basta);

laboratorio: programmi in C;

● Sistemi:

teoria: tipologie di computer, architettura del computer, CPU/memorie/bus, 8086,assembly e qualche istruzione, connessioni e cavi, fondamenti di networking, TCP/IP;

laboratorio: componenti del computer (ne abbiamo smontato uno), le basi di assembly, wireshark (letteralmente 2 istruzioni, un sacco di teoria);

● Tecnologie e progettazione di sistemi informatici e di telecomunicazioni:

teoria: la comunicazione, la codifica (codifica di huffman), segnale analogico/digitale, sistemi di numerazione posizionali, conversioni tra diverse basi, immagini/suoni/filmati, codici digitali pesati e non pesati, codifica dei numeri, numeri binari relativi, numeri reali in virgola mobile e abbiamo cominciato i sistemi operativi;

laboratorio: excel (why?) per circa 6 mesi, 1 mese di photofiltre (perché insegnare un classico Photoshop sarebbe troppo utile) e 2 lezioni di virtualbox;

● Telecomunicazioni: basi di elettronica;

P.S. Probabilmente il programma sarebbe anche accettabile ma nel mio caso sono presenti diversi fattori che mi impediscono di apprezzare quest'anno scolastico:

  • 3/4 della classe ha scelto questo indirizzo solo perché "è facile" e quindi non si impegna rallentando l'avanzamento del programma (infatti siamo molto indietro rispetto all'altra sezione);

  • personalmente ritengo i miei professori di informatica e tecnologie non preparati, non sanno spiegare, si limitano a leggere dal libro (buona parte degli argomenti riportati sopra gli abbiamo semplicemente letti senza aggiungere una spiegazione) e spesso ci riportano informazioni errate.

P.P.S. Sono stato un po' troppo duro nel titolo, ma ho la sensazione che in questi nove mesi avrei potuto imparare molto di più da autodidatta (cosa che verificherò nei prossimi 3 mesi).

P.P.P.S. scrivo male, amo le parentesi, perdonatemi.

1
[deleted]•

[deleted]

1
FlavioTroja•

Io ho visto persone laurearsi in ingegneria informatica e non sapere l'abc dell'informatica. Il modo migliore per allenarsi a programmare e' realizzare tanti flow-charts. I linguaggi di programmazione seguono le mode del momento. A te quello che serve e' capire come strutturare uno script...e questo non passera' mai di moda.

0