Newsgroup: it.lavoro.informatica
Titolo: Che ne pensate?

http://developers.slashdot.org/article.pl?sid=08/01/08/0348239&from=rss
Secondo me ha pienamente ragione (e lo dico da laureato di recente)
-- 
"Le opinioni dei fanatici prescindono dai fatti"
python -c "print 'bG9ybWF5bmFAZ21haWwuY29t'.decode('base64')"
Linux Registered User: 461615
http://lmainardi.blogspot.com

 which made the use of C in systems programming very challenging.
Per quale motivo *most damaging* ? Quello e' esattamente lo scopo per cui
sono stati effettuati anni e anni di lavoro.
Ciao,
Marco.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sono stati effettuati anni e anni di lavoro.
beh credo che hai dato delle risposte ponendoti dal punto di vista
sbagliato...
ciao
TNB

 sbagliato...
Mi sono posto dal punto di vista dell'osservatore della realta',
non ho detto cio' che secondo me sarebbe giusto.


 Secondo me ha pienamente ragione (e lo dico da laureato di recente)
Mah. Chi ha messo Java nelle univ. voleva che ci fosse grande sintonia
tra università ed aziende, obiettivo raggiunto. Java potrà piacere o
meno, però oggi è un linguaggio di riferimento, l'inglese
dell'informatica.
A me non sembra molto acuto dire che se studi Java non
conoscerai i puntatori e l'hardware.... Allora perchè non far studiare
l'assembler? Così conoscerai veramente tutto dell'hardware.
D'altra parte certi studi specialistici sicuramente includono anche
quei linguaggi,  se servono.
Insomma un articolo piuttosto superficiale.


-- 
Lawrence, 
oluyede.org
 - 
neropercaso.it
"It is difficult to get a man to understand 
something when his salary depends on not
understanding it" - Upton Sinclair


Il problema non e' Java, e' come viene insegnato. Ok , Java ha
interfacce grafiche ma chi ti obbliga
a utilizzarle? Java e' un linguaggio solido ed elegante e si possono
fare ottimi corsi di programmazione
utilizzandolo... il prob vero in italia e che i docenti universitari
sono dei dinosauri che sono dimasti al pascal...
e quando insegnano utilizzando java lo fanno male e
controvoglia...almeno questo e' quello che vedo dai ragazzi
neolaureati a cui faccio corsi di programmazione pre-assunzione..
Negli US hanno una qualita' di docenti stellare rispetto all italia,
ma hano il prob di voler rendere tutto facile e  invitante (come sta
succedendo anche in italia negli ultimi ani) perche i fondi che
ricevono dipendono anche da quanti studenti hanno da quanti vengono
promossi e dalla loso "soddisfazione".
POi sul fatto che uno studente di informatica DEBBA conoscere il C,
non ci piove.

 a utilizzarle? 
Le aziende presso cui lavori.


 sono dei dinosauri che sono dimasti al pascal...
Sarà, ma il Pascal, nel suo essere prolisso come poche cose al mondo,
è/era un buon compromesso tra la necessità di conoscere alcune
tecniche (programmazione strutturata o OOP, puntatori, allocazione
dinamica e "consapevole" della memoria, etc.)  e una sintassi molto
ostica per un principante come quella del C/C++. Poi siamo d'accordo
che ormai è relegato alla didattica e spesso neanche lì ma resta di
fatto che con ambienti come Java o .Net la gestione della memoria non
la si impara...ma tanto ormai i processori vanno a quasi 4 GHz e hanno
core a bizzeffe, e la RAM costa un tanto al chilo, o no? :-)
m.


Qualche precisazione e' d'obbligo. L'articolo originariamente e'
uscito su Crosstalks, un giornale che si occupa di sw engineering per
sistemi ad elevata criticita' (difesa, spazio, automotive, air traffic
management, centrali nucleari). In quel particolare dominio le aziende
fanno davvero fatica a trovare laureati competenti. In quei
particolari domini INDUSTRIALI, non avere FORTI competenze in campo
matematico/verifica formale/logica e' un handicap inaccettabile: il
trend attuale delle universita' (anche americane) e' di rilassare il
contenuto dei corsi piu' "duri", per seguire l'ultimo trend, di certo
non aiuta chi deve assumere. Java si inserisce in tal senso, perche'
spesso e' insegnato come UNICO linguaggio di programmazione. Il
risultato sono stormi di laureati che non sanno cosa siano puntatori,
memory management e similari.
A molti potrebbe sembrare che il dominio in questione sia minoritario:
beh, non e' affatto cosi, anzi. Tralasciando l'aerospazio, la
criticita' di sistemi enterprise (banche ecc.) e' ormai ai livelli
molto elevati - ma di fatto non esiste una cultura accademica/
industriale in questo dominio per affrontarne la crescente
complessita'/criticita'.

 quelle cose che si sarebbero potute fare da linea di comando.
Le lauree informatiche non hanno lo scopo di preparare Programmatori Java,
ma figure che a 360 gradi possono operare nel settore, sopratutto per
progetti complessi.
Se in Italia si chiedono prevalentemente programmatori Java e' un problema
della politica italiana, non di certo della Universita' americana che deve
continuare a sfornare tecnici di altissimo profilo che poi dovranno trovare
la loro strada.
Anche l'universita' italiana deve tenere un profilo alto e sfornare
Professionisti di alto livello, che eventualmente come sempre se ne andranno
all'estero.
io concordo appieno con l'articolista che la laurea deve dare i imezzi per
vedere le cose in modo piu' profondo, a partire dai pointers e le basi delle
teorie della sicurezza.
ciao
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Insomma un articolo piuttosto superficiale.
Concordo completamente con te.
Premesso che nella mia laurea Vecchio Ordinamento il primo piano di
studio fu Area Linguaggi, questo e l'esperienza di laboratorio mi
hanno insegnato che (e lo ripeterò fino alla morte lo trovte almeno in
altri cinque post) il linguaggio è un tramite.
Il vero informatico si deve ASTRARRE dal linguaggio, che come tutti i
buoni esami sui compilatori/interpreti ci insegnano, è un formalismo.
Gli howto per conoscere le sintassi del linguaggio li trovi
dappertutto su Internet oggigiorno. Ripeto, per me ha poca differenza
leggere il sorgente di un programma in Java, C,PHP, Phyton o C++
perchè almeno a corregerlo ci arrivo e per lavoro non mi trovo a fare
più di tanto. Certo se avessi l'esigenza di imparare un nuovo
linguaggio mi piglierei il manuale e lo studierei. Come già detto nei
post sotto all'articolo non serve a nulla conoscere l'algoritmo di
Dijkstra o del commesso viaggiatore a memoria e implementarlo se poi
ti impalli coi puntatori e gli array.
Il vero problema dell'articolo, e qui posso convenire in parte, è che
si è dato un spazio francamente esagerato alla programmazione a
oggetti, quando questa non è che uno dei paradigmi esistenti:
imperativo, funzionale, logico, a oggetti (e quant'altro).
Secondo me un corso di Linguaggi Speciali di programmazione da tre
unità didattiche dovrebbe essere OBBLIGATORIO nelle università che
trattano discipline informatiche, per me è stato vitale...


Secondo me si riferisce esclusivamente alla programmazione in ambienti
hardware non omogenei, per non omogenei intendo ben diversi dagli
ambienti hardware che possono montare la JVM dal palmare fino ad un
server. Probabilmente si riferisce ad uno scenario (real time?)
rimasto immobile ad almeno 20 anni fa e che quindi necessita di grande
severità nello sviluppo del software.
Personalmente comunque magari saper allocare un oggetto e saper per
filo e per segno la sua mappatura bit a livello di memoria, non mi
dispiacerebbe saperlo fare :(... però dipende anche da quale obiettivo
ci si pone, quanto tempo si impiegherebbe a sviluppare un'applicazione
web o desktop in questo modo? una vita :)

 vedere le cose in modo piu' profondo, a partire dai pointers e le basi >
delle  teorie della sicurezza.
Un conto e' quello con cui io concordo, un conto e' la descrizione della
realta'. Io non condivido nemmeno il fatto che l'universita' italiana
non prepari al mondo del lavoro e nemmeno che il livello di insegnamento
delle universita' italiane sia inferiore alla media dei paesi piu' evoluti,
USA compresi, ma la realta' e' che queste critiche vengono mosse spesso
(poi se come criterio per valutare la bonta' dell'universita' di guarda
quanti stranieri decidono di venire in Italia, ci credo che sono
pochi, ma temo che dipenda dall'Italia in generale, non tanto
dall'universita' italiana)
Ciao,
Marco


 societa' leader nella fornitura di compilatori/strumenti per Ada.
Capisco...
In questo caso pero' temo che "minoritari" lo siano davvero.
Ciao,
Marco


 Se Java è l'inglese dell'informatica siamo proprio alla frutta.
Sì, puoi ridere :-) Ma allora qual'è oggi, secondo te, il linguaggio
di programmazione "esemplare", che cioè insegneresti al pischelletto
digiuno di  informatica, per dargli un'idea adeguata di come si fa il
software?
Tanti altri linguaggi sono poco validi didatticamente, perchè o troppo
di nicchia, o troppo complessi per dare un'idea generale della
programmazione, tipo il C++.

 USA compresi
L'università italiana è un po' troppo incentrata su argomenti teorici o 
su cose ormai superate (a noi hanno rotto le scatole per diversi esami 
sull'FM, una tecnologica che ormai è vecchia di 50 anni!), però concordo 
con te sul fatto che la preparazione dei laureati italiani sia a livelli 
buoni: basta vedere il fatto che spesso le università straniere son 
pronte a fare i pronti d'oro agli italiani (e posso parlare per 
esperienza personale!)e che i ricercatori italiani ottengano una serie di 
risultati di eccellenza con molti meno fondi e risorse a disposizione 
rispetto ai propri colleghi stranieri.


 
I concetti generali (puntatori, ecc.) li puoi e li devi studiare
astraendo dal linguaggio.
Sarebbe un ben misero laureto quello che è incapace di usare i
puntatori al di fuori dei linguaggi studiati all'uni. ....  In un corso
di informatica generale ci metti *un* linguaggio abbastanza generico e
generalista (ieri Pascal, oggi Java). Se poi ti specializzi in sistemi
realtime ne studierai anche altri, come il C, ma anche l'assembler.
Ma se *non* ti specializzi in realtime, perchè devi studiarti
l'assembler, per esempio?
 


Appunto - quello che dice l'articolo e' che se all'universita' si
insegna solo Java e non si fanno corsi piu' astratti, un laureato non
ha i mezzi intellettuali per astrarre dal linguaggio. Quindi il
rischio e' che l'universita' sforni miseri laureati

 l'assembler, per esempio?
Perche' magari se provi a prendere alcune "routine" relativamente semplici
scritte in qualche linguaggio (tipo Pascal o C, ma probabilmente anche
java) e provi a tradurle in assembler (esercizio d'esame molto in voga
ai miei tempi) magari riesci ad avere  qualche comprensione
 sul funzionamento del processore, la gestione dei registri,
la gestione della memoria, ecc. In genere avere una buona
comprensione di caratteristiche di base come queste aiuta abbastanza
(E' anche vero che con gli ultimi processori
e le complicazioni che si sono aggiunte nel tempo, probabilmente la
cosa potrebbe essere complicata).
O meglio... dipende da cosa ti serve... 
non e' detto che aiuti: aiuta se ti serve qualcuno che abbia competenze
per fare certe cose (tipo lavorare in ambiti real-time probabilmente);
se quello che ti serve e' un automa facilmente sostituibile che 
sappia scrivere un web service client che chiama un metodo di un web
service server scritto da altri, probabilmente tutta la roba sopra e'
controproducente. Molto meglio fargli vedere l'ultima versione di axis
e spiegargli come funziona, magari insieme all'ultima versione di eclipse
e spiegargli anche come integrare le due cose.


 problemi di "buffer overflow"
L'articolo non si riferisce a sistemi "di tutti i giorni", ma a
sistemi che hanno requisiti di correttezza/qualita' molto stringenti.
Ad esempio, il linguaggio SPARK (citato nell'articolo) e' stato usando
per fornire prova *formale* della correttezza di un sistema di
autenticazione sviluppanto dall'NSA; lo stesso principio (e
linguaggio) e' stato utilizzato per sviluppare il nuovo sistema di Air
Traffic Management del Regno Unito - progetti INDUSTRIALI REALI dove
una formazione teorica e' fondamentale, una formazione che
l'universita' (secondo gli autori dell'articolo e anche secondo me)
non fornisce.

 non fornisce.
All'estero non so. In Italia sicuramente i settori sono minoritari.
Anzi.... "progetti industriali" sono proprio del tutto inesistenti in
qualsiasi settore (forse qualche anno fa c'erano, non so dire esattamente).
Al massimo in Italia si fa commercio (meglio se di africani)
Ciao,
Marco.


 software?
[CUT]
Il C tanto per iniziare dal quale tutti discendono.... e manco tanto
di nicchia: ci scrivono il kernel di Linux, tanto per dirne uno.
Però per fare il discorso più serio alla base dell'insegnamento io
metterei un esame di Teoria dei Linguaggi dove quanto meno si
spieghino i vari paradigmi (logico, imperativo, funzionale, a oggetti)
e come funziona il compilatore, con esercizi anche brevi ma almeno in
un linguaggio per ogni paradigma.
Se no ci ritroveremmo ai confini degli appassionati del Commodore
degli anni 80, che non riuscivano a battere le barriere del... BASIC!

 Euro netti a mensilità...
Come ti capisco Osid...
Ti dirò che nel settore della security qui a Roma vedo asini
incompetenti viaggiare a botte di 70/80K RAL (vigaggiamo a cifre più
che doppie del mio RAL) e quadro (per non dire dirigenza) con
competenze tecniche nulle... però che dirti, sano vendersi bene e
nascondere meglio i casini che provocano presso il cliente. Ed alcuni
sono persino... "famosi" (non che li invidio, ma ci vuole una bella
faccia da culo). Sempre perchè oggi, PURTROPPO, vince il cazzaro di
professione.
Morale: non è che sono diventato cazzaro, ma da 4 anni a questa parte
seguo solo quello che la mia esperienza (meglio dire la mia testa) mi
dice di fare. E mi trovo bene. Se non mi piace quanto mi propongono
cambio... ma sulla soglia dei 40... inizia a diventare dura!!!
Attualmente va bene.

 dell'informatica.
Java è l'inglese di una piccolissima parte dell'informatica ad alto
livello... tra l'altro (come dice l'articolo) è un linguaggio troppo
astratto, è solo una trasposizione dell'OO.

 buoni esami sui compilatori/interpreti ci insegnano, è un formalismo.
Il vero informatico lo deve SCRIVERE un linguaggio, e per farlo deve
conoscere bene i linguaggi base dell'informatica.
Il vero informatico non si ASTRAE dalla macchina, perchè la macchina
su cui gira il suo programma non è una commody.
Lo script kid invece non ha problemi, quello si può astrarre da tutto,
conosce cose semplici, si sostituisce in fretta e costa poco...


Si, un Software Engineer deve avere conoscenze più approfondite di
quelle che ti può insegnare Java..
L'articolo originale : 
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
è molto iinteressante.

 conosce cose semplici, si sostituisce in fretta e costa poco...
e soprattutto genera danni :-)

 mentis.
Non direi che Ada è tanto didattico, visto che è  usatissimo in ambito
militare.

 astratto, è solo una trasposizione dell'OO.
Sono d'accordo se lo dici nel senso che non viene molto usato per
progetti al limite delle capacità delle macchine .
Non sono d'accordo, se intendi che non è un linguaggio di amplissima
diffusione, piaccia o no.
 

 
Ma perchč, non c'erano i corsi di teoria informatica di base? Bisognava
per forza scrivere tutti questi programmi in 2 o 3 linguaggi? Lo chiedo
non conoscendo il dettaglio di questi studi, non essendo laureato in
informatica, ma in altro.
Mi sembra stupefacente che si debba per forza ricorrere ad uno
specifico linguaggio per riuscire a capire certi argomenti. Anche se
fare pratica aiuta, ovvio.

 
Vogliamo dire che il settore realtime e simile è quantitativamente pari
o maggiore del settore gestionale, sia in numero di addetti, sia
economicamente??? Forse in ristrette zone degli Usa sarà pure così, ma
insomma...
Certo non nego che fare progetti realtime critici è più impegnativo che
fare gestionali (e pure più stimolante), però le università non possono
ignorare la proporzione numerica tra i due settori.

 militare.
Scusa la curiosita'...ma perche' l'essere usato in ambito militare lo
renderebbe poco didattico? Una grossa fetta di cio' che si usa
nell'informatica e' usato (o addirittura e' nato) in ambito militare...

 diffusione, piaccia o no.
Certo che è diffuso.. ma conoscere java oggi è un po come conoscere il
cobol 25 anni fa.

 per .net ).
ehm... temo tu ti sia fatto un'idea un tantinello sbagliata. Che è un
modo cortese di dirti che hai pisciato fuori dal vaso, e pure di
tanto ;^)
bye!

 militare...
No, appunto. Intendevo che non è un linguaggio principalmente
didattico, come forse lo sono altri, tipo Eiffel o Smalltalk.

 
E che č, un difetto ? Boh! (ammesso e non concesso che sia cosě facile
come dici)


Sono sicuramente comparabili. Ti faccio un esempio semplice semplice
di dove viene usato sw real-time (potenzialmente criticito):
aerospazio, automotive (include locomozione su rotaia), navale, air
traffic management system, automazione industriale (da macchinari a
centrali nucleari), sistemi per banche/borse ad elevata
criticita' (indovina un po' perche' la SUN si e' inventata RTSJ?), sw
per streaming video/audio. Se vuoi continuo, vedi un po' te...Forse
non hai capito che tutti i domini sono potenzialmente soggetti a sw
critico - dipende da quanto ti costa un errore del sw. Sistemi
gestionali SERI sono altamente critici, perche' un errore causa una
perdita di denaro consistente.
L'universita' dovrebbe formare persone che sono *culturalmente* in
grado di gestire sistemi complessi, o perlomeno ad imparare come si
fa. Secondo te lo sta facendo? Secondo me no. E l'articolo - a ragione
- parla proprio di questo.

 
No, non ci siamo. Sei passato dal parlare di realtime ad una generica
criticità, che ovviamente esiste sempre, ma è la scoperta dell'acqua
calda.  Ad esempio per una banca tutto il software è critico, nel senso
che se funziona male si perdono tanti bei soldi. O forse pensi che un
batch che fa centinaia di migliaia di semplici estratti conto si può
fare "come viene"? Io non lo credo affatto.


Guarda che di "real-time" io (esattamente come l'articolo) non ho mai
parlato. Il punto (per me e l'articolo) e' il sw critico. E non a caso
gran parte delle technologie/metodologie che si usano nei campi dove
Java e' dominante non sarebbero mai usate se davvero si riconoscesse
la criticita' del software. Ma quanto tempo passera' prima che anche
quei sistemi dove Java e' dominante diventino cosi' critici da essere
considerati alla pari di sistemi industriali? Secondo me e' gia'
successo da un bel po'...anche se non esiste sempre una vera cultura/
preparazione per gestire questa criticita'. E la formazione
universitaria non prepara ad affrontare questi problemi perche' si
focalizza sull'attrarre studenti insegnando la tecnologia piu' di moda
invece di concentrarsi su altri aspetti.

 invece di concentrarsi su altri aspetti.
Sì, ma l'università non può vivere sulla luna. Oltre tutto passerebbe
da essere troppo vicino alla "moda" Java all'essere troppo vicino alla
"moda" (si fa per dire) C/C++, o quel che è.
Forse l'università dovrebbe inventare e proporre qualcosa di veramente
nuovo e vantaggioso, sia rispetto a Java che al vetusto C. A quel punto
magari le aziende le verrebbero dietro. Ma per adesso non vedo un gran
che in giro.