Newsgroup: it.comp.programmare.win32
Titolo: io ci provo...

Vorrei porre ai veterani del News, un paio di domande di carattere
pubblico/personale, sulla possibilità che ha una persona, partendo da zero,
e senza aver frequentato scuole adeguate, di diventare programmatore.
Premetto che prima di mettermi a scrivere (come mia abitudine) mi sono letto
un centinaio di post, per vedere se ciò che scrivevo era già stato trattato.
Capisco pure che: forse non avrete tempo per rispondere, ma io ci provo lo
stesso. Per essere più chiari, postero le domande per gradi:
1) Qual è la programmazione del futuro?
2) Quali sono i libri ed i programmi per iniziare?
3) Senza aver frequentato scuole adeguate, c'è la possibilità di imparare?
4) Esistono corsi privati di questo tipo? sono veramente efficaci?
Grazie in anticipo, per quanti vogliano rispondere più dettagliatamente,
via Mail.
pasca...@geocities.com
ps: ho postato lo stesso messaggio su vari gruppi in tema, mi scuso in
anticipo se sono stato troppo invadente.

4) Esistono corsi privati di questo tipo? sono veramente efficaci?
Esistere esistono, se siano efficaci o meno non saprei... comunque ho
qualche dubbio.
Spero di non averti confuso di più le idee. In ogni caso non farti problemi
ad interpellarmi se vuoi dei chiarimenti (in calce trovi l'indirizzo di
e-mail).
Ciao,
Lorenzo
---
"...un tipo perso dietro le nuvole e la poesia..."
Lorenzo "Loz" Novara
E-Mail: 
l...@iol.it
ICQ: 30416703
Web: 
http://loz.freeweb.org
 - 
http://www.poli.studenti.to.it/~l.novara

Un Consiglio ....
Evitare il fai da te..
Prova ad informarti e cerca qualche corso ben fatto , riguardo al
linguaggio , meglio se spendi un poco + di tempo con la teoria ,
ovvero :Informatica di Base , Sistemi operativi ,Pseudocodifica
,Sviluppo ad oggetti etc. etc. ..
A quel punto avrai capito da solo come orientarti , il nostro mondo è
pieno di smanettoni che non hanno le basi e che , conseguentemente ,
producono bugs.
Se abiti nella area di Milano , troverai molte società serie
specializzate in formazione , alternativa potrebbe essere quella di
trovare uno studente di Informatica o Ingegneria che ti possa guidare
nelle fasi iniziali.
Nel nostro lavoro i difetti una volta presi non li togli +.
Io ho fatto cosi:
Corso IBM di Base , Informatica di base , Sistemi operativi ,
pseudocodifica ..etc. etc..
Poi : IBM corsi in linguaggi 
Poi : Mazzo Tanto..
Ciao e Buon Lavoro
******************
*** NO CARRIER ***
******************
 

Poi : Mazzo Tanto..     :))   di questo non mi preoccupo, sono abbastanza
caparbio.
ciao  Roby.

producono bugs.
Mah, sarà... Io penso però che acquisire un buon metodo di programmazione
non derivi in genere dall'aver frequentato dei corsi, ma dall'applicazione
costante e dal buon senso del programmatore.
Io non so quanti abbiano iniziato con Informatica di Base, Sistemi
operativi, Pseudocodifica ecc...
E poi è un dato di fatto che i bug si intromettono anche nella più
accademica e scientifica delle programmazioni. Ti ricordo poi che
l'informatica è stata fatta grande proprio dai smanettoni, che con tanto
impegno, passione e fatica hanno costruito le meraviglie che oggi conosciamo
dal nulla. E poi scagli... il primo debugger chi non ha mai scritto "=" al
posto di "==" penando ore per capire dov'è il problema in un codice
concettualmente ineccepibile...
Per non parlare degli accademici: ho quotidianamente sotto gli occhi prof.
che predicano una programmazione distillata, perfetta, stutturata, pensata,
meditata... poi ci fanno esempi che puntualmente non funzionano e quando gli
parte Windows in modalità provvisoria non sanno che pesci pigliare...


Lo smanettone che produce bugs è un estremo , l'accademico che non sa
sviluppare è un'altro estremo.
Nel mezzo ci sta un analista/programmatore che : Conosce le basi della
informatica , conosce la logica booleana , sa progettare una
applicazione con strumenti di analisi top down , sa eseguire la
pseudocodifica di un progetto , conosce la struttura dei sistemi
operativi. Di conseguenzza anche quello che produce sarà ben
preparato.
Premetto che se uno è scemo anche con 100 Corsi sarà sempre uno scemo
. Quello che voglio fare capire è che sono finiti  i tempi degli
smanettoni e basta ....
Solo a titolo di esempio : progettare e realizzare una applicazione
con metodologie Object Oriented , presuppone delle conoscenze che
moooolto dificilmente uno si ricava da solo . Oramai lo sviluppo
software ha raggiunto livelli di industrializzazione che nenza buone
basi , il massimo che uno smanettone senza basi teorico/tecniche puo'
fare è  l'installatore.
Togliamoci di mente l'immagine degli accademici con la testa nelle
nuvole che dal punto di vista pratico non combinano nulla , voglio
ricordarti che :UNIX , LINUX , TCP IP (lo scrivo anche se non si
chiama cosi') , etc. etc. , sono stati progettati da "accademici".
Personalmente io ci lavoro con qualcuno di questi "accademici" , ti
assicuro che la metodologia di progetto e sviluppo in ambiente Object
Oriented che hanno loro io me la scordo anche se lavoro da 15 anni
nell'informatica , inoltre i suddetti sviluppano applicazioni
regolarmente in catalogo IBM e che hanno altissimo contenuto
tecnologico.
Chiaramente bisogna anche essere degli smanettoni , ma da solo non
basta , questo è quello che voglio dire all'amico , e quindi , va bene
smanettare , va bene leggere libri , ma non sarebbe male anche qualche
corso quà e là . 
Solo a titolo di informazione , L'Università Cattolica , laurea in
matematica , da la possibilità di frequantare tutti i corsi che uno
vuole senza bisogno di essere iscritto al corso di laurea , ma pagando
solo il corso , ed i prezzi assicuro non sono alti .
Troverete degli ottimi corsi di Informatica , dalle tecniche di
progetto alla Intelligenza artificiale passando dalla programmazione
SMALLTALK e dalle Tecniche ULM.Per chi non lo sapesse le tecniche ULM
sono quelle metodologie di progetto che attraverso una modellazione
grafica della applicazione generano del codice Object Oriented , tra
l'altro lo trovate in Visual Age for SmallTalk e negli  ambienti CASE
della ultima generazione (ho sentito che anche SAP sta uscendo con una
interfaccia ULM) . Tutte cose che se uno le vuole imparare da solo ,
si fa venire una ulcera e , se non le impara ........
Senza togliere nulla alla categoria degli smanettoni , categoria di
cui sono degno appartenente.......
Saluti


Adesso non è il caso di aprire una polemica, ma vorrei ricordarti alcuni
fatti:
il modo di lavorare interno della grandi software house è si organizzato e
logico, perché c'è bisogno di coordinare un team di sviluppatori, ma il
lavoro è molto più artigianale di quanto si possa pensare.
Una prova di ciò è data dal sistema operativo che sta guadagnando (ahimè)
sempre più posizioni, il celebre Linux. Tu dici che è stato progettato da
"accademici" (e, preciso, non era mia intenzione usare questo termine in
maniera spregiativa) ma da Linus Torvalds che era al tempo uno studente di
informatica come tanti, così come buona parte della gente che ha contribuito
al progetto.
E permettimi di dubitare che lui e tutti gli altri si siano messì lì a
tirare giù i loro diagrammi di flusso e a codificare in metalinguaggio. Al
massimo si saranno scritti su un notes i punti su cui dovevano lavorare.
Un'altro esempio è la Netscape (che mi duole portare ad esempio, perché chi
mi conosce sa quanto la amo...) che ha rilasciato i sorgenti del suo
Navigator perché le giovani menti degli smanettoni apportassero un po' di
ossigeno.
Poi bisognerebbe stabilire chi sono gli "smanettoni e basta". Secondo me è
gente che ha molto know-how, che si è letta e studiata
testi su testi, e che ha smanettato molto. Certamente non si tratta di
programmatori improvvisati.
Poi bisogna vedere se la (cito le tue parole) "metodologia di progetto e
sviluppo in ambiente Object Oriented" sia poi la panacea di tutti i mali, il
metodo salvifico che ci libererà dai bug e dalle infiammazioni del tunnel
carpale...
Poi vorrei sapere quanti, realmente, programmano in SmallTalk... e Dio ci
scampi dall'ULM... vabbé che oggi i processori sono qualcosa di mostruoso,
ma perché spingere a livelli troppo elevati l'Object Oriented, che com'è
risaputo creano codice inefficente e pesante?
Ciao,


<SNIP>
Vorrei far notare che all'Università, ai corsi ad accesso libero, ogni
studente può seguire qualsiasi corso, perchè non vengono effettuati
controlli di sorta. E comunque è possibile chiedere il permesso al Rettore,
nel caso siano ad accesso controllato.



Cos'è lo Small Talk? In cosa è buono?
San Vegeta from Hell
http://www.geocities.com/Area51/Dungeon/8436
http://come.to/Fantasy.it

Allora:
a)Riguardo a Pseudocodifica Diagrammi etc. etc.
Mi spiace smentirti , lavoro da 15 anni nel campo informatico a vari
livelli , nelle Software House  ti assicuro che dove si lavora con
metodo e dove si producono prodotti ad alto livello , SI USANO
DIAGRAMMI , METALINGUAGGI , PERT per i progetti etc. etc.
Vorrei proprio vederti a progettare una applicazione ERP da 5 Anni
Uomo , magari Multipiattaforma , senza il supporto di queste
metodologie.
b)SmallTalk non è sicuramente diffuso  come il C++ , ma se fai una
ricerca in Internet rimarrai sorpreso dalla quantità  di dati presenti
e dalla quantità di persone che lo utilizzano . Sicuramente essendo un
linguaggio puramente ad oggetti , presuppone un progetto iniziale e
quindi non indicato agli Smanettoni , che prima scrivono e poi....
c)Smanettoni , sicuramente abbiamo una diversa veduta della
definizione della parola.Per tali , intendo Persone che smanettano ,
ovvero che basano il loro modo di lavorare a provare e provare ,
scrivere scrivere  , metodo che, pur avendo i suoi lati positivi, se
non affiancato da una preparazione  porta a 0 (ZERO).Quelli che dici
tu , persone che si informano , studiano etc. etc. non li considero
solo smanettoni , ma al contrario professionisti .
d)Riguardo a Object Oriented.No , non è la panacea di tutti i mali ,
ma è la risposta alla richiesta di "industrializzare" la produzione
del software . Ti assicuro che è possibile lavorare solo ad oggetti ,
come in smalltalk , e produrre codice efficente . IBM ha in catalogo
Molte aplicazioni sviluppate con tale linguaggio , alcune delle quali
escono dalla Azienda per cui lavoro , e sono stati progettati con quei
metodi che tanto odi , compreso ULM. 
Se avessi provato a lavorare a progetti di dimensioni medio/grandi ,
sapresti che Intervenire , solo per esempio , sul tracciato record di
un file , ad esempio file Righe Ordine , per aggiungere un campo , se
fatto in una applicazione non ad oggetti , coimporta un lavoro enorme
di allineamento, dell'ordine di settimane fra sviluppo e test .Se ,
invece , fatto su una applicazione ad Oggetti , progettata bene ,
magari con ULM che permette una migliore strutturatione delle classi
, coimporta un lavoro di 15 minuti. 
Questo non vule dire che se devo fare una applicazione che mi copia un
file in un altro , devo utilizzare ULM , ma vuole dire che per
applicazioi di un certo volume , tutti questi strumenti , consentono
di economizzare e meglio utilizzarele risorse , che il grossi progetti
sono dell'ordine di miliardi di investimento.
Per fare il programmino ftp fra un PC ed Un altro, va benissimo anche
il QBASIC.
e) Netscape , non ha rilasciato i souce per gli smanettoni , ma perchè
le software house del settore sviluppassero applicazioni integrate con
il browser ,  per meglio penetrare il mercato , una struttura come
Netscape non ha bisogno delle migliorie , eventuali , fatte dallo
smanettone di turno , ma della integrazione delle applicazioni delle
grandi multinazionali  del tipo CA , SCO , IBM etc. etc.
IBM , ti assicuro che utilizza massicciamente la progettazione e la
programmazione ObjectOriented , e sopratutto , dovendo lavorare su
varie piattaforme HW , utilizza la MetaCodifica , che integrata negli
strumenti CASE da loro utilizzati , permette la produzione di codice
per le varie architetture HW.
Non voglio polemizzare , ma ti assicuro che se sei convinto che nel
mondo della produzione del SoftWare con la" S" Maiuscola , valgano le
regole dei programmi sviluppati in casa , ti assicuro  che sei fuori
strada , e sopratutto non denigrare quello che non conosci .
Saluti 
***********
AT
NO CARRIER
***********

Mi chiedo quali software house conosci... sicuramente IBM molto bene... e se
la prendi come esempio sei un po' fuori strada... d'altra parte non c'è
esempio migliore di mastodonticismo informatico.
Sicuramente io ho meno esperienza di te, data anche la mia giovine età,
tuttavia credo di non sbagliarmi poi troppo. Ma forse proprio il mio novello
ingresso nel mondo dell'informatica mi permette di vedere le cose in maniera
diversa, e, lasciamelo dire, meno stantia.
Il metodo tenta-e-ritenta è de facto il metodo più utilizzato dall'interezza
del popolo di programmatori. Nel piccolo di ogni programmatore è così da
sempre, nella grandi realtà aziendali forse è stato differente. In effetti i
primi tecnici dei computer agli inizi giravano in camice bianco in mezzo a
eleaboratori grossi come stanze. Spero che nessuno rimpianga quei tempi.
Comunque lo smanettone non è di sicuro un cantinaro che sa a mala pena
leggere e scrivere, ma è uno che con le sue forze un po' casarecce riesce a
produrre software di qualità sorprendente. Ti cito a solo titolo di esempio
il progetto NASM nato su un newsgroup e portato avanti da tanti
programmatori che costituiscono certamente un gruppo vario ed eterogeneo.
Nonostante un certo grado di organizzazione legato al fatto che si stava
facendo un lavoro di squadra, non credo che vi siano state grandi
pianificazioni e studi concettuali. C'è stato molto know-how, molta
esperienza. Il progetto ha dato alla luce un prodotto validissimo,
flessibile e potente.
Quanto alla necessità di industrializzare la produzione del software,
permettimi di mostrare le mie perplessità. Qui si torna al discorso che ho
avviato poc'anzi. La programmazione non è la costruzione di una pressa
idraulica o di un gasdotto, bensì un'attività puramente teorica, eccezion
fatta per alcuni ambiti quali ad esempio il controllo di automatismi,
pertanto molto più portata ad un'impostazione più libera e slegata da
direttive stringenti. Poi ovviamente bisogna porre dei distinguo, se si
tratta di produrre software generico o software appositamente studiato per
una particolare realtà (ad esempio i software che girano negli istituti di
credito) dove l'approccio OO è valido per i motivi che hai evidenziato. Ma
se si tratta di produrre software differente, la questione è già diversa. Il
punto però è proprio qui. Il fatto è che nel mercato attuale l'importanza
dei sistemi professionali è diminuita, grazie all'avvento dell'informatica
customer. Molti operatori del settore piangono lacrime amare per questo
motivo, rimpiangendo i tempi d'oro dei mainframe e dei data base. La realtà
oggi è molto più varia, e il mainframe (con grande "gioia" di IBM) viene
sempre più legato ad un ruolo di secondo piano.
Perciò non si può più considerare il mondo della programmazione con i canoni
di un tempo. E nessun osservatore attento avrà dubitato che la mossa di
Netscape fosse destinata a far prendere una boccata d'aria al suo software,
nella lotta contro Microsoft.
Il fatto che l'architettuta monocentrica sia ormai crollata e non
riesumabile è testimoniato dal fallimento del progetto NC.
Se un tempo la programmazione più artigianale era più che altro
caratteristica dei produttori di video-games, oggi è diffusa a molte altre
realtà, pur senza rinunciare alla pianificazione dei progetti.
Se, come dici tu, l'OOP risponde al bisogno di industrializzare la
produzione del software, ebbene, secondo me risponde ad un bisogno che oggi
non sussiste più in molti ambiti.
Sembra un paradosso che proprio nell'epoca della massificazione
dell'informatica avvenga ciò, ma io credo che sia così e che non possa
essere altrimenti. E d'altronde quello che può sembrare dilettantismo non lo
è affatto, è solo un modo più creativo e meno industriale, appunto, di
produrre. E, curiosamente, è una tendenza non solo del mondo del software.
Il punto è non confondere il dilettantismo con un approccio più artigianale,
personale e creativo. E soprattutto è bene non andare troppo verso
l'astrazione, perché, non dimentichiamolo, sotto i nostri sfavillanti
strumenti OOP, CASE, RAD et similia c'è un microprocessore che conosce
quattro semplci istruzioni e che va programmato con tanto olio di gomito e
ben poca astrazione. E preghiamo che ci sia sempre qualcuno che sappia usare
l'assembly, perché altrimenti, chi scriverà i device-driver?


Ehm... ovviamente nel mio messaggio non è "customer" bensì "consumer"...
vabbé, un lapsus capita a tutti...
Lorenzo

non sussiste più in molti ambiti.
Si vede che non sai dove sono i Soldi, con la S maiuscola. Fai un giro e
guarda quali sono le 10 ditte con i più alti utili/fatturati nel settore
informatico, poi togli Microsoft e guarda cosa fanno le altre 9 e su che
piattaforme. Anche qui puoi avere delle sorprese.
E tieni presente che, per definizione, io sono uno Smanettone e se dovessi
scegliere tra uno Smanettone ed un neolaureato prendo lo smanettone 9 volte
su 10. E che se c'è una cosa che non sopporto sono i mainframe ed il modello
monolitico, solo che, lavorando in un progetto molto grande, mi sto rendendo
conto di quanto di buono c'è in modelli che sembrano invece sorpassati.
Saluti
Massimo

[...]
Dai consigliatemi dei libri cosi` poi posso denigrare tutto punto per punto :) 
...
Scusate l'acidita`, ma ho appena avuto una discussione in rete assai spiacevole
con una persona presuntuosa, saccente e senza un briciolo di spirito o ironia
che mi ha rovinato la giornata.
_mirko_
PS: Se volete contattarmi in privato, NON ciucciatevi il calzino :).

che mi ha rovinato la giornata.
  Comunque a proposito dei testi da studiare, mi interesserebbero seriamente dei
titoli, chi me ne suggerisce alcuni?


 e senza aver frequentato scuole adeguate, di diventare programmatore.
1) Qual è la programmazione del futuro?
Restando a meta` tra previsioni e speranze, e solo per il futuro piu` prossimo
(perche` in uno piu` lontano spero proprio che le cose cambino radicalmente):
Java per la maggior parte dei programmi e C++ (piu` assembler) per quei
programmi (o parti di programma) che richiedono molta efficienza e una
"regolazione fine" del codice. Un SQL sempre piu` esteso (con supporto per
database orientati agli oggetti) e
integrato nei tools di programmazione, in simbiosi con i linguaggi, HTML e XML,
insieme ai linguaggi di scripting (JavaScript innanzi tutto) per i documenti.
CORBA per i componenti distribuiti.
E Linux, e forse BeOS, e Java OS e quant'altro, ma speriamo finisca il
predominio assoluto di MS Windows, e che riprendano vigore i tentativi di
affermazione di standards internazionali (ma soprattutto inter-societari, cioe`
non limitati ai prodotti di una sola casa) sui sistemi operativi e sulle
interfacce di programmazione. 
2) Quali sono i libri ed i programmi per iniziare?
Dipende da dove parti, cioe` che conoscenze di base hai gia`. Se il tuo "partire
da zero" significa che non hai nessuna base neppure di informatica generale,
senz'altro partirei da questo, prima di affrontare la programmazione. 
Poi, *veramente importante*, l'INGLESE, almeno quel tanto (non e` poi molto) che
serve per capire i libri e le risorse in rete di argomento tecnico (il
vocabolario e` notevolmente piu` limitato di quello usato in altri campi), e per
farsi capire se si manda un messaggio a un NG.
Per la programmazione vera e propria io comincerei con Java, magari con l'aiuto
del libro di Bruce Eckel "Thinking in Java", disponibile anche in rete. 
3) Senza aver frequentato scuole adeguate, c'è la possibilità di imparare?
Certamente, se c'e` un reale interesse e una certa predisposizione per il
pensiero razionale/logico/scientifico (non e` questione di livello ma di *tipo*
di intelligenza). Naturalmente fare proprio *tutto* da soli sarebbe, tra
l'altro, una gran perdita di tempo. Soprattutto nelle fasi iniziali credo sia
importante avere qualche punto di riferimento. Qualche corso sarebbe
consigliabile, ma su come trovarne uno *buono* non saprei darti indicazioni.
Forse l'ideale sarebbe farsi seguire un po' da un programmatore esperto, ma
anche qui il fatto e` che deve essere uno serio che lavora con metodo e
sufficiente professionalita` 
e non uno "smanettone", altrimenti ti trasmette i suoi vizi piu` che altro. La
cosa piu` importante (e difficile), secondo me, e` riuscire a trovare il giusto
equilibrio tra teoria e pratica, senza tendere alla speculazione astratta, ne'
alla "praticoneria".
4) Esistono corsi privati di questo tipo? sono veramente efficaci?
Esistono di sicuro ma come dicevo, non so darti indicazioni precise. Sono pero`
convinto di una cosa: che ce ne sono di inutili o addirittura dannosi, e di
buoni e forse anche di eccellenti. Il problema e` poterli distinguere (*prima*
di frequentarli). Io insisterei a chiedere informazioni sui NG e a conoscenti.
Ciao
Paolo

titoli, chi me ne suggerisce alcuni?
Per quello che riguarda il design
Grady Brooch, Object Oriented Analysis and Design with applications
Erich Gamma, Design Patterns
Bertrand Meyer, Object Oriented Software Construction
Su UML
UML Toolkit (non ricordo gli autori, direi che Brooch c'č)
Martin Fowler, UML Distilled
Generico: SteveMcConnel, Code Complete
Saluti
Massimo