Discussione:
Con che linugaggio imparare a programmare??
(troppo vecchio per rispondere)
sono_io
2003-09-05 11:03:49 UTC
Permalink
Mi trovo di fronte ad una scelta:

Attualmente, programmo in maniera basilare con visual basic ed ho delle
buone conoscenza su l'uso di windows, ma voglio passare a linux.
Fra qualche giorno avrò 2 pc, uno con linux e l'altro per forza con windows.

Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.

In un primo momento pensavo di imparare il Java che ha dalla sua parte la
portabilità appunto (anche se non ho ancora capito come).

Adesso mi è venuta un'altra idea, imparare il linguaggio di linux e poi
installare i vari emulatori sulle due piattaforme per far girare i programmi
windows su linux e per compilare in linux su windows.

E' una buona soluzione?
se si, con quali programmi?
Dove li trovo? Link?
ovviamente tutto opensource...!?
Ciao e grazie.
marco
bhoo
2003-09-05 11:49:25 UTC
Permalink
Post by sono_io
Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.
bello un altro flame....
adesso arriveranno i fanatici di python..
poi quelli di c++..


comunque il mio consiglio è quello di non partire con python ma un
linguaggio di programmazione serio..quale???

signori e signore il linguaggio serio è SOLO C++

ihihihih :P


ciao :)))
Raffaele Castagno
2003-09-05 16:02:20 UTC
Permalink
Post by bhoo
signori e signore il linguaggio serio è SOLO C++
ihihihih :P
Odio gli anonimi...

Raffaele
--
Raffaele Castagno

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Raffaele Castagno
2003-09-05 19:15:13 UTC
Permalink
Post by Raffaele Castagno
Odio gli anonimi...
a parte che i fatti tuoi interessano poco,ma se proprio li dobbiamo dire..
io odio le stupidate ...
anonimo
mmm fai parte dei fanatici python ti si riconosce :))))
Io non sono fanatico di niente, caro signor nessuno.

Ad ogni modo, lascio almeno un nome che gli altri possano maledire...

"dannato bhoo" suona bruttino, non trovi?

Credo che sarebbe meglio se tu disinstallassi il client delle news fino a
quando non ti sarai letto per bene la netiquette: postare in modo anonimo
è maleducazione...

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
bhoo
2003-09-05 19:23:52 UTC
Permalink
Post by Raffaele Castagno
Io non sono fanatico di niente, caro signor nessuno.
si lo abbiamo visto da altri post :))
Post by Raffaele Castagno
Ad ogni modo, lascio almeno un nome che gli altri possano maledire...
"dannato bhoo" suona bruttino, non trovi?
Credo che sarebbe meglio se tu disinstallassi il client delle news fino a
quando non ti sarai letto per bene la netiquette: postare in modo anonimo
è maleducazione...
caro signore forse non sai che un nick non identifica una persona ed il 90%
degli user sui newsgroup non sfoggia nome e cognome :))
Forse dovresti ripassare quello che è la netiquette,in quanto stai
alimentando un flame su argomenti assurdi che non rientrano nelle regole dei
newsgroup(non è necessario usare nome e cognome).

Ma tutto questo solo per python ....
ridicolo :))
Raffaele Castagno
2003-09-06 10:28:40 UTC
Permalink
Post by bhoo
Post by Raffaele Castagno
Io non sono fanatico di niente, caro signor nessuno.
si lo abbiamo visto da altri post :))
allora impara a leggere...
Post by bhoo
caro signore forse non sai che un nick non identifica una persona ed il 90%
degli user sui newsgroup non sfoggia nome e cognome :))
Forse dovresti ripassare quello che è la netiquette,in quanto stai
alimentando un flame su argomenti assurdi che non rientrano nelle regole dei
newsgroup(non è necessario usare nome e cognome).
Io so che essere anonimi è maleducato. Anche solo avere un nick sensato, e
mantenerlo, è più corretto. Ma soprattutto, se noti, io lascio sempre un
indirizzo email al quale scrivere in privato, sempre che tu riesca a
togliere l'antispam...

Se poi non hai il coraggio di esporti, tieniti pure la tua anonimità...
Post by bhoo
Ma tutto questo solo per python ....
ridicolo :))
pfui...sai che me ne frega di python...ce ne sono tanti altri, perl, ruby,
python è solo il più "in voga"

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
bhoo
2003-09-06 10:46:41 UTC
Permalink
Post by Raffaele Castagno
Se poi non hai il coraggio di esporti, tieniti pure la tua anonimità...
il 90% delle persone non mette il suo vero nome e ti comporti semrpe allo
stesso modo da cafone come stai facendo adesso ? :))
non inventare scuse per nascondere quanto sei fanatico
Post by Raffaele Castagno
Post by bhoo
Ma tutto questo solo per python ....
ridicolo :))
pfui...sai che me ne frega di python...ce ne sono tanti altri, perl, ruby,
python è solo il più "in voga"
si vede in altri post di confronto con c++(oltretutto hai ammesso di non
saperene più di tanto di c++).
Raffaele Castagno
2003-09-06 15:18:23 UTC
Permalink
Post by bhoo
Post by Raffaele Castagno
Se poi non hai il coraggio di esporti, tieniti pure la tua anonimità...
il 90% delle persone non mette il suo vero nome e ti comporti semrpe allo
stesso modo da cafone come stai facendo adesso ? :))
non inventare scuse per nascondere quanto sei fanatico
Il 90% delle persone che non mettono nome e cognome, si scelgono un nick,
e usano sempre quello. E quando lo cambiano, hanno la correttezza di farlo
sapere agli altri.

Il morphing è contro la netiquette, e passabile di notifica all'Abuse...
Post by bhoo
Post by Raffaele Castagno
Post by bhoo
Ma tutto questo solo per python ....
ridicolo :))
pfui...sai che me ne frega di python...ce ne sono tanti altri, perl, ruby,
python è solo il più "in voga"
si vede in altri post di confronto con c++(oltretutto hai ammesso di non
saperene più di tanto di c++).
Mi sa che negli altri post ci hai visto solo quello che volevi tu. Infatti
io mi sono studiato un pò di c++, il java, un pò di python, sto dando un
occhiata al perl e in futuro anche al php. Tu? monotematico c++ per
qualunque cosa, a qualunque costo?

Come hanno gia detto altri, il c++ è adatto per certi compiti, il python
per altri, e il java per altri ancora.

Con questo, credo sia chiaro a tutti che le probabilità che tu sia Azathot
sono estremamente alte...

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Endymion
2003-09-06 12:44:00 UTC
Permalink
Post by Raffaele Castagno
Io so che essere anonimi è maleducato. Anche solo avere un nick
sensato, e mantenerlo, è più corretto.
Solo mantenerlo, il resto e' un optional tutto tuo. Se intendi cambiarlo,
puoi segnalarlo per correttezza.

Saluti.
G.M.
2003-09-05 23:09:25 UTC
Permalink
Post by Raffaele Castagno
Odio gli anonimi...
a parte che i fatti tuoi interessano poco,ma se proprio li
dobbiamo dire.. io odio le stupidate ...
anonimo
sarai mica parente con azimuth a.k.a. azathot? :)
-=M=M=
2003-09-06 17:44:30 UTC
Permalink
Post by G.M.
Post by Raffaele Castagno
Odio gli anonimi...
a parte che i fatti tuoi interessano poco,ma se proprio li
dobbiamo dire.. io odio le stupidate ...
anonimo
sarai mica parente con azimuth a.k.a. azathot? :)
Da quando e' stato brutalmente bastonato da uno stupidissimo codice
FORTRAN[*] che ha bruciato un paio dei suoi infallibili benchmark non si
vede piu' sul NG, di tanto in tanto pero' entra sul canale #oltrelinux
:)

Io intanto attendo i suoi nuovi BENCH per dimostrare che il C++ nel calcolo
vettoriale e' il miglior linguaggio mai creato ;)



[*] Attualmente c'e' un trhead su uno dei suoi bench dove ema mi ha
fatto notare come migliorare notevolmente il codice C proposto da
azathot, e dove puntualmente un compilatore fortran s'e' dimostrato 10
volte piu' veloce :)
-Ema-
2003-09-06 22:21:06 UTC
Permalink
Post by -=M=M=
[*] Attualmente c'e' un trhead su uno dei suoi bench dove ema mi ha
fatto notare come migliorare notevolmente il codice C proposto da
azathot, e dove puntualmente un compilatore fortran s'e' dimostrato 10
volte piu' veloce :)
A dire il vero non mi dispiacerebbe darti ragione. Ma aspetta a dire
l'ultima parola :-).
C/C++ sono linguaggi con cui si puo' fare di tutto con prestazioni
eccezionali ma spesso il costo per ottenere il risultato e' troppo alto
e tecnologie/architetture relativamente recenti danno risultati
migliori. Ad esempio java lato server con servlet ed ejb permettono di
ottenere ottimi risultati con costi contenuti. Fare le stesse cose in
C/C++ sarebbe decisamente troppo costoso.

Ciao.
-Ema-
-=M=M=
2003-09-07 12:31:10 UTC
Permalink
Post by -Ema-
Post by -=M=M=
[*] Attualmente c'e' un trhead su uno dei suoi bench dove ema mi ha
fatto notare come migliorare notevolmente il codice C proposto da
azathot, e dove puntualmente un compilatore fortran s'e' dimostrato 10
volte piu' veloce :)
A dire il vero non mi dispiacerebbe darti ragione. Ma aspetta a dire
l'ultima parola :-).
C/C++ sono linguaggi con cui si puo' fare di tutto con prestazioni
eccezionali ma spesso il costo per ottenere il risultato e' troppo alto
e tecnologie/architetture relativamente recenti danno risultati
migliori. Ad esempio java lato server con servlet ed ejb permettono di
ottenere ottimi risultati con costi contenuti. Fare le stesse cose in
C/C++ sarebbe decisamente troppo costoso.
Ciao.
-Ema-
Io sono pienamente daccordo con te, ti diro' ho un forte debole per il C
che sto cercando d'approfondire, e il quale e' sicuramente molto
versatile e potente, ad esempio tempo fa ho dovuto scrivere un
algoritmo di branch and bound in fortran, oggi sto cercando di apprendere
meglio l'uso dei puntatori per realizzare una struttura dati i C che sia
piu' efficente del codice che ho gia' scitto in fortran[*], questo perche'
il fortran e' assolutamente inadatto per certe cose.

Un esempio?

Gestione dinamica della memoria, in C sai meglio di me cosa si puo'
fare, e sai anche che un array viene posizionato in locazioni di memoria
adiacenti, i compilatori fortran che ho usato invece piazzano gli
elementi in locazioni non adiaceti se faccio uso di matrici allocabili
dinamicamente, cio' porta un rallemtamento delle prestazioni, pero' il
fatto di avere delle vere matrici dinamiche e' una sicurezza in piu' per
leggibilita e verifica di eventuali bug, cioe' un elemento
dichiarato come:

integer, allocatable :: matrice_6_dimensioni(:,:,:,:,:,:)

Pittosto che scivere una malloc() e mascherare un vettore da matrice.

Un altro caso in cui userei/usero' sicuramente il fortran e' il calcolo
parallero, infatti a quanto ne so i compilatori piu' avanzati in questo
aspetto sono proprio i compilatori Fortran commerciali, che possiedono
nativamente ottimizzazioni e librerie per architetture a piu' processori
e sistemi cluster come OpenMosix.

Se poi uno vuole usare il proprio hardware allo stemo, credo che nulla
possa superare un buon programmatore + C + ASM.
Ma capirai che non e' una cosa da tutti, la programmazione per me e' uno
strumento non un fine, quindi mi accontento di una maggiore semplicita a
scapito di un pizzico di velocita in piu' :)

Io al momento sto cercado di usare i due linguaggi (dato che possibile
scriver codice misto) assieme, usando il meglio dell'uno ed il meglio
dell'altro, non credo che X sia meglio di Y, tutto dipende dal materiale
che si trova tra la tastiera e la sedia (non siate maliziosi ;) )

Come gia' ti ho detto questi bench non significano nulla, pero' mi
permettono di approfondire certi asperti che spesso sono dati per
scontati, la discussione che abbiamo sull'altro trhead mi pare sia molto
interessante, ed io sto imparando molto, e' questo quello che mi
interessa.

Ho usato la parola bastonato, perche' volevo pizzicarlo un pochino e
farlo uscire fuori nel caso lurcasse :)

Pero' non sopporto chi a fronte di una sua ottima preparazione su un
determinato campo, emetta sentenze su sutto e su tutti senza capire o
conoscere altri campi, e spesso denigrando il lavoro altrui.
sapere nulla di cose che non gli competono direttamente.

Azathot e' un ottimo programmatore ma non capisce nulla di aerodinamica,
eppure ne parla come un esperto (mi riferisco ad un vecchio trhead)

Daltro canto ci sono ottimi esperti di aerodinamica e fludidodinamica in
generale che non si possono perdere a studiare il C/C++ per i loro scopi
ed allora si appoggiano a soluzioni piu' immediate e meno performati quali Matlab
(interpretrato) o il fortran usando le migliai di routine pronte e
*TESTATE* da molti anni, non scriveranno codice velocissimo, ma almeno
le camere di combustione delle nostre vetture danno rendimendi migliori
rispetto a quelle di 20 anni fa :)


Ciao :)
bhoo
2003-09-06 09:12:02 UTC
Permalink
bello, un altro anonimo usa-e-getta. Scommetto che, cercando un po' con
Google Groups, scoprirei che questo è il tuo primo post. Ho indovinato?
ahahhaha salta sempre fuori..
ho letto i tuoi post inutili ma però non ti riconosco come fanatica di
questo o quello...
insomma a che servi ? :))
soprattuto a che serve questo tuo post ?
esattamente quali sono gli argomenti che contesti ?
che non ci sono fanatici di python ?
oppure che non ci siano fanatici di c++ ?
sei una fanatica di questo o quello anche tu? :))


ancora con questa storia dell'anonimo perchè il tuo nick non lo è ? :))

mah :))
Raffaele Castagno
2003-09-06 10:34:04 UTC
Permalink
Post by bhoo
bello, un altro anonimo usa-e-getta. Scommetto che, cercando un po' con
Google Groups, scoprirei che questo è il tuo primo post. Ho indovinato?
ahahhaha salta sempre fuori..
ho letto i tuoi post inutili ma però non ti riconosco come fanatica di
questo o quello...
insomma a che servi ? :))
soprattuto a che serve questo tuo post ?
esattamente quali sono gli argomenti che contesti ?
che non ci sono fanatici di python ?
oppure che non ci siano fanatici di c++ ?
sei una fanatica di questo o quello anche tu? :))
Credo contesti il fatto che ci sono persone che si divertono a cambiare
identità virtuale ad ogni pasto, per poi trolleggiare sul ng liberamente.
Post by bhoo
ancora con questa storia dell'anonimo perchè il tuo nick non lo è ? :))
Il suo è lo stesso da quando sono arrivato qui. Se chiedo di Juliet,
magari c'è pure qualcuno che la conosce di persona che mi dice "è in
ferie". Te chi sei? boh?
"hai visto quel nuovo troll sul GN?"
"e chi è?"
"...boh..."

Per quel che mi riguarda, il tuo nick è psicologicamente filtrato (in
attesa di avere a disposizione più potenti mezzi...)

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
bhoo
2003-09-06 10:38:57 UTC
Permalink
Post by Raffaele Castagno
Per quel che mi riguarda, il tuo nick è psicologicamente filtrato (in
attesa di avere a disposizione più potenti mezzi...)
Raffaele
io quello che vedo che sei un maleducato allo stesso livello della tua
amica..
prendersela con un nick solo perche' ci si sente presi in causa in quanto
fanatici di un linguaggio e non capaci di tenere un discorso è alquanto
infantile...

mi sembra inutile continuare..
-Ema-
2003-09-06 10:45:04 UTC
Permalink
Post by bhoo
io quello che vedo che sei un maleducato allo stesso livello della tua
amica..
prendersela con un nick solo perche' ci si sente presi in causa in quanto
fanatici di un linguaggio e non capaci di tenere un discorso è alquanto
infantile...
mi sembra inutile continuare..
Noooo. Dai dai continuate.. :-)
Un bel flame ;P
Mi faccio un sacco di risate :D

Ciao.
-Ema-
Raffaele Castagno
2003-09-06 15:13:26 UTC
Permalink
Post by bhoo
Post by Raffaele Castagno
Per quel che mi riguarda, il tuo nick è psicologicamente filtrato (in
attesa di avere a disposizione più potenti mezzi...)
Raffaele
io quello che vedo che sei un maleducato allo stesso livello della tua
amica..
prendersela con un nick solo perche' ci si sente presi in causa in quanto
fanatici di un linguaggio e non capaci di tenere un discorso è alquanto
infantile...
mi sembra inutile continuare..
"Inutile parlarne, sai, non capiresti mai..."[cit]

juliet, non la conosco per niente, non so neanche quale sia il suo nome, e
neanche se è veramente una donna.... ma so per certo che se vengo qui, e
chiedo di juliet, ci sarebbe qualcuno in grado di rispondermi, perchè è
così che si fa conoscere qui. Oddio, forse ci potrebbe addirittura essere
qualcuno che si ricorderebbe di me, se qualcuno mi cercasse...

quanto al prendersela con un nick, non l'ho faccio certo per come parli
del python. Ci sono molti altri qui in grado di smentire le tue tesi, per
esperienze personali e prove concrete.

Io mi sono semplicemente limitato a criticare il tuo postare in modo
anonimo, con nick e mail completamente sparate a caso, non le tue opinioni.

Il resto, te lo sei inventato tu.

Chi è il fanatico?

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Juliet
2003-09-06 17:20:00 UTC
Permalink
nonostante quello che potrebbe dire il mio nick, sono Juliet. Ah, quasi
Post by bhoo
ho letto i tuoi post inutili ma però non ti riconosco come fanatica
di questo o quello...
vedi, a me non interessa quale sia il miglior linguaggio. Io la vedo in
un'ottica di "meno peggio". Essendo quell'inguaribile ottimista che voi
tutti avete imparato a conoscere e... conoscere, il mio primo interesse
sono le magagne. Non per cosa è più adatto uno strumento, piuttosto per
cosa non dev'essere usato nemmeno per scherzo. Sapendo cosa richiede il
C++ per funzionare in ambienti "particolari", ad esempio, ho trovato un
altro punto a suo sfavore. Il Python non l'ho mai usato, non so neanche
che forma abbia, quindi non ho niente da dire a riguardo
Post by bhoo
esattamente quali sono gli argomenti che contesti ?
oh, poverino, non sai cosa dire. Non sai cosa rinfacciarmi. Che ne dici
di tacere, allora?
Post by bhoo
ancora con questa storia dell'anonimo perchè il tuo nick non lo è ? :))
io posto da quattro anni con lo stesso nickname e la stessa e-mail. Non
me ne "invento" (parola grossa, nel tuo caso) per ogni discussione. Ah,
e non mi sembra ci sia molto da sorridere, che ne dici di piantarla con
quella smorfia isterica? trovo molto più civili gli scambi di sberle
--
< http://www.reactos.com/ > Open source clone of Windows NT. Current
Don't stand, REACT! version 0.1.3. C, C++ and ASM developers
and beta testers are welcome!
bhoo
2003-09-06 20:59:12 UTC
Permalink
Post by Juliet
Post by bhoo
esattamente quali sono gli argomenti che contesti ?
oh, poverino, non sai cosa dire. Non sai cosa rinfacciarmi. Che ne dici
di tacere, allora?
guarda che sei tu che non hai argomentazioni e per difendere chissà cosa ti
attacchi ad un nick :)))))))))))) (e rido quanto mi pare)
Post by Juliet
Post by bhoo
ancora con questa storia dell'anonimo perchè il tuo nick non lo è ? :))
io posto da quattro anni con lo stesso nickname e la stessa e-mail. Non
me ne "invento" (parola grossa, nel tuo caso) per ogni discussione. Ah,
e non mi sembra ci sia molto da sorridere, che ne dici di piantarla con
quella smorfia isterica? trovo molto più civili gli scambi di sberle
le sberle forse le usano a casa tua visto quanto sei maleducata...

Scusa ma se tutti ti dicono la stessa cosa (che sei maleducata), non sarà
che forse dovresti modificare qualcosa del tuo carattere?

Rileggi la netiquette del vivere civile sui newsgroup e impara un po' di
educazione..

:)))))))) (si rido ancora)
bhoo
2003-09-07 11:08:14 UTC
Permalink
Post by bhoo
:)))))))) (si rido ancora)
vedi sopra...
tu come al solito non avendo argomentazioni valide ti unisci ad insulti e
alle provocazioni :))) (si rido ancora)

oltre al maleducato anche infantile...
Andrea Bergia
2003-09-05 14:58:54 UTC
Permalink
Post by sono_io
Attualmente, programmo in maniera basilare con visual basic ed ho
delle buone conoscenza su l'uso di windows, ma voglio passare a linux.
Fra qualche giorno avrò 2 pc, uno con linux e l'altro per forza con windows.
Ho bisogno di un linguaggio per programmare in maniera semplice ma
efficace, che mi dia la possibilità di poter funzionare sia su
piattaforme linux che windows e che possa essere compilato su entrambe
le piattaforme.
Io sarò pazzo, ma ti consiglio di imparare il Pascal. Ha una sintassi
chiarissima, ed IMHO è molto più semplice da imparare del C, se non sei
molto ferrato in programmazione (e se hai usato solo vb non lo
sei :-D).
Dopodichè passa al C (o meglio ancora, direttamente al C++).
Anche Python non è un linguaggio da trascurare, e neanche Java.
A quel punto, quando cononscerai bene la programmazione ad oggetti,
potrai passare a studiare qualche GUI... Studiarle prima di conoscere i
concetti su cui si basano, IMHO, è controproducente.
Post by sono_io
Adesso mi è venuta un'altra idea, imparare il linguaggio di linux e
poi installare i vari emulatori sulle due piattaforme per far girare i
programmi windows su linux e per compilare in linux su windows.
Il linguaggio di Linux? Su GNU/Linux (Linux è solo una parte del
sistema) esistono un'infinità di linguaggi, probabilmente tutti quelli
per Win e qualcun'altro.

Se ti interessa il pascal, un ottimo compilatore "Open Source" è il
freepascal. Per scrivere i programmi io uso Vim, ma se vuoi qualcosa di
più simile agli editor classici di Windows prova KWrite oppure GEdit.
--
Andrea Bergia - studente Linux Registered User #281550
Andrea Laforgia
2003-09-05 13:22:03 UTC
Permalink
Post by sono_io
Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.
Python

http://www.python.it/

it.comp.lang.python
Raffaele Castagno
2003-09-05 16:03:02 UTC
Permalink
Post by Andrea Bergia
Post by sono_io
Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.
Python
http://www.python.it/
it.comp.lang.python
Assolutissimamente, accompagnato a braccetto da java...

bye

Raffaele
--
Raffaele Castagno

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Enrico
2003-09-05 17:13:07 UTC
Permalink
Post by Andrea Bergia
Post by sono_io
Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.
Python
http://www.python.it/
Errato! Ha scritto 'compilato' :-)))))))

E.
Raffaele Castagno
2003-09-05 17:55:01 UTC
Permalink
Post by Enrico
Errato! Ha scritto 'compilato' :-)))))))
a questo mondo, tutto è possibile...

http://psyco.sourceforge.net/

sarà anche jit, ma sempre compilazione è...

Raffaele
--
Raffaele Castagno
Manda in missione i SEAL per scrivermi...

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Alex Martelli
2003-09-05 20:45:51 UTC
Permalink
Post by Raffaele Castagno
Post by Enrico
Errato! Ha scritto 'compilato' :-)))))))
a questo mondo, tutto è possibile...
http://psyco.sourceforge.net/
sarà anche jit, ma sempre compilazione è...
Anche senza psyco, Python viene comunque compilato (a
bytecode), cosi` come lo e` ad esempio Java anche se
non si usa una JVM dotata di JIT:-).


Alex
Andrea Laforgia
2003-09-06 11:42:09 UTC
Permalink
On Fri, 05 Sep 2003 17:13:07 GMT, "Enrico"
Post by Enrico
Errato! Ha scritto 'compilato' :-)))))))
Ho letto le faccine, ma preciso che, a mio avviso, la menzione di
"compilato" che fa il nostro amico, sembra solo indicare la necessità
che il programma "giri" su più piattaforme e non che sia,
necessariamente, trasformato in codice macchina nativo.
Enrico
2003-09-08 14:26:32 UTC
Permalink
Post by Andrea Laforgia
On Fri, 05 Sep 2003 17:13:07 GMT, "Enrico"
Post by Enrico
Errato! Ha scritto 'compilato' :-)))))))
Ho letto le faccine, ma preciso che, a mio avviso, la menzione di
"compilato" che fa il nostro amico, sembra solo indicare la necessità
che il programma "giri" su più piattaforme e non che sia,
necessariamente, trasformato in codice macchina nativo.
La mia era solo una battuta. Il post iniziale puzzava tremendamente di troll
e sospettavo un proliferare di messaggi di risposta (come effettivamente sta
avvenendo).
Cmq sono d'accordo con te.

Ciao,
Enrico
Esposito Fulvio
2003-09-05 17:34:47 UTC
Permalink
Post by sono_io
Attualmente, programmo in maniera basilare con visual basic ed ho delle
buone conoscenza su l'uso di windows, ma voglio passare a linux.
Fra qualche giorno avrò 2 pc, uno con linux e l'altro per forza con windows.
Ho bisogno di un linguaggio per programmare in maniera semplice ma efficace,
che mi dia la possibilità di poter funzionare sia su piattaforme linux che
windows e che possa essere compilato su entrambe le piattaforme.
In un primo momento pensavo di imparare il Java che ha dalla sua parte la
portabilità appunto (anche se non ho ancora capito come).
Consiglio spassionato, fai qualche prova iniziale con un po' di linguaggi, e
porta avanti quello che ti sembra più semplici! Domande del genere in questo
ng scatenano una marea di flame!
C'è chi dice python, c'è chi dice C++, c'è chi dice Pascal, c'è chi dice
Java, etc.
Esistono talmente tanti linguaggi e ne escono fuori a bizzeffe molti altri.
Inizia con qualche semplice esercizietto in più linguaggi, poi prendi quello
che ti sta più simpatico e lascia stare gli altri. Alla fine ci sarà tempo
per impararne altri!

Fulvio
sono_io
2003-09-08 08:29:03 UTC
Permalink
Post by Esposito Fulvio
Inizia con qualche semplice esercizietto in più linguaggi, poi prendi quello
che ti sta più simpatico e lascia stare gli altri. Alla fine ci sarà tempo
per impararne altri
è il consiglio migliore fino ad adesso, credo!

grazie
marco
Mao
2003-09-06 12:41:31 UTC
Permalink
non quoto sarebbe impossibile, non li ho neanche letti tutti i post...

state facendo dei discorsi inutili che non hanno ragione di esistere. ogni
linguaggio esiste per un significato ben preciso anche se non capisco
l'utilita` dei linguaggi microsoft.

c / c++ per un uso abbastanza generico, hai un controllo totale (quasi)
sulla macchina, per avere un controllo veramente totale scrivi qualche
routine in assembler e sei a cavallo.

python e` molto veloce affidabile e facile, soprattutto per il web.

java2 sta diventando veramente un bel linguaggio che ti permette di fare
molta roba sbattendotene della portabilita` a discapito di prestazioni
decisamente ancora bassine

poi non so ci sonoanche linguaggi a tag linguaggi di scripting ecc ecc...

dato il tuo messaggio ti consiglio perl e c (linguaggio di linux non vuol
dire niente) per fare gli script magari usi il perl che e` comodo altrimenti
un po' di c.

windows abbandonalo. soprattutto perche` vuoi tutto open source.

dove li trovi i link? dio google sia con te. finche` non se lo compra
microsoft.

--
Togli LE MUTANDE e voltati per rispondere
Andrea Laforgia
2003-09-06 12:46:58 UTC
Permalink
Post by Mao
windows abbandonalo. soprattutto perche` vuoi tutto open source.
E che diavolo significa ? open-source non vuol dire "anti-microsoft".
Mao
2003-09-06 12:45:16 UTC
Permalink
inoltre se ami la programmazione cerca linguagetti simpatici come
shakespeare programming language, brainfuck e roba simile e magari divertiti
con qualcuno con crobots. secondo me imparare la programmazione con sti
linguaggi che ancora ti offrono delle sfide ti appassiona di piu.

mettere in mano il c++ a un neofita significa dirgli: guarda, hai lo
strumento del potere facci quello che vuoi. e tu non sai neanche cosa farci
dopo ^_^

--
Togli LE MUTANDE e voltati per rispondere
Azazel
2003-09-06 14:19:42 UTC
Permalink
uhm...non ho ben capito se sai già programmare o meno(se conosci VB in
modo basilare allora no:) Per imparare probabilmente il migliore è il
Pascal, dopo aver imparato le basi della programmazione generica potrai
passare ad altri linguaggi a seconda delle tue esigenze.

L'accoppiata C/C++ non te la consiglio se sei un principiante, per
effettuare cose semplici richiede conoscenze un pò complesse(puntatori e
le loro aritmetiche), la risparmierei per un passaggio successivo.

Il Java per iniziare direi di no, troppo ampolloso, la sintassi farebbe
impazzire un principiante in mezzo ai vari static, public, class della
programmazione OO richiesti anche per programmi banali.

Pythoni, Ruby e Perl direi pure di no, troppo ad alto livello, il Python
considera fra i tipi built-in anche liste e dizionari, ha una
tipizzazione dinamica, svilupperesti un'idea un pò strana della
programmazione, meglio un linguaggio a basso livello, come il Pascal.

ciao
Andrea Laforgia
2003-09-07 09:27:04 UTC
Permalink
Post by Azazel
Pythoni, Ruby e Perl direi pure di no, troppo ad alto livello, il Python
considera fra i tipi built-in anche liste e dizionari, ha una
tipizzazione dinamica, svilupperesti un'idea un pò strana della
programmazione,
Nessuna stranezza. Python va benissimo per iniziare. Come in tutti i
linguaggi, si inizia dalle cose più facili e si passa a quelle più
complesse. Python aiuta moltissimo nell'apprendere la *corretta*
programmazione.
bhoo
2003-09-07 11:06:30 UTC
Permalink
Post by Andrea Laforgia
Nessuna stranezza. Python va benissimo per iniziare. Come in tutti i
linguaggi, si inizia dalle cose più facili e si passa a quelle più
complesse. Python aiuta moltissimo nell'apprendere la *corretta*
programmazione.
come fai ad apprendere la programmazione corretta con l'uso delle liste ?
posso essere d'accordo che è un linguaggio semplice ma con l'uso delle
liste non impari la vera programmare tanto meno quella corretta.


ciao :)
Andrea Laforgia
2003-09-07 11:16:56 UTC
Permalink
On Sun, 07 Sep 2003 11:06:30 GMT, "bhoo"
Post by bhoo
come fai ad apprendere la programmazione corretta con l'uso delle liste ?
posso essere d'accordo che è un linguaggio semplice ma con l'uso delle
liste non impari la vera programmare tanto meno quella corretta.
Le liste sono dei costrutti propri di quel linguaggio. La loro
presenza non è di alcun impedimento all'apprendimento della
programmazione (sia quella "vera", si quella "corretta").
bhoo
2003-09-07 11:23:20 UTC
Permalink
Post by Andrea Laforgia
Le liste sono dei costrutti propri di quel linguaggio. La loro
presenza non è di alcun impedimento all'apprendimento della
programmazione (sia quella "vera", si quella "corretta").
si ma la programmazione "vera" o "corretta" si basa anche sulla velocità
dell'algoritmo e sulla migliore gestione della memoria.
Pensi che l'uso di una lista sia il modo migliore per impare queste cose ?
Le liste nascondono al programmatore la gestione della memoria e tanto meno
sono la migliore soluzione per quanto riguarda la velocità di esecuzione.

Non ti pare?

ma forse intendevi altro sull'apprendimento della "vera" e "corretta"
programmazione?.
Andrea Laforgia
2003-09-07 11:26:02 UTC
Permalink
On Sun, 07 Sep 2003 11:23:20 GMT, "bhoo"
Post by bhoo
si ma la programmazione "vera" o "corretta" si basa anche sulla velocità
dell'algoritmo e sulla migliore gestione della memoria.
Irrilevante.
Post by bhoo
Pensi che l'uso di una lista sia il modo migliore per impare queste cose ?
Sì.
Post by bhoo
Le liste nascondono al programmatore la gestione della memoria e tanto meno
sono la migliore soluzione per quanto riguarda la velocità di esecuzione.
Non ti pare?
No.
Post by bhoo
ma forse intendevi altro sull'apprendimento della "vera" e "corretta"
programmazione?.
No.
bhoo
2003-09-07 11:30:01 UTC
Permalink
Sì.
No.
No.
non e' che sei molto credibile con queste tue risposte...

ma forse si?
no?
si?
no?


:))
Azathot
2003-09-07 11:58:54 UTC
Permalink
Post by bhoo
non e' che sei molto credibile con queste tue risposte...
Andrea LaForge non è stato *mai* credibile.

Ciao!
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
bhoo
2003-09-07 12:12:15 UTC
Permalink
Post by Azathot
Andrea LaForge non è stato *mai* credibile.
prima era un dubbio :P

ciao :))
Andrea Laforgia
2003-09-08 07:47:52 UTC
Permalink
On Sun, 07 Sep 2003 12:12:15 GMT, "bhoo"
Post by bhoo
prima era un dubbio :P
*plonk*
Noixe
2003-09-07 12:13:41 UTC
Permalink
Post by Azathot
Andrea LaForge non è stato *mai* credibile.
A me, leggendo i suoi vari post, sembra proprio il contrario. Tu piuttosto,
dopo la figuraccia che ha fatto C++ contro la salma... ops, il fortran, che
fine hai fatto? Stai preparando altri confronti di tempi di esecuzione?

Ciao
--
Noixe
-=M=M=
2003-09-07 12:32:55 UTC
Permalink
Post by Noixe
Post by Azathot
Andrea LaForge non è stato *mai* credibile.
A me, leggendo i suoi vari post, sembra proprio il contrario. Tu piuttosto,
dopo la figuraccia che ha fatto C++ contro la salma... ops, il fortran, che
fine hai fatto? Stai preparando altri confronti di tempi di esecuzione?
LOL vedo che e' rimasta memoria dell'evento ;)
Noixe
2003-09-07 12:45:02 UTC
Permalink
Post by -=M=M=
LOL vedo che e' rimasta memoria dell'evento ;)
Si! Perchè non credevo che un compilatore per Fortran fosse così veloce, o
almeno più veloce di un compilatore per C++ :)

Ciao
--
Noixe
Azathot
2003-09-07 12:56:27 UTC
Permalink
Post by Noixe
A me, leggendo i suoi vari post, sembra proprio il contrario.
Non che questo significhi alcunché.
Post by Noixe
Stai preparando altri confronti di tempi di esecuzione?
Mi sembrano irrilevanti. C++ rules!

Ciao.
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
Noixe
2003-09-07 14:15:25 UTC
Permalink
Post by Azathot
Post by Noixe
A me, leggendo i suoi vari post, sembra proprio il contrario.
Non che questo significhi alcunché.
Potrei dire lo stesso della tua opinione sulla credibilità di Andrea
Laforgia.
Post by Azathot
Post by Noixe
Stai preparando altri confronti di tempi di esecuzione?
Mi sembrano irrilevanti.
In effetti, ciò che si doveva dimostrare, è stato dimostrato.
Post by Azathot
C++ rules!
ROTFL!!
--
Noixe
Andrea Laforgia
2003-09-08 08:01:00 UTC
Permalink
Post by Noixe
Potrei dire lo stesso della tua opinione sulla credibilità di Andrea
Laforgia.
Noixe, ti ringrazio, ma lascia perdere: è un povero troll.
Azathot
2003-09-08 12:25:09 UTC
Permalink
Post by Andrea Laforgia
Noixe, ti ringrazio, ma lascia perdere: è un povero troll.
E tu sei povero, e basta.
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
-=M=M=
2003-09-08 09:05:38 UTC
Permalink
[CUT]
Post by Noixe
Post by Azathot
Post by Noixe
Stai preparando altri confronti di tempi di esecuzione?
Mi sembrano irrilevanti.
In effetti, ciò che si doveva dimostrare, è stato dimostrato.
Post by Azathot
C++ rules!
ROTFL!!
Un attimo che quardo se ho una classe o un template in tasca...
accidenti no! nulla.
vabbo

#include<math.h>
int main(){
pow(ROTFL,1E1000);
}

o *meglio*
program x

ROTFL**1E1000

end program x
R1K0
2003-09-07 12:14:10 UTC
Permalink
Post by bhoo
si ma la programmazione "vera" o "corretta" si basa anche sulla velocità
dell'algoritmo e sulla migliore gestione della memoria.
Pensi che l'uso di una lista sia il modo migliore per impare queste cose ?
Le liste nascondono al programmatore la gestione della memoria e tanto meno
sono la migliore soluzione per quanto riguarda la velocità di esecuzione.
Secondo me siete un po' fuori strada...
Voglio dire.. cosa vuole dire programmazione corretta?

Programmare significa analizzare un problema, trovare il modo di
risolverlo
poi scegliere un linguaggio Turing completo (possibilmente non il VB) e
utilizzarlo per insegnare alla macchina come risolvere il problema.

I linguaggi di programmazione sono tutti equivalenti. Hanno vantaggi e
svantaggi. Anzi probabilmente gli stessi vantaggi sono anche i loro
svantaggi.

Il C ha il vantaggio che ti avvicina al funzionamento reale della
macchina, ma questo e' anche il suo svantaggio se invece vuoi astrarre.
Un linguaggio interpretato ha il vantaggio che spesso e' piu' facile da
usare e astrae dall'architettura, ma questo puo' portare ad un calo di
prestazioni.

E comunque se usi un algoritmo che va con x^6 in C, e in Python on in Java
ne usi uno che va con log x, ti garantisco che il Java si mangia il C.
Ovvio che se usi lo stesso algoritmo in C va piu' forte che in Java
--
(let ( (R1K0 "Enrico Franchi")
(url "www.anubics.org")
(quote "Se mi prendo sul serio c'e' da mettersi a ridere") ) )
Noixe
2003-09-07 12:20:42 UTC
Permalink
Ma come fai a tenere fuori argomenti come quello della velocità di
esecuzione e una corretta gestione della memoria?
Penso che la programmazione "vera" e "corretta" debba comprendere tutto
questo,visto che si parla di "apprendimento".
Si, ma se il newbie deve ancora assimilare concetti come if, then, else,
oppure i cicli, gli array (magari non intesi come puntatori, che è più
semplice), studiare come gestire la memoria è un'aspetto che potrà/dovrà
affrontare solo in seguito.

Ciao
--
Noixe
bhoo
2003-09-07 12:30:02 UTC
Permalink
Post by Noixe
Si, ma se il newbie deve ancora assimilare concetti come if, then, else,
oppure i cicli,
guarda che l'uso di if o while non sono le maggiori difficoltà,almeno per
utenti normali.
Post by Noixe
gli array (magari non intesi come puntatori, che è più
il corretto uso degli array di certo non lo impari con python.Python potrà
avere mille altre facilitazioni, ma queste da te citate sono poco influenti
e non esatte per un facile apprendimento .

ciao
RiK0
2003-09-07 12:53:30 UTC
Permalink
Post by bhoo
guarda che l'uso di if o while non sono le maggiori difficoltà,almeno per
utenti normali.
Guarda... io ho visto la gente che ha fatto dei corsi di programmazione
con me (purtroppo sono obbligatori, anche se inutili).
E devo dire che e' stato scioccante.
Molta gente sa fattorizzare 12, ma non sa dirti come ha fatto. A parole
intendo, figurati formalizzando.
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
bhoo
2003-09-07 13:10:47 UTC
Permalink
Post by bhoo
guarda che l'uso di if o while non sono le maggiori difficoltà,almeno per
utenti normali.
Appunto, sono argomenti molto semplici, quindi pensa a che livello è
utente.
Come puoi porti il problema della gestione della memoria?
guarda che l'uso di queste cose è semplice in python quanto in c++,hanno
praticamente la stessa sintassi.
Qual e' il problema?
Post by bhoo
il corretto uso degli array di certo non lo impari con python.
Mi pare ci sia un modulo array che permetta l'utilizzo degli stessi come
in
ogni altro linguaggio di programmazione. E cmq era un'esempio.
si certo esistono moduli esterni (numeric ad esempio) che ti aiutano
nell'uso di matrici ed array,ma di certo non ti aiutano
nell'apprendimento.Capire l'uso di un array non è solo il saper usare un
modulo ...
Post by bhoo
e non esatte per un facile apprendimento.
E perchè mai? Forse vuoi dire che non sono sufficienti a far optare per
Python come 1° linguaggio... ma a parte che questa è una tua opinione, ci
sono anche altri motivi, che rendono Python una delle migliori soluzionei
per principianti, sicuramente meglio di C/C++.
Lo sbaglio che fanno in tanti è pensare che c++ sia sempre comunque
difficile.Usare c++ non significa fare uso intenso di template o di
ereditarietà,ma anche la semplice chiamata ad una funzione oppure un
semplice if o for.
Python, come detto prima,ha mille caratteristiche interessanti ma nasconde
allo studente quelle che sono le principali tecniche di uso sia della
memoria che di prestazioni.Queste cose non puoi considerarle di secondo
piano,i computer di oggi non hanno ancora le prestazioni per rendere
irrilevante la velocita'(ovviamente non per tutti i casi).Se guardi windows
che ti assorbe il 50% delle tue risorse senza far nulla capirai subito
quanto sia influente anche un solo 10% in piu'.

ciao
RiK0
2003-09-07 14:14:43 UTC
Permalink
Post by bhoo
Se guardi windows
che ti assorbe il 50% delle tue risorse senza far nulla capirai subito
quanto sia influente anche un solo 10% in piu'.
Non uso windows neanche per sbaglio.

ciao.
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Noixe
2003-09-07 14:23:30 UTC
Permalink
Post by bhoo
guarda che l'uso di queste cose è semplice in python quanto in c++,hanno
praticamente la stessa sintassi.
Qual e' il problema?
Appunto, quindi perchè usare C++? Solo perchè permette la gestione esplicita
della memoria? Non è un'argomento per principianti, quindi può essere
studiato in seguito, quando ad es. dopo aver imparato Python, si vuole
passare ad un'altro linguaggio (e in questo caso C++ forse è la scelta
migliore per vedere la programmazione anche da altre prospettive).
Post by bhoo
si certo esistono moduli esterni (numeric ad esempio) che ti aiutano
nell'uso di matrici ed array,ma di certo non ti aiutano
nell'apprendimento.Capire l'uso di un array non è solo il saper usare un
modulo ...
Ecco, numeric. Cmq, l'apprendimento più profondo degli array, può essere
studiato quando si passa ad un'altro linguaggio. Imparare a programmare, non
significa perdersi nei dettagli di un linguaggio specifico, e Python
nasconde ciò che può confondere (gestione della memoria :D), lasciando al
newbie la possibilità di approfondire concetti più generali e applicabili
anche ad altri linguaggi(come i paradigmi di programmazione, gli algorimti e
le strutture dati, etc...)
Post by bhoo
Lo sbaglio che fanno in tanti è pensare che c++ sia sempre comunque
difficile.
No. Il punto è che la "porzione" di C++ adatta ad un newbie, può essere ben
sostituita e migliorata da Python.
Post by bhoo
Usare c++ non significa fare uso intenso di template o di
ereditarietà,ma anche la semplice chiamata ad una funzione oppure un
semplice if o for.
Appunto, per questo è meglio Python. Poi quando passi a C++ cominci a
prendere dimestichezza con template, ereditarietà multipla (che anche Python
possiede), etc...
Post by bhoo
Python, come detto prima,ha mille caratteristiche interessanti ma nasconde
allo studente quelle che sono le principali tecniche di uso sia della
memoria che di prestazioni.
Ovvero dettagli che non servono al newbie per imparare le basi della
programmazione.
Post by bhoo
Queste cose non puoi considerarle di secondo
piano,i computer di oggi non hanno ancora le prestazioni per rendere
irrilevante la velocita'(ovviamente non per tutti i casi).
Si, ok, ma *dopo* aver imparato a padroneggiare i concetti più importanti
della programmazione. E magari pensando di scrivere codice più veloce,
agendo sull'ottimizzazione dell'algoritmo, senza necessariamente lavorare a
basso livello.

Ciao
--
Noixe
bhoo
2003-09-07 14:42:24 UTC
Permalink
Post by Noixe
Appunto, quindi perchè usare C++? Solo perchè permette la gestione esplicita
della memoria? Non è un'argomento per principianti, quindi può essere
studiato in seguito, quando ad es. dopo aver imparato Python, si vuole
passare ad un'altro linguaggio (e in questo caso C++ forse è la scelta
migliore per vedere la programmazione anche da altre prospettive).
La questione è che l'ottimizzazione di un algoritmo e le tecniche per
renderlo più' efficiente sono correlate con l'uso della memoria.Come gia
detto python puo' essere utile in qualche caso ma non lo vedo come strumento
valido per l'apprendimento,le tecniche sono troppo diverse.

Comunque credo sia inutile ripeterci non vedo una via d'uscita abbiamo
opinioni diverse sull'argomento.

Concludendo io uso python spesso e volentieri e lo trovo molto efficiente
per tante altre cose escluse quelle gia citate.

ciao
Noixe
2003-09-07 14:48:17 UTC
Permalink
Post by bhoo
La questione è che l'ottimizzazione di un algoritmo e le tecniche per
renderlo più' efficiente sono correlate con l'uso della memoria.
Si, ma non sempre, e quando è necessario vuol dire che che ne ha bisogno non
è più un newbie.

Ciao
--
Noixe
Metallikop
2003-09-07 18:05:35 UTC
Permalink
Post by bhoo
Queste cose non puoi considerarle di secondo
piano,i computer di oggi non hanno ancora le prestazioni per rendere
irrilevante la velocita'(ovviamente non per tutti i casi).Se guardi windows
che ti assorbe il 50% delle tue risorse senza far nulla...
Sarà per il fatto che è scritto in C/C++ ? :-))))
--
-=§§§=-
http://web.tiscali.it/mbsoftware
***@arzobarg.vg[rot13]
Metallikop
2003-09-07 19:12:07 UTC
Permalink
Post by Metallikop
windows che ti assorbe il 50% delle tue risorse senza far nulla...
Sarà per il fatto che è scritto in C/C++ ? :-))))
Sarà il fatto che deve dare da mangiare al fornitore Intel?
Dici che lo fanno apposta?
Tanto per sapere, sai, visto che intel non è l'unica che beneficia delle
richieste di risorse di windoz. Vedi AMD e _tutti_ i produttori del
mondo di ram, mobo e hardware in genere.
--
-=§§§=-
http://web.tiscali.it/mbsoftware
***@arzobarg.vg[rot13]
RiK0
2003-09-07 21:18:54 UTC
Permalink
Post by Metallikop
Dici che lo fanno apposta?
Tanto per sapere, sai, visto che intel non è l'unica che beneficia delle
richieste di risorse di windoz. Vedi AMD e _tutti_ i produttori del
mondo di ram, mobo e hardware in genere.
GNU/Linux!!!
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
RiK0
2003-09-08 12:17:32 UTC
Permalink
No, ma poi mi spieghi cosa c'entra. Tu dici che microsoft fa apposta a
fare un SO mangiarisorse per favorire Intel, e io ti ho fatto notare
che cosi facendo, se fosse vero, favorirebbe allo stesso modo anche i
diretti concorrenti di Intel.
Si infatti. Non prendo posizione direttamente perche' non ho i dati in
proposito (come nessuno li ha, perche' se venisse fuori sarebbe
veramente un macello). Tuttavia l'ipotesi che ci sia un tacito accordo
riguardo a cio' (fare SO e applicazioni piu' pesanti per favorire il
ricambio di hardware) non e' la prima volta che la sento. E devo dire
che non mi sembra fantascientifica.
Ovvero. Non ho prove concrete per affermarlo (ovviamente la cosa e' ben
tenuta top secret), ma non scartiamola a priori.
Si chiama "indotto": c'è chi ne parla bene, chi ne parla male. Io dico
semplicemente che se per fare la stessa cosa con le stesse performances un
sistema operativo Microsoft richiede il 60% in più di "potenza di fuoco",
qualcosa vorrà pur dire...
E' normale che fare le stesse cose ma in modo più
semplice e con bottoncini e iconette più colorate possa richiedere
maggiori risorse hardware.
In modo piu' semplice???
su questo potrei discutere. l'unica cosa semplice in ambiente windows e'
fare crashare il computer.
i bottoncini colorati non credo che valgano il rinnovo di un parco
macchine.
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Azathot
2003-09-08 15:26:33 UTC
Permalink
Non e' convincente. Anche la maggior parte delle distibuzioni linux per
il desktop richiedono sempre piu' risorse, anche se non quante ne
richiede windows.
Appunto: non quanta, e soprattutto *per* *libera* *scelta* *dell'* *utente*.
Che se vuole può ancora usare il suo fido P166... anche fosse solo a linea
di comando. Hai la possibilità di usare liberamente adesso, chessò, Windows
'95? <g>

Ciao!
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
RiK0
2003-09-08 16:55:32 UTC
Permalink
Non e' convincente. Anche la maggior parte delle distibuzioni linux per
il desktop richiedono sempre piu' risorse, anche se non quante ne
richiede windows. Secondo voi sono tutti un'associazione per delinquere?
Mi pare un po' forzata come cosa.
Richiedono piu' risorse, ma hanno un tasso molto graduale di crescita, e
ti permettono comunque di usare soluzioni meno pesanti!!
KDE occupa troppo? puoi usare Gnome2. Oppure addirittura wmaker o xfce.
Il fatto che la configurazione di punta offra sempre di piu' e chieda di
piu' non e' un problema, fintanto che uno ha altre soluzioni.
Posso benissimo aggiornare kernel, compilatore, browser, ssh e altre
fole di sicurezza, e d'altra parte non caricare sulla GUI (e' quella che
ciuccia risorse!)
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
-Ema-
2003-09-08 21:23:18 UTC
Permalink
Post by RiK0
Richiedono piu' risorse, ma hanno un tasso molto graduale di crescita, e
ti permettono comunque di usare soluzioni meno pesanti!!
KDE occupa troppo? puoi usare Gnome2. Oppure addirittura wmaker o xfce.
Il fatto che la configurazione di punta offra sempre di piu' e chieda di
piu' non e' un problema, fintanto che uno ha altre soluzioni.
Posso benissimo aggiornare kernel, compilatore, browser, ssh e altre
fole di sicurezza, e d'altra parte non caricare sulla GUI (e' quella che
ciuccia risorse!)
Attenzione. Non ho detto che GNU/Linux e' uguale Windows. Non c'e'
dubbio che i sistemi GNU/Linux e BSD abbiano una gamma di scelta
estremamente superiore. Nel mio piccolo, nell'ultimo anno ho installato
solo server Linux (ovviamente senza GUI) perche' sono convinto che le
prestazioni siano decisamente superiori. Per i client, purtroppo, ad
oggi non posso scegliere, sono costretto ad utilizzare quasi sempre MS,
anche se quando posso uso sistemi GNU/Linux.
Quello che contesto e' l'affermazione che MS fa sistemi che richiedono
sempre piu' risorse per fare un favore ad Intel o altri. In realta'
quasi tutti fanno software che richiedono sempre piu' risorse. IBM,
Oracle, gli stessi ambienti di sviluppo open source e commerciali hanno
questa tendenza sia per ambienti MS che per altri ambienti. Non mi pare
che sia solo MS. Mi risulta difficile pensare che siano tutti daccordo
nel favorire Intel.

Ciao.
-Ema-
RiK0
2003-09-08 21:35:38 UTC
Permalink
Post by -Ema-
Quello che contesto e' l'affermazione che MS fa sistemi che richiedono
sempre piu' risorse per fare un favore ad Intel o altri.
Non e' un'affermazione mia. Io personalmente sono propenso a
condividerla, e per lo meno non la vedo come assurda, ecco tutto.
O meglio, si', l'affermazione e' anche mia... dico solo che non mi
sembra fuori dal mondo, visto come vanno molte cose...
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Azathot
2003-09-08 12:24:18 UTC
Permalink
Post by Metallikop
Dici che lo fanno apposta?
Sì.
Ma stai scherzando o parli sul serio?
Parlo *molto* sul serio.
Scusa, ma AMD produce dei chipset incompatibili con Intel? No, tanto per
sapere...
No, ma poi mi spieghi cosa c'entra.
C'entra, perché gli unici ad essere favoriti sono i produttori Intel, in
quanto dispongono di un monopolio "di fatto".
Tu dici che microsoft fa apposta a
fare un SO mangiarisorse per favorire Intel, e io ti ho fatto notare
che cosi facendo, se fosse vero, favorirebbe allo stesso modo anche i
diretti concorrenti di Intel.
Non è vero, e se vuoi ti faccio un esempio banale banale: i software
multimediali di Microsoft integrati nei loro sistemi operativi di quale set
di istruzioni dedicate al multimediale fanno uso per migliorare[1] le
performances dei propri prodotti? Hint: inizia per MM e finisce per X. Non
mi pare facciano uso dei set di istruzioni specifiche dei processori AMD.
Si chiama "indotto": c'è chi ne parla bene, chi ne parla male. Io dico
semplicemente che se per fare la stessa cosa con le stesse performances un
sistema operativo Microsoft richiede il 60% in più di "potenza di fuoco",
qualcosa vorrà pur dire...
In quel caso vorrà dire che è stato programmato a pene di segugio.
Ti assicuro che entrambi sono stati programmati al meglio delle
caratteristiche del sistema ospite.
Però prima bisogna vedere se fanno davvero la stessa cosa e nello
stesso modo.
Fanno esattamente la stessa cosa: trascodifica di filmati compressi in
MPEG2/DIVX.
E' normale che fare le stesse cose ma in modo più
semplice e con bottoncini e iconette più colorate possa richiedere
maggiori risorse hardware.
E questa dove l'hai letta, su Topolino? <g>

Ciao.
--
[1] Del 10%, eh... :-\
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
Azathot
2003-09-08 13:11:16 UTC
Permalink
Post by Azathot
Non è vero, e se vuoi ti faccio un esempio banale banale: i software
multimediali di Microsoft integrati nei loro sistemi operativi di quale
Credo che ti sbaglii, e che prodotti come Microsoft DirectX supportino
"3DNow!", set di istruzioni specifiche dei processori AMD, da anni.
No non mi sbaglio. Tu ti riferisci alle DirectX. che sono librerie grafiche
per la generazione di grafica 2D/3D. Io mi riferisco al Windows Media
Player, che credo che l'unico aspetto delle DirectX che usano siano
l'accesso diretto alla superficie video.

Che io sappia l'unico SW (esclusi i videogiochi specifici) che si avvalgono
del 3DNow! è il Via Voice di IBM.
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
Alex Martelli
2003-09-08 16:31:44 UTC
Permalink
Post by Azathot
Post by Azathot
Non è vero, e se vuoi ti faccio un esempio banale banale: i software
multimediali di Microsoft integrati nei loro sistemi operativi di quale
Credo che ti sbaglii, e che prodotti come Microsoft DirectX supportino
"3DNow!", set di istruzioni specifiche dei processori AMD, da anni.
No non mi sbaglio. Tu ti riferisci alle DirectX. che sono librerie
grafiche per la generazione di grafica 2D/3D. Io mi riferisco al Windows
Media Player, che credo che l'unico aspetto delle DirectX che usano siano
l'accesso diretto alla superficie video.
Ah, allora intendi "ALCUNI DEI software" ecc, visto che non puoi
certo negare che anche le DirectX sono parte dei "software multimediali",
sono di Microsoft, e sono integrate nei suoi sistemi operativi;-)
Post by Azathot
Che io sappia l'unico SW (esclusi i videogiochi specifici) che si
avvalgono del 3DNow! è il Via Voice di IBM.
Mi pare anche Winamp e alcuni motori 3D come Caligari e Virtue, ma
certamente i giochi (non so cosa intendi per "specifici", io penso
a cose come Unreal, Quake &c -- tieni presente che i giochi non
sono il mio campo!) saranno le applicazioni + tipiche (che altro
"pilota" l'adozione di schede grafiche sempre + super, ecc, ecc? i
giochi hanno ben altro mercato di massa delle applicazioni techniche
o scientifiche che fanno visualizzazione 3D cosi` avanzata...).


Alex
RiK0
2003-09-08 17:12:29 UTC
Permalink
Alex Martelli <***@aleax.it> wrote:

Non e' cosi' importante se favorisce solo Intel o favorisce Intel Amd e
chi fa RAM.
Il fatto e' che di sicuro non favorisce chi la compra!!!
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Alex Martelli
2003-09-08 18:43:07 UTC
Permalink
Post by RiK0
Non e' cosi' importante se favorisce solo Intel o favorisce Intel Amd e
chi fa RAM.
Il fatto e' che di sicuro non favorisce chi la compra!!!
Veramente si`, purche` chi compra la RAM e le CPU si guardi bene
dal farci girare su ambienti tipo Windows-XP;-). Grazie in buona
parte agli enormi volumi venduti (l'indispensabile pompa dietro
alla legge di Moore: se non ci fossero i volumi non ci sarebbero
gli enormi investimenti, sempre crescenti, necessari perche` la
legge continui ad operare) al giorno d'oggi si possono avere, che
so, 512MB o 1GB di RAM a meno di quel che pochi anni fa costavano
4MB o 8MB. Se io ci giro un kernel BSD (o Linux ben limato), e
li uso per calcoli di aritmetica combinatoria che richiedono la
stessa RAM oggi che richiedevano vent'anni fa, vado sul velluto;-).


Alex
Metallikop
2003-09-08 16:37:34 UTC
Permalink
Post by Azathot
Post by Metallikop
Dici che lo fanno apposta?
Sì.
Ma stai scherzando o parli sul serio?
Parlo *molto* sul serio.
Allora sei proprio fuori come un balcone.
Post by Azathot
Tu dici che microsoft fa apposta a
fare un SO mangiarisorse per favorire Intel, e io ti ho fatto notare
che cosi facendo, se fosse vero, favorirebbe allo stesso modo anche i
diretti concorrenti di Intel.
Non è vero, e se vuoi ti faccio un esempio banale banale: i software
multimediali di Microsoft integrati nei loro sistemi operativi di quale set
di istruzioni dedicate al multimediale fanno uso per migliorare[1] le
performances dei propri prodotti? Hint: inizia per MM e finisce per X. Non
mi pare facciano uso dei set di istruzioni specifiche dei processori AMD.
Come ti è già stato fatto notare, ti sbagli di nuovo. Microsoft
supporta 3DNow in tutti i suoi software multimediali e AMD supporta
MMX in tutti i suoi processori. La preferenza per Intel dove la vedi?
Post by Azathot
Microsoft richiede il 60% in più di "potenza di fuoco",
qualcosa vorrà pur dire...
In quel caso vorrà dire che è stato programmato a pene di segugio.
Ti assicuro che entrambi sono stati programmati al meglio delle
caratteristiche del sistema ospite.
ROTFL. Ti ricordo che si parlava di sistemi operativi, non di
trascodifica di filmati compressi.
Post by Azathot
E' normale che fare le stesse cose ma in modo più
semplice e con bottoncini e iconette più colorate possa richiedere
maggiori risorse hardware.
E questa dove l'hai letta, su Topolino? <g>
No, non leggo le tue fonti ;) Togli la nuova grafica a WinXP e
otterrai le stesse richieste hardware di Win2000.

Ciao.
--
-=§§§=-
http://web.tiscali.it/mbsoftware
***@arzobarg.vg[rot13]
RiK0
2003-09-07 14:14:43 UTC
Permalink
Irrilevante. Assolutamente irrilevante.
è irrilevante per te,io trovo i programmi e i sistemi di oggi molto lenti e
di conseguenza è "MOLTO" rilevante.
Che i sistemi di oggi siano lenti e' vero. Ho acceso ieri un Mac Ci dei
primi hanni 90 e in 4 o 5 secondi era operativo.
Il problema e' che uno che scrive un sistema, non e' (o non dovrebbe
essere) un principiante.
Con questo non voglio dire che non sia importante gestire la memoria...
appunto lo è,soprattuto per uno studente.
Non in prima istanza. Non e' che non deve imparare il C++. Semplicemente
per capire come funziona la programmazione va bene un qualunque
linguaggio, o anche nessun linguaggio.
Puoi per esempio usare le Funzioni Primitive Ricorsive.
Poi quando sai come funziona, ti impari le specifiche di un qualunque
linguaggio che sia adatto a quello che devi fare (al solito se devo
scrivere un modulo del kernel, di java phython e perl me ne faccio poco,
se devo fare un programma che processa grandi quantita' di testi
lavorando con espressioni regolari ecc, in Perl sara' molto piu' rapido
lo sviluppo).
Guarda studiare un algoritmo in python non è la stessa cosa che
implementarlo in c++ sono tecniche di gestione diverse.
Studiare un algoritmo e' una cosa astratta. Implementarlo sara' diverso
finche' vuoi. Resta il fatto che uno puo' fare algoritmi da ufo anche
senza saperne una beata mazza di linguaggi di programmazione.
Lo studente deve
imparare il miglior metodo nel "minor tempo possibile" e passare da python
spesso,non sempre,è tempo perso.
Se python ti nasconde le tecniche ti gestione della memoria,mi spieghi come
puoi fare ad apprendere il metodo giusto?
Non novero Python nella cerchia dei linguaggi che conosco. Uno di questi
giorni me lo studio, ma al momento ho altre gatte da pelare.
Personalmente se devo scegliere il mio linguaggio preferito andrei con
il C puro.
Ultimamente mi sto affezionando molto anche a Java e Lisp.
Java per esempio e' estremamente elegante, e per imparare una buona
programmazione orientata agli oggetti e a progettare architetture
multithreading, e' adattissimo. Poi quando avrai bisogno di piu'
prestazioni, applichi quello che hai imparato al C/C++
Se devo essere poi sincero la struttura del C++ non mi piace tantissimo,
anche se i vari costrutti operator e i template sono estremamente
potenti e raffinati. Peraltro mi sono trovato spesso a sceglierlo in
quanto l'unica alternativa praticabile.
Ora sto sperando nell'ObjC. Anche se mi lascia li' la storia degli
oggetti id risolti dinamicamente, che mi sa di un po' javesco, ma su
MacOS devo dire che funziona in modo veramente superbo
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Alex Martelli
2003-09-08 09:09:22 UTC
Permalink
bhoo wrote:
...
Post by bhoo
Post by Andrea Laforgia
Le liste sono dei costrutti propri di quel linguaggio. La loro
Attenzione che se si parla di Python il termine "lista" e` usato in
modo strano; le cosiddette "liste" di Python assomigliano molto di
piu` agli std::vector del C++ che non alle std::list (sono quindi
array re-sizabili, non liste LINKATE).
Post by bhoo
Le liste nascondono al programmatore la gestione della memoria e tanto
meno sono la migliore soluzione per quanto riguarda la velocità di
esecuzione.
Non ti pare?
Non necessariamente. Tanto per avere un punto di riferimento
in comune, partiamo ad esempio con la Bibbia in inglese che e`
facile trovare in rete, nel formato con una linea per versetto
ciascuna con un breve prefisso (che identifica libro e numero
del versetto), tipo:

Ge1:1 In the beginning God created the heaven and the earth.
Ge1:2 And the earth was without form, and void; and darkness was upon the
face of the deep. And the Spirit of God moved upon the face of the waters.
Ge1:3 And God said, Let there be light: and there was light.

ecc ecc, dimensioni totali:

[***@lancelot x]$ wc kjv.txt
31103 820744 4404445 kjv.txt
[***@lancelot x]$

(31103 versetti, 820744 parole, 404445 byte di testo).

Supponiamo di volere leggere questo file in una struttura dati
in memoria, ed effettuarne il sort per versetti secondo il numero
di parole (separate da spazi) in ciascun versetto.

Possiamo contare le parole di ciascun versetto con il normale
algoritmo C++ (Koenig & Moo p. 152):

#include <string>
#include <cctype>

static bool
isnotspace(char c)
{
return !std::isspace(c);
}

int
word_count(const std::string & str)
{
typedef std::string::const_iterator str_citer;
str_citer i = str.begin();
int count = 0;

while (true) {
i = std::find_if(i, str.end(), isnotspace);
if (i == str.end()) break;

count++;
const str_citer j = std::find_if(i, str.end(), isspace);
i = j;
}

return count;
}

e quindi costruire una struttura appropriata in memoria sia
come std::vector sia come std::list a piacere, cioe` (con
uno std::vector):


#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <algorithm>

[snip funzioni di conteggio parole gia` viste]

typedef std::pair<int, std::string> item_t;

std::vector<item_t> items;

void
read_file(const char* filename)
{
std::ifstream f(filename);

std::string s;
while(std::getline(f, s)) {
int words = word_count(s);
items.push_back(std::make_pair(words, s));
}
}

bool
item_less(const item_t& a, const item_t& b)
{
return a.first < b.first || (a.first == b.first) && a.second < b.second;
}

int main()
{
read_file("kjv.txt");

std::cout << "tot versetti " << items.size() << "\n";

std::sort(items.begin(), items.end(), item_less);

std::cout << "primo: " << items[0].second << "\n";
std::cout << "ultimo: " << items[items.size()-1].second << "\n";


return 0;
}

e del tutto analogamente con una std::list (mostro solo le parti
cambiate oltre all'ovvio cambiamento degli include):


typedef std::pair<int, std::string> item_t;
std::list<item_t> items;

...

items.sort(item_less);

std::cout << "primo: " << items.begin()->second << "\n";
std::cout << "ultimo: " << (--items.end())->second << "\n";

Il giochino con items.begin() e --items.end() potremmo farlo anche
con lo std::vector, ovviamente, l'unico cambiamento importante
e` usare std::sort per il vector ma items.sort per la list.

Ora, le prestazioni (Linux, Athlon, gcc 3.2.2, non ottimizzato):

[***@lancelot x]$ time ./dok_lis>/dev/null
1.79user 0.03system 0:01.84elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (227major+1686minor)pagefaults 0swaps
[***@lancelot x]$ time ./dok_vec>/dev/null
1.79user 0.07system 0:01.85elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (228major+1659minor)pagefaults 0swaps

Come vedi le prestazioni col vettore e con la lista sono eguali
entro i margini degli errori di misurazione. E ottimizzando:

[***@lancelot x]$ g++ -O3 dok_vec.cpp -o dok_vecO
[***@lancelot x]$ g++ -O3 dok_lis.cpp -o dok_lisO
[***@lancelot x]$ time ./dok_vecO>/dev/null
1.56user 0.03system 0:01.59elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (227major+1659minor)pagefaults 0swaps
[***@lancelot x]$ time ./dok_lisO>/dev/null
1.57user 0.00system 0:01.57elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (227major+1687minor)pagefaults 0swaps

...ancora non fa differenza quale struttura dati abbiamo usato.


Per curiosita`, ecco il programma esattamente equivalente in Python:

def word_count(s):
return len(s.split())
def read_file(filename):
return [ (word_count(s), s) for s in file(filename) ]
def main():
items = read_file("kjv.txt")
print "tot versetti", len(items)
items.sort()
print "primo:", items[0][1]
print "ultimo:", items[-1][1]
main()

e le sue prestazioni:

[***@lancelot x]$ time python dok.py >/dev/null
0.86user 0.07system 0:00.93elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (444major+1915minor)pagefaults 0swaps

circa 2 volte meglio del C++ non ottimizzato, in questo specifico caso,
ma con l'importante avvertenza di un certo aumento dei pagefault, che su
sistemi operativi con una cattiva gestione della memoria virtuale (vecchi
Windows/95 fra i peggiori) sarebbe penalizzante (su Linux il costo dei
pagefault e` gia` incluso nell'output del comando time, naturalmente).


Alex
Alex Martelli
2003-09-08 12:38:36 UTC
Permalink
Post by Alex Martelli
Post by bhoo
Le liste nascondono al programmatore la gestione della memoria e tanto
meno sono la migliore soluzione per quanto riguarda la velocità di
esecuzione.
Non ti pare?
Non necessariamente. Tanto per avere un punto di riferimento
in comune, partiamo ad esempio con la Bibbia in inglese che e`
qui parli di prestazioni migliori..
Precisamente rispondo alla tua asserzione sul fatto che "le liste ...
tanto meno sono la migliore soluzione per quanto riguarda la velocita`
di esecuzione".
Analizza piuttosto il codice in C++, che paragona direttamente
l'uso di vettori (std::vector) e liste (std::list) mostrando che
non vi e` misurabile differenza nelle prestazioni ottenibili (e
quindi le liste sono a pari merito con i vettori, per questo
problema e su questa macchina, in termini di velocita` di esecuzione).
(ovviamente queste sono domande per capire meglio quello che vuoi dire)
Sai meglio di me (visto che ne sei un programmatore) che python è scritto
in C e qualsiasi algoritmo scritto in c puo' essere tradotto "quasi"
Non necessariamente: Python e` un _linguaggio_, le sue _implementazioni_
poi possono essere fatte in C (come e` Classic Python), in Java (come
e` Jython), in O'CAML (come e` Vyper), in Python stesso (come e` pypy),
in codice macchina (come e` per le accelerazioni eseguite dal compilatore
just-in-time psyco), in C# (come e` Python.NET), o in qualsiasi altro
linguaggio sufficientemente potente (e quasi tutti i linguaggi di
programmazione sono "Turing-completi" e quindi _per definizione_ potenti
a sufficienza per qualsiasi compito computabile, anche se naturalmente
in practica certi linguaggi possono essere pragmaticamente troppo onerosi
per farlo davvero -- ad esempio non vorrei certo dover programmare un
runtime Python in macro del vecchio vi, anche se e` dimostrabile che
dette macro costituiscono un linguaggio Turing-completo:-).
immediamente in codice c++ con "quasi" identiche prestazioni(poi dipende
dal compilatore).
Non so cosa intendi per "quasi immediatamente". Certamente puoi tradurre
codice fra due qualsiasi linguaggi Turing-completi (per definizione), ma
se per "quasi immediatamente" intendi che lo sforzo e` trascurabile, sbagli,
e cosi` pure nel ritenere che le prestazioni siano necessariamente "quasi
identiche" -- in realta` c'e` spazio per molte variazioni.

Ad esempio, il rutime di pypy nella prima versione "puramente didattica"
riusciva a rallentare di MIGLIAIA di volte l'esecuzione, poi gradualmente
aggiungendo le varie ottimizzazioni "ovvie" (tipo implementare i dizionari
con hashing invece che con l'equivalente di "liste d'associazione") si
torna grosso modo alle stesse prestazioni -- e, si spera, le si superera`,
in futuro, scatenando tutta la potenza delle analisi just-in-time alla
psyco (non a caso l'architetto principale di pypy e` lo stesso Armin Rigo
che e` l'autore di psyco, anche se a dargli una mano a tempo perso siamo
parecchi -- io, Samuele Pedroni [di Jython], Guido van Rossum [architetto
di Python], Christian Tismer [padre di Stackless Python], ecc, ecc).


Ma tutto questo non ha nulla a che vedere con la tua errata asserzione
riguardo le prestazioni delle liste.
Post by Alex Martelli
return len(s.split())
questa funzione richiama un codice C ....
No, richiama delle funzionalita` primitive ("intrinseche", ovvero
"built-in") di Python, che possono poi internamente essere implementate
in una miriade di modi diversi, vedi sopra. Se il Python in gioco e`
quello Classic, le due primitive in gioco sono in effetti codificate
attualmente in C.
Post by Alex Martelli
return [ (word_count(s), s) for s in file(filename) ]
anche qui si richiama codice C ....
Vedi sopra. Qui poi gran parte del lavoro e` fatto da primitive del
sistema operativo, che possono essere implementare in una miscela di
C e di linguaggio macchina (il C e` normalmente piu` usato al giorno
d'oggi, ma un minimo di linguaggio macchina generalmente resta).
Post by Alex Martelli
items = read_file("kjv.txt")
print "tot versetti", len(items)
items.sort()
print "primo:", items[0][1]
print "ultimo:", items[-1][1]
main()
e lo stesso qui ..
Ulteriormente, vedi sopra.
Mettiamo da parte anche i ritardi dovuti all'interprete per tutti i suoi
controlli,vorrei capire come fai a dire che il tuo codice abbia
prestazioni migliori di un altro scritto in C/C++ ?
Ho postato interamente i due programmi in C++ standard (sono molto
simili: uno usa le liste, l'altro i vettori) nonche` quello in Python
(Python 2.3 rigorosamente standard, ma compatibile anche con 2.2 --
non uso nessuna delle piccolissime aggiunte fatte nella 2.3). Quindi,
basta (anzitutto compilare, se si usano linguaggi che non compilano in
modo automatico e trasparente come Python, poi) eseguire e misurare le
prestazioni dei programmi per vedere, su di una particolare macchina
con la sua data dotazione di HW e SW, come vanno le prestazioni.

Naturalmente basta che cambi l'HW o il SW e le prestazioni potrebbero
similmente cambiare. Appunto facevo notare come la misurazione delle
prestazioni del programmino Python mostra piu` pagefault dell'assai
piu` verboso programma C++, per cui, se si deve girare su macchine con
una memoria virtuale molto male implementata (com'era tipico ad es.
delle prime release di Win/95), gia` solo questo _potrebbe_ fare una
differenza cruciale. Solo MISURANDO, in condizioni specifiche, si puo`
vedere cosa DAVVERO succede -- asserzioni astruse ed astratte come la
tua contro le prestazioni delle liste non possono dircelo (e infatti
l'uso di liste o vettori si dimostra irrilevante negli esempi C++ che
ho portato -- ancora, ripetiamolo, per le specifiche condizioni di
misurazione che ho accuratamente specificato).
Per fare un confronto valido bisognerebbe prendere lo stesso codice usato
da python e non un algoritmo che si presume identico...
Ma che balle dici? Se vuoi ad esempio confrontare le prestazioni di
un programma Java con quelle di un programma "esattamente equivalente"
(cioe` che svolge esattamente gli stessi compiti) scritto in C++, come
diavolo potresti "prendere lo stesso codice usato"?! E` ovvio che quel
che fai e` (per quanto possibile) garantire uso equivalente delle ben
diverse librerie standard dei due linguaggi, poi misuri le prestazioni
complessive comprese le qualita` di compilatori, libreria, JVM e suo
eventuale JIT nel caso di Java, sistema operativo, HW sottostante, ecc
ecc. E` solo su queste basi che si sente spesso affermare che C++ (per
molti compiti) e` "piu` veloce di Java", o al contrario che (in alcuni
specifici casi in cui un buon JIT puo` veramente sfoggiare le sue
caratteristiche) in quel dato programma Java puo` battere C++.

Se pensi che (ad esempio) Andrew Koenig e Barbara Moo abbiano pubblicato
un algoritmo poco performante per il conteggio delle parole (separate
da spazi bianchi) in una stringa, puoi facilmente pubblicare (forse
meglio su it.comp.lang.c++) il tuo algoritmo alternativo mostrandone
le svettanti prestazioni. Ecc, ecc.

Comunque, tutti questi dettagli non giustificano la tua errata
affermazione sopra riportata: se eventualmente potessi migliorare
l'algoritmo di conteggio delle parole, questo miglioramento avrebbe
eguale effetto sia sulla versione del programma C++ che usa le
liste, sia su quella che usa i vettori. Alla fin fine la differenza
per questo programma si riduce a:
-- costo di push_back su std::vector rispetto a std::list, e
-- costo di std::sort su std::vector rispetto a std::list::sort
Punto e basta. Ovviamente questi due costi dipendono poi solo ed
esclusivamente dalla qualita` di implementazione delle librerie
standard del C++ che hai a disposizione: lo standard C++ precisa
_ALCUNI_ aspetti relativi alle prestazioni delle librerie, ad esempio
"sai" che N push_back sul vector DEVONO avere un costo ammortizzato
O(N) ed e` vietato alle librerie usare "scorciatoie" che potrebbero
causare costi O(N^2) o che, ma si tratta appunto sempre di specifiche
del tipo O(), quindi "al netto di costanti" anche moltiplicative...
e quindi, ancora una volta, se le prestazioni ti interessano davvero
non hai proprio alternative rispetto a implementare le alternative
che stai considerando e MISURARE (sulle macchine di tuo interesse,
con sistemi operativi idem, ecc, ecc). A volte puoi risparmiarti,
almeno in teoria, di misurare alternative che "sai" porterebbero a
veri disastri prestazionali [del tipo O()], ma attenzione che se devi
trattare problemi "piccoli" a volte un algoritmo con un brutto O()
puo` essere comunque meglio se le sue constanti sono meravigliosamente
piu` piccole dell'algoritmo con un O() piu` soddisfacente (se puoi
pagare il prezzo, puo` persino convenirti implementare molteplici
algoritmi e commutare fra loro a seconda di stime o indicatori sulle
"dimensioni" in gioco per ogni specifico problema o sottoproblema:
un simile "fall-back" e` spesso fondamentale ad esempio nelle varie
implementazioni recursive di algoritmi di sort, visto che ad es. un
insertion sort e` certamente inaccettabile [O(N^2)] per problemi
grandi, ma quando via via suddividendo arrivi a N abbastanza piccoli
l'insertion sort puo` essere il modo giusto di trattare questi
"piccoli sottoproblemi" in cui scomponi il problemone quello grande).


Alex
bhoo
2003-09-08 13:32:23 UTC
Permalink
Tu hai questa brutta abitudine di divagare dove non richiesto per disperdere
l'attenzione.
Si nota da molti tuoi post...
Post by Alex Martelli
Analizza piuttosto il codice in C++, che paragona direttamente
l'uso di vettori (std::vector) e liste (std::list) mostrando che
non vi e` misurabile differenza nelle prestazioni ottenibili (e
quindi le liste sono a pari merito con i vettori, per questo
problema e su questa macchina, in termini di velocita` di esecuzione).
non puoi paragonare un codice che non è identico a quello usato da python
(dovrei prendere il sorgente e francamente ci vorrebbe troppo tempo)
Post by Alex Martelli
(ovviamente queste sono domande per capire meglio quello che vuoi dire)
Sai meglio di me (visto che ne sei un programmatore) che python è scritto
in C e qualsiasi algoritmo scritto in c puo' essere tradotto "quasi"
Non necessariamente: Python e` un _linguaggio_, le sue _implementazioni_
poi possono essere fatte in C (come e` Classic Python), in Java (come
è chiaro che si stava parlando di python scritto in C .
Ma lo fai apposta o cosa?
Post by Alex Martelli
immediamente in codice c++ con "quasi" identiche prestazioni(poi dipende
dal compilatore).
Non so cosa intendi per "quasi immediatamente". Certamente puoi tradurre
codice fra due qualsiasi linguaggi Turing-completi (per definizione), ma
se per "quasi immediatamente" intendi che lo sforzo e` trascurabile, sbagli,
e cosi` pure nel ritenere che le prestazioni siano necessariamente "quasi
identiche" -- in realta` c'e` spazio per molte variazioni.
Perchè sbaglio?
Quale funzione C o altro non si puo' tradurre immediatamente in C++ ?
I compilatori c++(degni di questo nome) di oggi hanno il set completo di
istruzioni C ,ovviamente non tutte comprese nello standard ma comuque non
vedo il problema.
Post by Alex Martelli
Ma tutto questo non ha nulla a che vedere con la tua errata asserzione
riguardo le prestazioni delle liste.
ma che dici........
Post by Alex Martelli
Post by Alex Martelli
return len(s.split())
questa funzione richiama un codice C ....
No, richiama delle funzionalita` primitive ("intrinseche", ovvero
"built-in") di Python, che possono poi internamente essere implementate
in una miriade di modi diversi, vedi sopra. Se il Python in gioco e`
quello Classic, le due primitive in gioco sono in effetti codificate
attualmente in C.
parlando di prestazioni mi sembra chiaro che si parla di quello "classic" ..
e perciò non dire "No" volendo solo negare qualcosa di ovvio ...
Post by Alex Martelli
Post by Alex Martelli
return [ (word_count(s), s) for s in file(filename) ]
anche qui si richiama codice C ....
Vedi sopra. Qui poi gran parte del lavoro e` fatto da primitive del
sistema operativo, che possono essere implementare in una miscela di
C e di linguaggio macchina (il C e` normalmente piu` usato al giorno
d'oggi, ma un minimo di linguaggio macchina generalmente resta).
La miscela che intendi tu si puo fare anche meglio in c++ non vedo questi
limiti,anzi è una prova che l'algoritmo deve essere implementato allo stesso
modo (visto che dopo dici cose inesatte)
Post by Alex Martelli
e lo stesso qui ..
Ulteriormente, vedi sopra.
infatti vedi sopra
Post by Alex Martelli
Mettiamo da parte anche i ritardi dovuti all'interprete per tutti i suoi
controlli,vorrei capire come fai a dire che il tuo codice abbia
prestazioni migliori di un altro scritto in C/C++ ?
Ho postato interamente i due programmi in C++ standard (sono molto
simili: uno usa le liste, l'altro i vettori) nonche` quello in Python
Non prendi in considerazione il fatto che c++ non è solo std,non ho provato
il tuo codice ma cmq algoritmi per gestione di vettori o liste puoi
implementarli in tantissimi modi ..
Usare std è consigliato ma non è un obbligo....
Post by Alex Martelli
ho portato -- ancora, ripetiamolo, per le specifiche condizioni di
misurazione che ho accuratamente specificato).
stai facendo misurazioni su confronti errati ...
Post by Alex Martelli
Per fare un confronto valido bisognerebbe prendere lo stesso codice usato
da python e non un algoritmo che si presume identico...
Ma che balle dici? Se vuoi ad esempio confrontare le prestazioni di
le balle fino adesso le stai raccontando tu usando codice non
confrontabile....
Post by Alex Martelli
un programma Java con quelle di un programma "esattamente equivalente"
(cioe` che svolge esattamente gli stessi compiti) scritto in C++, come
diavolo potresti "prendere lo stesso codice usato"?! E` ovvio che quel
Devi usare lo stesso algoritmo e non std dove non è implementato il codice
migliore per quello che intendi fare tu.
Post by Alex Martelli
specifici casi in cui un buon JIT puo` veramente sfoggiare le sue
caratteristiche) in quel dato programma Java puo` battere C++.
E' difficile credere che ci sia codice migliore,ma ottimizzare con magari
aggiunte di asm dove il compilatore(e sono pochi i casi) non è efficiente
non è poi così difficile...
Post by Alex Martelli
Comunque, tutti questi dettagli non giustificano la tua errata
affermazione sopra riportata: se eventualmente potessi migliorare
io ho parlato di algoritmo simile alle liste di python e questo è
assolutamente vero, in quanto non ho fatto nessun riferimento a std (questa
è una tua allusione non mia)
Per fare un confronto valido devi scrivere un classe per la gestione delle
liste simil-python che abbia le migliori prestazioni e non un algoritmo
generico per la gestioni di vettori generici.

Semmai avessi intenzione di rispondere per favore attieniti
all'argomento,leggere tutta quella roba è scocciante
Azathot
2003-09-08 16:25:35 UTC
Permalink
Se
per te essi "divagano per disperdere l'attenzione", per coloro che
invece li apprezzano possono essere considerati ricchi di varie
informazioni importanti: de gustibus.
Come siamo presuntuosi... non ti smentisci mai, eh Alex...
Tu hai asserito che le liste peggiorano le prestazioni. Io ho
facilmente dimostrato che dici delle gran balle su questo punto
Sulla qualità delle tue dimostrazioni abbiamo già, in passato, avuto modo di
discutere... e non ne sei uscito messo bene... lo sai...
Invece
di rispondere sul punto specifico, ammettendo l'errore e chiedendone
scusa,
Senti, ma questa tua bruttissima abitudine di richiedere le scuse da parte
di chiunque non condivida con te la tua visione distorta
dell'informatica... quand'è che ti passa?
sei tu che hai divagato con i tuoi soliti svarioni. Il tuo
stile da questo punto di vista assomiglia tanto a quello di vari
altri anonimi del passato, tra l'altro.
Sei paranoico. I paranoici, si sa, non hanno una percezione corretta della
realtà.
puoi eccome
paragonare le prestazioni di programmi che svolgono lo stesso compito,
con lo stesso algoritmo, ma sono scritti in linguaggi diversi, usando
di ciascun linguaggio anche qualche fettina delle librerie standard.
Purché dimostri che il Python è meglio. <g>
Post by bhoo
Perchè sbaglio?
Mah, difficile dirlo, forse traumi infantili possono avere inficiato la
tua capacita` di giudizio?
Ah, ok... andiamo sul personale... quindi vuol dire che hai finito gli
argomenti... ;^)
Qualsiasi funzione sostanziale (non in C, ma ad esempio in Python, LISP,
Haskell, O'CAML, Java, ...) non si puo` tradurre IMMEDIATAMENTE in C++
perche` CI VUOLE TEMPO, e le attivita` che richiedono tempo non sono,
per definizione, immediate.
Insomma, tu fai il meno possibile... e come sei diventato così "esperto" se
non fai mai niente?
??? Devo ancora vedere qualsiasi dimostrazione che "dico cose
inesatte",
Il problema, caro Alex, è che non ammetti di sbagliarti, e non ti scusi mai,
tanto sei arroccato nella tua torre d'avorio del "lei non sa chi sono io".
Comunque, adesso parto per uno dei soliti viaggi di lavoro
Olè, si scappa...

Ciauz!
--
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.
Alex Martelli
2003-09-08 16:47:41 UTC
Permalink
Post by Azathot
Se
per te essi "divagano per disperdere l'attenzione", per coloro che
invece li apprezzano possono essere considerati ricchi di varie
informazioni importanti: de gustibus.
Come siamo presuntuosi... non ti smentisci mai, eh Alex...
Mi smentisco quando, e solo quando, ho commesso un errore; a
differenza di coloro che non ammettono MAI i propri errori.
Post by Azathot
Tu hai asserito che le liste peggiorano le prestazioni. Io ho
facilmente dimostrato che dici delle gran balle su questo punto
Sulla qualità delle tue dimostrazioni abbiamo già, in passato, avuto modo
di discutere... e non ne sei uscito messo bene... lo sai...
So invece di esserne "uscito" alla perfezione, e chiunque puo` a
suo piacere consultare gli archivi di Usenet per verificarlo. Che
poi uno si stufi di farti a pezzi, tra l'altro e` troppo facile, non
c'e` sugo, ne ho visti tanti stufarsi allo stesso modo, anche su
questo stesso gruppo.
Post by Azathot
Invece
di rispondere sul punto specifico, ammettendo l'errore e chiedendone
scusa,
Senti, ma questa tua bruttissima abitudine di richiedere le scuse da parte
di chiunque non condivida con te la tua visione distorta
dell'informatica... quand'è che ti passa?
Non e` questione di "condividere con me la mia visione distorta" (ma
che espressione goffa e ponderosa che usi! un corso d'italiano no,
eh?) ma di dire scemenze, dimostrabilmente errate, e rifiutarsi di
ammetterlo. Quando so che l'interlocutore e` un cafone posso anche
risparmiarmi di invitarlo a dimostrare che non lo e`, ovviamente. Ma
in generale e sino a prova contraria preferisco pensare che gli errori
siano in buona fede e che le persone siano cortesi abbastanza da
ammetterli -- sono un ottimista relativamente alla natura umana, e
sono questioni di carattere, per quanti Azathot e altri anonimi
mostrino che l'ottimismo non e` sempre giustificato.
Post by Azathot
sei tu che hai divagato con i tuoi soliti svarioni. Il tuo
stile da questo punto di vista assomiglia tanto a quello di vari
altri anonimi del passato, tra l'altro.
Sei paranoico. I paranoici, si sa, non hanno una percezione corretta della
realtà.
Si vede che questo gruppo ne e` pieno, di paranoici, perche` questa
e` un'osservazione che ho visto fare da parecchi.
Post by Azathot
puoi eccome
paragonare le prestazioni di programmi che svolgono lo stesso compito,
con lo stesso algoritmo, ma sono scritti in linguaggi diversi, usando
di ciascun linguaggio anche qualche fettina delle librerie standard.
Purché dimostri che il Python è meglio. <g>
Il paragone e` altrettanto lecito quando Python non e` neppure in gioco,
come nei recenti confronti Fortran/C su di un altro thread.
Post by Azathot
Post by bhoo
Perchè sbaglio?
Mah, difficile dirlo, forse traumi infantili possono avere inficiato la
tua capacita` di giudizio?
Ah, ok... andiamo sul personale... quindi vuol dire che hai finito gli
argomenti... ;^)
Ma per carita` (infatti continuo a spiegare dettagliatamente), solo che
gli argomenti non spiegano perche` l'anonimo sbaglia, solo CHE sbaglia.
Se chiede PERCHE`, devo pur cercare delle ragioni...
Post by Azathot
Qualsiasi funzione sostanziale (non in C, ma ad esempio in Python, LISP,
Haskell, O'CAML, Java, ...) non si puo` tradurre IMMEDIATAMENTE in C++
perche` CI VUOLE TEMPO, e le attivita` che richiedono tempo non sono,
per definizione, immediate.
Insomma, tu fai il meno possibile... e come sei diventato così "esperto"
se non fai mai niente?
"Il meno possibile"? Mica me l'ha ordinato il dottore di scrivere e
postare quei programmi C++: l'ho fatto perche` mi pareva interessante
e divertente. Ovviamente "il meno possibile" sarebbe stato non
postare un bel niente. Quindi e` evidente che la tua asserzione (come
al solito) e` completamente sballata.

Ma dire che si puo` fare IMMEDIATAMENTE qualcosa che invece non e`
immediato e`, semplicemente, SBAGLIATO. E si` che di affermazioni
sbagliate ne fai tante che dovresti essere un esperto in materia!-)
Post by Azathot
??? Devo ancora vedere qualsiasi dimostrazione che "dico cose
inesatte",
Il problema, caro Alex, è che non ammetti di sbagliarti, e non ti scusi
mai, tanto sei arroccato nella tua torre d'avorio del "lei non sa chi sono
io".
Lo ammetto (e mi scuso) quando mi sbaglio, il che, essendo umano, mi
succede. Ancora una volta, vedi gli archivi. Poi, indicaci i casi
in cui TU ti sei scusato dei tuoi errori, grazie.
Post by Azathot
Comunque, adesso parto per uno dei soliti viaggi di lavoro
Olè, si scappa...
Da chi? Da te e dagli scemi come te? Ma per favore... "si va a
guadagnare la pagnotta" (e lo champagne da berci assieme), altro
che. Vedi www.strakt.com per le belle cosette che stiamo facendo
(tutte in Python solo per farti rabbia).


Alex
RiK0
2003-09-08 17:12:29 UTC
Permalink
Post by Alex Martelli
Il paragone e` altrettanto lecito quando Python non e` neppure in gioco,
come nei recenti confronti Fortran/C su di un altro thread.
Scusate ma adesso vorreste farmi credere che sto benedetto C fa cosi'
schifo, nonostante lo usino poi ancora tutti o gran parte di tutti???

Secondo me si ha un po' il dente avvelenato, non so perche', ma posso
intuire che a discutere con i fanatici o li si mette nel kill file, o si
diventa fanatici in senso opposto e si va avanti a flame.

Pero' manteniamo l'obiettivita'.
Senza mettermi a sbandireare a questo e' meglio di quello...

Qualcuno che non sia uno dei crociati del C/C++ e' convinto che il C
vada bene ancora per qualcosa, oppure fa a tutti schifo.

Nel qualcaso, non e' che ve lo hanno fatto venire a schifo proprio i
crociati?
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
Alex Martelli
2003-09-08 18:29:45 UTC
Permalink
RiK0 wrote:
...
Post by RiK0
Qualcuno che non sia uno dei crociati del C/C++ e' convinto che il C
vada bene ancora per qualcosa, oppure fa a tutti schifo.
Va *BENISSIMO* per la programmazione di basso livello. C++ (linguaggio
assai diverso, anche se -- anche negli ultimi rispettivi standard ISO -- i
due hanno grossi subset in comune) e` un serio contendente grazie in
particolare alla sua potenza per il "generic programming" ("template",
nella terminologia del C++ stesso); ma il C, specie con lo standard
ISO del 1999, ha peraltro vari vantaggi rispetto al C++ per questo
specifico campo applicativo. "Bella gara". Se devi o vuoi scrivere
sistemi operativi, device driver, librerie di basso livello e vicine
all'hardware, e simili, il C e` il linguaggio dominante, e per buone
ragioni; il linguaggio-macchina e` ormai ridotto a piccole aree, il C++
non ha "fatto presa" piu` di tanto anche se i tentativi di rifare SO da
0 sfruttandolo appieno non sono certo mancati.

Nel campo della programmazione di tipiche applicazioni, invece, il C
e` di livello troppo basso perche` abbia senso usarlo oggi -- per
ogni dato elemento di funzionalita` devi scrivere, che so, 3-4 volte
piu` codice che in C++, 10-15 volte piu` che in Ruby o Python, non
ha senso (come non ha senso usare il linguaggio macchina che sarebbe
di livello ancora piu` basso del C). Il C++ copre una gamma cosi`
ampia di livelli che _e`_ ancora un concorrente valido, anche nel
campo della programmazione applicativa; purtroppo, inevitabilmente,
volendo fare "di tutto" -- dai livelli piu` bassi a quelli piu` alti --
finisce per essere molto piu` grosso e complicato, sia dei linguaggi
che mirano decisamente ai livelli bassi, come il C, sia a quelli che
mirano invece ai livelli alti, come il Ruby o il Python. Consuma
meno cellule grigie il compito di padroneggiare, che so, tutto Ruby
(o Python, siamo li`), E tutto C, che non il solo compito di
padroneggiare tutto il C++ -- basta confrontare il volume di
testo necessario per specificare appieno ciascuno dei 4 linguaggi.
Post by RiK0
Nel qualcaso, non e' che ve lo hanno fatto venire a schifo proprio i
crociati?
Solo quelli che confondono C e C++ nell'ingannevole dizione "C/C++",
ma quelli sono crociati che valgono poco;-). Gente come Abrahams o
Koenig puo` difendere il C++, o gente come Ritchie o Colvin il C,
con chiarezza e precisione, senza confonderli e senza "far venire
a schifo" cio` che difendono;-).


Alex
Lawrence Oluyede
2003-09-08 20:41:57 UTC
Permalink
Post by RiK0
Qualcuno che non sia uno dei crociati del C/C++ e' convinto che il C
vada bene ancora per qualcosa, oppure fa a tutti schifo.
Per me il C e` un buon linguaggio di programmazione ma in quanto
tale ha dei domini di utilizzo piu` o meno sensati. Usarlo per tutto
e` stupido, usarlo quando deve essere usato e usarlo nel modo giusto
e` piu` che corretto.

Il punto e` che in quanto programmatori (e non utilizzatori di un
linguaggio) saremmo tenuti a valutare (e imparare) quando e come
usare un determinato linguaggio nell'ambito di certi domini.

Non come certa gente che vuole scrivere le CGI in C++
--
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
***@NOSPAMmyself.com
Valentino Volonghi aka Dialtone
2003-09-08 21:48:30 UTC
Permalink
Post by Azathot
Come siamo presuntuosi... non ti smentisci mai, eh Alex...
Sulla qualità delle tue dimostrazioni abbiamo già, in passato, avuto modo di
discutere... e non ne sei uscito messo bene... lo sai...
Senti, ma questa tua bruttissima abitudine di richiedere le scuse da parte
di chiunque non condivida con te la tua visione distorta
dell'informatica... quand'è che ti passa?
Sei paranoico. I paranoici, si sa, non hanno una percezione corretta della
realtà.
Purché dimostri che il Python è meglio. <g>
Ah, ok... andiamo sul personale... quindi vuol dire che hai finito gli
argomenti... ;^)
Insomma, tu fai il meno possibile... e come sei diventato così "esperto" se
non fai mai niente?
Il problema, caro Alex, è che non ammetti di sbagliarti, e non ti scusi mai,
tanto sei arroccato nella tua torre d'avorio del "lei non sa chi sono io".
Olè, si scappa...
[snipponi vari per il post su quello non scritto da azatont]

Complimenti per un post ricco di motivazioni tecniche.

A ben guardare ciccino sei tu quello che deve ancora uscire bene dalle
discussioni... Ma anche solo una volta basterebbe.
--
Valentino Volonghi, Regia SpA, Milan

Linux User #310274, Debian Sid Proud User
RiK0
2003-09-08 16:55:33 UTC
Permalink
Post by bhoo
Post by Alex Martelli
Analizza piuttosto il codice in C++, che paragona direttamente
l'uso di vettori (std::vector) e liste (std::list) mostrando che
non vi e` misurabile differenza nelle prestazioni ottenibili (e
quindi le liste sono a pari merito con i vettori, per questo
problema e su questa macchina, in termini di velocita` di esecuzione).
In primo luogo questa cosa mi risulta strana... in linea teorica vettori
e liste dovrebbero dare prestazioni diverse a seconda dei compiti.
Per esempio secondo il Lipman Layole (e alcuni bench che pubblica)
inserire elementi semplici o stringhe in un vettore e' piu' rapido che
in una lista, mentre classi complesse sono piu' veloci con le liste,
rispetto che con i vettori.
Ora non e' da escludere che siano state migliorate prestazioni e
algortmi ecc... pero' devo dire che mi sembra strano.
Questo non dovrebbe fare incazzare nessuno, poiche' e' un confronto
infra C++
Post by bhoo
non puoi paragonare un codice che non è identico a quello usato da python
(dovrei prendere il sorgente e francamente ci vorrebbe troppo tempo)
La domanda e':
cosa intendi per identico?
se fosse identico non sarebbe C ma Python...
Oppure magari tu intendi come hai spiegato poi, che svolga le "stesse
istruzioni". Questo potrebbe essere un buon inizio. Teniamo presente che
non necessariiamente una classe C++ che "clona" l'interfaccia di una
Phython sia ugualmente performante (cosi' come una classe Python che
clona una C++ non necessariamente lo e).
In pratica non mi sento di escludere che ci siano determinati modi di
svolgere un problema chee piu' si confanno al C o al Python. E quindi
non necessariamente usare quel dato algoritmo per fare il test
porterebbe a qualche conclusione degna di nota.
In terzo luogo i benchmark a mio avviso lasciano il tempo che trovano.
Non ha nemmeno senso cercare di stabilire quale sia il linguaggio
migliore. Il C e' migliore perche' ci puoi scrivere un Kernel e il
Python no? Beh, allora io piuttosto dico che il C e' /migliore per
scrivere un kernel/.
Fare sti giochini con i benchmark, puo' essere divertente, ma e' un po'
come giocare a chi ce l'ha piu' lungo. Voglio dire, non prova niente.
Un ottimo programmatore in X, scrivera' codice piu' veloce di un pessimo
programmatore in Y, anche se Y e' piu' veloce di X.
Una applicazione va anche strutturata nel complesso, deve tenere
eventualmente cconto di come reagire se ha piu' processori, come gestire
il multithreading.
Se devo scrivere un Intelligenza Artificiale, mi trovero' meglio con il
Lisp, lo stesso se magari devo scrivere un traduttore. Posso fare di
tutto in Lisp. Ma per altre cose scegliero' senza dubbio il C, perche'
consapevolmente so che e' piu' adatto.
Se un cliente vuole un applicazione pronta in una settimana,
probabilmente la scrivero' in Java, anche se so che sara' piu' lenta...
che senso ha scrivere un fulmine di guerra che non sara' pronto in
tempo?

Detto tutto questo, mi sembra comunque strano che il Python si mangi a
sto modo il C++. Sarebbe carino fare una proba con un buon algoritmo in
C. (Teniamo conto che al momento a mio avviso il gcc e' molto piu'
veloce con il C che con il C++).

Un ultima cosa. Io non conosco il Python. Ma mi sembra alquanto strano
che non applichi alcuna ottimizzazione del codice. E sicuramente il
famoso codice C in cui e' stato scritto (mi sembra che tu abbia usato la
versione scritta in C) e' stato ottimizzato quando il pacchetto e' stato
compilato.
Post by bhoo
Post by Alex Martelli
immediamente in codice c++ con "quasi" identiche prestazioni(poi dipende
dal compilatore).
Non so cosa intendi per "quasi immediatamente". Certamente puoi tradurre
codice fra due qualsiasi linguaggi Turing-completi (per definizione), ma
se per "quasi immediatamente" intendi che lo sforzo e` trascurabile,
sbagli,
Post by Alex Martelli
e cosi` pure nel ritenere che le prestazioni siano necessariamente "quasi
identiche" -- in realta` c'e` spazio per molte variazioni.
Perchè sbaglio?
Quale funzione C o altro non si puo' tradurre immediatamente in C++ ?
I compilatori c++(degni di questo nome) di oggi hanno il set completo di
istruzioni C ,ovviamente non tutte comprese nello standard ma comuque non
vedo il problema.
Non e' che si puo' tradurre, e non e' che hanno il set completo.
Semplicemente le parole chiave del C sono un sottoinsieme di quelle del
C++. E' ovvio che siano compatibili.
Ma con altri linguaggi non e' cosi'... anzi aveva destato molto scalpore
un programmino scritto da un hacker che poteva essere interpretato come
codice C, Perl o Bash (mi sembra fossero questi...). Scriveva solo Ciao
Mondo.
Post by bhoo
Post by Alex Martelli
Ma tutto questo non ha nulla a che vedere con la tua errata asserzione
riguardo le prestazioni delle liste.
ma che dici........
Post by Alex Martelli
Post by Alex Martelli
return len(s.split())
questa funzione richiama un codice C ....
Direi che richiama codice macchina, originariamente scritto in C, ma
gia' trasformato in assembly e di li in codice macchina. Questo nel caso
in cui si usi il classic python.
Io python non lo conosco, quindi non fatemi storie di quanti compilatori
esistono...
esiste perfino un assembler scritto... in bash
Post by bhoo
Post by Alex Martelli
Vedi sopra. Qui poi gran parte del lavoro e` fatto da primitive del
sistema operativo,
chiamasi chiamate di sistema
Post by bhoo
Post by Alex Martelli
che possono essere implementare in una miscela di
C e di linguaggio macchina (il C e` normalmente piu` usato al giorno
d'oggi, ma un minimo di linguaggio macchina generalmente resta).
pienamente d'accordo. se non per il fatto che sono comunque state
ottimizzate e compilate. In linea teorica non dovrebbe esserci una gran
differenza cambiando il linguaggio... tanto il succo quando si fa una
chiamata di sistema in unix e' che vengono messi i parametri nei vari
registri, tranne in %eax dove ci va il numero della chiamata. Poi viene
chiamato l'interrupt 0x80
Post by bhoo
Post by Alex Martelli
Mettiamo da parte anche i ritardi dovuti all'interprete per tutti i suoi
controlli,vorrei capire come fai a dire che il tuo codice abbia
prestazioni migliori di un altro scritto in C/C++ ?
Un codice molto banale e piccolo, non e' particolarmente pesante per un
interprete.
Post by bhoo
Post by Alex Martelli
Ho postato interamente i due programmi in C++ standard (sono molto
simili: uno usa le liste, l'altro i vettori) nonche` quello in Python
Non prendi in considerazione il fatto che c++ non è solo std,non ho provato
il tuo codice ma cmq algoritmi per gestione di vettori o liste puoi
implementarli in tantissimi modi ..
Usare std è consigliato ma non è un obbligo....
vero. forse pero' quelli che hanno fatto il gcc non sono del tutto fessi
Post by bhoo
Devi usare lo stesso algoritmo e non std dove non è implementato il codice
migliore per quello che intendi fare tu.
forse... se vuoi lo scriviamo.
Post by bhoo
Post by Alex Martelli
specifici casi in cui un buon JIT puo` veramente sfoggiare le sue
caratteristiche) in quel dato programma Java puo` battere C++.
E' difficile credere che ci sia codice migliore,ma ottimizzare con magari
aggiunte di asm dove il compilatore(e sono pochi i casi) non è efficiente
non è poi così difficile...
Questo per avere una superba portabilita' suppongo. e poi ormai un
compilatore come il 3.3 e' piu' scaltro del 95 % dei programmatori come
pura ottimizzazione del codice dato.
Peraltro il 3.2 (e' noto) E' LENTO DI SUO.
non e' ottimizzato
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
RiK0
2003-09-08 21:11:34 UTC
Permalink
Post by RiK0
esiste perfino un assembler scritto... in bash
Sul serio? Puoi passarmi un link?
qui e' dove ho sentito che ne parla.
e' OSIMPA
http://www.linuxassembly.org/howto/other.html

secondo me e' una cosa vecchiotta... link che ho trovato sono
http://compilers.iecc.com/comparch/article/01-07-148

solo che non sono riuscito a trovare eseguibili o sorgenti.... (beh...
direi nella fattispecie sorgenti, visto che sono script di shell)...
anche se da come ne parla nel secondo link, mi sa che le informazioni
contenute nel linuxassembly sono un po' fuorvianti (e che hanno
fuorviato pure me)

Il predecessore di osimpa si chiamava shasm (shell asm???)
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
bhoo
2003-09-08 17:09:35 UTC
Permalink
Se i miei post non ti piacciono non leggerli, chi ti obbliga? Se
per te essi "divagano per disperdere l'attenzione", per coloro che
invece li apprezzano possono essere considerati ricchi di varie
informazioni importanti: de gustibus.
informazioni importanti ???
ma per favore....
Tu hai asserito che le liste peggiorano le prestazioni. Io ho
facilmente dimostrato che dici delle gran balle su questo punto
facilmente dimostrato ?
hai detto una marea di cazzate inutili...
hai confrontato un algoritmo specifico (quello delle liste.python) con un
algoritmo generico e ti sembra un confronto valido ?
ma tu sei fuori veramente
(ne dici su tanti, ma questa e` facile da dimostrare). Invece
di rispondere sul punto specifico, ammettendo l'errore e chiedendone
scusa, sei tu che hai divagato con i tuoi soliti svarioni. Il tuo
io divago ? UAHAHAHHAHHAHAHHAHHAHA
hai scritto una marea di roba inutile :))
stile da questo punto di vista assomiglia tanto a quello di vari
altri anonimi del passato, tra l'altro.
le persone come te che insultano senza nessun motivo andrebbero escluse da
ogni newsgroup
Post by bhoo
Post by Alex Martelli
Analizza piuttosto il codice in C++, che paragona direttamente
l'uso di vettori (std::vector) e liste (std::list) mostrando che
non vi e` misurabile differenza nelle prestazioni ottenibili (e
quindi le liste sono a pari merito con i vettori, per questo
problema e su questa macchina, in termini di velocita` di esecuzione).
non puoi paragonare un codice che non è identico a quello usato da python
E` clamorosamente ovvio a chiunque abbia mezzo granello di sale in
zucca che questa tua affermazione e` sballata: ovviamente puoi eccome
paragonare le prestazioni di programmi che svolgono lo stesso compito,
con lo stesso algoritmo, ma sono scritti in linguaggi diversi, usando
ma tu hai usato lo stesso algoritmo ?
hai solo usato un algoritmo che fa qualcosa di simile.
non hai usato lo "STESSO" algoritmo...
Post by bhoo
(dovrei prendere il sorgente e francamente ci vorrebbe troppo tempo)
Non ne dubito, e appunto per questo non e` necessariamente il paragone
piu` giusto. Se programmo in C++ voglio usare le librerie standard
del C++, per quel poco che coprono, non certo dovere migrare a librerie
completamente diverse (porting di quelle di un altro linguaggio, poi!)
per farti contento.
Ma non puoi confrontare un algoritmo per uso generico con uno costruito solo
per un compito
ma tu sei fuori veramente...
Anch'io ho scritto una classe string che è molto più veloce di quella
standard ed allora è migliore la mia ?
dici delle gran stupidate e sei consapevole di dirle
Lo standard ISO del C++ comprende anche delle librerie (non tante, ma
importanti) e quelle e` bene usare se si vuole dire che si programma
in C++.
Ancora questa storia..
C++ non è "SOLO" stl , che sia consigliato usarle è un altro paio di maniche
ma dove l'hai letta questa stupidata ?
Poi, se occorre, uno puo` ottimizzare nei "punti caldi" con
tanti mezzi (usare strutture e algoritmi piu` adatti, scrivere qualche
pezzetto in linguaggio macchina e/o librerie -- magari proprietarie --
molto performanti su di una data macchina, ecc, ecc), ma non puo` certo
essere il punto di partenza.
queste cose le dici e le smentisci da solo ...
questo punto lo riportato ma è solo divagazione perciò inutile come al
solito
Post by bhoo
Post by Alex Martelli
Non necessariamente: Python e` un _linguaggio_, le sue
_implementazioni_
Post by bhoo
Post by Alex Martelli
poi possono essere fatte in C (come e` Classic Python), in Java (come
è chiaro che si stava parlando di python scritto in C .
Ma lo fai apposta o cosa?
Il programma che ho scritto e` Python perfettamente portabile fra le
varie implementazioni del linguaggio, cosi` come quello C++ e` altrettanto
standard e portabile fra varie implementazioni compliant con lo
standard ISO del C++. Occorre specificare le implementazioni solo
per chiarire dettagli di prestazioni. Ma pretendere di riscrivere
uno dei vari programmi che stiamo confrontando, a seconda di quale
implementazione sia in gioco per un DIVERSO linguaggio di programmazione,
e` semplicemente ridicolo.
anche qui sei assurdo e dici sempre le solito cose SBAGLIATE lasciamo ai
posteri....
Post by bhoo
Perchè sbaglio?
Mah, difficile dirlo, forse traumi infantili possono avere inficiato la
tua capacita` di giudizio?
qui sfoggi la tua maleducazione.... lasciamo perdere
Post by bhoo
Quale funzione C o altro non si puo' tradurre immediatamente in C++ ?
Qualsiasi funzione sostanziale (non in C, ma ad esempio in Python, LISP,
Haskell, O'CAML, Java, ...) non si puo` tradurre IMMEDIATAMENTE in C++
perche` CI VUOLE TEMPO, e le attivita` che richiedono tempo non sono,
per definizione, immediate.
Si stava parlando di python scritto in C e le prestazioni delle sue funzioni
built-in
Ma cosa c'entra Lisp , haskel ?
Io stavo parlando di traduzione codice C
Post by bhoo
I compilatori c++(degni di questo nome) di oggi hanno il set completo di
istruzioni C ,ovviamente non tutte comprese nello standard ma comuque non
vedo il problema.
E dagli col C. Cosa c'entra il C?!
tu divaghi così tanto che poi non sai neppure più seguire un discorso...
come detto sopra si parlava di prestazioni delle funzioni built-in scritte
in C
Post by bhoo
Post by Alex Martelli
Ma tutto questo non ha nulla a che vedere con la tua errata asserzione
riguardo le prestazioni delle liste.
ma che dici........
Dico che hai detto che le liste non vanno bene come prestazioni, che
questa tua affermazione e` sballata, e che l'ho dimostrato con due
programmi in C++, quasi identici, uno imperniato su di un vettore e
uno su di una lista, con prestazioni indistinguibili.
tu come di solito fai hai preso due algoritmi fondamentalmente diversi e li
hai confrontati a tuo piacere dicendo delle false verita'.Hai voluto far
credere che una lista python sia più veloce di un Algoritmo generico.
Come ti ho gia detto usa un algoritmo giusto e simil-python .
Non confrontare i meloni con i cocomeri


[snip] (troppe parole inutili)
E allora falla -- in C++ standard. Vediamo un poco la dimensione dei
sorgenti del tuo programma C++ standard che fa "la miscela ... anche
meglio". Ah poverino, scordavo, non hai tempo. Quanto ti ci vuole
beh forse tu non hai un caxxo da fare dalla mattina alla sera io devo pur
lavorare...
??? Devo ancora vedere qualsiasi dimostrazione che "dico cose
inesatte", e trovo sempre piu` assurdo, ogni volte che lo leggo,
il tuo sproloquio sul fatto che "l'algoritmo deve essere implementato
allo stesso modo" in due linguaggi diversi per potere confrontare
le prestazioni...!!! E` invece ovvio che posso misurare e quindi
confrontare le prestazioni dello stesso algoritmo quando in ogni
linguagigo lo implemento con la rispettiva libreria standard.
AAHAHAHHAAHHAHHA
Da oggi potremo confrontare meloni e cocomeri..

[snip] perche' sono stufo di leggere tante stupidate...

Dalle tue parole abbiamo capito questo..
1) C++ è inutile
2) Python è estremamente più veloce di C++

complimenti :))))


ops dimenticavo....
abbiamo anche capito che sei un "FANATICO" e maleducato,non rispetti le
opinioni di nessuno
Lawrence Oluyede
2003-09-08 20:43:55 UTC
Permalink
Post by bhoo
Dalle tue parole abbiamo capito questo..
1) C++ è inutile
2) Python è estremamente più veloce di C++
A me non sembra di aver letto questo comunque
direi di chiuderla qui perche` tutti sti flame inutili
sono appunto...inutili
--
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
***@NOSPAMmyself.com
bhoo
2003-09-08 20:45:44 UTC
Permalink
Post by Lawrence Oluyede
Post by bhoo
Dalle tue parole abbiamo capito questo..
1) C++ è inutile
2) Python è estremamente più veloce di C++
A me non sembra di aver letto questo comunque
allora leggi meglio...
Post by Lawrence Oluyede
direi di chiuderla qui perche` tutti sti flame inutili
sono appunto...inutili
noi stavamo discutendo in maniera moderata dovresti dirlo al tuo amico visto
che lo conosci bene

ciao :)
Lawrence Oluyede
2003-09-08 21:14:40 UTC
Permalink
Post by bhoo
allora leggi meglio...
Ok corro a comprare la lente di ingrandimento
per controllare di non essermi perso qualche carattere
Post by bhoo
noi stavamo discutendo in maniera moderata dovresti dirlo al tuo amico
visto che lo conosci bene
E` piu` che in grado di difendersi da solo e Google Groups e` li apposta
(finche` MS non prendera` in mano tutta la baracca :)
--
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
***@NOSPAMmyself.com
Lawrence Oluyede
2003-09-09 07:23:11 UTC
Permalink
da dove l'hai capita questa stupidata?
E' una frase che ho scritto io, mi spieghi che senso ha la tua
domanda?
Veramente dal confronto che ha fatto tra cocomeri e meloni ho capito il
contrario..
Ok ok
Oltretutto(nei primi post) non si parlava di confronti tra list di python e
list c++, ma di di array c++ e liste python.
Non me ne frega una cippa, torno a ripeterlo, mi sono veramente stufato
di tutti i flame di questo NG. Per me puoi andare avanti a litigare
con Alex o chicchessia e sbattere i piedi in eterno.
Ma vedo che tu leggi solo quello che ti pare e non capisci nulla alla stessa
maniera.
Certo certo, ora sono diventato un minorato mentale.
a me non è mai interessato leggere i contributi di alex se non di sfuggita
non vedo come facevo a capire questa tua frase criptica...
Ok, mi scuso.
Dovresti prendere in considerazione il fatto che non tutti leggiamo le
stesse cose,non ti pare?
Leggi sopra.
--
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
***@NOSPAMmyself.com
Alex Martelli
2003-09-08 18:39:19 UTC
Permalink
(le liste alla LISP sono particolarmente facili
da implementare proprio come classicamente le implementa il LISP,
cioe` con cons-cells, che in Python puoi fare con tuple di 2 item e
in C++ con std::pair idem)
Non conosco il Python (come continuo a ripetere.. ).
Ma di sicuro il C++ non ha *niente* di paragonabile alle liste del
Lisp...
Non "ha" ma agevolmente "puo` fare". Basta tutto sommato una
"cons-cell". Non e` Lippman nel suo tutorial che mostra come
fare in 4 e 4 8...?
Per simulare la costruzione delle funzioni primitive ricorsive in Lisp
e' un giochetto.. per farlo in C++ ci vuole un po' piu' di sangue, e
comunque se ne perde l'eleganza teorica.
Nolo contendere sull'"eleganza teorica", C++ (come la maggior parte
dei linguaggi di successo) e` soprattutto un linguaggio _pragmatico_
(e di "eleganza" non lo accuserebbe nessuno;-). Nella pratica
sospetto che il problema #1 sarebbe che la tipica implementazione
C++ non ottimizza la tail recursion (perche` non e` un idioma
tipico del linguaggio -- quindi _pragmaticamente_ non e` criticabile
il fatto di non trattarlo specificamente)...


Alex
Noixe
2003-09-07 12:16:17 UTC
Permalink
Post by Andrea Laforgia
Le liste sono dei costrutti propri di quel linguaggio. La loro
presenza non è di alcun impedimento all'apprendimento della
programmazione (sia quella "vera", si quella "corretta").
L'unico dubbio che ho nel proporre ad un newbie Python, nasce dal fatto che
dopo aver appreso la semplicità di Python, passare a C++ ad es., potrebbe
essere più traumatico del solito :)
--
Noixe
Andrea Laforgia
2003-09-07 11:17:52 UTC
Permalink
Concordo, ho iniziato con il pascal, poi a secondo delle necessita' non
ho avuto grossi problemi per apprendere i rudimendi di altri linguaggi
(non tanto per programmare, ma per leggere i codici)
Il Pascal va bene, per iniziare, ma Python va altrettanto bene (forse
anche meglio).
Alex Martelli
2003-09-08 09:25:33 UTC
Permalink
Post by Andrea Laforgia
Concordo, ho iniziato con il pascal, poi a secondo delle necessita' non
ho avuto grossi problemi per apprendere i rudimendi di altri linguaggi
(non tanto per programmare, ma per leggere i codici)
Il Pascal va bene, per iniziare, ma Python va altrettanto bene (forse
anche meglio).
La scelta dipende da una fondamentale decisione didattica: e` piu`
produttivo imparare in un ambiente MOLTO vincolato (in cui si deve
informare accuratamente il compilatore su tutti i dettagli di tutti
i tipi in gioco), o in uno POCO vincolato (dove i tipi se li vede
il runtime, sollevando eccezioni se del caso)? Notiamo che non si
parla comunque di "tipizzazione debole" (come ad es. in linguaggio
macchina), bensi` statica ed esplicita/ridondante (Pascal) rispetto a
dinamica ed implicita/intrinseca (Python) -- altri linguaggi ancora,
come Haskell, hanno tipizzazione statica ed implicita/intrinseca
(il compilatore puo` dedurre tutti i tipi in gioco, come in Python,
ma lo fa staticamente, come in Pascal, non dinamicamente), ma l'uso
didattico di Haskell e simili e` consigliabile solo a quelle rare
persone che "pensano", ``di natura'', in termini matematici puri
ed astratti -- Pascal e Python sono + concreti e quindi + adatti
come primo linguaggio per il 99% dei possibili studenti.

Chi ritiene didatticamente superiore la scarsita` di vincoli
arbitrari potra` scegliere fra Python, Ruby, Smalltalk, Scheme
(e altri linguaggi lisp-like, ma Common Lisp e` forse troppo
"grande" come primo linguaggio da imparare), ...; chi al contrario
ritiene che l'abbondanza di vincoli arbitrari sia un vincolo
didattico positivo potra` scegliere fra Pascal, Eiffel e suoi
dialetti, magari Ada (forse troppo "grande").

E` un po' come dire: per insegnare l'italiano agli stranieri,
e` meglio partire dalla prosa del linguaggio parlato (relativamente
pochi vincoli) o dalla poesia, magari specificamente dagli
endecasillabi danteschi, con i loro precisi vincoli su sillabe,
accenti, rime, ...? Entrambe le scuole vantano precedenti
storici di rilievo. Al giorno d'oggi nell'insegnamento delle
lingue naturali si punta molto sulla "lingua viva" (prosa, pochi
vincoli grammaticali rigorosi, ...), ma nel medioevo la pensavano
diversamente. A mio parere puo` benissimo darsi che la scelta
migliore fra le due scuole vari da persona a persona, cioe` che
ci siano persone che imparano meglio in un contesto estremamente
vincolato e rigidamente strutturato, altri invece che imparano
meglio con "piu` pratica e meno grammatica". Pero` mi sembra
(sulla base dell'esperienza empirica, non di studi rigorosi, che
non credo siano mai stati fatti) che il secondo approccio sia
adatto a piu` persone, il primo a una minoranza (cosi` come
entrambi questi approcci grosso modo "concreti" sono adatti a
piu` persone di quello rigoroso e astratto di Haskell).


Alex
mirabros
2003-09-07 13:30:27 UTC
Permalink
Tra l'altro ai tempi quando iniziai a studiare il PASCAL non esistevano
versioni gratuite di Delphi, oggi puoi scaricare la versione gratis di
Kylix
e provarlo se ti piace puoi continuare a sviluppare bei programmoni senza
spostarti
dal PASCAL
Ma ti riferisci alla versione "open" che ho visto sul sito della Borland?
Perche' come mi ha ricordato R1K0 non e' open source, tu l'hai provata per
caso? Nel commento di presentazione dice che serve "per creare applicazioni
open source su linux sotto GNU GPL"(tradotto),ma e' esso stesso open source?
Forse si va un po' fuori tema,ma se fosse cosi' risponderebbe sicuramente
alle esigenze di sono_io e di quanti come lui.
RiK0
2003-09-07 18:36:53 UTC
Permalink
Post by mirabros
ma e' esso stesso open source?
No. Non e' OpenSource.
Puoi usarlo gratuitamente, a patto che il codice che rilasci tu sia OS.
Per lo meno questo e' quello che risulta a me...

Magari un giorno di questi, de debian lo consente, lo provero'!!
--
(setq RiK0 "Enrico Franchi")
(setq url "www.anubics.org")
(setq quote "Se mi prendo sul serio,
c'e' da mettersi a ridere." )
-=M=M=
2003-09-08 09:05:34 UTC
Permalink
Post by mirabros
Tra l'altro ai tempi quando iniziai a studiare il PASCAL non esistevano
versioni gratuite di Delphi, oggi puoi scaricare la versione gratis di
Kylix
e provarlo se ti piace puoi continuare a sviluppare bei programmoni senza
spostarti
dal PASCAL
Ma ti riferisci alla versione "open" che ho visto sul sito della Borland?
Perche' come mi ha ricordato R1K0 non e' open source, tu l'hai provata per
caso? Nel commento di presentazione dice che serve "per creare applicazioni
open source su linux sotto GNU GPL"(tradotto),ma e' esso stesso open source?
Infatto non ho detto OPEN, o FREE, ma gratis.
Alla Borland la chiamano OPEN, ma di open non ha nulla.

E' gratis da scaricare e tutto il codice che produci con essa lo devi
per forza rilasciare sotto GPL, a meno che tu non compri la verisione
commerciale
Post by mirabros
Forse si va un po' fuori tema,ma se fosse cosi' risponderebbe sicuramente
alle esigenze di sono_io e di quanti come lui.
Credo di si, tra l'altro e' un ambiente RAD di facilissimo uso.
R1K0
2003-09-07 12:06:01 UTC
Permalink
Mi sembra che kylix ti permetta di scrivere codice compilabile sia su
windows che su linux ,cioe' generi sia i file per win che per linux il tutto
in maniera quasi trasparente(per modo di dire)
Credo che volesse software open source...
--
(let ( (R1K0 "Enrico Franchi")
(url "www.anubics.org")
(quote "Se mi prendo sul serio c'e' da mettersi a ridere") ) )
Continua a leggere su narkive:
Loading...