Newsgroup: it.comp.lang.c
Titolo: inizio col C

 chiedevo se tanto valeva partire direttamente con quello...
Non esiste "UNA" risposta alla tua domanda....
Io posso esprimere il mio parere che con grande probabilita' altri
potrebbero non condividere.
Per prima cosa volgio dirti che nonostante il C non sia un linguaggio
"pulito" come altri, non credo possa portare a chissa' quali brutte
abitudini, specialmente se lo impari su di un buon libro.
Io iniziai a programmare quando avevo 8 anni in basic su di un computer
Apple. Successivamente ho incominciato ad usare il GwBasic su di un 286, e
poi il Quick Basic su di un 386. Poco dopo iniziai con il Visual Basic per
DOS e una delle prime versioni di quello per windows.
Con il mio primo 486 iniziai a studiare il C. In tutta franchezza non ha
fatto altro che tolgiermi tutte le mie brutte abitutidini!
Il visual basic di oggni (specialmente il .NET) e' molto differente dal
GWBasic di una votla..... quello si che portava ad usare brutte abitudini!
Il morale di questa storia e' che nel mio caso specifico ha corretto le mie
cattive abitudini di programmazione.
Secondo me vale la pena di partire direttamente con quello e ti diro' di
piu'! Se il tuo obbiettivo e' il C++ parti pure direttamente con quello!
Se decidi di partire con il C, molto su questo NG consigliano "C Corso
completo di programmazione" di Deitel & Deitel.
Io personalmente non lo ho mai letto, sfogliato un paio di volte, ma pare
essere un buon corso.
Tommy

piccolo shell-scripts), puo' partire dal C o si fa solo del male? 
Il C non e` affatto adatto per chi inizia a programmare.  
In questi casi e` molto meglio partire da un linguaggio dalla
sintassi/semantica meno criptica.  Generalmente, il C e` un linguaggio
di "approdo", non di partenza.  Esistono linguaggi che hanno curve di
apprendimento molto piu` rapide; il Pascal, per esempio, o ancora
meglio Python, ti consentono di imparare a programmare in tempi brevi.
Facendo un po` di esperienza con questi linguaggi, il passaggio al C
(se mai ti servira`) sara` molto meno difficoltoso.
-- 
Andrea Laforgia
#exclude <windows.h>

Non sono per nulla d'accordo.
Il C incarna un paradigma di programmazione assai datato e consolidato,
ovvero quello procedurale.
Non solo il paradigma procedurale è semplice e di facile comprensione per
chi si avvicina alla programmazione, ma il C stesso presenta costrutti
elementari - bisogna solo capire come funzionano i moderni calcolatori, e la
strada è spianata: puntatori a variabili, puntatori a funzioni, array...
tutto diventa chiaro!
Devi solo avere cura di prendere un buon manuale C, e non ti farai alcun
male!
(se puoi, ti consiglio il K&R)
Certo, una cosa è il linguaggio, e una cosa è la realizzazione di un
programma che faccia ad esempio uso delle API (librerie di funzioni) di
Windows per creare, diciamo, una interfaccia utente. Beh, in questo caso,
devi conoscere, oltre alle librerie a corredo del C, anche cosa ti offre
Windows come interfaccia di programmazione. Ma c'è un sacco di materiale in
rete, e imparare tutto è solo una questione di tempo, non di diffcoltà
tecnica.
Non prestare retta a tutti coloro che ti dicono che il C è un linguaggio
dalla sintassi criptica. La sintassi criptica è propria di chi usa il
linguaggio, non del linguaggio in sè. Programmare con sintassi criptica, a
dispetto della leggbilità del codice (che dovrebbe essere uno dei valori
fondamentali da rispettare quando si programma) non vuol dire essere fighi o
essere dei guru del linguaggio; nella maggioranza dei casi significa non
avere la padronanza dei costrutti per inferire linearità e chiarezza alle
proprie espressioni.
Comunque, per te che vieni dal mondo dele shell e degli script, non dovrebbe
poi essere così criptica la sintassi C!
Buon divertimento,
Andrea
"Andrea Laforgia" <x@x.x> wrote in message
news:34hl2v4jlfpindo0c...@4ax.com...


linguaggio, non del linguaggio in sč. 
Punti di vista: se il programmatore arriva a scrivere codice dalla
sintassi criptica e` in buona parte dovuto al fatto che il linguaggio
glielo permette.


 meglio Python, ti consentono di imparare a programmare in tempi brevi.
Infatti....il pascal lo utilizzavano tempo fa nei licei....il passaggio al C
è poi immediato.
Il Pascal oltretutto è pure completo perchè ha i puntatori.
--
Ringhio

 piccolo shell-scripts), puo' partire dal C o si fa solo del male?


 oggi come oggi e' indispensabile.
mi permetto di esprimere il mio disaccordo..
Non e' affatto vero che un ottimo coder C sia automaticamente un buon coder
C++.
L'uso della stl dei template e blahblah in C++ e' fondamentale, di solito
chi scrive
in C è invece piu' portato ad un approcio di 'basso livello'
( concedetemi le licenze, sto scrivendo in fretta)
per fare un esempio stupido..
quello che in C puo' essere una buona abitudine:
void* Malloc(size_t size)
{
  void* result;
  result=malloc(size);
  if (result==NULL)
 {
   fprintf(stderr,"No memory to alloc\r\n");
   exit(EXIT_FAILURE);
 }
 return result;
}
....
int* int_arr=Malloc(100*sizeof(int));
...
in C++ sarebbe un pessimo esempio di stile, che tuttavia molti dei
programmatori
che vengono dal C sono portati ad usare.
L'uso delle eccezioni, della stl, dei pattern, dei template, sono parti
fondamentali
del linguaggio, e quindi..
D'altro canto mi sento di smentire anche la tua altra tesi, secondo la quale
oggi sia
fondamentale la conoscenza di linguaggi ad oggetti.
In fondo dipende dal target. Se devi scrivere un kernel di un so, un driver
o
una applicazione di piccole dimensioni di sicuro non ha molta importanza
l'uso di un linguaggio ad oggetti.
Questo giusto per rimarcare, per l'ennesima volta, che C e C++ per quanto
possano sembrare simili siano due linguaggi ben diversi, in cui ottimi stili
dell'
uno possano diventare pessimi per l'atro.
In sostanza il mio consiglio e': cominciate con il linguaggio che vi serve,
e'
inutile imparare il C per poter poi passare al C++; sono linguaggi
profondamente
diversi e con approci molto diversi per la soluzione di un problema.
Giusto la mia monetina, non e' legge quello che dico, solo un opinione.
char*mushroom(){char*o=".,xX*";char*B;double b,c=0,d=0,x,y=-1.25;int
m=0,v=0,z=0
;int*_;char*I=(char*)calloc(1,0xf3c1);_=(int*)I;for(;z<60;y+=1./24,v=0,x=-2,
z++,
*((char*)_)++=10)for(;v<79;*_++=0x3b315b1b,*_++=((0x006d0033|(((m/20%6)[o])<
<24)
)|(((m/20%6)+49)<<8)),*_++=0x30305b1b,*((char*)_)++=0155,x+=3.25/79,v++,c=0,
d=0,
m=0)for(b=c,c=c*c-d*d+x,d=2*b*d+y,m++;c*c+d*d<4&&m<96;b=c,c=c*c-d*d+x,d=2*b*
d+y,
m++);return I;}int main(void){ write(1,mushroom(),0xf3c1);} /* Sbirish */

 Giusto la mia monetina, non e' legge quello che dico, solo un opinione.
Sisi', chiaro^^;
Nemmeno quello che dico io e' legge - d'altro canto, in sei anni che lavoro
per ditte importanti (Tim, Blu, Omnitel, Mediaset, per citarne alcuni), mi
sento di poter dire la mia^^

sento di poter dire la mia^^
Blu non era fallita ? ;-)


 #exclude <windows.h>

 glielo permette.
Stai forse dicendo che un programmatore si fa "guidare" da un linguaggio.
Strano, perché a dare esprissività, eleganza e concisione al proprio design
è opera e compito dell'ingegno del programmatore, non del linguaggio.
Evidentemente non sei aduso a tali concetti.

 ancora, per volti versi, inscindibili.
Inscindibili? ahahaha.....
Tutto è diverso, dalla scomposizione analitica del problema per mapparne una
soluzione, alla separazione delle responsabilità nelle classi di dettaglio.
Inscindibili? ahahaha ;-)
Bella questa, complimenti davvero! Hai capito tutto dell'object oriented!

 Evidentemente non sei aduso a tali concetti.
Non bisticciate.
Per quanto riguarda il thread, anch'io consiglierei Python, perchè e'
semplice e potente, nonché object-oriented.
Il C mi piace un sacco, e comunque non lo sconsiglio come base: io ho
iniziato con C ed ho imparato poi java e Python: la conoscenza di C mi ha
aiutato moltissimo in questo, penso più che facendo un percorso contrario,
che mi avrebbe "abituato troppo bene", nel senso che avrei trovato forse
troppo intricato C.
Cmq, ribadisco l'asserzione iniziale: trovo che Python sia un linguaggio
stupendo, adatto in moltissimi casi e dalla sintassi limpida. Lo consiglio
come prima scelta di linguaggio di programmazione.
Per Andrea G., anch'io parto dal presupposto, come sicuramente fa anche
Andrea L., che si parli con persone intelligenti: pero' effettivamente e'
piu' semplice imparare Python che C. Anche una persona intelligente puo'
scegliere di percorrere una via piu' semplice rispetto a un'altra.
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

Evidentemente non sei aduso a tali concetti.
Ribadisco, leggi i miei messaggi dal '96 ad oggi su questo gruppo e su
comp.lang.c e poi discutiamo di quali concetti sono "aduso" ;-)


Inscindibili? ahahaha.....
Si`, inscindibili, per quanto la cosa ti faccia scompisciare (sorvolo
sulle stupidaggini seguenti nel tuo messaggio, a cui sei "aduso", per
altro).  Tutti sanno che il C++ e` un linguaggio multiparadigma.  
I due paradigmi (procedurale e object-oriented) sono fusi e sfruttati
insieme, nella maggior parte delle applicazioni.  Stessa cosa vale per
altri linguaggi, come Delphi (per esempio) o Python.  


Vuoi parliare seriamente con me?
Bene, lasciando da parte i finti insulti che ci siamo provocatoriamente
scambiati, discutiamo pure dell'argomento. Penso che una discussione su
questi temi porterà vantaggio a tutti i subscribers di questo newsgroup.
Se ti va, comincia tu. Definisci cosa sono per te il "paradigma procedurale"
e il "pargadigma OO".
Se ritieni, mettiamo su un nuovo posto, invece di rispondere su questo
"iniziocol C", altrimenti non ci leggerà più nessuno.
Andrea
"Andrea Laforgia" <x@x.x> wrote in message
news:rq1q2vkj1dkr6scbg...@4ax.com...


Vuoi parliare seriamente con me?
Francamente, a me non interessa parlare con te, io conosco benissimo
gli argomenti di cui parlo.  A me interessa, qui dentro, parlare di C.
