Newsgroup: it.comp.programmare
Titolo: C/C++

Ciao, 
io vorrei imparare  uno di questi due linguaggi o tutti e due.
E' consigliato iniziare dal C e poi passare al C++?
Se non vi e' un'ordine di propedeuticita', quale dei due, e' meno
difficile da imparare? 
Perche' in molti manuali di "fondamenti di informatica" e' usato il
C++  per iniziare?
_____________________________
Inviato da 
www.mynewsgate.net

 C++  per iniziare?
premetto che sono uno newbie anch'io, quindi il mio consiglio potrebbe 
essere una grossa ca...volata, ma fossi in te inizierei dal c, perchè 
l'approccio procedurale (più di basso livello) ti aiuterà a capire meglio 
il modo di programmare OOP, e non il contrario. Tieni presente che 
solitamente i compilatori C++ permettono di scrivere codice C perfettamente 
funzionante, e non il contrario; questo ti aiuterà a scegliere di volta in 
volta il modo migliore di sviluppare un progetto.
Ciao

E' consigliato iniziare dal C e poi passare al C++?
No, almeno da parte mia.
Si puň benissimo iniziare direttamente con il C++, magari da subito
con un approccio procedurale (il C++ supporta sia il paradigma
procedurale che quello ad oggetti) e poi si puň passare ad
approfondire la parte object-oriented.
-- 
Andrea Laforgia
#exclude <windows.h>

 C++  per iniziare?
Non lo so, ma ti posso dire quel che ci dissero, piu` o meno, al primo
giorno del corso[1] di Fondamenti di Informatica I[2]
"Fino a qualche anno fa usavamo il Pascal per questi corsi introduttivi,
poi ci siamo aggiornati[3] e usiamo il C++, visto e` il linguaggio piu`
richiesto nel mondo del lavoro."
+++
[1] Corso che NON aveva prerequisiti: destinato anche a chi il PC non sapeva
cosa fosse, in teoria. Infatti le prime due lezioni furono spese in 
un'introduzione lampo a cos'e` un PC e come funziona
[2] Infatti il 75% buono del corso e` stato speso sulla _SINTASSI_ del C++...
[3] Ma nonostante questo, nel corso dell'A/A 2000/2001 -e per quel che mi
risulta, anche in tutti i successivi-, della libreria standard non se ne e`
neppure accennato...
-- 
*** mailserver: 
freemail.it

richiesto nel mondo del lavoro."
...e avete fatto una cazzata, dovevate rispondergli voi.
Le parole "Corso introduttivo" e "C++" non vanno molto d'accordo.
Il fine di questi presunti corsi di programmazione dovrebbe essere
quello di infarinare sulla programmazione, far entrare le persone
nell'ottica di questa disciplina, insegnare loro i cardini, senza
necessariamente scendere in tecnicismi come lo studio della sintassi
del C++.  Invece, alla fine, facendo come fanno, l'unico risultato che
ottengono è quello di aver dato delle nozioni che il giorno dopo lo
studente avrà dimenticato.  E` frequente che nel mondo del lavoro si
inizi tutto d'accapo.


 studente avrà dimenticato.
LOL nel mio corso di programmazione si studia la sintassi del C# :)
-- 
Rhymes
rhy...@NOSPAMmyself.com

Ne C ne C++
Credo che prima sia meglio costruirsi una mentalita' di
programmazione, partendo da cose piu' abbordabili.
Python e' l'iniziazione, anche perche' da subito soddisfazione.
Quando tentai al primo colpo con C......
grandi nervosismi e incazzature all'atto della compilazione!!
Ora che ho fatto un po' di python, vivo lo studio del linguaggio C in
modo meno frustrante. 
Ritengo che il problema non sia C o C++, ma piuttosto che il C non va
bene per cominciare.
Roberto

 bene per cominciare.
Non è vero -- semmai è il pitone (e suoi emuli) che fanno deviare i
programmatori dalla retta via...
Azathot

 programmatori dalla retta via...
E la domanda sorge spontanea (cit):
Qual'e` la retta via?
-- 
ikitt sfiorato da piu` di un dubbio 
*** mailserver: 
freemail.it

programmatori dalla retta via...
Il C e' un linguaggio orrendo per imparare la programmazione, il C++ e' orrendo
perche' e' difficile e questo e' fuori discussione. Il C e' orrendo perche' la
meta' delle sue funzioni sono piu' pericolose che altro, passi tranquillamente
ore a fare debugging e alla fine il tutto non andava perche' invece di una
funzione hai usato l'altra, ed erano ovviamente identiche. Il C++ invece ha una
sintassi "artificiale" rispetto alla sintassi del python. 
Non venirmi a dire che:
for (i=0;i<N;i++)    e' piu' leggibile di:
for i in xrange(N):
    i++
A uno che sa poco di programmazione almeno in python legge e basta, in C++
l'interprete lo devi fare tu e non la VM che hai dietro.
-- 
try: troll = "Brain"
except TypeError, data: 
   troll.plonk()
Co-Responsabile Hardware Information & Technology 
http://hit.edengames.net

programmatori dalla retta via...
Azimuth, ti abbiamo riconosciuto ;-)
Ti sbatto subito nel kill-file ;-)


bene per cominciare.
D'accordo.


 Qual'e` la retta via?
Non la programmazione di certo :)
-- 
Rhymes
rhy...@NOSPAMmyself.com

 l'interprete lo devi fare tu e non la VM che hai dietro.
Avrei dei divertenti aneddoti sulla presunta facilità di lettura del
python. A partire dalla perdita di allineamento dei blocchi fino a
sintassi esoteriche per ottenere qualcosa che sia non dico accettabile ma
perlomeno presentabile ad un possibile cliente.
Ciao.
Azathot

 Qual'e` la retta via?
Realizzare programmi efficienti, affidabili, flessibili, economici. L'ingegneria ti
insegna che puoi scegliere sempre solo due di questi parametri mentre gli
altri due ti vengono imposti dall'ambiente. Se segui la retta via, però,
riesci addirittura a imporre tre di questi parametri -- e qualche volta
anche quattro.
Azathot

 Difficile? Ragazzo, il C++ E' il linguaggio di programmazione.
C'e` chi dice che non esiste LA soluzione, e io nel mio piccolo concordo :)
-- 
Ikitt
*** mailserver: 
freemail.it

 C'e` chi dice che non esiste LA soluzione, e io nel mio piccolo concordo :)
Io invece sono di questa opinione. Non esiste LA soluzione, ma nel senso
di insieme di librerie che risolvano tutto. Esiste LA soluzione, nel senso
di linguaggio: si chiama C++.
ciao!
Azathot

Ho citato Python perche' mi sembrava abbastanza chiara l'esigenza, si
parla di incominciare, il Pitone e' "debosciante" (nel senso di
severita' sintattica e severita' generale del codice) se lo si porta
avanti spiando con un occhio e un po' si senso di inferiorita',
linguaggi piu' tipizzati e potenti, ma se si parla di imparare......
# ci si puo` concentrare subito sullo studio di strutture
# dati e algoritmi, prendendo confidenza con alberi, liste, hash,
#ordinamento e ricerca (ad esempio), cosa che non mi sembra 
# meno  importante.
....Come affermava appunto Ikitt 
Ritengo Python molto utile a questo scopo.
Diciamo che con il C, e' come se tu entrassi a fare il bagno in una
spiaggia della Cornovalia (non si respira tanto e' fredda l'acqua)
senza nemmeno bagnarti un po' i piedi,
AAAAARRRRGHHHHHHHHHHHHHHHHHHH!!!
Con il Python almeno ti abbitui un po'
Roberto

perlomeno presentabile ad un possibile cliente.
Proviamo a non indentare il codice C++, scommetti che troviamo qualcuno che ti
impreca alle spalle? Eliminare le parentesi e' cosa buona e giusta perche' io
trovo molto piu' complesso il controllo delle parentesi aperte e chiuse
piuttosto che l'allineamento dei blocchi di programma. Inoltre, come ho gia'
scritto, il fatto che il C++ non si basi sull'indentazione non significa che
questa non debba essere usata, anzi, e' comunque tra le regole del "buon
programmatore di c++".


 programmatore di c++".
Certo. Infatti, la corretta indentazione è una condizione necessaria per
un buon programma. Non sicuramente una condizione sufficiente!
Azathot

 Con il Python almeno ti abbitui un po'
Ti abitui un po', sě.
Ma male.
Un po' come il BASIC di una volta...
Azathot
P.S. Ancora ci sono in giro programmi con i "goto"... indovinate quale
linguaggio ha introdotto questa usanza?

un buon programma. Non sicuramente una condizione sufficiente!
Altroche se lo e'. Rende il codice molto ma molto piu' pulito e meglio
strutturato perche' ti obbliga a mantenere un certo ordine mentre scrivi. Si
potrebbe dire che python e' gia' ordinato di suo e non ha bisogno di "scaffali"
in cui ordinarsi.


linguaggio ha introdotto questa usanza?
fammi una gestione degli errori in C senza usare il goto mantenendo il tutto a
livello leggibile... Il C non ha try e roba varia... e metterti a fare decine di
if per ogni file che apri, memoria che allochi, input forzato e via dicendo
rende il codice poco strutturato e pieno di biforcazioni. Usando i goto invece
sei in grado di spostare la logica di gestione d'errore dove deve stare ovvero
lontano dal corpo del programma e ti limiti a un semplice:
if (fPtr) {...}
else goto(error0);
Questo pero' resta l'unico caso in cui i goto sono utili, in tutti gli altri
spezzano la continuita' dell'algoritmo e rendono molto complessa la lettura del
codice


 cosi' veloce),
set voice="Obi Wan Kenobi"
Usa ViM, Dialtone! :)[1]
unset voice
Modalita` comando, tasto '%' quando ti trovi su una parentesi aperta ti porta
a quella chiusa corrispondente. Esiste anche il comando inverso, ma non lo 
ricordo... (per chiarimenti e conferme, vedi vimtutor :)
+++
[1] Rif: Guerre Stellari, attacco alla prima Morte Nera, Skywalker 
inseguito da Darth Vader, il computer fatica ad acquisire il bersaglio :)
-- 
Ikitt antilles  
*** mailserver: 
freemail.it

 linguaggio ha introdotto questa usanza?
"Goto statement considered harmful" di Dijkstra è vecchio. Ottimo ma
vecchio. E' precedente al C.
Da bravo programmatore C/C++ quale sei ti sarai accorto che il C non ha
una gestione degli errori built-in come quelle che abbonda nei linguaggi
ad alto livello più o meno recenti (Java, Python, il C++ stesso).
Infatti Linus Torvalds (e parecchie persone che hanno "rincarato la
dose nel thread") si è preso la briga di ribattere (e non mi sembra sia un
pessimo programmatore C)
Ti consiglio di leggerti il thread: 
http://www.kerneltrap.org/node.php?id=553
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395

 programma pur essendo FORMALMENTE CORRETTO?
Secondo me la tua è paranoia :)


ricordo... (per chiarimenti e conferme, vedi vimtutor :)
eh eh :) Si lo so che c'e' quella bella cosa in VIm e gia' lo uso. Il punto che
volevo far notare pero' e' che non e' giusto dire che le parentesi rendono tutto
piu' leggibile. L'indentazione rende tutto decisamente piu' semplice da
strutturare e controllare. 


 ricordo... (per chiarimenti e conferme, vedi vimtutor :)
Fai un passo avanti di 20 anni e cambia editor... ;-PPP
-- 
Luc.

 linguaggio ha introdotto questa usanza?
Sinceramente non ricordo quale linguaggio e' venuto prima tra FORTRAN,
COBOL, BASIC, e ALGOL, ma penso che tutti avessero il GO TO o GOTO.
Ho cominciato a studiare linguaggi di programmazione quando avevo 14
anni (quasi 25 anni fa...ahime') e sono partito da quelli per cui
trovavo manuali in biblioteca, appunto FORTRAN, COBOL e ALGOL.
Certamente ho usato a lungo il BASIC (sul Vic20!!) e l'assembler della
famiglia del motorola 6502.
Una volta imparati un po' di linguaggi procedurali il pascal (che ai
miei tempi si studiava all'universita') penso che mi abbia richiesto
poche ore di lettura del manuale. Il C (che ora uso di preferenza) l'ho
imparato successivamente senza sforzi particolari
e ogni tanto mi tocca anche usare il C++.
Sinceramente non capisco la demonizzazione del GOTO. Come ogni
altro costrutto puo' essere usato in modo piu' o meno
efficiente e leggibile.
Ho trovato dei casi nei quali l'uso di un singolo goto semplificava
molto la struttura del programma, migliorava la leggibilita' (rendendo
il programma piu' simile all'idea astratta dell'algoritmo) e rendeva
in sostanza il programma piu' veloce. Sono casi abbastanza rari, ma
penso che conoscere uno strumento e usarlo al meglio sia
preferibile a precludersene l'uso per motivi simil-religiosi.
ciao,
g.

 preferibile a precludersene l'uso per motivi simil-religiosi.
Fino alla prossima opera di manutenzione.
Azathot


No ! Ci sono dei casi che potrei trovarti (se avessi il tempo)
in cui la struttura del programma con 1 goto e' molto piu' semplice
e leggibile, quindi molto piu' facilmente manutenibile.
Non sto considerando il caso di programmi scritti con 80 goto inutili,
ma con 1 o 2 goto che ti semplificano enormemnete il senso del
programma (per uscire da cicli annidati in presenza di condizioni
molto particolari, etc.etc.).
ciao,
g.

 linguaggio ha introdotto questa usanza?
"Goto statement considered harmful" di Dijkstra č vecchio. Ottimo, illuminante ma
vecchio. E' precedente al C.
Da bravo programmatore C/C++ quale sei ti sarai accorto che il C non ha
una gestione degli errori built-in come quelle che abbonda nei linguaggi
ad alto livello piů o meno recenti (Java, Python, il C++ stesso).
Infatti Linus Torvalds (e parecchie persone che hanno "rincarato la
dose nel thread") si č preso la briga di ribattere (e non mi sembra sia un
pessimo programmatore C)
Ti consiglio di leggerti il thread: 
http://www.kerneltrap.org/node.php?id=553
-- 


 nel mio corso di programmazione si studia la sintassi del C#
IMHO, dal punto di vista didattico č meglio che iniziare con il C++.
Certo poi dipende dal docente. Credo che in un corso introduttivo non
bisognerebbe focalizzarsi tanto sulla sintassi, quanto sui paradigmi, quindi
scelto C# (o Java o Python, ma anche C++, Delphi, VB, sono strumenti),
l'oggetto del corso dovrebbe essere gli elementi base di OOD.
--
Ale
La RFD originale per it.comp.dotnet su
http://www.sen.it/stoa/articles.asp?id=10
Se vuoi discuterne, vai su it.news.gruppi

 rotto le palle con il Pascal...
A me diedero 30 e due ordinari litigarono di fronte a me perché uno voleva
darmi la lode e l'altro no.
Avevo scritto una libreria per creare e gestire finestre in DOS; all'epoca
non avevo ancora mai visto Windows, ma già c'era in giro la versione a 16
bit, anche se io mi ero basato più su un'interfaccia dell'IBM di cui mi
sfugge il nome; è stata l'ultima cosa che ho fatto in Pascal in vita mia.
Mi spiace per i cultori, ma IMHO come linguaggio è veramente limitante..


 mia.
Per mia fortuna, l'esposizione al Pascal è stata limitata...
Azathot ... perché altrimenti sarei diventato come il La Forgia. <g>

 l'oggetto del corso dovrebbe essere gli elementi base di OOD.
Ovvio...ma non sempre i corsi sono organizzati in modo serio :(


 quale linguaggio ha introdotto questa usanza?
l'assembler?
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.0.21. C/C++ and ASM developers
                               and beta testers are welcome!