Newsgroup: it.lavoro.informatica
Titolo: Il mitico Python!

Mi sono letto questo...
http://www.python.it/doc/articoli/instpy-0.html
Linguaggio stupidotto, senza tipizzazione forte, il cui indentamento del codice 
ne definisce il flusso (ri-di-co-lo). Possibilità di scrivere costrutti 
illeggibili. Fighissimi ma contrari al pensiero "standard". Un linguaggio snob, 
direi... :)
Orgoglioso di non doverlo usare. C'è veramente di meglio in giro, anche tra i 
linguaggi non complessi come il C++.
-- 
__________________________________
Luc (36, CO)
25 years uninterrupted programming
__________________________________

 
nessuno ti obbliga quindi se non ti piace non lo usare; ma per favore
non lo denigrare, questo post offende la nostra intelligenza tanto
quanto la tua.
michelangelo

 linguaggi non complessi come il C++.
Riassumendo: confondi tipizzazione dinamica con tipizzazione debole,
confondi blocchi con flusso, qualche frase senza senso (C++ meno
complesso di Python, con che pretese si pretende di non passare per
troll ?), niente più. Tipicamente i troll hanno più argomenti.
Ma chi è il coglione che gli paga uno stipendio, a sto qua ?
  ngw

 direi... :)
Beh sull'indentamento del codice hai ragione :)

 Beh sull'indentamento del codice hai ragione :)
L'indentazione serve a definire i blocchi, non il flusso (come si puo'
essere così stupidi da pensare che si possa definire il *flusso*
tramite l'indentazione ?), ed è una buona idea, che costringe a
rendere il proprio codice leggibile almeno a livello di formattazione
e soprattutto a mantenere una indentazione consistente. Elimina anche
la necessità di avere i vari end per marcare la chiusura di un blocco.
  ngw

 
Quoto, ho letto del codice C che era identato in un modo che rendeva 
*impossibile* la comprensione, e penso che a chiunque sia capitata una 
situazione del genere (anche in altri linguaggi). La trovo una feature 
molto intelligente che si apprezza appieno solo nel tempo.

 la necessit� di avere i vari end per marcare la chiusura di un blocco.
Si ma rimane il fatto che � un linguaggio in cui la dannata INDENTAZIONE
� significativa. Non saranno affari miei almeno come voglio indentare 
il mio programma?

 molto intelligente che si apprezza appieno solo nel tempo.
Secondo me è da depravati. 


 non lo denigrare
Qualcuno ha cominciato ad incensarlo in altro thread. Io l'ho messo subito a 
tacere. 


 Ma chi è il coglione che gli paga uno stipendio, a sto qua ?
Ne ho avuti vari. E mi hanno sempre elargito aumenti in contrattazione privata 
a fronte dei risultati.
Hai perso. Indentati e sparisci.


 
Lo sono :-)

 Hai perso. Indentati e sparisci.
Ne hai avuti vari, a 36 anni pero' hai una frazione del mio stipendio,
una frazione delle mie competenze (e infatti ti sei affrettato a
snippare le *correzioni* che ho apportato alle tue affermazioni da
primo anno di ITIS evidentemente false ed evidentemente errate), e a
fare il bulletto come al solito, rendendo tangibile il detto "putting
lipstick on a pig".
Incompetente, vatti a studiare la differenza tra tipizzazione statica
e tipizzazione forte, che dici di programmare da 90 anni e ti sei
perso la pagina 8 di qualunque testo di programmazione, e la
differenza tra flusso e blocchi, che ti sei perso la spiegazione dei
cicli for di qualunque testo di programmazione.
Torna quando hai una formazione di un diciottenne, e ne riparliamo.
  ngw

 tacere.
Come il cavaliere, se le fa e se le racconta in totale autonomia.
Quand'è che inizierai a firmarti con nome e cognome, così almeno
quando perdi il posto la gente sa chi non assumere ?
  ngw

 il mio programma?
Porta pazienza, ma il concetto stesso di blocco indica che è una
entità separata dal contenente.
Tu non indenti i cicli for o i metodi di un oggetto ?
  ngw

 linguaggi non complessi come il C++.
Eh certo Luc, per favore non ti lamentare se qualcuno ti da' 
(sacrosantemente) del troll. Supponendo che tu non lo sia, almeno di 
mestiere, ma voglia fare solo un po' il provocatore, ci sono comunque 
diverse falle nel tuo discorso:
1) Python non e' affatto un linguaggio snob. Sicuramente poco tipizzato 
e qualche volta incline a potenziale confusione. Per certi aspetti quasi 
un linguaggio di scripting, ma decisamente potente. Per dirtene una, 
secondo me il PERL e' molto peggio in quanto a leggibilita' e 
manutenibilita'.
2) Python e' diffusissimo e ha il supporto quasi per qualunque 
applicazione, dal web fino all'interfacciamento con l'hardware. Ci sara' 
un motivo, eh?
3) Il fatto che il C++ non sia complesso poi e' una delle piu' grosse 
minchiate che abbia mai sentito in vita mia. Al contrario: e' tra i 
linguaggi piu' potenti e sintatticamente complessi che esistano. Il che 
ti lascia molto margine di manovra, ma ti rende anche vulnerabile a 
errori e difficolta' di manutenzione.
Hai mai provato a scrivere un parser per 'sto linguaggio, o a guardarti 
le grammatiche? Java e C# sono un ordine di grandezza piu' semplici!
Io personalmente continuo a preferire linguaggi un po' piu' tipizzati 
come per l'appunto Java, ma Python nel complesso e' un ambiente
di tutto rispetto.
TheStar


Be credo sia molto meglio usare le parentesi graffe...poi magari è una
questione di abitudine. Anzi il libro che ho su Python versione pocket
di Marco Beri mette in evidenza questa presunta mancanza, a mio
avviso,  come una forza di python dicendo che se non ben indentato il
codice non viene compilato, mentre al contrario mostra un esempio di
codice scritto in c perfettamente funzionante che ha vinto il premio
per codice più illeggibile che sembra una farfalla... Dal mio punto di
vista molto meglio usare le parentesi. Tornando al nostro Luc è
proprio vero che più si conosce più si è consapevoli di non sapere.
Lui poco conosce e pertanto crede di sapere molto, ma forse come nei
promessi sposi poche idee e quelle poche anche confuse (frase di donna
Prassede mi par di ricordare).

 Tu non indenti i cicli for o i metodi di un oggetto ?
Si ma posso deciderlo IO come? :)


E dagli tempo, ha detto che non conosceva Python e che ne ha scoperto
l' esistenza solo oggi leggendo un articolo su wikipedia. Tra 7 giorni
vedrai che lo conoscerà tanto bene quanto conosce gli altri. (vedi
post in un altro thread in cui affermava che sono sufficienti- a lui-
7 giorni per imparare un nuovo linguaggio di programmazione)

 Ne hai avuti vari
Ho solo scritto velocemente, senza rileggere (non meritate tanto, da me). I 
tuoi appunti sono corretti, ma fuori contesto. Ci manca solo che ti metti a 
correggermi la grammatica dei post. Non hai argomenti.


 Come il cavaliere
Ma sei pure comunista!?!?! Ma cosa perdo tempo a fare con gli snobbettini 
comunisti con il maxi-stipendio... Gentaglia ridicola, senza vergogna e pudore.



sei ridicolo come sempre. E dimostri una scarsa preparazione. Un
programmatore vero ( e non un code monkey) sa che i linguaggi sono
solo strumenti per un programmatore. Lo scopo di un programmatore e'
risolvere problemi e farlo con lo strumento piu' adatto al caso.
Alcune cose vengono bene con Python, altre con C++, altre con Java
etc... Un buon programmatore non si perde in guerre di religione sulla
superiorita' di questo o quel linguaggio, sa che sarebbe altrettanto
stupido quanto un artigiano che si mette a disquisire se la pinza sia
superiore o inferiore al cacciavite. Se vuoi accettare un consiglio,
esci dal piccolo recinto (in cui il C++ e' semplice) in cui ti sei
murato, e impara qualche altro linguaggio, tipo Python, Ruby o Erlang,
o sei vuoi rimanere in ambito MS, F#.
Visto che programmi in C++ ti potrei anche citare il fatto che uno dei
primi "fan" di Pyton e' stato Bruce Eckel, un tizio che di C++ e
programmazione in generale "ci capisce" giusto un attimino...

 di tutto rispetto.
Per scriverci 4 script si. C.V.D. 


 l' esistenza solo oggi leggendo un articolo su wikipedia.
:)

25 years uninterrupted programming
Dopo 25 anni ancora non capisci una mazza di programmazione. Continua per
altri 25 che forse dopo 50 anni comincerai a capire qualche cosa.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

, 
x...@z.it
 says...

Leggilo bene tutto l' articolo. Prima dicevi (orrore) che i linguaggi
di scripting non sono object-oriented ma forse ho capito male.
Comunque python ha tutto il necessario anche per essere integrato con
dotnet. Hint: cerca ironPython. Buona lettura.

 di tutto rispetto.
Lasciando perdere il berluscotroll, che è un incompetente cronico,
vediamo di dare un po' di ordine: la tipizzazione di Python è *forte*,
non esiste il concetto di più o meno tipizzato, o il linguaggio è
tipato debolmente, o fortemente, o la tipizzazione è dinamica, o la
tipizzazione è statica.
I linguaggi tipati debolmente più noti sono Javascript, PHP e C (i
primi 2 a tipizzazione dinamica *e* debole, l'ultimo a tipizzazione
statica *e* debole), i linguaggi tipati fortemente più noti sono C++,
Java, e mettiamoci pure Python (i primi due a tipizzazione statica *e*
forte, l'ultimo a tipizzazione dinamica *e* forte).
La discussione sulla tipizzazione dinamica o statica è sempre stata
abbastanza ostica (e circondata da un numero assolutamente decisivo e
considerevole di sciocchezze, banalità e informazioni errate sotto
pressochè tutti i punti di vista), la mia opinione è che la
tipizzazione statica serva molto di più a chi implementa il
compilatore del linguaggio piuttosto che a chi lo usa, tra l'altro
trovo il typing di Java e C++ abbastanza orrendo, ma fa nulla,
opinioni mie. Certamente l'OOP è nata con un linguaggio a tipizzazione
dinamica, non statica, e questo dovrebbe far riflettere (linguaggio
tra l'altro meraviglioso, Smalltalk, OO pura, message passing, e tante
altre cose che i linguaggi più blasonati di oggi letteralmente si
sognano). Un altro linguaggio di cui varrebbe la pena di discutere a
livello di typing è Haskell, la cui tipizzazione è a mio modesto
parere perfetta.
Quello che è sicuro è che parecchi guru di Java / C++ sono passati a
Python e l'hanno messa in discussione, non parliamo certo del
trollone, ma di Bruce Eckel ad esempio, o soltanto in italia di
Antonio Cuni e appunto Alex Martelli, entrambi MVP Brainbench C++. Un
certo Uncle Bob, ad esempio, nel 2003 si faceva un paio di domande (e
siamo nel 2009 - mica mi aspetto che 'esperienza pura' conosca Martin,
sia chiaro): 
http://www.artima.com/weblogs/viewpost.jsp?thread=4639
Tanto per citare:
" So I tried writing some applications in Python, and then Ruby (well
known dynamically typed languages). I was not entirely surprised when
I found that type issues simply never arose. My unit tests kept my
code on the straight and narrow. I simply didn't need the static type
checking that I had depended upon for so many years.
I also realized that the flexibility of dynamically typed langauges
makes writing code significantly easier. Modules are easier to write,
and easier to change. There are no build time issues at all. Life in a
dynamically typed world is fundamentally simpler.
Now I am back programming in Java because the projects I'm working on
call for it. But I can't deny that I feel the tug of the dynamically
typed languages. I wish I was programming in Ruby or Python, or even
Smalltalk."
  ngw

 Si ma posso deciderlo IO come? :)
:D Guarda che Python non ti dice quanti tab usare
  ngw

 primi "fan" di Pyton e' stato Bruce Eckel
Non bisogna mai essere "fan" di un linguaggio... :P 


 [CUTTONE]
Si vede che non hai un ca**o da fare, vista la lunghezza dei tuoi post, eh... 
E' la crisi? :P


 Per scriverci 4 script si. C.V.D.
cioe' esattamente quello che hai fatto tu negli ultimi 25 anni..

 Dopo 25 anni ancora non capisci una mazza di programmazione
Schhhhh.... Che se lo scopre il mio capo... E se lo vengono a sapere i capi 
"precedenti"... :-PPPPP 
-- 
__________________________________
Luc (36, CO)
25 years uninterrupted programming
__________________________________

Orgoglioso di non doverlo usare.
Deve essere stato un tale affronto alla tua professionalit� aver
lavorato in un'azienda che lo usava... Di sicuro avrai cambiato lavoro
abbandonando quella manica di incompetenti e ora sei felice cos�, no?

 Non bisogna mai essere "fan" di un linguaggio... :P
Non nel senso di perdersi in guerre di religione sulla superiorita' di
un linguaggio rispetto ad un altro, ma si puo' benissimo esserlo nel
senso di studiarlo, apprezzarlo, e farne conoscere le potenzialita' ad
altri.

 __________________________________
eh il problema con te e' che oltre la quinta riga si supera il tuo
"attention span"...
anche per questo Python potrebbe venirti utile...

 la necessità di avere i vari end per marcare la chiusura di un blocco.
Non lo ritengo un vantaggio.
Mi ricorda i file make, che spesso mi fanno ammattire perchè manca il
carattere, non visibile, di indentazione.
Le stesse parentesi graffe, con caratteri non tanto grandi, creano
qualche problema di confusione con quelle tonde.

 senza vergogna e pudore. 
Piantala.
-- 
[cit. da INN-A]
I roditori una volta vivevano secondo natura...
Poi hanno incominciato ad incartare la cioccolata...
Adesso si rendono conto che spammare � pi� proficuo...

 Secondo me � da depravati. 
Io non sono sviluppatore, ma IMHO, rende il codice molto piu' 
leggibile.


 Piantala.
Si, ora rallento... Ho già fatto schizzare abbastanza il numero dei post 
settimanali... :)


 Per scriverci 4 script si. C.V.D.
Vediamo questi 4 script:
1) Crawler, Google Groups e Blogger, più la maggior parte dei sistemi
interni di Google, che ha deciso di finanziarne appunto lo sviluppo
assumendo il suo creatore, Guido Van Rossum, per lavorare alla VM
(anni 90 fino ad oggi)
2) Tutto il sistema di workflow della US Navy e della MCI (2002/2003)
3) Il Lawrence Livermore National Laboratory ci sviluppa la maggior
parte del loro software, e finanzia attivamente (da anni e anni)
Python Numeric
4) Industrial Light and Magic, usa Python (da anni) per il loro
cluster di macchine:
"Python è ovunque in ILM. È usato per estendere le capacità delle
nostre applicazioni così come collante fra di esse. Ogni immagine CG
creata da noi implica l'utilizzo di Python in qualche parte del
processo realizzativo". Philip Peterson, Ingegnere Principale Ricerca
& Sviluppo, Industrial Light & Magic.
5) "La NASA sta usando Python per implementare un repository CAD/CAE/
PDM e un sistema per la gestione, l'integrazione e la trasformazione
dei modelli che rappresenterà l'infrastruttura principale per il suo
ambiente di ingegneria di prossima generazione. Abbiamo scelto Python
perchè garantisce massima produttività, codice che è pulito e semplice
da manutenere, solide ed estendibili (ancora in espansione!) librerie
ed eccellenti capacità di integrazione con altre applicazioni di
qualsiasi piattaforma. Tutte le caratteristiche citate sono essenziali
per la costruzione di sistemi che siano efficienti, flessibili,
scalabili e a ottima integrazione, ossia quello di cui abbiamo
bisogno. Python ha sempre ampiamente soddisfatto qualsiasi necessità
noi avessimo". Steve Waterbury, Leader della Divisione Software, NASA
STEP Testbed.
4 script.
  ngw

 settimanali... :)
E ti prendono pure sul serio, incredibile !
PaF

Io personalmente continuo a preferire linguaggi un po' piu' tipizzati 
Il significato preciso per te di "poco tipizzato" e "pi� tipizzati"?
Lo chiedo perch� mi viene il dubbio che anche tu faccia confusione su
strong/weak/static/dynamic typing.
http://www.ferg.org/projects/python_java_side-by-side.html

 lavorato in un'azienda che lo usava...
Lo usiamo ancora, sono 2 script di replicazione job tra il bug-tracker e il 
sourcesafe. Ma sono li è vivono per i fatti loro. Nessuno li tocca.
PS: noto che hai sempre più tempo per me... ;)


 dei post settimanali... :)
A Luc, se vede che sto periodo nun c'hai popo un cazzo da fa :)


 leggibile.
Tutti indentiamo il codice per la leggibilità. Python lo *pretende* per la 
definizione dei blocchi. Quando è troppo è troppo. 


 Mi sono letto questo...
signore e signori, il 24 giugno 2009 il "25 years uninterrupted 
programming" scopre l'esistenza del python.

 A Luc, se vede che sto periodo nun c'hai popo un cazzo da fa :)
Pi� che lui, direi tutto il resto del ng (me compreso che rispondo) :-P
PaF

 troppo. 
ripeto, sempre da profano, non mi sembra poi questo gran problema.


 rispondo) :-P 
io mi sto studiando hmailserver


 consapevole che Stoustrup non concorda vero ?
Lui non mi fa il bonifico mensile. Concentrati su questo. 


 Sei messo esattamente *peggio* che nel thread del 2002:
http://snipurl.com/krver
. Sei veramente senza dignità, amico. :)
Si è veramente vantato del suo posto di lavoro con l'attuale Ubertech
Leader di Google, che tra l'altro sicuramente conosce C++ meglio di
lui ?
/me muore :D
  ngw


http://www.artima.com/weblogs/viewpost.jsp?thread=4639
Il link esatto a Martin �:
http://www.artima.com/weblogs/viewpost.jsp?thread=4639
Per chi conosce Java � utile anche Ferg:
http://www.ferg.org/projects/python_java_side-by-side.html

  ngw
Come ti permetti? Lui lavora nell'editoria DA ANNI! ;)

 E ti prendono pure sul serio, incredibile !
Ma va la, si pesta il troll scrivendo qualcosa di interessante, se no
si va avanti di seghe con le BR e ci si stufa.
Gli scemi del villaggio hanno anche una loro utilità.
  ngw

Lui non mi fa il bonifico mensile. Concentrati su questo. 
Luc, a forza di concentrarti su una frase per volta, il Mondo te lo
stai perdendo tutto eh.

 definizione dei blocchi. Quando � troppo � troppo. 
Vero, che linguaggio stronzo e nemico della libert�. Ti obbliga a fare
le cose bene, come andrebbero fatte. Roba da matti.

 le cose bene, come andrebbero fatte. Roba da matti.
Davvero gli ha distrutto le sue certezze. Prima credeva che l'
importante fosse che ogni programma funzionasse con qualche baco, in
numero inferiore alle righe di codice prodotte, ed ora viene questo
python ad "installargli" il dubbio che forse il presto è nemico del
bene, costringendolo ora in avanti a pensare prima di programmare,
senza buttare giù prima il codice  con la filosofia "vediamo come
viene e poi correggo", che dopotutto è anche quella una metodologia di
programmazione (cowboy coding).

 Lui non mi fa il bonifico mensile. Concentrati su questo.
questo e' un ottimo sunto di cosa differenzia una code monkey da un
programmatore :)

 fare le cose bene, come andrebbero fatte. Roba da matti.
gia'.


PS: noto che hai sempre pi� tempo per me... ;)
Non illuderti: da oggi in poi in molti presteranno sempre meno
attenzione a quello che dici :)
p.s. complimenti: sourcesafe nel 2009, ottima scelta.

 Per scriverci 4 script si. C.V.D.
Come quelli di Google?

E ti prendono pure sul serio, incredibile !
Mai sottovalutare gli scemi, mai lasciarli fare: provocano pi� danni
di quelli smart. La storia ce lo insegna bene.
:)

 
Soltanto un Sith vive di assoluti.

 p.s. complimenti: sourcesafe nel 2009, ottima scelta.
Esperienza pura !
  ngw

 A Luc, se vede che sto periodo nun c'hai popo un cazzo da fa :)
Sto studiando WPF, e continuo sempre a sviluppare in mixed code c++/managed 
c++/c#, con qualche infarinatura di 
vb.net
 per gli script.
Certo che se facessi tutto in python... :-PPP


 p.s. complimenti: sourcesafe nel 2009, ottima scelta.
Perforce + TeamTrak, scusa, tritapalle. 


 Esperienza pura !
Vedo che vi mast*rbate bene a vicenda tu e gh. 


 programming" scopre l'esistenza del python.
No, dai, anche nel 2002 ne parlai... Ma lo avevo dimenticato apposta, cosi come 
accadrà alla fine di questo thread. Ne va della salute.


 accadrà alla fine di questo thread. Ne va della salute.
Merda, come farà la comunità Python a sopravvivere senza uno che in 25
anni non ha capito i sistemi di typing più elementari e la differenza
tra blocco e flusso ? Faremo calciomercato con la scuola radio
elettra, non vedo altra soluzione.
  ngw

 bene, costringendolo ora in avanti a pensare prima di programmare,
quindi, a parte le battute, python consente comunque di diminuire
automaticamente i bug prodotti rispetto agli altri linguaggi, a pari
qualità/esperienza dello sviluppatore?

 __________________________________
Sei veramente incomprensibile. Dici di conoscere C# e
contemporaneamente di avere qualche infarinatura di di 
vb.net
, per gli
script peraltro. Non capisco davvero che vuol dire.

 come farà la comunità Python
La comunità? Ma roba da matti.. La comunità di un linguaggio di porgrammazione. 
:-O
Magari vi riunite anche in birreria... Pittoresco. 



Non ne ho idea. Non ho mai programmato in python, ma mi è bastato dare
una occhiata al codice scritto da un mio amico per la tesi affinchè
convincessi il mio prof, che cercava principalmente un linguaggio
multipiattaforma come è python, a passare a c# che conoscevo molto
meglio, anche se con le limitazioni che ciò comportava.

 meglio, anche se con le limitazioni che ciò comportava.
Ottima scelta. 


 script peraltro. Non capisco davvero che vuol dire.
Schemino giornaliero medio:
- 75% programmazione C++ / managed C++
- 20% programmazione C#
-  5% sviluppo script in 
vb.net
Ecco cosa faccio ogni santo giorno, nell'ultimo anno (prima era 100% c++). :)


 meglio, anche se con le limitazioni che ciò comportava.
Non ho capito bene. Hai convinto l'amico ed il prof. ad usare C# al
posto di Python, e però vorresti difendere Python dagli attacchi
sgangherati di Luc? Lodevole intenzione, però inzomma.... :-)

 l'indentazione ?
a quanto pare e' possibile...triste, vero?
per non pensare che esistono persone disposte a retribuire questi 
espertoni di programmazione...

 __________________________________
Ah ma allora gli script in 
vb.net
 (c#) esistono. E addirittura lo fai
come lavoro senza manco accorgertene. Complimenti.

 capi  "precedenti"... :-PPPPP 
Essere in grado di programmare non significa capire la programmazione. Al
tuo capo non gle ne frega nulla se ci capisci di programmazione, basta che
alla fine del mese hai fatto il tuo lavoro. Questo ti garantisce che sei
un programmatore ma non uno che ci capisce di programmazione. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Stai cercando di ricaricarti l'autostima dopo lo smacco di non essere mai
stato invitato agli orgioni di :-B, di la verit�!



Per quello forse dovresti optare per linguaggi che richiedono un
compilatore piu'
"invasivo", tipo Ada (che infatti e' usato in ambiti high-integrity),
o cambiare
paradigma e passare a model-driven development - ma questo dipende
MOLTO dal
dominio applicativo.
Personalmente credo che i linguaggi con duck typing funzionino molto
bene
in un processo di sviluppo test-driven perche' usi i test come "rete
di sicurezza"
contro i bachi che il compilatore non puo' scovare.

 -  5% sviluppo script in 
vb.net
e perche' gli "script" in 
VB.NET
?
C# e Vb come tu ben saprai sono solo due sintassi diverse per ottenere
codice CIL...
Non e' che ti stai nuovamente "fraintendendo"? :)


E chi lo difende:-). Già scritto che anche solo per l' indentazione io
non lo usarei mai in quanto mi crea confusione, mentre magari per i
sostenitori del linguaggio e credo per lo stesso Guido van Rossum, sia
motivo di chiarezza. Semplicemente il professore era lo stesso della
tesi del mio amico ed avevo paura che facesse usare anche a me python,
ma con abile opera di convincimento, buttando lì che esiste anche il
progetto mono per linux, l'ho convinto ad utilizzare c#. L' amico ed
anche chi è venuto dopo a lavorare su quella applicazione, ha dovuto
giocoforza usare python, mentre io partendo da una cosa nuova da zero
ho potuto scegliermi il linguaggio che più mi aggradava.


Oh che bel discorsetto mi ricorda tanto quello diplomato versus
laureato che avevo impostato qualche giorno fa. Alla fine conta solo
il risultato non importa come si fanno le cose. Tu immagino che sei
diplomato o sbaglio?



e hai perso un'occasione di imparare qualcosa, cioe' esattamente lo
scopo per cui si fa l'universita ' :)
complimenti, veramente una furbata !


Si ma volevo laurearmi. Capisci a me...

/me muore :D
Seriamente, il problema � che dopo anni non si � ravveduto, non ha
imparato nulla da quello che era accaduto.
Una grande sconfitta per un informatico.

 
Ma tu almeno hai letto fino alla fine, o non hai il coraggio di 
ammettere che NGW ne sa "un pochino" più di te ?
G.

 
ok per C# e C++ ma il managed C++ non mi piace proprio altro che il python.
Una curiositï¿œ visto che anche il compilatore 
vb.net
 genera MSIL e il jit
poi codice nativo perchï¿œ quando usi C# ï¿œ programmare mentre se utilizzi
vb.net
 produci script? visto che anche il framework di appoggio ï¿œ il
solito.... giusto per capire che intendi te per script, non per polemizzare.

 
per quanto mi riguarda invece ï¿œ una pessima scelta, visto lo stato
attuale di mono e visto che a parte la piccola porzione del framework
sotto ecma (c# a parte che credo sia completamente standard ecma),
microsoft detiene un sacco di brevetti su .net, inoltre ti leghi ad una
piattaforma e ad un singolo produttore che oltre tutto in passato ha
fatto delle mosse discutibili.



no, non capisco affatto. Laurearsi x il pezzo di carta e' stupido e
controproducente.

 controproducente.
<IRONICO>
ma a lui il pezzo di carta serve per avere un entrata maggiore :)
poi che abbia imparato o no per lui non fa nessuna differenza
</IRONICO>

 No, dai, anche nel 2002 ne parlai... 
e anche allora fu un figurone.



Gius�, ma stessi cercando di piazzarti secondo dopo Luc?
Leggi bene quello che scrivono gli altri, che travisi un post si e un
altro pure.

Perforce + TeamTrak, scusa, tritapalle. 
Dio Mio, abbattete sto'contapalle prima che qualcuno un giorno lo
faccia ministro.
(le palle fattele trit� da quella scarognata di tu'moglie, amico.)

 altro pure.
La fretta nel rispondere:-). La discussione è appassionante e non si
sa dove possa finire.


Francamente ero interessato a fare qualcosa che mi piaceva nel modo
che mi aggradava di più, altrimenti non avrei scelto quella tesi.
Doverla fare con un linguaggio che conoscevo poco o nulla e che di
primo acchito non mi piaceva, concordi con me sarebbe stato
masochistico e probabilmente mi avrebbe fatto impiegare più tempo. D'
altronde le statistiche dicono che c# consente di abbattere il tempo
di produzione del software e direi che posso essere abbastanza d'
accordo. Su python, mi ripeto non posso pronunciarmi, in quanto non
l'ho mai utilizzato se non giusto quando, appunto, stavo scegliendo la
tesi  e mi ero comprato il libro pocket di Marco Beri della Apogeo,
che ho citato in un precedente post.

ammettere che NGW ne sa "un pochino" pi� di te ?
E pensare che qualcuno vorrebbe far credere che un certo livello di
conoscenza sia appannaggio esclusivo della figura mitologica del
*laureato italiota*, quando invece volont�, umilt�, networking
produttivo con chi ne sa pi� di te e altre componenti base di ogni
buon individuo civilizzato sono quello che serve davvero per andare
avanti e migliorarsi.
Secondo qualcuno, "jwz" non sarebbe mai dovuto esistere. Ridicoli.
Redimetevi peccatori!
http://softwarecraftsmanship.oreilly.com/wiki/wear_the_white_belt


"Subject: A mia figlia suggerir� Python...
...per iniziare a programmare, fra qualche anno, se vorr�.
Non pu� certo cominciare con il C++.
Come a noi, negli anni 80, si insegnava il Pascal.
Luc."
Che dire. Un genio del male, Joker gli fa un bu... un baffo, pardon.

 l'ho mai utilizzato
ecco , appunto. Se non avessi fatto la solita "furbata italiota" ora
potresti pronunciarti. Non ti fa capire qualcosa questo particolare?



Se non ti piace, hai fatto benissimo a non usarlo, anche se io tendo a
fidarmi molto poco delle stime ad occhiometro e voglio tipicamente
provare le cose prima di giudicarle. A livello di produttività,
sicuramente Python fa fuori sia C# che Java in un ambito abbastanza
ampio di applicativi (per esempio, l'unico ambiente che ho mai trovato
ad implementare modelli estremamente simili ad Erlang è il
meraviglioso Twisted Matrix, scritto proprio in Python).
In ogni caso, visto che ce l'hai così tanto con i diplomati, un
informatico dovrebbe essere abbastanza curioso da non tirarsi mai
indietro quando si tratta di imparare qualcosa, e a quanto pare questo
l'università non te lo da.
  ngw

 si' ma abbatterle rispetto a cosa?
Probabilmente a muovere 2 calamite sul disco.
  ngw

 potresti pronunciarti. Non ti fa capire qualcosa questo particolare?
Vabbe dai Riccardo diciamo che ho preferito approfondire quello che
avevo già iniziato a conoscere piuttosto che imparare da zero o quasi
un linguaggio che a pelle non mi piaceva. Poi magari usandolo mi
sarebbe piaciuto chi può dirlo. Non la vedo come una furbata, quanto
piuttosto come un auspicio che si è realizzato; naturalmente se il mio
professore mi avesse imposto python nella discussione preliminare che
precede l' assegnazione della tesi, probabilmente non avrei battuto
ciglio lo stesso visto che l' argomento oggetto della tesi mi
interessava, ma avrei avuto un pò meno entusiasmo iniziale.

 Fighissimi ma contrari al pensiero "standard".
Eh ????
Ciao,
Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

potresti pronunciarti. Non ti fa capire qualcosa questo particolare?
Brillante. Hai centrato il punto in maniera perfetta. Speriamo serva a
qualcun'altro che lo legger�.

piuttosto come un auspicio che si =E8 realizzato;
chi pu� dirlo? auspicio?
Sembri un oracolo :) Ma decidere tu invece che lasciare tutto al dio
Random, no eh?

piuttosto come un auspicio che si � realizzato;
chi pu� dirlo? auspicio? Hai dimenticato "chi vivr� vedr�"... :)
Ma decidere tu invece che lasciare fare al dio Random, no eh?

 Magari vi riunite anche in birreria... Pittoresco.
Ci riuniamo anche in "conferenze", è stranissimo che un leader come te
con frecce quali l'"esperienza pura" e il "tempo indeterminato" non
venga chiamato a rappresentare la grande famiglia del C++.
Secondo me hanno paura a chiamarti, sei troppo esperto e non potresti
far altro che insegnare, facendo crollare il mercato dei corsi CEPU
sul C++. Già mi immagino lo speech: "Come mantenere un lavoro per anni
senza saper distinguere il typing forte da quello debole. Esperienza
pura!"
  ngw

 Random, no eh?
Scherzando posso dire che conto sulla ciclicità dei numeri
pseudocasuali. Anche affidandomi a quello che sembra il caso dopo un
pò una situazione dovrebbe comunque ripetersi ed io avrò saputo fare
tesoro dell' esperienza:-)

  ngw
Fosse per sbaglio invitato, si presenterebbe con il plasma sotto il
braccio convinto di avere pi� pollici lui dell'area di proiezione per
le slide...

 Per scriverci 4 script si. C.V.D. 
Puo' essere.
Io cosa ci fanno di preciso non lo so (a parte Zope/Plone che dovrebbero
essere scritti piu' o meno interamente in python. Ma anche qui le mie
conoscenze sono scarse). 
In ogni caso lo usa abbastanza pesantemente google (che tra l'altro paga
Guido che, per contratto, il 50% del tempo che sta in google lo
passa a portare avanti lo sviluppo del linguaggio)


 tacere. 
Quale thread scusa ?


 piattaforma e ad un singolo produttore
Non è "UN" singolo produttore. E' "IL". :) 
-- 
__________________________________
Luc (36, CO)
25 years uninterrupted programming
__________________________________

 e perche' gli "script" in 
VB.NET
?
Perchè devono essere modificabili anche da non programmatori. Abbiamo deciso 
per il 
vb.net
 (anche perchè nella versione precedente del sw erano in 
VBScript). 


   ngw
ROTFL, scusa se quoto tutta 'sta roba e cambio subject.
Questa va di diritto tra le Perle del Pirla al Plasma (tm), ovvero il
Cazzone in Roulotte della Suocera.

 solito.... giusto per capire che intendi te per script, non per polemizzare.
In C# è scritto il web-server ed il portale. In C++ le applicazioni client, in 
VB.net gli script di interazione con l'utente. Il ns. software è completamente 
configurabile. Diamo all'utente i mattoncini (classi .net oggi, oggetti COM 
ieri) e con 
vb.net
 vengono scritti gli script che mettono assieme il tutto.
PS: ho semplificato al massimo. 


 ammettere che NGW ne sa "un pochino" più di te ?
Ho detto che è un sinistro spocchioso, mai dato dell'incompetente.


 un programmatore ma non uno che ci capisce di programmazione.
Come preferisci. 


 le palle fattele trità
Non ti permettere. Essere insignificante. Sono stato chiaro? Rispondi! Sono 
stato chiaro?


 venga chiamato a rappresentare la grande famiglia del C++.
Ho altri interessi, meno da NERD. 


 Non è "UN" singolo produttore. E' "IL". :)
nel nome del padre, figlio, spirito santo, amen.

 L' indentazione sostituisce piu' o meno le parentesi graffe del C/C++.
Questo è ovvio quanto inaccettabile. 


 "standard". Un linguaggio snob, direi... :)
Hai capito tutto, tu, del Python (leggi: hai studiato troppo poco).
Che poi, se davvero vuoi scrivere cose illeggibili, il C++ (e meglio
ancora il C) ti consente di fare delle cose irraggiungibili con altri
linguaggi. Pensa che addirittura c'erano gare a chi scriveva il codice
piï¿œ criptico.
Aggiungo. A me piaceva il C++ di Stroustrup. Quel che ï¿œ adesso non lo
riconosco piï¿œ.
-- 
Ciao!
Luca

 
IL che sta per intermediate language :)

 
si ma 
vb.net
 ï¿œ compilato quindi non ï¿œ script.
definisce cosa intendi per script.

 stato chiaro?
No, sei stato il cretino di sempre.
Saluti.
Luciano

 feature molto intelligente che si apprezza appieno solo nel tempo.
Esistono linguaggi che ti obbligano a qualche ordine logico nella
preparazione del codice. Uno � Pascal, un altro � Ada. Io ho usato C e
ho usato Pascal. Personalmente, preferisco di gran lunga il C.
-- 
Ciao!
Luca

 ed ora viene questo python 
A me Python piace parecchio. Pero' c'� una cosa che mi manca
moltissimo, ed � il ciclo for (che per fortuna, come idea, � rimasto
immutato nei passaggi da C a C++ a Java a C#).
-- 
Ciao!
Luca

 definisce cosa intendi per script.
Sequenze semplici di istruzioni, per esempio. 


 No, sei stato il cretino di sempre.
Sparisci... 


 meglio
C#, che ritengo un discreto linguaggio, ha il difetto che non �
multipiattaforma (oddio, tramite Mono lo sarebbe, ma purtroppo Mono �
sempre un po' indietro). Poi, va detto, a me non piacciono tanto le
ultime feature (esempio, le Lambda Expressions)..
-- 
Ciao!
Luca

 Hai capito tutto, tu, del Python (leggi: hai studiato troppo poco).
Ho letto velocemente quella paginetta, mi è bastato. 


 ma a lui il pezzo di carta serve per avere un entrata maggiore :)
<ALTRETTANTO_IRONICO>
Fosse vero, coi tempi che corrono...
</ALTRETTANTO_IRONICO>
-- 
Ciao!
Luca

Luca Menegotto ha scritto:

non ho capito che intendi il for c'� usa una sintassi leggermente diversa:
for i in range(0, 9):
nel senso quindi che ti manca la sintassi classica:  ????
for(i=0;i<10;i++) {};
il for del python � molto pi� potente pu� emulare il for classico e fare
molte pi� cose.
no???
boh va b�... io sono programmatore java a dire il vero:) ma mi capita
anche di usare python,perl,php (faccio lavori anche sui prodotti lamp
della mia azienda) su web2py, catalyst, cakephp, ... il python dei tre �
quello che mi piace di pi�, ma ad ognuno il suo :)

 complimenti, veramente una furbata !
Remunerativamente parlando, penso che abbia fatto bene. 
Presumo che C# sia comunque piu' richiesto di Python.
Ciao,
Marco


 Presumo che C# sia comunque piu' richiesto di Python.
10 a 1 direi. Ma loro programmano per la gloria. Open source... :PPP


 subito a tacere. 
Permettimi, visione limitata.
Primo, non ï¿œ una guerra a chi ce l'ha piï¿œ lungo (che non mi interessa).
Secondo, uno strumento buono per fare qualsiasi cosa non esiste.
Denigrare una cosa solo perchï¿œ non si conosce ï¿œ inutile.
-- 
Ciao!
Luca

 Si ma volevo laurearmi. Capisci a me...
Se non conoscevi ne' l' uno ne' l'altro, forse facevi prima con python.
Secondo tutti quelli che ci hanno a che fare la curva di apprendimento e'
molto rapida.


 Certo che se facessi tutto in python... :-PPP
Perdona, 
vb.net
 ï¿œ molto, molto, molto, molto peggio di Python...
;-)
-- 
Ciao!
Luca

 Denigrare una cosa solo perché non si conosce è inutile.
Volevo divertirmi. Guarda il titolo del thread. 


 ok per C# e C++ ma il managed C++ 
Condivido abbastanza. Se devo pensare a C++, penso soprattutto a codice
unmanagged. Senno', estremamente piï¿œ comodo C#.
-- 
Ciao!
Luca

 Una grande sconfitta per un informatico.
Si può avere un link?
tnx,
G.

 
ok una definizione un pï¿œ personale ma abbastanza rigorosa, quante
istruzioni separano lo script dal programma?
e soprattutto dopo quanti sassi che accumulo diventa mucchio?

 Non � "UN" singolo produttore. E' "IL". :) 
Nel mondo non so come vanno le cose, ma a Roma, la richiesta di javisti
(j2ee) supera abbondantemente quella di microsofisti (.net, comprendendo
tutto cio' che lo riguarda).


Luca Menegotto ha scritto:

non era quello il senso scusa, di solito quando penso al c++ penso al
multi piattaforma magari qt o wxwidgets quando penso al managed mi viene
in mente windows forms che non amo particolarmente ma ï¿œ un mio problema
mentale visto che ultimamente ho lavorato su delle gui che erano dei
cruscotti di controllo (quindi logica semplicissima e gui
incasinatissima), il c++ classico ha il vantaggio della compilazione
statica e del deploy al cliente semplificato (preparando i binari per le
diverse piattaforme os/hardware) mentre il managed se non hai windows e
.net runtime ci fai poco.

 le corna qualcosa di piï¿œ la ottiene.
Io non so piï¿œ come dirtelo.
Tu fai confusione tra linguaggio di stripting e linguaggio
interpretato. Da Wikipedia USA:
"A scripting language, script language or extension language is a
programming language that allows control of one or more software
applications. "Scripts" are distinct from the core code of the
application, which is usually written in a different language, and are
often created or at least modified by the end-user."
"In computer programming an interpreted language is a programming
language whose implementation often takes the form of an interpreter.
Theoretically, any language may be compiled or interpreted, so this
designation is applied purely because of common implementation practice
and not some underlying property of a language."
Aggiungo anche che, parecchio tempo addietro, girava anche un
interprete per C.
-- 
Ciao!
Luca

 
in toscana pure le richieste j2ee e php sono l'80% delle richieste poi
un 10% di sistemisti e un 10% su .net

 Alla fine conta solo il risultato non importa come si fanno le cose. 
Detta cos� � molto pericolosa. In qualsiasi prodotto (e il software non
fa eccezione) conta anche come si fanno le cose. Mi voglio spiegare con
un esempio.
Giusto questa settimana ho avuto a che fare con un componente di
comunicazione che sballa completamente nel momento in cui si ha a che
fare con interi lunghi che superano 7FFFFFFF. Semplicemente, c'� un
errore pesante di progetto nella routine di conversione del dato che
genera un overflow. E' sempre andata bene, per carit�, perch� finora
non c'� mai stata questa necessit�, ma ora c'�, e la cosa crolla
miseramente per una sciocchezza.
Allora, analizzando la cosa, son venuti fuori due problemi:
1) un problema di gestione del versioning, dal momento che girano ben 4
versioni dello stesso software, ciascuna coi propri sorgenti e ciascuna
che ha lo stesso errore all'interno;
2) un problema di disegno e/o di testing, dal momento che l'errore si
verifica matematicamente.
Questo non � un problema immediato (in fin dei conti, funziona in tutte
le applicazioni che non hanno l'esigenza di cui sopra); pero' � una
bomba a orologeria pronta ad esplodere, e quando esplode, che � certo
che prima o poi esplode, il tempo che perdi � 10 volte tanto.
-- 
Ciao!
Luca

 diplomato o sbaglio?
Prima cosa immagini male e secondo, ho capito che hai travisato il
concetto ma mi spieghi perche' dovresti trattare diversamente qualcuno che
ha una laurea o meno? Sei veramente convinto che sia la laurea ad
insegnarti la vera programmazione? Per la mia esperienza ho incontrato
tanti laureati e tanti non-laureati ad essere bravi programmatori quindi
quello che hai appena scritto lo considero come puro e semplice
pregiudizio.


 Presumo che C# sia comunque piu' richiesto di Python.
Lo è sicuramente, è anche estremamente più inflazionato, ed è anche
molto più facile trovare progetti implementati con tale tecnologia
perchè "il mercato dice così".
  ngw

 and not some underlying property of a language."
Python è compilato, Ruby è interpretato (e si vede).
Il compilatore produce bytecode (.pyc).
  ngw

 fare molte pi� cose.
Mi spiego meglio.
Quasi tutti i linguaggi, a partire dal Pascal usano il ciclo for con i
numeri; infatti, ho una variabile di ciclo che varia da un certo valore
a un altro valore, a crescere o a decrescere.
in C il ciclo for � molto pi� aperto. E' infatti costruito cos�:
for (inizializzazione; condizione di uscita; incremento)
ha pero' due particolarit�: innanzi tutto, non fa nessun riferimento a
variabili di ciclo; in secondo luogo, puoi escludere una qualsiasi
parte, e lui funziona garrulo e felice.
Per farti comprendere quanto sia potente, tu puoi scrivere da un lato
una cosa minimalista del tipo:
for (;;)
{
}
che corrisponde a
while(1)
{
}
(scritto in C, per Java sostituisci 1 con true);
ma puoi anche scrivere una cosa del genere:
for (initialize_port(); is_process_functioning(); check_port())
{
	//  do something
}
che � simile a una cosa che ho scritto molto tempo fa, ossia un ciclo
di controllo che inizializzava una porta seriale, controllava lo stato
di un processo di gestione di una coda di messaggi e verificava lo
stato della porta seriale stessa.
-- 
Ciao!
Luca

 Il compilatore produce bytecode (.pyc).
Lo so. Limite mio. In effetti, non so come definire una cosa che viene
tradotta in un bytecode, sia questo Java, sia questo C#, sia questo
Python. Non sono strettamente compilati, non sono strettamente
interpretati, in realt� sono delle vie di mezzo.
-- 
Ciao!
Luca


Sono venuti fuori veramente tutti i cavalli di battaglia:
diplomati-laureati
C-Python
sinistri-destri
Luc-resto del mondo
fantastico! manca qualcosa a questo thread?

Linguaggio stupidotto,
Hai gia' fatto DUE figure di merda in un thread, che bisogno hai di
farne una terza in un thread nuovo?
-- 
Living in Barbaropoli
http://www.barbaropoli.com

 stato della porta seriale stessa.
Come fai con i linguaggi funzionali, dove il for spesso non c'è ? :)
for(Max, Max, F) -> [F(Max)];
for(I, Max, F) -> [F(I)|for(I+1, Max, F)].
Armstrong su programming erlang implementa i cicli for così. Potere
del pattern matching e della ricorsione.
A me quel loop non fa impazzire, non penso che per il solo fatto che
un costrutto lo permetta sia saggio exploitarlo a quel livello, a
livello sintattico poi while is_process_running è praticamente
inglese, molto più comprensibile.
L'iterazione in Python serve appunto a iterare.
  ngw

 wrote:

si, il senso.
ilSimo
-- 
now playing: 
Marching soldiers of death, so proud to fight and to die
We will win in the end, and we will conquer this land
Marching soldiers of death, ready to fight and to die
                                Drakkar - Soldiers Of Death

 fantastico! manca qualcosa a questo thread?
a occhio mancano:
- caciottari e body rental
- cetrioli e verdure varie
- le imperdibili considerazioni sul costo della vita
- qualche aggetivo "italiota" o "itagliano" qua e la
- l'immancabile invito ad emigrare
ma potrebbe essermi sfuggito qualcosa per distrazione o perch� infilato 
nel killfile.
-- 
++ questo messaggio � scritto in forma ridotta per venire incontro alle 
vostre capacit� mentali
http://www.elogiclab.net/blog/
http://www.flickr.com/photos/marko_po/

 __________________________________
mi fai qualche esempio di sequenze di istruzioni in VB che sono piu'
semplici delle corrispondenti istruzioni in C#?

Sono stato chiaro? Rispondi! Sono stato chiaro?
playing pernacchia.ogg

 consideri il "migliore"?
Quello con cui pago il mutuo, la rata dell'auto e i pannolini della
figlia...
Indovina? $$$
"
Indovino io: *Suocero 2.0*

stato chiaro?
"All'abuse segnala quella sg*aldrina di tua sorella, deficiente."
(cit. Luc) [
http://snipurl.com/kt3kn
]

Indovino io: *Suocero 2.0*
Ce li ha gli oggetti? Oppure in "Suocero 2.0" OO sta per
qualcos'altro? :)


 perch� "il mercato dice cos�".
Quindi, a parte gusti personali, conviene il C#, visto che il mondo
Python � una nicchia ancora pi� piccola di quanto sia  C# rispetto a
Java.
A meno che i programmatori Python siano pagati profumatamente. Cosa di
cui dubito moltissimo.

 cui dubito moltissimo.
mah sai questi sono ragionamenti che lasciano il tempo che trovano.
certo � che � pi� probabile paghino bene chi fa le scelte tecnologiche 
rispetto a chi se le trova calate dall'alto o le fa sulla base di quello 
che fa la massa.


 interprete per C.
PARECCHIO tempo fa :-)
Ma sei cosi' vecchio pure tu da ricordartelo ? :-)))

 Ma sei cosi' vecchio pure tu da ricordartelo ? :-)))
Amico mio, quando racconto che alla mia et� mi diverto ancora a girare
bytes, mi guardano storto... ;-)
-- 
Ciao!
Luca

 unmanagged. Senno', estremamente più comodo C#.
Quando devi portare una vecchia ed enorme classe COM c++ in ambiente .net, dove 
il COM non esiste, l'unica soluzione è il managed c++ con l'esposizione delle 
funzioni necessarie.


 Luc-resto del mondo
Qui su ILI è la norma. Ma il mondo-ILI non ha ancora capito che non ha 
possibilità... :P 


 cui dubito moltissimo.
E poi ci si chiede perchè l'Italia a livello tecnologico sia
considerata meno di una merda :)
  ngw

 contro i bachi che il compilatore non puo' scovare.
� un'osservazione ragionevole, ma personalmente credo che neanche i 
linguaggi a tipizzazione statica possano fare a meno di una test suite 
sistematica (se non della metodologia test-driven), perch� le garanzie 
di correttezza marginali offerte dal type-checking a compile-time sono 
una cosa del tutto trascurabile, rispetto al novero dei possibili errori 
in un'applicazione complessa.
I principali vantaggi della tipizzazione statica risiedono nelle 
possibilit� di ottimizzazione del codice oggetto, IMHO.

 possibilità di ottimizzazione del codice oggetto, IMHO.
Fermo restando che non si puo' fare a meno del testing, alcuni
linguaggi e compilatori
permettono di *complementare* la strategia di testing con verifiche
piu' invasive che
rendono alcuni bachi impossibili per costruzione.
Ad esempio io lavoro con linguaggi non esattamente "mainstream" e
alcuni dei compilatori che uso
(e sviluppo) includono theorem prover per provare staticamente
l'assenza di run-time error,
tipo overflow, array-out-of-bounds, etc. (incluso prova formale di
correttezza parziale
tramite semantica assiomatica). Con queste tecnologie, puoi diminuire
il "peso" della strategia di
test, a fronte di un probabile aumento del tempo di sviluppo. Chiaro
che questi linguaggi non sono
applicabili in tutti i domini.

 applicabili in tutti i domini.
Certo, ma allora non stiamo pi� parlando di semplice type-checking a 
compile-time ;-)

 considerata meno di una merda :)
Siii? Se faccio la procedura stipendi in Python, tutta bella
indendata, mi chiama subito Steve per un Job(s)?? :-)

stato della porta seriale stessa.
Stai sfruttando un tipico idioma C. Capisco che ti manchi e che la
forma 
initialize_port()
while is_process_running():
    # do something
    check_port()
non sia altrettanto compatta; per� � anche vero che parliamo solo di
una differenza di compattezza, non di funzionalit�. Ad esempio, nel
tipico caso idiomatico che sfrutta l'assegnamento:
while (c = getchar() != ...) {
    do_something();
}
l'equivalente Python �
while 1:
    c = raw_input()
    if not c:
        break
    do_something()
e la cosa non piace a molti che vengono dal C. Per� � anche vero che
non a tutti i programmatori piacciano per forza forme cos� (vd. anche
ngw nell'altro post).
Trovo che queste forme compatte del C siano diretta espressione del
suo design "per programmatori esperti"; il design di Python prevede
che compattezza ed efficienza si manifestino in altre forme (non so,
vedi unpacking assignment, sequences, etc.)

 un probabile aumento del tempo di sviluppo.
Ovvio che in alcuni ambienti l'assenza di errori a run-time e' critica
(in realta' IMHO e' critica ovunque). E sinceramente in C++ scrivere
del codice ridondante per gestire gli overflow e' un po' una rottura.
Io la strategia che applico e' semplice: non metto controlli, ma provo
a programmare nel miglior modo possiblie (per quanto mi riesce). Anche
perche', spesso quando si va a cercare qualcosa fuori dal boundary,
non necessariamente e' per errore!
Qualche mese fa stavo scrivendo del codice per fare il tracking di una
specie tubo in un'immagine 3D, alle volte il "tubo" (in realta' un
canale osseo) passava vicino ai confini dell'immagine e rientrava
nell'immagine. Ora, giustamente mi dava overflow, pero' d'altro
canto... ragionando a livello piu' alto... e' un problema tecnico se
manca un pezzo d'immagine, non teorico, quindi ho dovuto costruire un
semplice modello probabilistico per non far perdere la traccia quando
(parte o tutto) usciva dai bordi dell'immagine. Un metodo automatico
per correggere il buffer overflow, m'avrebbe dato dei risultati
sballati "forzandomi" ad adattarmi all'architettura, piuttosto che
fare adattare l'architettura al problema.
Does it make sense?
Il "buffer overflow" e' un problema che si ha in natura, se io ho un
muro davanti e "non vedo" che succede dietro, ma magari "sento" delle
urla, non avro' il quadro completo della situazione oltre il muro, ma
usando l'udito staro' "ipotizzando" cio' che accade oltre il muro.
Quindi mi costruisco un modello mentale di cosa accade.
Analogamente per i linguaggi (visto che ci sei dentro) ti chiedo una
cosa che m'e' venuta in mente scrivendo, esiste qualche linguaggio/
compilatore che permetta di *prevedere* i dati al di fuori del bound?
E di costruire i dati partendo da modelli precaricati? Una specie di
supervised out-of-boundary data prediction implementata a livello di
linguaggio? Sarebbe interessante avercelo.

 compile-time ;-)
Dipende da quanto e' espressivo il tuo sistema di typing ;-)
Ad esempio (questo e' Ada Standard):
subtype My_Integer is Integer range 3 .. 5;
subtype My_Range is Integer range 1 .. 4;
type My_Array_Type is array (My_Range) of My_Integer;
A : My_Array_Type;
...
A (5) := 0;  <-- errore a compile-time.
A (3) := 2;  <-- errore a compile-time.
E' facile fare esempi piu' "interessanti" includendo puntatori e
object-orientation.
Usando analisi statica puoi scovare errori piu' "subdoli". Se poi il
theorem prover e'
integrato nella catena di compilazione, di fatto e' trasparente
all'utilizzatore. Io lo
cosidero veramente un "verifying compiler", nel senso che un programma
e' semanticamente
corretto solo se supera le verifiche statiche.

indendata, mi chiama subito Steve per un Job(s)?? :-)
Se impari *anche* a sfruttare Python di sicuro hai pi� possibilit�,
non trovi?
Il vero problema � che in parecchi, conoscendo solo *un* qualcosa,
sono pi� scarsi di quelli che hanno vedute pi� ampie. Non � difficile
da capire. O forse si?

 non trovi?
Hai ragione. Ma nella limitatezza del tempo disponibile bisogna per
forza selezionare.
Se dovessi scegliere, per ampliare in modo deciso il mio orizzonte,
indirizzerei il mio sforzo (più di quanto non ho già fatto), ad
esempio, sui linguaggi funzionali, Lisp, Scheme, SMP, ecc. Cioè
nettamente più innovativi rispetto ai paradigmi standard (ovvero Java,
C, Net, ecc.). Python è così innovativo e diverso?
D'altronde anche studiare un pochino l'assembler 386 (come mi è
capitato recentemente) amplia l'orizzonte.

 A (3) := 2;  <-- errore a compile-time.
Questo controllo, se non sbaglio, anche Pascal/Delphi te lo offre. Ma
Pascal è vecchio, verboso, barboso e cattivo :-)

 linguaggio? Sarebbe interessante avercelo.
Non sono sicuro di aver capito, ma generalmente un programma e'
un'astrazione di un
preciso problem space, quindi dovrebbe essere compito dello sviluppare
identificare il
dominio dei dati. A quel punto il linguaggio dovrebbe essere
espressivo a sufficienza
per permettere di esprimere il dominio, e il compilatore dovrebbere
trovare violazioni a
posteriori sui vincoli espressi in fase di design. In entrambi i casi,
C fallisce miseramente,
mentre Ada o SPARK (ma anche altri linguaggi), no.

 corretto solo se supera le verifiche statiche.
Infatti, parlerei pi� di analizzatori statici che di compilatori 
propriamente detti, quindi il discorso diverge di brutto (anche perch� 
l'analisi statica del codice si pu� fare anche su linguaggi dinamici).
Comunque, tornando alle mie antichissime reminiscenze universitarie, le 
analisi di correttezza formale e il theorem proving automatico in 
generale, non hanno mai funzionato bene dal punto di vista pratico, 
potendosi realisticamente applicare solo ad ambiti ristrettissimi (� pur 
vero che parliamo di varie ere geologiche fa, ripeto).
Nella pratica, il tempo che un linguaggio dinamico ti permette di 
risparmiare durante lo sviluppo, lo reinvesti estendendo al massimo la 
copertura dei tuoi test, cosa che alla fine si rivela mille volte pi� 
preziosa delle verifiche formali, ai fini della validazione del codice.


Sono paradigmi differenti, non direi che Scheme è più "innovativo" di
Python, tantomeno SMP. Tra l'altro, non esiste nessun "paradigma
standard". Lisp probabilmente tra i linguaggi che citi è quello più
interessante, ma se non ha interessato nessuno in 60 anni dubito che
lo farà ora.
Io, comunque, non sviluppo con Python da davvero molti anni (sono
fermo al 2.4, con l'introduzione dei decoratori) e non ne seguo
granchè lo sviluppo. Sicuramente conoscerlo è meglio che non
conoscerlo, è uno strumento estremamente produttivo, in alcuni ambiti
(come la system integration) è un killer.
La mandria che segue "quello che chiede il mercato" è quella che poi
contribuisce a svalutarlo, questo mercato. Se hai la possibilità di
vedere dei cv sai di cosa parlo: 200 curriculum fotocopia, tutti con
le stesse competenze, l'unica differenza è se tra gli hobby hanno il
"nuoto" oppure il "teatro".
Quello che sostengo non è che non conoscendo Python sei
automaticamente un cretino, sostengo che non conoscendo *nulla* al di
fuori di "quello che chiede il mercato" (che per altro sono soluzioni
quasi mai complementari, come nel caso di Java e C#) è tipico del
tecnico mediocre, del non curioso, del timbra cartellino, quello la
cui massima aspirazione a livello tecnico è smettere di fare il
tecnico per una posizione di management.
Qualunque bravo tecnico non si chiede perchè studiarlo, ma perchè non
farlo, e poi decide in base ai suoi interessi o, ancora meglio, quello
che vuole sviluppare.
Tutto qui.
  ngw


Si e' passato molto tempo, e molte delle cose che hai detto non sono
piu' valide (e alcune mai lo sono state).
Esempi recenti:
- il nuovo sistema di controllo del traffico aereo dello UK e' scritto
(e verificato formalmente) al 75% in Ada e SPARK.
- i sistemi di controllo di volo degli AirBus sono interamente
sviluppati e verificati usando un linguaggio formale (Lustre)
- gli standard per i sistemi ad elevata sicurezza *richiedono* l'uso
metodi formali
Se sei interessato, mi e' facile fornirti altri link.
I domini in cui queste metodologie sono usate NON sono di nicchia (nel
senso che nel mondo ci sono molti piu' sistemi critici di quanti
pensi),
e sono piuttosto attraenti da un punto di vista economico.
Quanto ai linguaggi dinamici (qualsiasi cosa tu voglia dire con questo
termine), semplicemente non sono adatti per i sistemi high-integrity
per una montagna di motivi.

capitato recentemente) amplia l'orizzonte.
Certo, meglio averne studiato uno (MIPS assembly magari?) che nessuno.

 mentre Ada o SPARK (ma anche altri linguaggi), no.
dovrei guardarmeli, mi sa!
Il problema e' che tutte le librerie che uso sono in C/C++ ...
grazie per lo spunto di riflessione!!!


Non sai cosa sono ma sai che non sono adatti per addirittura una
montagna di motivi ?
Sapresti fornire un esempio di un test formale fatto dal compilatore
non riproducibile da un normalissimo test/spec scritto da uno
sviluppatore ? Perchè io saprei fornirne appunto una montagna in senso
opposto.
Stai comunque parlando del semplice design by contract alla Eiffel
(almeno questo pare a me ...), per cui esistono letteralmente
tonnellate di estensioni, plugin e chi più ne ha più ne metta, per
praticamente ogni linguaggio abbia mai posato lo sguardo.
Erlang tra l'altro è tipato dinamicamente, la Ericsson lo usa per le
sue centraline, e hanno raggiunto il 99,9999999% di reliability, con
un approccio opposto e che mi pare ben più effettivo di quello che
proponi: niente sharing di stato, niente side-effects, più un sistema
di error recovery degno di questo nome.
  ngw

 Se sei interessato, mi e' facile fornirti altri link.
piu' che link, sapresti per caso indirizzarmi qualche articolo (ma
anche solo qualche autore) sull'uso di metodi formali in
apparecchiature mediche?
ad esempio \cite{Martin2007} usano questo popo' di macchinario per
trapanare il cranio basandosi su -sempre se ben ricordo, ma non dovrei
sbagliarmi- delle microCT e lo testano su animali, ma -che mi ricordi-
mica parlano di metodi formali e similia.
Ora, loro lo fanno su animali, ma so di altri gruppi che si accingono
a farli su persone con apparecchiature simili, sarebbe interessante
investigare su quanti in realta' usano metodi formali per programmare
tutto cio' ;-)
Oddio c'e' da dire che partono da modelli gia' fatti e (sicuramente)
ben scrutinati dall'"expert", ma insomma... partono dall'assunto che
il metodo e' automatico... se il modello deve passare
(obbligatoriamente) prima dall'esperto che lo valuta, automatico un
par di balll :-)
@article{Martin2007,
author="Martin Leinung and Stephan Baron and Hubertus Eilers and Bodo
Heimann and Sonke Bartling and Ralf Heermann and Thomas Lenarz and
Omid Majdani",
title="Robotic-guided minimally-invasive cochleostomy: first results",
journal=GMS,
volume="2",
number="1",
pages="1--7",
year="2007"
}

 per una montagna di motivi.
Mi domando come tu faccia ad esprimere un giudizio su una mia 
affermazione, se poi tu stesso dici di non essere sicuro di quello che 
intendessi.
(Non � il massimo per uno che si occupa di theorem proving ;-)
Comunque, per /linguaggio dinamico/ intendo quello che intendono tutti 
(quelli che si occupano di informatica):
http://en.wikipedia.org/wiki/Dynamic_Languages
Detto questo, i linguaggi dinamici hanno conquistato, in brevissimo 
tempo, ambiti applicativi che si riteneva fossero loro preclusi.
Non mi meraviglierei per niente se facessero il loro ingresso in massa 
anche in ambito high-integrity, una volta sperimentato che 
l'abbattimento dei tempi di sviluppo permette di investire pi� tempo 
sulle verifiche di correttezza.
Saluti.

di error recovery degno di questo nome.
aneddoto: sul forum di 
hwupgrade.it
, che pure � frequentato da diversi
buoni professionisti, sai come apostrofavano Armstrong? Un invasato
rimasto chiuso nella cantina della Ericsson per decenni, che sta
avendo un p� di notoriet� grazie al suo sbraitare...
Con certe persone � davvero una causa persa.

 lo farà ora.
Dai, ti va di scherzare! :-). Certamente Lisp non è il più usato dei
linguaggi, ma ha una sua base di utenti, magari accademici,
ricercatori, quel che vuoi.
Ma dire che non ha interessato nessuno.... :-))

 Il problema e' che tutte le librerie che uso sono in C/C++ ...
Interfacciare Ada e C/C++ e' estremamente facile: lo standard del
linguaggio include le specifiche per farlo.

 Perchè tante chiacchiere? Provalo e giudica tu.
Eh no, non sono io che lo voglio "vendere" ;-)

 sulle verifiche di correttezza.
ecco, anche questo e' un punto importante, infatti.
Per questo chiedevo, infatti, *quanto* tutte le teorie/linguaggi si
potessero apllicare a chi deve/vuole sviluppare in fretta (demandando
al compilatore il grosso del lavoro(*) )
(*)=per "grosso del lavoro" intendo analisi statistiche di
distribuzioni di dati e supervised data retrieval (che ormai sono
praticamente ovunque, visto che e' appurato che l'essere umano ricorda/
elabora/etc per modelli).

   ngw
Io parlo di verifica formale statica (un teorema - con relativa
dimostrazione - che *dimostra* l'assenza di run-time errors).
Quanto ai linguaggi dinamici (chiedo scusa, non avevo correttamente
inteso il termine - ma ora si) ora non sono utilizzati in sistemi high-
integrity (e in particolare safety-critical) anche perche':
- gli standard di certificazione richiedono livello di coverage che
sono difficili da raggiungere e misurare con quei linguaggi. Tanto per
darti un'idea del livello di coverage richiesto, considera che anche
programmi che facciano uso massiccio di dynamic binding pongono
problemi significativi, perche' l'autorita' di certificazione potrebbe
chiederti di testare il corretto comportamento considerando *tutti le
possibilii risoluzioni* di una chiamata risolta dinamicamente.
- se sono interpretati, e' necessario certificare la virtual machine
- gli standard di certificazione richiedono che il codice sorgente sia
tracciabile a codice oggetto, ovvero che il grafo delle possibili
esecuzioni nel codice sorgente sia in una qualche precisa relazione
con il grafo delle possibili esecuzioni a codice oggetto. Dimostrare
questa proprieta' non e' sempre facile per i linguaggi di cui parli.
L'unico esempio industriale di uso di linguaggi funzionali che ho
visto in ambito aerospaziale civile e' per un generatore di codice da
modelli (quindi *non* un'applicazione embedded) scritto in OcaML: ci
hanno messo 15 anni di tesi di dottorato per trovare un approccio
ragionevole e, ciononostante, la strategia usata non e' ancora
universalmente accettata.
Detto questo, magari fra 20 anni si useranno, anche se onestamente il
trend al momento e' verso model-driven development.
Come scritto in un altro post, il discorso cambia in ambito militare
perche' gli standard sono molto meno restrittivi (se un aereo da
guerra esplode in volo muoiono meno persone rispetto ad un aereo
civile).

 parte della NASA.
Gli standard di sviluppo della NASA (come del DoD o ESA etc.) non
hanno nulla a che vedere con gli standard industriali civili.
Questo permette loro di usare technologie piu' "esotiche" che non
sarebbero facilemente accettabili in ambiti civili. Questo perche' in
ambito militare si richiede un livello di verifica molto inferiore
rispetto a quanto richiesto in ambito civile. Detto questo, ripeto:
magari fra qualche anno avremo un sistema di controllo di volo scritto
in un linguaggio funzionale, ma al momento (con gli standard) attuali,
la vedo dura.

 linguaggio include le specifiche per farlo.
'orc can! Allora mi ci fiondo subito appena mi libero da un paio di
incombenze!

 incombenze!
Per informazioni su compilatori ecc puoi chiedere su comp.lang.ada.


Guarda che a me piace moltissimo, molte caratteristiche di Lisp fanno
tutt'ora invidia.
Ma come dimostrato, la gente usa quella granitica merda di PHP, o C#,
il "mercato" non lo richiede, quindi non "conviene".
  ngw

 Per informazioni su compilatori ecc puoi chiedere su comp.lang.ada.
lo faro' senz'altro appena ho tempo!
ADA lo avevo visto per la prima volta a 13/14 anni, ricordo che mi
imparai i primi rudimenti (incuriosito dal fatto che avevo letto che
lo usavano per i missili) e non avendo ancora un computer (doh!) non
ci potei far nulla! :-))) Sarebbe divertente se lo usassi ora LOL, che
tutto faccio meno che lanciar missili LOL :-)
Grazie10000 per le dritte!


Solo un consiglio: si scrive "Ada" non "ADA" (non e' un acronimo, il
nome e' in onore di Ada Lovelace, la prima programmatrice della
storia) ;-)

 civile).
Contenti i militari :D
  ngw

 sbaglio eh.
Model-driven development e' un approccio allo sviluppo costruttivo
basato su modelli (rappresentazioni astratte) che puoi usare per
generare codice o verifica/simulazione. Esempi: SCADE, Simulink, UML,
AADL, etc.

Eh no, non sono io che lo voglio "vendere" ;-)
Non sto vendendo niente, io. Chiediti piuttosto perch� tu ti aspetti
di *comprare* qualcosa invece di *valutarlo tecnicamente* :).
Oltretutto, Python fa parte di quella schiera di tecnologie che non
hanno dietro una societ� che le vende: si vendono da sole per via
della loro bont� tecnica.
E' piuttosto questione di evoluzione: c'� chi rimane ancorato a
strumenti di bassa qualit� e chi si evolve verso quanto di meglio
riesce a trovare per portare a termine il compito.
Se leggi un p� quello che dice Steve Yegge sugli albori di Amazon, ci
trovi grandi programmatori che usavano C, Lisp e Emacs a tutto spiano.
Roba che si "vende" da sola da sempre. Lo stesso vale per i grossi
user di Python, che lo adottano in base alla qualit� invece che
comprarlo per la pubblicit�, o per Erlang, Ruby, diversi linguaggi
migliori di Java con cui si pu� meglio programmare la bella
piattaforma omonima (JRuby, JPython, Clojure, Scala, etc.), e via di
seguito.
Fin quando si penser� in termini di *prodotti*, *vendite* e
*pubblicit�* in tema di questioni puramente tecniche, i risultati
saranno sempre scarsi.
"it's a fashion industry" mi pare disse qualcuno, ed � *male*.

Ma dire che non ha interessato nessuno.... :-))
Non credo scherzasse. Piuttosto, penso si riferisse al fatto che Lisp
per una serie di motivi (vedi le idiosincrasie dovute alle diverse
implementazioni) non ha attecchito nell'uso di massa; paradossalmente,
stanno avendo molto pi� rilievo molti suoi, per cos� dire, lontani
discendenti e non che stanno facendo rinascere l'interesse per la
programmazione funzionale.

 programmazione funzionale.
In effetti sembra che l'attuale standard del Lisp (Common Lisp) sia un
documentino di oltre 1000 pagine. Chiaro che non attecchisce... :-) A
mio parere anche perchè hanno voluto sovraccaricare sulla meravigliosa
semplicità di base del linguaggio tutta una serie di altri concetti, a
cominciare dall'object oriented.

 il mio programma?
Siamo nei tempi moderni, governati dallo sviluppo agile. L'identazione
del "tuo" codice non e' affar tuo!!

 lipstick on a pig".
E' il tipico elettore di centrodestra...non potrebbe essere altrimenti.

 Si ma posso deciderlo IO come? :)
Per quel che mi par di ricordare...c'e' un unico modo di identare :)
Puoi sempre scegliere la dimensione del tab, pero'.

 del "tuo" codice non e' affar tuo!!
Lo sviluppo agile si fotta :)
(in ogni caso, sapevo che c'era un buon motivo per aver smesso di fare
il programmatore :)))


Ma ROTFL!!!


Ma quando hai qualche problema non documentato...vai a cercare sui
forum delle comunita' microsoft (che sono quelli di cui si ha piu'
necessita'..dato il tipico messaggio criptico di errore MS) oppure ti
rivolgi a Confindustria?
O spendi settimane a cercare una soluzione...

 linguaggi non complessi come il C++.
ESTIQAATSI
PENSA CHE
TU PROGRAMMI
DA TANTI ANNI
PER CUI SAPRAI
QUELLO CHE STAI DICENDO
ANCHE SE NON SEMBRA
d.

 Per scriverci 4 script si. C.V.D.
O sei ignorante o sei troll o entrambi.
Propendo per la terza.