Newsgroup: it.lavoro.informatica
Titolo: Metodo di studio

Vorrei aprire una discussione sui motodi di 'autodidatta' e non..
come fate voi in genere per imparare/approfondire un linguaggio di
programmazione e/o un qualsiasi oggetto di studio informatico?
Per esempio per quanto riguarda i linguaggi mi trovo sempre in un
vicolo cieco.. molti di voi diranno sicuramente 'provare, provare,
provare..' ma provare cosa? io compro un libro, o vado nei siti,
imparo la sintassi, capisco qualche esempio.. e poi? cosa vi
inventate? cominciate a scrivere SW da zero? :-/ come si comincia un
approccio più 'professionale' ad un linguaggio?


Parlo di sviluppo software e parto dall'idea che uno sia completamente a 
zero:
1) Logica delle proposizioni e calcolo dei predicati. Molti diranno che 
non serve a niente, ma aiuta quando occorre costruire condizioni 
articolate (leggi di De Morgan, ecc.). Anche un po' di teoria degli 
insiemi e di vettori e matrici non guasta, ma non sono così necessari.
2) Algoritmi e strutture dati. Sono quegli algoritmi e quelle strutture 
dati che userai quasi in ogni caso, indipendentemente dal tipo di 
applicazione che scriverai (liste, sort, hash, ecc.).
3) Fondamentali di programmazione strutturata e/o programmazione ad 
oggetti. Sono tecniche che si applicano a qualsiasi linguaggio 
procedurale o ad oggetti. Fa bene saperle prima.
Quindi passi al linguaggio vero e proprio...
--
The Loop
http://laferitoia.blogspot.com

e fin qua ci siamo.. io leggendo queste cose mi metto quasi a ridere,
perchè son cose che ho letto e riletto :-)
ma dopo? diciamo che io leggendo sintassi ecc.. mi sembra tutto
facile, guardando un codice 'lungo' ci capisco poco :-)
mi manca il passo intermedio.. :-/

 inizialmente è basica l'esperienza nel linguaggio).
Giusto, anche se ogni tanto mi concedo di "giocare" un po con la curiosità 
:)

 approccio più 'professionale' ad un linguaggio?
Secondo me fare qualcosa con un senso compiuto, un progettino che ti
piace fare, anche se non ti serve a nulla, dall'inizio alla fine.

 programmazione e/o un qualsiasi oggetto di studio informatico?
Mi documento, o su internet o su un libro.
La butto facile ma non credo ci siano molte alternative.
Un linguaggio di programmazione da zero sono anni che non vedo la
necessità di studiarlo, tutti quelli che potenzialmente mi possono
servire li ho già applicati almeno una volta e novità su questo fronte
non ce ne sono (conosci un linguaggio che abbia meno di 10 anni di
vita?). Quindi mi posso concentrare sul problema specifico che di
volta in volta mi si pone.


io ho sempre cominciato dalla gloriosa collana Schaum,
poi iniziavo ad approfondire, fino al testo sacro,
relativo all'argomento :)
ma non so' se e' aggiornata !
felice_pago
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

mi manca il passo intermedio.. :-/
Semplice...
ti manca una cultura sull'architettura del software!
Non basta conoscere un linguaggio per poter sviluppare un progetto decente 
(direi almeno 100.000 righe di codice).
In genere, se sei un principiante nello sviluppo di applicativi da 
sviluppare da zero, ti conviene affiancarti a una persona più esperta, tanto 
per imparare più velocemente.
Se invece non ci sono persone competenti con cui puoi lavorare, devi 
studiare tutto quello che è inerente:
1) l'architettura del software;
2) Pattern;
3) Buon libro tipo: Ingegneria del codice;
Ciao
Alex P. 

 vita?
Uhm... quesitointeressante...
C#? Mi sembra che abbia meno di 10 anni...
Ciao,
Giulio
--
OnAir: Muse - "Starlight"

 C#? Mi sembra che abbia meno di 10 anni...
Vabbeh, se non sono 10 sono 7... :-)

 vita?).
Perdonami se suonero' un po' rude ma questa e' un'agfermazione miope e
molto poco professionale.
Trovo (e per fortuna non sono il solo) che una delle cose + utili che un
programmatore possa fare e' imparare un nuovo linguaggio ogni anno. E non
mi riferisco solo a linguaggi "simili" come possono essere Java e C# ma a
paradigmi diversi.
Questo perche' quando poi torno a lavorare al tuo "solito" linguaggio ti
porti dietro una nuova prospettiva e ti ritrovi a fare le cose
diversamente.
La cosa che + di tutte mi ha aiutato a migliorare il mio modo di scrivere
codice Java prima e C# poi e' stata imparare Smalltalk.
Il linguaggio E e' stato interessantissimo e correntemente sto' imparando
IO perche' non ho mai usato un linguaggio prototype-based.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


http://norvig.com/21-days.html
Buon lavoro!
Fabio

 molto poco professionale.
Non so che dirti.
Personalmente ritengo miope non vedere che da un certo punto della
carriera in poi siano professionalmente più necessari (e appaganti)
tutta una serie di skill non puramente tecnici (o soft skill che dir
si voglia).
Questione di opinioni.

 Questione di opinioni.
perdonami ma stai cambiando discorso. Nessuno mette in dubbio che siano
necessari anche altri skills (e potrei aggiungere che i soft skills per
lavorare in team sono necessari dall'inizio, non solo da un certo punto in
poi...) ma non si stava parlando di questo e tu stesso non facevi
riferimento a questo ;)


 riferimento a questo ;)
Beh, quando dicevo che mi concentro "sul problema specifico che di
volta in volta mi si pone" facevo anche riferimento a questo :)
Ok, capisco di aver risposto divagando rispetto alla domanda iniziale.

Ignaxio ha scritto:



Io ti posso dire come faccio io: in genere se voglio o devo imparare 
un linguaggio *devo* dedicare tempo (tempo= mesi, piu' di uno ma spessso
anche piu' di 2 o 3 e in genere i "mesi" sono contati a 16 ore 
lavorative [o di studio]/giorno, spesso compresi sabato e domenica) 
1- leggere un libro (piu' probabilmente piu' di un libro) anche fuori 
   dall'orario
   di lavoro, anche nel caso in cui imparare il linguaggio serva per il
   lavoro attuale. Meglio se il libro contiene tanti esempi e, *a
differenza
   di quello che credono in molti*, molto meglio se gli esempi sono molto
   semplici (piu' semplici sono e meglio e'), facilmente comprensibili
   e *significativi* (nel senso che ti facciano capire quali sono i
   possibili errori a cui si va incontro utilizzando quel particolare
   linguaggio). Gli esempi vanno poi provati
   al pc (non e' certo sufficiente leggerli su un libro) con il 
   compilatore/ambiente di sviluppo, ecc.
2- progettare qualcosa (qualcosa che serve a te o qualcosa che ti serve
   per lavoro) di non troppo semplice . In pratica pensare ad un progetto
   non banale e curarne tutte le fasi (analisi, design, sviluppo, 
   test, ecc.)
3- implementare quanto progettato al punto 2
Secondo me solo alla fine del punto 3 si puo' dire di avere appena 
iniziato a studiare quel linguaggio.
Considerazioni:
a) Se mi si obietta che fare quanto scritto in 1),2) e 3) prevede di
   lavorare anche di notte per vari mesi, 
   specialmente se si ha gia' un lavoro ma anche se non lo si ha, allora
   concordo: imparare un linguaggio non e' una cosa banale e solo qualche
   rincoglionito puo' pensare che  l'informatica sia una cosa "per tutti".
b) Per alcuni linguaggi/piattaforme la cosa e' particolarmente complicata
   perche' prima di poter mettere su un minimo esempio da provare
   al pc bisogna allestire tutta una "megabaracca" da far impallidire.
   Mi riferisco ad esempio a J2EE. Se vuoi fare qualcosa devi avere
   a tua disposizione un application server, tipo BEA weblogic o 
   JBoss, un DBMS tipo oracle o simili, un j2sdk, varie porcherie tipo
   Toad + client oracle, ecc. Per non parlare poi del fatto che se vuoi
   fare qualcosa per il web pare che tu debba conoscere dei tool del
   cavolo (tipo Struts che sembra andare molto di moda ultimamente ma
   che io non conosco per niente) piu' varie cose ad esempio per la
   gestione di file xml, tipo le librerie xerces o simili che trasformano
   i file XML in oggetti DOM  [come se uno che scrive software per
   professione non fosse in grado di risolvere un esercizio di esame
   universitario come quello di trasformare un file xml in una struttura
   ad albero] per cui i mesi diventano anni perche' prima di cominciare a 
   provare al pc qualche esempio anche semplice mai significativo ti devi 
   imparare talmente tanta di quella roba che sta intorno al linguaggio, 
   che quando hai imparato tutto
   probabilmente la tecnologia che hai imparato e' gia' obsoleta e il 
   linguaggio e' gia' 3 o 4 versioni avanti rispetto a quando hai iniziato.
   Pero' questa baracca di cui al punto b) piace molto alle aziende, non
   si capisce bene perche' visto che le stesse cose  si potevano fare anche
   prima che j2ee esistesse e secondo me si facevano molto piu' in fretta
   e funzionavano altrettanto bene anche se si dovevano utilizzare ambienti
   "piu' eterogenei." Anche se voglio vedere se non e' "eterogeneo" 
   un ambiente come quello che abbiamo utilizzato nell'ultimo progetto
   che prevede l'uso di weblogic su solaris come AS, 
   maven su windows [su cui c'e'un j2sdk 1.4.2_qualcosa] come tool
   di sviluppo, Struts come tool di sviluppo della parte web, oracle su
   Sun come dmbs, toad+client oracle come tool per la connessione al
   dbms e per la scrittura di procedure pl/sql, ecc.
Ciao,
Marco
