Newsgroup: it.comp.programmare
Titolo: [CONFRONTO] Python vs C vs Visual Basic, pessimizzazione introdotta

SOMMARIO
Quello che segue e' un test che misura il grado di pessimizzazione, nei
tempi di esecuzione, derivati dalle attuali implementazioni del Python e del
Visual Basic rispetto al modello di riferimento, ovvero un programma
compilato con il C.
L'obiettivo che si propone questo test e' quello di misurare l'impatto che
ha il modello a "byte code" di Python sulle performances complessive e
l'impatto derivato dalla flessibilita' espressiva dello stesso Python.
In altri termini, il test permettera' di calcolare velocemente il "fattore
di pessimizzazione percentuale", p%, espresso come
    p% = ( ( Tp - Tc ) / ( Tv - Tc ) ) * 100
che misura la pessimizzazione introdotta dall'interprete (in termini
percentuali). Dove "Tp" e' il tempo di esecuzione del codice Python, "Tc" e'
il tempo di esecuzione del codice C e "Tv" e' il tempo di esecuzione del
codice VB. I fattori "Tp - Tc" e "Tv - Tc" sono i tempi "persi" dal fatto
che stiamo in un ambiente interpretato.
Inoltre, calcolando
    q% = ( ( Tp - Tv ) / Tp ) * 100
avremo anche la percentuale di tempo "persa" per la flessibilita' del
linguaggio (infatti si presuppone che a linguaggi equipotenziali il tempo di
esecuzione sia il medesimo, e che il visual basic e' "meno potente" di
python, cioe' che Tp > Tv).
AMBIENTE OPERATIVO
    PIII 1000 Mhz con 256 Mb di RAM
    Windows NT 4.0 SP6
    Visual C++ 6.0 SP3
    Python 2.2.2b1 (per Windows 32)
    Visual Basic 6.0 SP3
PROBLEMA APPLICATIVO
Si faccia la somma dei primi MAX_CYCLES numeri naturali, con overflow a
999999.
ALGORITMI IN PROVA
Algoritmo di somma elementare modulo 999999.
SORGENTI
Vedi allegato 1, 2 e 3.
AMBIENTE DI MISURA
La misurazione avviene contando il numero di secondi tra l'inizio del
processo ed il suo termine, ed e' incluso nel sorgente medesimo. Il
parametro di testing è il numero di naturali, MAX_CYCLES (con K si intende *
1000), da sommare. I tempi sono riferiti come media tra tre esecuzioni
consecutive (per evitare l'influenza dei cache missing).
MISURE
    MAX_CYCLES = 10K
        Tp(10K) = 0.0089 s
        Tv(10K) = 0.0012 s
        Tc(10K) = 0.0000 s
    MAX_CYCLES = 100K
        Tp(100K) = 0.1038 s
        Tv(100K) = 0.0194 s
        Tc(100K) = 0.0050 s
    MAX_CYCLES = 1000K
        Tp(1000K) = 1.0663 s
        Tv(1000K) = 0.1418 s
        Tc(1000K) = 0.0490 s
VALUTAZIONE DEI PARAMETRI
    p%( 10K ) = ( ( 0.0089 - 0.0000 ) / ( 0.0012 - 0.0000 ) ) * 100= 741.66
%
    q%( 10K ) = ( ( 0.0089 - 0.0012 ) / 0.0089 ) * 100 = 86.51 %
    p%( 100K ) = ( ( 0.1038 - 0.0050 ) / ( 0.0194 - 0.0050 ) ) * 100 =
686.11 %
    q%( 100K ) = ( ( 0.1038 - 0.0194 ) / 0.1038 ) * 100 = 81.31 %
    p%( 1000K ) = ( ( 1.0663 - 0.0490 ) / ( 0.1418 - 0.0490 ) ) * 100 =
1096.22 %
    q%( 1000K ) = ( ( 1.0663 - 0.1418 ) / 1.0663 ) * 100 = 86.70 %
CONCLUSIONI
L'interprete Python e' dalle 6 alle 10 volte meno efficiente nell'esecuzione
dell'interprete Visual Basic.
Inoltre, eliminando il fattore "interprete", il Python e' intrinsecamente
piu' inefficiente dell'80%.
*** Azimuth ***
Allegato 1 - Sorgente Python
import time
MAX_CYCLES = 1000000
def experiment( ) :
    sum = 0
    for i in range( MAX_CYCLES ) :
        sum = ( sum + i ) % 999999;
    return sum
if __name__ == "__main__":
    c = time.clock()
    experiment( )
    d = time.clock() - c
    print "It tooks"
    print d
    print " to perform."
Allegato 2 - Sorgente VB
--- Module1
    Const MAX_CYCLES = 1000000 * 1&
Sub experiment()
    Dim i As Long
    Dim sum As Long
    sum = 0
    For i = 1 To MAX_CYCLES
        sum = (sum + i) Mod 999999
    Next i
End Sub
--- Form1
Private Sub Form_Load()
    Dim j As Integer
    Dim c As Single
    Dim d As Single
    c = Timer()
    experiment
    d = Timer() - c
    MsgBox "It tooks " & d & " to performs"
End Sub
Allegato 3 - Sorgente C
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <memory.h>
#define MAX_CYCLES 1000000
void experiment( void ) {
 int sum = 0;
 int i = 0;
 for( i = 0; i < MAX_CYCLES; ++i )
  sum = ( sum + i ) % 999999;
}
int main( ) {
 clock_t c = clock();
 clock_t d;
  experiment( );
 d = clock() - c;
 printf( "It tooks %f to performs", ( float ) d / ( float )
CLOCKS_PER_SEC );
 return 0;
};

 compilato con il C.
azimuth alcuni di quelli che non vogliono capire e perchè hanno interessi su
python (senza fare nomi e cognomi :))
è inutile son testoni e continueranno a far generare codice fogna :))
ciao :)

 Quello che segue e' un test che misura il grado di pessimizzazione
ROTFL !! Dai sorcetto ! corriii !!! :)
--------------------------------
Inviato via 
http://usenet.libero.it

 č inutile son testoni e continueranno a far generare codice fogna :))
Dovresti ringraziarci, teniamo vivo il tuo habitat naturale :))
E' peccato far estinguere i "pimpini" che vivono nel sottosuolo :))


 E' peccato far estinguere i "pimpini" che vivono nel sottosuolo :))
sono un po curioso scusami..
visto che ami dare tutti i tuoi dati forse potrai dirmi quanti anni hai ?
vorrei capire del perchč sei cosě infantile
(i miei son tanti se permetti vorrei non dirli :))
ciao :)

 sono un po curioso scusami..
Scuse accettate.


 Scuse accettate.
ahhaha ma potevi almeno dirmi "non voglio dirtelo" :)))
non ci voleva poi molto :)

 #include <memory.h>
inutile
--
Gerolamo

     sum = ( sum + i ) % 999999;
Questo codice impiega piu' di un minuto per essere eseguito, non so dirti di
preciso quanto perche' ad un certo punto mi sono stufato ed ho chiuso
l'esecuzione.
*** Azimuth ***
[1] Calcolato: ho preso il tempo per fare un ciclo di 10.000.000 di termini
e ho preso il tempo in proporzione.
[2] L'algoritmo utilizzato contempla ancora il modulo per evitare
l'overflow.

 ho chiuso l'esecuzione.
Tu pensa che sulla mia macchina invece ottiene risultati circa il
doppio più veloci che col tuo codice...
--
Gerolamo

 preferito limitare la precisione richiesta.
VB continua ad essere compilato, non interpretato.
Saluti,
-- 
         (__)		| Nicholas Wieland	      |
         (oo)		| 
nicholas...@yahoo.it
   |
   /------\/ 		| Debian GNU/Linux / Mac OS X |
  / |    ||  		 -----------------------------
 *  /\---/\    ...."Have you mooed today?"...

 VB continua ad essere compilato, non interpretato.
Invece è interpretato.
L'interprete è compilato, mentre il codice è interpretato.
Separiamo un file EXE di VB in due file: EXE e DAT.
Il file EXE sarà compilato e interpreterà il file DAT.
Visto che il "codice utente" è contenuto esclusivamente in DAT, il VB è
interpretato.
Kiuhnm

 doppio più veloci che col tuo codice...
Che macchina?
*** Azimuth ***

 interpretato.
<cite>
Microsoft Visual basic consente di compilare le applicazioni in codice
nativo veloce ed efficiente, utilizzando la stessa tecnologia di
ottimizzazione di compilazione back-end di Microsoft Visual C++. La
compilazione in codice nativo fornisce varie opzioni per
l'ottimizzazione e il debug non disponibili con il P-code. Queste
opzioni sono definite in genere anche parametri e possono essere
attivate o disattivate.
</cite>
Da 'Visual Basic 6.0' - Microsoft Press.
/me thinks che il capo aveva ragione alla fine, quel libro è servito :-P
La vera domanda è: Azimuth ha eseguito il 'test' compilando o
interpretando ? 
Non importa: Visual Basic è stato abbondantemente abbandonato (qui
intendo) in favore di Python. 
Del resto chiunque è consapevole che Python e C non sono tecnologie avverse,
ma complementari ^^


 avverse, ma complementari ^^
Allora non dire che VB č compilato, ma che puņ essere *anche* compilato.
Kiuhnm

 - Kiuhnm :

Una cosa č certa: non č interpretato.


 Che macchina?
PIII 667 con 256 Mb di ram e Win2000
Il confronto (ovviamente, come piace dire a te) non è tra i miei
tempi e i tuoi, ma tra i tempi del tuo codice python e del mio
misurati entrambi sulla mia macchina.
--
Gerolamo

 Una cosa č certa: non č interpretato.
Perchč no?
Kiuhnm

 misurati entrambi sulla mia macchina.
In ogni caso sono tempi eonici (> 1 minuto).
*** Azimuth ***

 ma complementari ^^
Direi mutualmente esclusive: una volta che passo al sistema migliore (C++)
perche' tornare indietro?
*** Azimuth ***

 Perchè no?
Perchè un linguaggio p-code non è un linguaggio interpretato ma un
linguaggio che viene compilato per una VM. Io credo che tu ti confonda
con VBScript che è un sottoinsieme di Visual Basic.
Saluti,
-- 
         (__)	      | Nicholas Wieland	    |    -     ------------
	 (oo)	      | 
nicholas...@yahoo.it
   |    -    | There's no |
   /------\/ 	      | Debian GNU/Linux / Mac OS X |    -    | place like |
  / |    ||  	       -----------------------------     -    | *GNOME(2)* |
 *  /\---/\           ...."Have you mooed today?"....    -     ------------

 con VBScript che è un sottoinsieme di Visual Basic.
Guarda che eseguito significa interpretato direttamente dalla CPU, mentre
interpretato significa eseguito da software (VM) e "convertito" in codice
eseguibile (conv. implicita o esplicita).
IMHO sei tu che stai facendo confusione, comunque lascio perdere visto che
continuare non porterebbe a niente.
Kiuhnm

 linguaggio che viene compilato per una VM.
Che lo interpreta, dato che la VM, per definizione, non e' l'ambiente nativo
di esecuzione. Ergo, il programma in Visual Basic E' interpretato.
Il tutto mi sembra questione di lana caprina, in ogni caso, dato che il
Visual Basic viene spacciato per interpretato e solo la compilazione
esplicita gli permette di generare codice nativo Intel 80x86.
*** Azimuth ***

 continuare non porterebbe a niente.
Come preferisci, io ho solo corretto un'affermazione errata.


 In ogni caso sono tempi eonici (> 1 minuto).
Il tuo  PIII 1000 ha EVIDENTI problemi, renditene conto.
Non credo che sia la macchina ideale per dei test.
--
Gerolamo

 Non credo che sia la macchina ideale per dei test.
Io credo che se c'e' qualcosa che ha problemi, sia colui il quale vuole
spacciare per produttivo un ambiente come il Python.
f/up >/dev/null
*** Azimuth ***

spacciare per produttivo un ambiente come il Python.
Perchč non vieni a farti un giro su comp.lang.python? Solo per
informarti, magari posta anche una domanda simile al tuo annoso
problema " python puň essere produttivo?" e spiega le tue ragioni per
cui secondo te non lo č
--
Rhymes (
rhymes_...@myself.com
)
http://www26.brinkster.com/rhymes
http://bw-crema.blogspot.com

 Perchè non vieni a farti un giro su comp.lang.python?
Per lo stesso motivo per cui non vado nel newsgroup it.comp.giochi[1].
*** Azimuth ***
[1] Ed e' lo stesso per cui non vado in "it.discussioni.auto", d'altra
parte.

Per lo stesso motivo per cui non vado nel newsgroup it.comp.giochi[1].
?


 ?
Mai mischiare il gioco con il lavoro: in entrambi i casi, la confusione e'
letale[1].
*** Azimuth ***
[1] Se scambi il lavoro per un gioco, non ti assumi le tue responsabilita';
se scambi il gioco per un lavoro, diventi un soggetto ossessivo-compulsivo.

 in codice eseguibile (conv. implicita o esplicita)
quindi stai dicendo che il codice macchina per i pentium e` interpretato?
Per la cronaca il pentium e` costituito da un interprete (in microcodice) 
che traduce al volo le istruzioni CISC della famiglia x86 e le fa 
eseguire in un piu` veloce processore RISC.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 (C++) perche' tornare indietro?
Non esiste il "sistema migliore". Non e` un caso che Stroustrup cita 
questa frase in testa al capitolo intitolato "Progetto e sviluppo":
"""Non esiste alcuna panacea""" (F. Brooks)
Cosi` come non e` un caso che guru del C++ quali Andy Koening, Scott 
Meyers e Bruce Eckel (che sicuramente conoscono il C++ meglio di me e te 
messi assieme) si siano interessati a Python.



premesso che il paragone non sembra aver senso, mi spieghi cosa c'entra
it.comp.giochi?
ciao

 perche' tornare indietro?
Illogico: se due tecnologie sono mutualmente esclusive non possono essere
l'una migliore dell'altra. Se si escludono a vicenda e' perche' ognuna di
esse copre interamente l'applicazione dell'altra. Raramente accade, in
informatica, che una tecnologia sia mutualmente esclusiva con un altra, a
meno di ambiti netti di applicazione.
In programmazione questo principio vale meno che mai: i programmatori
generalmente conoscono una "manciata" di linguaggi e li usano in modo
eterogeneo anche all'interno degli stessi progetti. Non si puo' affermare
che C++ sia, in assoluto, il sistema migliore, in quanto il sistema
migliore, in assoluto, non esiste.
Python e C/C++, come giustamente affermato, sono *complementari*, e'
possibilissimo usare l'una e l'altra insieme (io, ad es., uso Delphi e un
set di componenti che mi permette di eseguire al volo codice Python dai miei
programmi Delphi).
--------------------------------
Inviato via 
http://usenet.libero.it

 della famiglia x86 e le fa eseguire in un piu` veloce processore RISC.
A bassissimo livello sě.
Del resto non l'hai detto tu stesso chiamandolo "interprete"?
Perň non conta perchč in questo caso un linguaggio interpretato tipo il
Python o il VB sarebbe doppiamente interpretato! (Python/VB -> asm ->
"microasm" o firmware)
Kiuhnm

Il tuo confronto, no ha molto senso... anche perchè C e Python servono
(spesso) in casi diversi e in genere cooperano nella realizzazione di
un'applicazione... è un po come dire (senza offesa per nessun dei 2
linguaggi, ma mi viene questo esempio forse non proprio azzeccato...)
"Motore della F2002 VS i pneumatici che la F2002 utilizza"...
Anche se la potenza deriva dal motore, senza ruote lo puoi tenere sul
comodino...
Python, è interpretato, e ovviamente è più lento in un compilato, quindi è
inutile paragonarlo a C/C++. Perchè non fai un "test" sulla
semplicità/flessibilità tra Python e C?
ciao
--
DigitalShock

 A bassissimo livello sě.
Falso.
C'e' un limite al concetto di "interpretazione", dettata dalla struttura
interna del processore.
Per come le istruzioni subiscono il "fetch" dalla memoria e vengono eseguite
all'interno del processore non si puo' affatto parlare di interpretazione.
Il codice di un processore CISC, generalmente, viene interpretato a livello
di microcodice, ma questo NON e' cio' che si intende, normalmente, per
codice "interpretato". Se poi parliamo di processori RISC, la
"microinterpretazione" non esiste del tutto.


 semplicità/flessibilità tra Python e C?
Perche':
a) non esiste una unita' di misura per questo (chi consiglia gli SLOC non sa
di cosa parla);
b) si confronta qualcosa A PARITA' di altro: non vi sono parita' tra i due
linguaggi, lo abbiamo gia' ampiamente dimostrato.
*** Azimuth ***

 linguaggi, lo abbiamo gia' ampiamente dimostrato.
Infatti, non vi e' parita': Python, per moltissimi ambiti, risulta essere la
scelta migliore.
Tu *credi* di aver dimostrato qualcosa, e' diverso ;)


 f/up >/dev/null
Non sei in grado di impostare il follow up del tuo newsreader, vedo...
Inoltre sono sempre più preoccupato per il tuo PC, che, visto che
usi Microsoft Outlook Express 5.50.4522.1200 e hai anche
un /dev/null deve essere in seria crisi di identità.
--
Gerolamo

 un /dev/null deve essere in seria crisi di identità.
Non hai mai sviluppato cross platform. Contento tu...
*** Azimuth ****

 provocazioni.
Ti limiti a non rispondere a chi ti dimostra che hai torto, e' diverso ;)


 Non hai mai sviluppato cross platform. Contento tu...
Che c'entra?
Adesso mi vuoi dire che sul tuo PC usi OE e hai
CONTEMPORANEAMENTE un /dev/null su cui puoi impostare il
follow up?
Anche qui i casi sono 2:
1- hai sbagliato
2- scrivi senza pensare
Continuo a pensare alla prima delle 2 ipotesi, ma cominci a
essere recidivo...
--
Gerolamo

Scusase se mi intrometto...
:: Pensa, io faccio "wget". Altrimenti, tiro giu' la libreria XYZ e uso
:: "std::string wget( const std::string& _url );".
: Ok.
: Mi scrivi il codice?
Credo che azimuth stia semplicemente dicendo che non dobbiamo misurare la 
bontà di un linguaggio (in sens produttivo) rispetto alla dimensione 
delle librerie disponibili, perché è solo e sempre dipendente dalla 
longevità dello stesso. QUando il C è nato non c'erano certo molte 
librerie in giro, ma adesso, a diversi anni di distanza, il C è il 
linguaggio con più librerie -- ed è, inciso, il linguaggio con il quale è 
più facile sviluppare qualsiasi cosa visto che è probabile che qualcuno 
l'abbia già fatto, e proprio con quel linguaggio. Per certi versi 
assomiglia al principio secondo cui si impongono degli standard de-facto.
:: Errori di implementazione? Quelli di "wget".
:: Tempi lunghi di sviluppo? Quelli di scaricare l'eseguibile o le
:: librerie.
: Ah... a proposito del codice di cui sopra, mi servirebbe,
: diciamo, entro domani, dopodomani al max...
Qui si introduce un altro discorso, che a me preme molto: vi è mai 
capitato che un vostro superiore valutasse il vostro lavoro in misura 
proporzionale al tempo che avete impiegato a produrlo? A me è capitato che 
una soluzione che ho dato ad un problema in una settimana fosse valutata 
meno della soluzione che ha dato un mio collega che ci ha impiegato un 
mese! Questo perchè ho come avuto l'impressione che il superiore valutasse 
più che altro che "se ci vuole più tempo, vuol dire che è più complesso".
Ovviamente, io la mia soluzione l'avevo fatta in C, lui in uno script 
aziendale...
:: Scarsa portabilita'? In che senso?
: Che se cambi S.O. le librerie spesso e volentieri te le giochi...
E' un po' che lavoro nel ramo dei sistemi embedded e, a parte alcune 
idiosincrasie (tipo: alcune funzioni di libreria bacate), non ho mai visto 
venire meno le librerie di sistema.
: Io ammetto di non esserne in grado. Tu?
Con un buon wrapping si fa tutto!
::: -portabilità
:: Idem (devi avere un interprete!).
: Oh, beh.. devi avere un compilatore...
Beh, io ad esempio sulla mia macchina di lavoro ho un compilatore che 
genera eseguibile per 5 differenti tipi di architetture (tutte embedded, 
ovviamente, ma comunque macchinette mica male, alcune hanno anche 2-3 Mb 
di RAM!) ma non ho bisogno di alcun interprete per ognuna di esse...
:: Prenderei una qualsiasi libreria "bignum" e la farei con quella.
: Io ti ho risolto il problema in 15 secondi circa
NOn per fare il pignolo, ma hai risolto QUEL problema.
Ciao e buon flame! <g>
Fed.

 proporzionale al tempo che avete impiegato a produrlo?
No, perche' non e' questo il modo in cui si valuta un progetto.
Prima si stabilisce il tempo da impiegare nel realizzarlo e poi lo si
valuta.
Sono i programmatori che devono adattarsi ai tempi, non il contrario.


 Ciao e buon flame! <g>
Nessuna intenzione di flammare, io...
Ciao!
--
Gerolamo

: Discutibile che sia il C sia il linguaggio con più librerie.
Puoi discutere quanto ti pare, ma rimane il fatto che l'affermazione è 
probabilmente corretta.
: Allora qualcuno si degna di rispondere al mio esempio del grabber
: con un programma analogo in C?
Dobbiamo postarti tutto il sorgente di wget?
: non dovrebbe essere un problema, no?
Infatti no lo è!
: Cosa intendi per librerie di sistema? Intendi la libreria standard?
Sì.
: Ma che ci fai con la sola libreria standard del C?
Molte cose. Poi c'è la libreria del C++, che direi è molto fornita.
: Comunque nei sistemi embedded trovo molto più logico e
: normale lavorare con un linguaggio come il C.
La cosa buffa è che c'è anche il C++, senza limitazioni di sorta (a parte 
lo spazio fisico occupato, ovviamente).
: Infatti, ma sui sistemi embedded non ha molto senso l'uso di
: linguaggi di altissimo livello e ha molto più senso usare strumenti
: e linguaggi che ti permettano di avere un diretto controllo sull'HW
L'osservazione sulla portabilità cade nel momento in cui non hai bisogno 
di un interprete ma generi un codice eseguibile direttamente da 
quell'architettura. Quindi il Python è MENO PORTABILE perché è 
interpretato e quindi necessita di un interprete, e non è detto che sia 
portabile l'interprete (oddio, mi sono intorcigliato con le parole!).
Per il discorso del "bignum", voglio dirti che questo tipo di problemi è 
stato già affrontato, nel tempo, da diversi programmatori C e C++, ognuno 
dei quali ha fornito la propria implementazione. Sei libero di 
scegliertene una qualsiasi e risolvere il problema.
Ciao.
Fed.

:: Scusase se mi intrometto...
: Figurati, d'altronde stai difendendo la tua ragazza ;)
Andrea, ma dimmi la verità, hai qualche problema di socializzazione e la 
tua unica valvola di sfogo è questo NG? No, perché dimmelo subito e ti 
lascio campo libero -- non voglio certo diventare il tuo supporter 
emotivo.
: Azimuth non sa un bel niente di bonta' o meno di un linguaggio, 
: i suoi
: parametri non sono validi per il giudizio complessivo. Si puo' valutare
: eccome la bonta' di un linguaggio in base a tutto cio' che di 
: predefinito si porta dietro. 
Hai un concetto di linguaggio molto ampio... e sicuramente vivi in un 
mondo tutto tuo...
: Programmare in Java, in soldoni, significa  usare la libreria,
: programmare in Delphi, in soldoni, significa usare la libreria, 
Il fatto è che, caro Andrea, si vede che tu non hai mai sviluppato 
professionalmente, perché, di norma, anche se diventi "veloce" a 
sviluppare, non significa necessariamente che i tuoi progetti siano 
migliori o più efficaci. Nel mio caso, ad esempio, se proponessi Java, il 
mio responsabile tecnico si metterebbe a ridere. Se proponessi Delphi mi 
prenderebbe per pazzo. Se proponessi Python... vabbeh...
: Falso. Le librerie esistono in numero enorme per QUALSIASI linguaggio, 
Falso? Scusa, ma 15 anni fa che linguaggi c'erano, in giro? Quanti di quei 
linguaggi sono rimasti ancora oggi? C, sicuramente.
: come
: fai a fare una stima come la tua ? hai dei numeri precisi ?.
Ho fatto un censimento per il mio responsabile...
: Considera solo
: la quantita' di componenti disponibili per Delphi.
Mi pare che fai un confronto a tuo sfavore...
: Il C e' un linguaggio
: che, di base, al contrario di altri linguaggi, non offre una libreria
: standard molto ricca, se non per fare delle operazioni base. Tieni 
Si', ma, al contrario di altri linguaggi, offre sicuramente la possibilità 
di implementare diverse librerie (cosa che è successa).
:: Qui si introduce un altro discorso, che a me preme molto: vi è mai
:: capitato che un vostro superiore valutasse il vostro lavoro in misura
:: proporzionale al tempo che avete impiegato a produrlo?
: No, perche' non e' questo il modo in cui si valuta un progetto.
: Prima si stabilisce il tempo da impiegare nel realizzarlo e poi lo si
: valuta.
Quindi, fammi capire: un progetto che ha bisogno di 3 programmatori per 10 
giorni costa di meno o di più di un progetto che ha bisogno di 2 
programmatori per 3 giorni?
Fed.

 libero di scegliertene una qualsiasi e risolvere il problema.
Mostramente una e mostrami il codice che la utilizza.
E ricordati che ogni giorno che passa è un giorno di più che devi
pagare a chi fa il programma.
--
Gerolamo

 Discutibile che sia il C sia il linguaggio con più librerie.
difficile a dirsi, pero` potrebbe anche essere.
Maurizio

 Molte cose. Poi c'è la libreria del C++, che direi è molto fornita.
Indubbiamente, pero` ad esempio non puoi gestire ne` thread ne` socket.
Maurizio

 portabile l'interprete (oddio, mi sono intorcigliato con le parole!).
Ovviamente questa affermazione non sta ne in cielo ne in terra nel
momento in cui per C/C++ serve un compilatore.
E' possibile scrivere un interprete per qualsiasi piattaforma
esattamente come è possibile scrivere un compilatore.
In ogni caso non penso sia il caso di disquisire su questo aspetto: è
decisamente ovvio, un esempio può esere Java.
Non è un caso infatti che i programmatori Java siano *molto* più
richiesti dei programmatori C++ (non contiamo nemmeno il C) nonostante
le performance di un linguaggio p-code rispetto a uno compilato.
Saluti,
-- 
         (__)	      | Nicholas Wieland	    |    -     ------------
	 (oo)	      | 
nicholas...@yahoo.it
   |    -    | There's no |
   /------\/ 	      | Debian GNU/Linux / Mac OS X |    -    | place like |
  / |    ||  	       -----------------------------     -    | *GNOME(2)* |
 *  /\---/\           ...."Have you mooed today?"....    -     ------------

 programmatori per 3 giorni?
Ma di cosa stai parlando ?


:: Puoi discutere quanto ti pare, ma rimane il fatto che l'affermazione è
:: probabilmente corretta.
: Rimaniamo entrambi nell'ambito del probabilmente...
Con la piccola differenza che la mia affermazione è più facilmente 
dimostrabile.
: "Devi" fornirmi un programma che fa il grab della homepage di
: 
www.google.com
 e lo mette in un file scrivendolo in C.
: Come non mi interessa.
Come dice azimuth, GIYF: 
 
http://www.physionet.org/physiotools/utilities/wget/
: Bene, ci credo. Mostramelo.
Fatto.
: Per il sorgente del wget mi indichi una versione per windows
: e una per linux (e magari una per Mac, per Solaris, e BeOS)
Ci sono entrambe, e comunque il sorgente C è portabile tramite il gcc.
: Ah... e tu sei in grado di fare qualunque cosa con le librerie
: standard del C?
Sì, perchè?
: Aprire una finestra in Windows (o in un X a tua scelta)?
Cose Windows? Cos'è X?
: Scrivere programmi multithread?
Cos'è un thread?
: Aprire una connessione telnet?
Cos'è una connessione?
Cos'è telnet?
: Il tutto con lo stesso codice a prescindere dall'HW e dal SO?
Qual è l'HW?
Qual è il SO?
Nota: ti faccio tutte queste domande per farti capire semplicemente una 
cosa... che le tue domande sono senza senso che non le "contestualizzi", 
ma se le contestualizzi (cioè le colleghi ad un fatto reale, ad un 
ambiente, ad un applicazione, un progetto o foss'anche un prodotto) non 
hanno semplicemente senso.
:: L'osservazione sulla portabilità cade nel momento in cui non hai
:: bisogno di un interprete ma generi un codice eseguibile direttamente
: Non credo che ci intendiamo sul concetto di portabilità.
: Il codice che scrivi per un processore Hitachi non è
: lo stesso che scrivi per x86.
Non ci crederai, ma io scritto lo stesso sorgente che funziona su apparati 
COMPLETAMENTE diversi, ma senza interprete.
: Mostramente una e mostrami il codice che la utilizza.
GIYF.
: E ricordati che ogni giorno che passa è un giorno di più che devi
: pagare a chi fa il programma.
Io è da un pezzo che non pago nessuno... ;-)
Fed.

:: Dobbiamo postarti tutto il sorgente di wget?
: Forse mi sono perso qualcosa... il codice di wget non credo sia composto 
: da 3 righe come quello che e` stato scritto poco fa in python mi pare.
Neanche quello Python lo č, ovverosia lo č ma č "fittizio": sotto ci sono 
diverse migliaia di righe di codice... quindi, concettualmente, siamo lě.
: Indubbiamente, pero` ad esempio non puoi gestire ne` thread ne` socket.
Cos'č un thread? Cos'č un socket?
Ciao.
Fed.

: No, devi rifarlo in 20 minuti come farei io con Python: del resto con
Ci ho messo un paio di minuti (il tempo di scaricare il sorgente e fare un 
make).
: Non è un caso infatti che i programmatori Java siano *molto* più
: richiesti dei programmatori C++ (non contiamo nemmeno il C) nonostante
: le performance di un linguaggio p-code rispetto a uno compilato.
Hai un concetto di marketing completamente assente.
Fed.

:: Hai un concetto di linguaggio molto ampio... e sicuramente vivi in un 
:: mondo tutto tuo...
: No guarda, un linguaggio si valuta esattamente così.
Un linguaggio si valuta come compromesso tra espressività e performances. 
Al limite, un linguaggio in cui fai
	risolvi_il_mio_problema( );
pur essendo MOLTO espressivo (infatti risolve il tuo problema con una sola 
riga) potrebbe non essere valido, in quanto ci potrebbe mettere sei anni a 
dare un risultato che ti serve in un giorno.
: Non ha mai sviluppato professionalmente perchè non sviluppa nel tuo
: stesso campo ? 
Credo che non abbia mai sviluppato, punto.
: Vediamo: io sto creando insieme alla mia compagnia una infrastruttura
: per una società del nord-italia che deve riuscire a comunicare con
: un'interfaccia web con altre sedi sparse per il mondo (Brasile,
: Inghilterra, Francia, Russia) per coordinarne il lavoro. Parliamo di un
: 5000 utenti ecco. 
: Anche il mio responsabile tecnico quando gli ho proposto Zope + Python 
: si è messo a ridere... dalla gioia.
Ovvio: gli hai proposto la customizzazione di un prodotto. Python non 
entra molto nel merito (infatti, se Zope fosse stato realizzato in C++, 
l'avresti customizzato in C++).
: Prima di dire si trovami un application server della qualità di Zope
: utilizzabile con C++.
Direi che stiamo parlando di applicazioni un po' diverse...
: Quindi C è migliore di C++ ? 
Quale standard? Il C ha gli oggetti?
Non sarà meglio chiedersi "Small Talk è meglio di C++"? (Oddio, ST è 
uscito prima di C with classes?)
:: Ho fatto un censimento per il mio responsabile...
: 
: L'hai fatto molto male: 
Le opinioni sono come le palle...
:: Quindi, fammi capire: un progetto che ha bisogno di 3 programmatori per 
:: 10 giorni costa di meno o di più di un progetto che ha bisogno di 2 
:: programmatori per 3 giorni?
: Ma di cosa stai parlando ?
Rispondi alla domanda o taci.
Fed.

 Cos'č un thread? Cos'č un socket?
No comment.
Non capisco perche` contestualizzare qualcosa che non ha definizioni
ambigue. (hai detto in un altro post che fai queste domande perche`
non sono stati contestualizzate le parole "thread" e "socket")
Adesso scrivimi un programma in C standard che si colleghi ad internet
e scarichi una pagina da google. wget utilizza librerie non standard
(guardati i sorgenti), utilizza molto la compilazione condizionale per
rendere portabile il programma, non e` stato scritto in pochi minuti.
Possibilmente evita la domanda "che cos'e` un programma?" :)
Maurizio

 diverse migliaia di righe di codice... quindi, concettualmente, siamo lě.
Utilizzare gli oggetti senza conoscere i dettagli dell'implementazione
ma solamente l'interfaccia č direi la base dell'OOP, quindi,
concettualmente, non siamo *AFFATTO* li.


 Rispondi alla domanda o taci.
1) Faccio quello che voglio, ti sto rspondendo per puro divertimento
personale.
2) La domanda è talmente stupida che la risposta è quantomeno ovvia.
Tu prendi di più in 2 giorni di lavoro o in 10 ?


 Hai un concetto di marketing completamente assente.
Hai un concetto di quoting completamente assente: ti sei dimenticato il
link alla research che dimostrava la mia affermazione.


 messi assieme) si siano interessati a Python.
E' Darwiniano: ogni linguaggio ha la sua ragione di esistere quando fa 
qualcosa meglio di altri linguaggi e per questo qualcuno lo usa. Dove 
meglio puo' voler dire piu' facilmente, piu' rapidamente, con piu' 
performance, con piu' sicurezza, sul mio OS preferito, che fa guadagnare 
di piu', ecc. a seconda del contesto.
Tutto il resto... sono chiacchiere.
uL

 Io è da un pezzo che non pago nessuno... ;-)
Si, ed evidentemente il tuo tempo vale anche poco.
--
Gerolamo

 Tutto il resto... sono chiacchiere.
non posso che sottoscrivere un pieno!
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

: Allora dimostralo, altrimenti hai dimostrato soltanto di parlare
: a vanvera...
Qui se c'è uno che sta parlando a vanvera sei tu.
: Io ho fornito un programma COMPLETO.
Anche io.
: Lo sai quanti giorni ci stai mettendo???
Non è un problema mio se sei così ignorante da non saper usare gli 
strumenti comunemente a disposizione di un programmatore.
::: Per il sorgente del wget mi indichi una versione per windows
::: e una per linux (e magari una per Mac, per Solaris, e BeOS)
:: Ci sono entrambe, e comunque il sorgente C è portabile tramite il gcc.
: Dimostralo, io l'ho fatto.
Te l'ho dimostrato. Ripeto, non è colpa mia se non sai leggere un README.
:: Nota: ti faccio tutte queste domande per farti capire semplicemente
:: una cosa... che le tue domande sono senza senso che non le
:: "contestualizzi", ma se le contestualizzi (cioè le colleghi ad un
:: fatto reale, ad un ambiente, ad un applicazione, un progetto o
:: foss'anche un prodotto) non hanno semplicemente senso.
: Cosa non ha senso?
Le tue domande.
: Cosa devo contestualizzare?
Le tue domande.
: E perchè?
Perché altrimenti stiamo a scherzare e a cazzeggiare, e non ho il tempo, 
sinceramente.
: Scusami ma non capisco quello che scrivi.
Non è sicuramente un problema mio...
: Parlavamo di poter fare QUALUNQUE cosa con le librerie standard.
Esatto.
: Se sostieni SERIAMENTE di poterlo fare in C, allora sei un lamer
: e chiudiamo la discussione qui.
L'hanno già fatto (FYI tutto è stato fatto usando il C e le librerie 
standard, tranne poi "racchiudere" le funzionalità in altra libreria).
: INCREDIBILE!
: Ho giusto sottomano un processore Hitachi e relativo
: Quanto scommetti che il tuo fantastico sorgente non funziona
: su esso?
Io direi che perderesti (hint: io tutto ciò che mi serve me lo realizzo, e 
me lo "porto" laddove mi serva -- ma se scrivi tutto in C standard i 
problemi sono meno seri di dover avere la potenza necessaria per un 
interprete Python).
: Spero di non aver mai a che fare con un TUO programma,
Più che speranza, la tua, credo sia un peccato. Potresti persino imparare 
qualcosa... perlomeno, potresti leggere qualche mio README che ti spiega 
come si compila un programma in C.
: Finchè non mi mostri un programma COMPLETO e FUNZIONANTE
: per me hai solo parlato per darti arie.
L'URL te l'ho dato, una qualsiasi distribuzione Linux ti fornisce il GCC, 
direi che il problema è solo della tua pigrizia o ignoranza.
: Si, ed evidentemente il tuo tempo vale anche poco.
Il tuo, d'altra parte, non ha mai avuto veramente un valore.
Caro Gerolamo, io credo sinceramente che la rabbia ti stia dando alla 
testa e che la tua ignoranza non ti aiuto. Quindi ti consiglio di 
ripassarti le minime regole di educazione nonchè un buon manuale in C. 
Magari scopri pure come si compila un programma.
Fed.

 Anche io.
Sei un buffone che mente spudoratamente.
La verità è sotto gli occhi di tutti.
Per me la discussione si chiude qui.
--
Gerolamo

 cutted > 
Se non sapevi cosa rispondere potevi almeno evitare di insultare.
Saluti


::: Io ho fornito un programma COMPLETO.
:: Anche io.
: Sei un buffone che mente spudoratamente.
Buffone sarai tu, che non sei in grado di compilare un programma in C e ti 
definisci "programmatore". 
: La verità è sotto gli occhi di tutti.
Appunto.
: Per me la discussione si chiude qui.
Anche per me, per evidente deficienza intellettuale dell'interlocutore.
Fed.

:: pur essendo MOLTO espressivo (infatti risolve il tuo problema con una 
:: sola riga) potrebbe non essere valido, in quanto ci potrebbe mettere 
:: sei anni a dare un risultato che ti serve in un giorno.
: Ok, è il tuo pensiero: il mondo la pensa diversamente.
Credo che non sia una esclusiva della mia filosofia di vita, come affermi.
:: Ovvio: gli hai proposto la customizzazione di un prodotto. Python non 
:: entra molto nel merito (infatti, se Zope fosse stato realizzato in C++, 
:: l'avresti customizzato in C++).
: Ah, ho capito: c'è un'applicazione scritta in Python e che viene
: scriptata in Python MA Python non entra in merito.
Certo. Se fosse stata scritta in Perl, avresti detto che il Perl ti ha 
permesso di essere produttivo. Se fosse stata scritta in X, avresti detto 
che X è molto produttivo.
::: Prima di dire si trovami un application server della qualità di Zope
::: utilizzabile con C++.
:: Direi che stiamo parlando di applicazioni un po' diverse...
: No, C++ è più produttivo, C++ è più veloce, C++ ha più librerie.
: Dov'è un'application server scriptabile in C++ ?
Ripeto: parliamo di scrivere applicazioni e non di customizzare 
applicazioni esistenti.
: L'OOP non è dipendente dal linguaggio, si può programmare in C ad
: oggetti senza problemi. Chiedi su comp.lang.c
Sì, si può, a parte poi dover gestire "a manina" la virtualizzazione, da 
un p.v. teorico si può fare tutto... 
:::: Quindi, fammi capire: un progetto che ha bisogno di 3 programmatori 
:::: per 10 giorni costa di meno o di più di un progetto che ha bisogno 
:::: di 2 programmatori per 3 giorni?
::: Ma di cosa stai parlando ? 
:: Rispondi alla domanda o taci.
: 1) Faccio quello che voglio, 
Ci mancherebbe.
: ti sto rspondendo per puro divertimento personale.
TI assicuro, ci sono divertimenti migliori -- e più creativi.
: 2) La domanda è talmente stupida che la risposta è quantomeno ovvia.
: Tu prendi di più in 2 giorni di lavoro o in 10 ?
Ecco, allora la mia risposta è la seguente: perchè i programmatori 
dovrebbero tendere a impiegare meno tempo a fare le cose se poi guadagnano 
di meno? Io vedo che il Python è percepito come più produttivo perché puoi 
fare le "stesse" cose impiegando meno tempo, ma il capo non lo percepisce, 
perché i programmatori non sono fessi -- e non diranno di averci messo di 
meno. Ovviamente, le "stesse" cose è puramente retorico...
Fed.

 meno. Ovviamente, le "stesse" cose è puramente retorico...
   La decisione dell'ambiente di sviluppo e del conseguente linguaggio 
di programmazione, fortunatamente, non spetta quasi mai ai 
programmatori. Il "prezzo" di un applicativo, lo affermano le leggi del 
mercato, e` quello che il cliente vuole spendere per acquistarlo: se 
esiste uno strumento che consente di ridurre i tempi di produzione, e 
quindi anche i costi di produzione, a parita` di soddisfazione del 
cliente, stai certo che verra` preferito.
-- 
Alla prossima,
Marco

:: Neanche quello Python lo è, ovverosia lo è ma è "fittizio": sotto ci 
:: sono  diverse migliaia di righe di codice... quindi, concettualmente, 
:: siamo lì.
: Non e` fittizzio. La libreria standard si occupa di fare quello che in C
: devi farti a mano.
In C non ti devi fare tutto a mano, ma semplicemente adottare una 
qualsiasi libreria di terze parti. Il fatto che il Python te le dia 
insieme all'ambiente di programmazione è solo una comodità -- non lo vedo 
come una qualità intrinseca del linguaggio.
:: Cos'è un thread? Cos'è un socket?
: No comment.
: Non capisco perche` contestualizzare qualcosa che non ha definizioni
: ambigue. (hai detto in un altro post che fai queste domande perche`
: non sono stati contestualizzate le parole "thread" e "socket")
Perché di solito si usano gli strumenti quando è necessario e non perché 
sono a disposizione. COme ha fatto notare qualcun altro, ad esempio, i 
thread non necessariamente sono la soluzione migliore, allora avere la 
possibilità di crearli che senso ha? D'altra parte, visto che il 
comportamento dei thread è dipendente dall'implementazione, che senso ha 
averli a disposizione quando poi vai ad eseguirli su macchine diverse e ti 
danno risultati diversi? Cos'ha in meno un approccio a compilazione 
condizionale?
: Adesso scrivimi un programma in C standard che si colleghi ad internet
: e scarichi una pagina da google. wget utilizza librerie non standard
: (guardati i sorgenti), utilizza molto la compilazione condizionale per
: rendere portabile il programma, non e` stato scritto in pochi minuti.
: Possibilmente evita la domanda "che cos'e` un programma?" :)
Se vuoi posso postarti il main di wget. Credo che sia il massimo che uno 
debba fare per poterlo utilizzare. Le librerie non standard sono 
disponibili (anzi, ti faccio presente che usando wget acquisisci anche 
diverse librerie molto utili).
Fed.

:: Neanche quello Python lo č, ovverosia lo č ma č "fittizio": sotto ci 
:: sono  diverse migliaia di righe di codice... quindi, concettualmente, 
:: siamo lě.
: Utilizzare gli oggetti senza conoscere i dettagli dell'implementazione
: ma solamente l'interfaccia č direi la base dell'OOP, quindi,
: concettualmente, non siamo *AFFATTO* li.
Senti, spiegami dov'č che devo conoscere i dettagli dell'implementazione 
che fa uso di wget nel seguente spezzone di dichiarazione:
	char * wget( char * _url );
Fed.

 mercato, e` quello che il cliente vuole spendere per acquistarlo: 
Non è proprio così: questo è vero solo se il cliente è pienamente 
informato delle alternative e dei costi delle alternative. Ti dico questo 
perché, per la mia pur modesta esperienza, determinate applicazioni 
vengono acquistate unicamente perché si ignorano alternative più valide ed 
economiche (grazie, appunto, alla intriseca valutazione del costo di 
sviluppo che è legato al numero di giorni uomo impiegati).
Diciamo che il marketing cerca di far vedere al cliente molti giorni di 
lavoro mentre internamente cerca di impiegare meno giorni possibile. 
D'altra parte, non è il marketing che sceglie gli strumenti, da qui 
consegue che il numero di giorni impiegati sarà sempre di molto superiore 
a quelli teoricamente necessari.
: se 
: esiste uno strumento che consente di ridurre i tempi di produzione, e 
: quindi anche i costi di produzione, a parita` di soddisfazione del 
: cliente, stai certo che verra` preferito.
Se esiste effettivamente la possibilità di garantire l'equivalenza 
funzionale (ma ne dubito), allora è chiaro che i tempi di produzione 
possono scendere, ma non converrà né al capo né allo sviluppatore scendere 
più di tanto, per evitare che il marketing, al fine di essere più 
aggressivo, scenda ulteriormente erodendo quelli che sono i guadagni dei 
programmatori.
A questo punto la "convenienza" diventa un fattore relativo.
Ciao.
Fed.

 Ovviamente, le "stesse" cose è puramente retorico...
Mai sentito parlare di un certo Turing ?


 - Federico G. :

Mah, sarebbe utile ad esempio sapere:
Depends: libc6 (>= 2.2.4-4), libssl0.9.6.


 diverse librerie molto utili).
Interessante come concetto di portabilità. Il programma non è veramente
portabile, ma se risolvi tutte le dipendenze anche si.


 funzionale (ma ne dubito),
   Non ho parlato di "equivalenza funzionale" ma di "soddisfazione del 
cliente". Converrai con me che non si tratta di una mera sfumatura ma 
della base del mercato del software in Italia, oggi.
-- 
Alla prossima,
Marco

:    Posto che parlo di aziende nelle quali la programmazione e` affidata 
: a gruppi di lavoro e non al singolo (per il qual caso, forse, il 
: discorso potrebbe riguardare aspetti diverse), di certo il 
: programmatore, che rappresenta--ahilui--il mattone fondante ma con nulla 
: capacita` decisionale del gruppo, e` proprio l'ultimo ad essere 
: interpellato. Anzi, spesso e` chiamato a far parte del gruppo proprio 
: per le sue conoscenze dell'ambiente di sviluppo gia` deciso.
Ok. Allora sostituisci alla parola "programmatore" il gradino più alto 
che, nella tua scala gerarchica, ha capacità decisionale -- ovvero, ha 
possibilità di esprimere pareri sugli ambienti di sviluppo.
:    A mio avviso, i criteri--giusti o sbagliati che siano--che oggi 
; portano alla decisione dell'ambiente di sviluppo sono, non 
: necessariamente nell'ordine:
:    1) La "fortuna" momentanea dell'ambiente (vedasi Java lato server
:       o (ASP & ADO).NET);
Nel nostro caso, credo che se il C prima, il C++ poi, si siano diffusi non 
sia a causa della fortuna momentanea quanto per un principio di diffusione 
(ovvero di adattabilità ad ambienti diversi), che poi è alla base del 
ragionamento Darwiniano esposto in altro thread.
:    2) I costi di acquisizione di tale ambiente (si puo` propendere
:       per Linux+Apache+PHP+PostGreSQL se non e` strettamente
:       necessario W2K+IIS+ASP+SQL Server);
Ovvio. Comunque, nel nostro caso, ci muoviamo in ambienti free.
:    3) L'esistenza di risorse in grado di utilizzare l'ambiente (uno
:       dei problemi, ad oggi, di Python e` la scarsa disponibilita`
:       di programmatori);
Appunto. Senza contare il fatto che i programmatori Python si 
ritroveranno, volenti o nolenti, a fare lavori scarsamente specializzati 
e, quindi, di scarsa remunerazione (vedi customizzazioni varie).
:    4) Questioni legate al target (sistema centrale vuol dire quasi
:       per forza Cobol+CICS+DB2 UDB);
Su questo non mi trovi d'accordo -- ma è una mera opinione.
:    La mia esperienza mi ha ragionevolmente convinto che l'opportunita` 
: tecnica di un'opzione rispetto all'altra non ha valore superiore alle 
: motivazioni sopra elencate.
Ok, ma... riguardando i punti 5 e 6 (sulle "paranoie") può avere comunque 
un peso anche un eventuale punto 7 che preveda la "preferenza" del 
referente tecnico.
::: Il "prezzo" di un applicativo, lo affermano le leggi del 
::: mercato, e` quello che il cliente vuole spendere per acquistarlo: 
:: Non è proprio così: questo è vero solo se il cliente è pienamente 
:: informato delle alternative e dei costi delle alternative. 
:    Il cliente, spesso, ha un budget, e quel budget non puo` essere 
: "sforato". Il processo di formazione del budget e` abbastanza 
Ok. Infatti, di solito, i "fornitori" lo sanno e regolano le loro 
richieste in base al budget del cliente (che, di solito, è ben al di sopra 
delle reali necessità dell'azienda). 
: elementare: il processo X, ad oggi, mi costa C_X all'anno, se riesco ad 
: ammortizzare la spesa di un'automazione di questo processo in un numero 
: congruo N di anni, allora sono disposto a spendere circa N * C_X. 
: L'importante e` che all'anno N + 1 il costo C_X non sussista piu` o sia 
: stato comunque abbattuto al livello che mi ero prefisso.
Ed è proprio quello che fanno... tranne poi scoprire che dopo N + 1 anni è 
necessario cambiare tutto perché si è ammortizato l'investimento...
:: Diciamo che il marketing cerca di far vedere al cliente molti giorni 
:: di lavoro mentre internamente cerca di impiegare meno giorni 
:: possibile. 
:: D'altra parte, non è il marketing che sceglie gli strumenti, da qui 
:: consegue che il numero di giorni impiegati sarà sempre di molto 
:: superiore a quelli teoricamente necessari.
:    Questo e` un ottimo modo (a) per deprimere il profitto di un progetto 
: e (b) di mantenere eccessivamente elevati i prezzi dei prodotti. 
E' anche un ottimo modo per (a) mantenere il profitto di un progetto 
(infatti, i giorni in più sono di solito pagati profumatamente dal cliente 
quali "customizzazioni", "consulenze" & so on) e (b) garantire una rendita 
all'azienda (vedasi le "grosse" aziende).
: Purtroppo, e` un metodo ancora comune a molte aziende, che si risolve in 
: cospicui bagni di sangue nella settimana a ridosso delle consegne con 
: straodinarii non pagati, litigate, minacce ed, infine, spazzatura 
: venduta come oro. Di solito, cerco di evitare di avere a che fare con 
: enti del genere, anche se non sempre e` possibile.
Che poi è proprio l'ambiente dove si inserirebbe il "miglioramento di 
produttività" affermato in altro thread.
:    Non ho parlato di "equivalenza funzionale" ma di "soddisfazione del 
: cliente". Converrai con me che non si tratta di una mera sfumatura ma 
: della base del mercato del software in Italia, oggi.
Il cliente non ci capisce una sega, quindi per definizione è sempre 
soddisfatto (bisogna essere proprio dei pessimi marketing-man per non 
riuscire a soddisfare i desideri dei clienti).
Fed.

:: Certo. Se fosse stata scritta in Perl, avresti detto che il Perl ti ha 
:: permesso di essere produttivo. Se fosse stata scritta in X, avresti 
:: detto che X è molto produttivo.
: MA è scritta in Python. Come avranno scelto il linguaggio ? Gioco della
: bottiglia ?
Che ne so io? Chi ti ha detto che l'abbiano "scelto"?
::: No, C++ è più produttivo, C++ è più veloce, C++ ha più librerie.
::: Dov'è un'application server scriptabile in C++ ?
:: Ripeto: parliamo di scrivere applicazioni e non di customizzare 
:: applicazioni esistenti.
: Vedo che il concetto di 'framework di sviluppo' è completamente assente.
Vedo che il concetto di "applicazione" TI è completamente assente!
: Quindi Photoshop è una 'customizzazione' di Windows ?
No. Però i suoi plug-in sì.
: Google che genere di customizzazione è ?
Google è un motore di ricerca, e Python viene usato unicamente come 
collante tra indicizzatori e crawlers.
:  Amazon ? O più probabilmente non hai la più pallida idea dell'utilizzo 
: di un'application server ? 
Non credo che tu sia molto titolato per dire ciò che so o che non so.
:: Sì, si può, a parte poi dover gestire "a manina" la virtualizzazione, 
:: da un p.v. teorico si può fare tutto... 
: Scusa ma se posso farlo in C ? Perchè uno dovrebbe utilizzare C++ quando
: in C, facendosi le cose "a manina" può prendere di più ? Perchè non
: assembly direttamente ?
Perché ti deve anche andare. :)
:: Ecco, allora la mia risposta è la seguente: perchè i programmatori 
:: dovrebbero tendere a impiegare meno tempo a fare le cose se poi 
:: guadagnano di meno? Io vedo che il Python è percepito come più 
:: produttivo perché puoi fare le "stesse" cose impiegando meno tempo, ma 
:: il capo non lo percepisce, perché i programmatori non sono fessi -- e 
:: non diranno di averci messo di meno. 
: Perchè il programmatore non conta un cazzo ed è il cliente che decide ?
Deciditi: o conta il programmatore o conta il cliente. Se conta il 
programmatore, non userà qualcosa che gli farà guadagnare tempo perché non 
riuscirà a nasconderlo a lungo al cliente; se conta il cliente, idem, 
perché altrimenti il cliente gli darà ben poco.
:: Ovviamente, le "stesse" cose è puramente retorico...
: Mai sentito parlare di un certo Turing ?
Certo, e tu hai mai sentito parlare di performances, oppure credi che un 
processore con una testina di lettura scrittura su un nastro infinito sia 
il top delle performances?
Fed.

 il top delle performances?
C'entra qualcosa con il fatto che si possano fare le stesse cose ?


 e, quindi, di scarsa remunerazione (vedi customizzazioni varie).
BOOM !
Più passa il tempo più credo che tu non abbia la piu pallida idea di
cosa stai parlando.
L'utilizzo di un linguaggio come Python spesso e volentieri è
accompagnato da un linguaggio di più basso livello, come il C. Il
confronto casomai è C vs C + Python. E' sufficientemente chiaro questo
punto o bisogna ripeterlo ancora ?


:: Che ne so io? Chi ti ha detto che l'abbiano "scelto"?
: Capisco. Il signor Python è venuto dalla savana e ha obbligato la Zope
: inc. a basare il loro business su Python (e a farci una barca di soldi)
No, penso invece che alla Zope non ci fossero, all'epoca, molto personale 
specializzato (sai, il personale specializzato SI PAGA PRIMA, non dopo) e 
che, dovendo essere una start-up in un mercato difficilino non poco, per 
giunta sviluppando qualcosa di Open Source... insomma, tutte queste cose 
non ti fanno venir voglia di prendere programmatori specializzati. Quindi 
è normale scegliere un linguaggio POCO specializzato... il che non 
significa, necessariamente, che la loro scelta sarebbe stata quella se vi 
fosse stato il PHP, all'epoca.
 
::: Vedo che il concetto di 'framework di sviluppo' è completamente 
::: assente.
:: Vedo che il concetto di "applicazione" TI è completamente assente!
: Esponilo, ti prego.
Applicazione è qualsiasi cosa non sia specializzazione di una applicazione 
già esistente.
::: Quindi Photoshop è una 'customizzazione' di Windows ? 
:: No. Però i suoi plug-in sì.
: Ah ? Photoshop utilizza la piattaforma Windows per girare quindi è una
: customizzazione di Windows.
Peccato che non sia una SPECIALIZZAZIONE di Windows. XP è una 
"customizzazione" di Windows 2000. Ti torna adesso?
::: Google che genere di customizzazione è ?
:: 
:: Google è un motore di ricerca, e Python viene usato unicamente come 
:: collante tra indicizzatori e crawlers.
: Perchè non l'hanno fatto in C++ ?
Non lo so (mancanza di persone? tempo? "tanto l'hardware costa poco"?)
: Se parli di customizzazioni significa solo che non conosci l'utilizzo di
: un'application server (nota bene: **** |||| APPLICATION |||| ****
: server). 
Se parlo di customizzazioni è perché sono tali.
:: Perché ti deve anche andare. :)
: C funziona da dio.
"andare" = "aver voglia di".
:: Deciditi: o conta il programmatore o conta il cliente. Se conta il 
:: programmatore, non userà qualcosa che gli farà guadagnare tempo perché 
:: non riuscirà a nasconderlo a lungo al cliente; 
: Questo modo di lavorare disonesto francamente non mi appartiene.
Me lo auguro. Comunque, questo non significa che sia diffuso -- e non 
significa che il Python aiuti a NON averlo.
: Io non mi devo decidere, sei tu che affermi che è meglio impiegarci di
: più per spremere a fondo il poveraccio che si fa fregare.
Quello che ti dico è molto più banale: se aumenti la produttività 
dovresti, teoricamente, aumentare il numero di clienti che puoi tenere 
dietro. Peccato però che all'aumentare dei clienti aumentano le richieste 
di customizzazione che potrebbero non essere gestibili con un linguaggio 
di così alto livello come il Python -- a meno che non usi altri linguaggi. 
Non appena però usi l'approccio misto, comincerai a notare un decremento 
del numero di clienti gestibili, quindi minori entrate. Ora: come 
mantenere lo stesso flusso di (vile) denaro? Semplice: NON aumenti il 
numero di clienti supportabili, bensì aumenti i soldi che chiedi ad ognuno 
di essi -- facendo, tra l'altro, passare il tuo lavoro per "altamente 
specializzato".
: Un prodotto viene venduto per quello che è il suo effettivo prezzo, non 
: si spreme il cliente. Il guadagno si ha nel momento in cui torna, o in 
: cui si vendono servizi aggiuntivi. 
Il suo effettivo prezzo dovrebbe essere dettato dal raggiungimento di un 
equilibrio tra domanda ed offerta. Siccome l'offerta è scarsa (pochi che 
possono realizzare ciò che il cliente chiede) e la domanda difficilmente 
inseribile in un'ottica di produzione di scala, le regole che tu invochi 
non si possono utilizzare.
:: processore con una testina di lettura scrittura su un nastro infinito
:: sia il top delle performances? 
: C'entra qualcosa con il fatto che si possano fare le stesse cose ?
Fossero tutti come te, useremmo ancora il pallottoliere.
Fed.

 Fossero tutti come te, useremmo ancora il pallottoliere.
Fossero tutti come te useremmo ancora il C.
In ogni caso, dato che vuoi avere ragione a tutti i costi, te la do
volentieri. Un conto è parlare con qualcuno che guarda obbiettivamente ai
*fatti*, un'altro è parlare con qualcuno che si arrampica sugli specchi
pur di avvalorare una tesi rifiutata dal resto del mondo.
Addio,


 diverse librerie molto utili).
Io chiuderei il thread qui.
Sono totalmente contrario alle tue idee ed immagino che anche tu lo sia
alle mie, pertanto e` inutile continuare. In pratica e` inutile
fare discussioni con te: io non imparo niente da quello che dici, te
altrettando da quello che dico. (non e` cattiveria, perche` con tale
affermazione dico che anche io, evidentemente, non riesco a dare niente
al prossimo)
Solo una cosa volevo chiederti: ti e` mai capitato una volta in tutta
la tua vita di capire di avere sbagliato?
Solo una curiosita`, perche` in questo ng mi pare che tu vada contro
praticamente le idee di TUTTI (esclusa una persona sola :) ) e mai che
tu abbia chiuso una discussione rassegnandoti e dando ragione ad un
altro.
Ciao,
Maurizio

punto o bisogna ripeterlo ancora ?
io direi di chiudere sta storia linguaggio X vs Y basata su questi
termini dato che non porterà mai a nulla. A questo proposito faccio
copia-incolla di un messaggio postato su comp.lang.python che a mio
parere è significativo.
------------------------
I came to python from a strong perl background.  And heard a lot of
comparisons of the languages from people of all backgrounds before I
ever tried python.  I even defended perl in the whole "python is
prettier" debate.  (I never did have a problem with the indentation
thing, though).
Then I finally started playing with python, and have never looked
back.  Well, I have looked back enough to port some of my old tools to
python :)
Anyway, the biggest lesson that I have learned is that I now
COMPLETELY ignore comparisons of two languages unless they come from
people who have used BOTH languages EXTENSIVELY.  I say this primarily
because I was incapable of saying anything useful (although I didn't
realize it at the time) until I knew both.
					-Michael
-- 
  Michael Stenner                       Office Phone: 
919-660-2513
  Duke University, Dept. of Physics       
mste...@phy.duke.edu
  Box 90305, Durham N.C. 27708-0305
-----------------------------
Spero che l'autore non me ne voglia ma non credo che sia un problema.
Giudicate voi, il suo mi sembra lo spirito giusto per intavolare
discorsi
--
Rhymes (
rhymes_...@myself.com
)
http://www26.brinkster.com/rhymes
http://bw-crema.blogspot.com

specializzato 
LOL! Ma hai una minima idea di che cosa siano Zope e il PythonLabs e
di chi sia Guido Van Rossum? no di certo, quindi evita :)


 di implementare diverse librerie (cosa che è successa).
Ti ho gia' spiegato che per moltissimi altri linguaggi vale la stessa cosa.
--------------------------------
Inviato via 
http://usenet.libero.it

 Le opinioni sono come le palle...
Le tue gli assomigliano molto ;)


 specializzato
AH AH AH AH AH AH...


 Non lo so
Questa è l'unica cosa sensata del tuo post.
--
Gerolamo

 char * wget( char * _url );
Scusa, ma visto che sono ignorante (e lo ammetto preventivamente)
mi indicheresti il file e la riga in cui trovi la funzione
char * wget( char * _url );
nei sorgenti che puoi scaricare al link che tu stesso hai indicato in
questo thread?
Io lo ammetto di non conoscere la wget, ma una veloce occhiata
ai sorgenti non me l'ha fatta trovare.
-- 
Gerolamo

 riuscire a soddisfare i desideri dei clienti).
   Non e` poi cosi` facile...
-- 
Alla prossima,
Marco

 e, quindi, di scarsa remunerazione (vedi customizzazioni varie).
Ma per favore !
Rileggi, sul sito Python chi sono gli utenti di questo linguaggio e poi ne
riparliamo. Ah certo, date le idiozie che spari, anche un lavoro per la
NASA,
per te, potrebbe essere scarsamente remunerativo.
