Newsgroup: it.comp.lang.c
Titolo: passo da perl a C ma...

Ciao a tutti, sono un biologo che si occupa di programmazione. Nel mio
campo il perl e' privilegiato soprattutto per la facilita' e la gestione
delle stringhe.
Di recente pero' mi trovo ad affrontare problemi piu'"matematici" e
computazionalmente complessi, per cui mi e' stato vivamente consigliato
di passare a linguaggi compilati efficienti, mi han consigliato di
imparare il C.
Ho un po' di materiale su cui documentarmi ma prima di buttarmi in una
full immersion volevo sapere se e' possibile (e magari come si fa a)
fare gli hash, i dizionari, oppure se ci sono strutture piu' utili
implementabili in C.
grazie
davide

 grazie
Prego
Dan

 di passare a linguaggi compilati efficienti,
A proposito, non so che tipo di matematica tratti nei tuoi problemi, ma 
ritengo che il linguaggio "principe" per computazione avanzata sia il 
Fortran (puoi guardare ad esempio il newsgroup comp.lang.fortran).
Dan

 
Mmm, si, pero' magari e' un'occasione per imparare un linguaggio che
comunque e' potente e versatile (si sa mai nel futuro...) :)
d

 imparare il C.
Anche io ti consiglio di imparare il C++.
Ti consiglierei il C solo se tu lo dovessi fare come lavoro (programmatore),
ma visto che non lo sei "totalmente", il C++ ti risolve molti problemi che 
in
C dovresti affrontare completamente.
ovviamente il tutto è IHMO 

 dizionari, etc.) ti consiglierei il C++ piuttosto che il C...
E anche la gestione delle stringhe, con la libreria standard di C++, è
molto più vicina a ciò che si potrebbe aspettare chi viene da linguaggi di
"alto livello" come Perl o VB.
Esempi:
   /* Copia di stringhe */
   s1 = s2;                     // C++
   strncpy(s1, s2, sizeof(s1)); // C
   /* Concatenazione di stringhe */
   s1 += s2;                    // C++
   strncat(s1, s2, sizeof(s1)); // C
   /* Confronto di stringhe */
   if (s1 >= s2) ...            // C++
   if (strcpy(s1, s2) >= 0) ... // C
Ovvio che il C++ è più complesso (come dice il nome, il C++ ha tutto ciò
che ha il C "più più" qualcosa), ma ti dà anche bell'e pronte cose che con
il C dovresti costruire da zero.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 comunque e' potente e versatile (si sa mai nel futuro...) :)
Certo col Fortran non ci scrivi sistemi operativi :)
E' chiaro che il mio discorso era focalizzato ad applicazioni numeriche; 
se l'obiettivo e' quello di imparare un linguaggio molto "spendibile" in 
vari campi, molto versatile, beh, non c'e' dubbio che il C sia un'ottima 
opzione!
Dan

 Fortran (puoi guardare ad esempio il newsgroup comp.lang.fortran).
Si, perche' ha un "libreria" enorme, efficiente e ben testata, ma come
linguaggio fa schifo e sconsiglio a chiunque di impararlo. Spero sparisca al
piu' presto. E comunque questo e' il suo destino. Inoltre il C/C++ lo puo'
utilizzare per tante altre cose.
Tommy

 utilizzare per tante altre cose.
Certo C++ e' piu' versatile del Fortran (con C++ puoi fare videogame, 
applicazioni embedded, etc. ...), ma questo l'ho ribadito anche in un 
altro post; il punto iniziale, pero', era la computazione matematica! 
:-)
Dan

 piu' presto. E comunque questo e' il suo destino. 
Credo tu abbia una visione un po' ristretta del calcolo
scientifico e del fortran o forse sei rimasto
al vecchio fortran fatto solo di goto.
Il moderno fortran e' fortemente strutturato ed e' particolarmente
adatto a computazioni vettoriali e parallele.
E' ancora usatissimo per computazioni intensive, tipo fluidodinamica,
simulazioni varie etc.
Il fatto che sia piu' semplice del C ha fatto si che
fosse piu' semplice scrivere compilatori che ottimizzavano
molto il codice.
Non credo proprio che sparira' tanto presto...
ciao,
e.

 imparare il C.
Ciao Davide, io ho fatto il percorso inverso: dal c sono passato al perl,
ovvero sono rimasto terra terra in entrambi.
Ho pero' avuto il piacere di compilare un interprete perl a partire dai
sorgenti che come sai sono in c e sono arrivato alla conclusione che se
sapessi il c come Larry Wall e compagni allora darei ragione a chi ti ha
consigliato.
Un programma compilato in c e' sicuramente piu' piccolo e occupa meno
risorse di un interprete perl che esegue uno script ma l'efficienza dipende
esclusivamente dall'algoritmo utilizzato.
Se l'algoritmo e' banale un principiante comunque produce codice efficiente
ma la complessita' dell'algoritmo richiede una padronanza avanzata del
linguaggio.
Il perl per esempio gestisce gli hashes ma questi si possono anche
implementare ad esempio in c ma non e' affatto semplicissimo se non hai
digerito fino in fondo i puntatori e in ogni caso il rapporto in termini di
linee i codice da scrivere e' almeno da 1 a 10.
Poiche' mi sono iscritto or ora a questo ng pernon perdere l'abitudine a
questo linguaggio che mi piace, se ne hai voglia raccontaci per sommi capi
il tipo di problematica e vediamo.
                        Donato


secondo me quello che ti serve č python. offre i dizionari, le liste 
classiche e le tuple, ha un'eccezionale gestione delle stringhe (il c 
non ha nemmeno il tipo stringa) č un bytecode molto efficiente, quindi 
anche se non č compilato le prestazioni sono comunque ottime
-- 
"Non ci sono uomini come me.
Ci sono io e basta."
1 inviti gmail disponibili
robiweb90 at gmail dot com

 anche se non è compilato le prestazioni sono comunque ottime
...Credo che un codice C++ o Fortran, ben scritto e compilato non sia 
paragonabile in quanto a prestazioni a un codice Python interpretato... 
(ovviamente cio' non toglie niente all'"eleganza" di Python, come 
linguaggio).
Dan


...Insomma, se vuoi fare il "salto di qualita'" da Perl, ti consiglio 
vivamente di passare direttamente ad un linguaggio come C/C++, oppure 
Fortran se sei proprio fortemente interessato ad applicazioni numeriche 
spinte.
Ciao, e buono studio
Dan

                         Donato
Io ho una conoscenza di base del c e vorrei imparare python, che mi 
sembra molto valdi ocome linguaggio.Siccome perl e python hanno molte 
cose in comune, hai trovato difficoltà???Com'è stato imparare la 
programmazione ad oggetti??
Zarathustra
(18/22 PO 80 B/S; S)
Parkpre, LeeCougan and Eleven munito

 
ormai siamo OT, ma comunque ...
python imho è il miglior linguaggio interpretato esistente oggi, e 
imparare la programmazione a oggetti con questo linguaggio è 
facilissimo. a questo proposito ti consiglio il testo how to think like 
a computer scientist tradotto in italiano a gratuito.
python ha comunque una sintassi migliore del perl, e permette di fare 
cose in una sola riga che in un altro linguaggio ne occuperebbero una 
quindicina. l'unico neo è che in alcuni campi (vedi il post sotto) può 
risultare un po' lento perchè appunto è interpretato e non compilato.
il fatto di avere un interprete, però, ti permette anche di testare 
velocemente delle funzionalità, invece dello scrivi & compila del C
-- 
"Non ci sono uomini come me.
Ci sono io e basta."


 quindicina. l'unico neo è che in alcuni campi (vedi il post sotto) può 
non conosco python ma non credo che possa esistere un linguaggio con
sintassi migliore del perl.. scrivere script in perl è come parlare con il
computer, puoi non saperne una mazza di programmazione che ti capisce
comunque! è poi ogni cosa può essere fatta in cento modi diversi, con
diversi livelli di conoscenza.. con una riga se sei bravo, 15 o più se non
lo sei.. tuttavia ogni linguaggio ha il suo target, quindi non vedo perchè
paragonare due linguaggi diversi! il perl è adatto a scripting e gestione
avanzata e potente delle stringhe, regexp e quant'altro, certo ci puoi
anche fare i giochi con sdl (frozen-bubble docet) o applicazioni in gtk ma
si sente il peso di un linguaggio interpretato che probabilmente con il
python si sente meno! se serve interazione a basso livello con l'hw è
meglio il c [1], se serve matematica è meglio il fortran.. se non te ne frega
niente della velocità usi java.. e così via! le guerre di religione sui
linguaggi sono prive di senso, ogni linguaggio serve al suo scopo è perde
colpi se usato in campi che non gli appartengono.
[1]
il c è un'eccezione: va bene per qualsiasi cosa tu voglia fare, è un
linguaggio poliedrico che secondo dovrebbe essere bagaglio di chiunque si
occupi di programmazione..
-- 
[Filippo...........................]
[Linux User #342745................]
        ==[...penguin powered...]==

 il c è un'eccezione: [versatilita']
Ottimo post! :-)

 Ottimo post! :-)
grazie :) sono lusingato!!


 
non voglio fare nessuna guerra di religione, stavo soltando esprimendo 
una mia opinione sul fatto che python sia meglio sotto il punto di vista 
della sintassi rispetto a perl e sia utilizzabile nei campi più 
svariati. e poi, scusami, come fai a fare un confronto tra i due 
linguaggi se python non lo conosci? anch'io quando ho iniziato credevo 
che vb fosse il linguaggio migliore, ma solo perchè non ne conoscevo 
altri :-)



scusa se ti sono apparso polemico :) non volevo per niente..
non conosco python (anche se qualche riga di codice l'ho vista) però ho
detto che non credo possa esistere una "sintassi" migliore del perl in
quanto a elasticità e flessibilità, non escludo che python possa essere
migliore sotto vari aspetti che gli competono di più ma la sintassi del
perl (non voglio entrare in merito ad altri aspetti) non sono seconde a
nessun linguaggio: non è per niente rigido! puoi fare le stesse cose in
100 modi diversi e così via.. 
poi che python sia utilizzabile in campi più svariati non avevo dubbi e
nel mio post tentavo di far emergere proprio questo: il perl è potente se
usato nel suo campo (riduttivamente,soprattutto per manipolazione
stringhe) e il python emergerà in campi a lui propri.. ma restando 
sul piano della sintassi continuo a pensare che nessun linguaggio mi ha
colpito quanto il perl per la sua semplicità e "maneggevolezza" e non
credo che il python possa farlo..ma probabilmente il python se mai lo
studierò mi colpirà sotto altri aspetti magari più importanti che il
semplice "feeling" con la sintassi!
spero di essere stato più chiaro e di averti fatto capire che non ti stavo
criticando ma semplicemente ho colto il tuo post per esprimere la mia
opinione sull'argomento!
