Newsgroup: it.comp.lang.c
Titolo: testi c

Sapreste indicarmi qualche testo per imparare bene il c?
Mi piacerebbe compilare programmi homebrew per windows e linux
Che ne pensate dei compilatori gcc e mingw?

   
Il modo migliore per impararlo, dopo un'infarinatura iniziale, � quello 
di cercare di decifrare e modificare il codice scritto da altri. Il mio 
unico testo cartaceo di riferimento � il glorioso Kernigham & Richie, 
che ha il pregio di non contenere nessuna indicazione su costrutti non 
standard, quindi ci� che � scritto l� dentro gira ovunque. Il codice per 
gcc che trovi in giro invece � pieno di costrutti non standard, quindi 
se usi quello come spunto, imparerai molte estensioni. Ci sono comunque 
degli standard pi� recenti del C, che nel K & R non trovi, ma che molti 
compilatori non supportano. Nel file info del gcc puoi provare a cercare 
C89 e C99 per vedere quali siano le differenze fra i vari standard.
A proposito, anche il manuale del gcc � un ottimo testo, con le riserve 
dette sopra.
Giovanni

 di cercare di decifrare e modificare il codice scritto da altri. 
Credo che questo sistema pu� funzionare se il tuo scopo rimane quello di 
modificare il codice scritto da altri. Se invece vuoi essere in grado di 
creare e organizzare del codice autonomamente �, secondo me, 
indispensabile che ti studi in maniera sistematica il linguaggio.
L'utilizzo dei puntatori il passaggio dei parametri, l'utilizzo degli 
array e delle stringhe sono concetti dei quali devi conoscere nel minimo 
dettaglio il funzionamento.
Per questo ti consiglio anch'io il Kernighan & Ritchie, ma ti consiglio 
di leggerlo subito. E' un testo di base, senza fronzoli, che ti d� le 
nozioni fondamentali.
Dopodich� devi prendere un po' di familiarit� col compilatore. Consiglio 
il gcc, che oltre ad essere un compilatore molto valido ti costringe ad 
imparare la differenza tra compilazione e linking e l'utilizzo di 
librerie esterne. Inoltre tutti i programmatori hanno esperienza col 
gcc, � un po' una nave scuola...
Infine puoi scrivere il tuo codice, o modificare codice gi� esistente. E 
se hai problemi, questo NG � il luogo adatto per chiedere aiuto!
E.

 gcc, � un po' una nave scuola...
Gia'. Pero' non capisco cosa intendi con "gcc ti costringe ad imparare
la differenza fra compilazione e linking e l'utilizzo di librerie
esterne".
-- 
-riko

 Forse il migliore e' l'Harbison. 
Un qualche libro in italiano esiste?
 
un link ad una guida gcc o mingw in italiano?

 esterne".
Di solito lavorando col gcc si inizia col compilare direttamente da riga 
di comando. Dunque si apprende la distinzione tra fase di compilazione e 
fase di linking, perch� vengono fatte separatamente. Inoltre si capisce 
la distinzione tra files header e files compilati di una libreria.
Questo processo viene spesso nascosto a chi utilizza altri compilatori 
integrati in un ambiente di sviluppo. Mi � capitato di vedere che chi 
non ha mai utilizzato i tool da riga di comando pu� avere difficolt� nel 
creare una libreria o nello scaricare compilare e linkare una libreria 
esterna.
E.

 lavorare (e in questo campo pi� che in altri).
Si mail libro  Kernighan & Ritchie � tradotto benissimo in italiano .....
Infatti ce l'ho!
Almeno mi date dei link aggiornati al gcc e mingw in inglese?

   
http://gcc.gnu.org/onlinedocs/

 Si mail libro  Kernighan & Ritchie � tradotto benissimo in italiano .....
Si, ma e' *uno* su tre buoni. Ci sono interi campi dell'informatica dove
i libri in Italiano *non* ci sono, sono vecchi oppure non riescono a
competere con l'offerta USA (o perche' e' tradotto uno su dieci, oppure
perche' e' diffuso un testo in Italiano di qualche "nessuno" contro i
libri inglesi scritti dai mostri sacri".
Provare a fare l'informatico senza sapere l'inglese e' sostanzialmente
non praticabile oggi.
-- 
-riko

 esterna.
Su questo sono assolutamente d'accordo, sul fatto che almeno per capire
i sistemi "minimali" sono convenienti.
Purtroppo oggi gcc su windows si affronta spesso attraverso CodeBlocks o
il vecchio dev, con sostanzialmente tutti i pregi e i difetti tipici
degli IDE. Dicono dalla regia che spesso, ormai, anche su Linux la gente
parte cercando (e usando) qualche IDE.
Per dire, io ai miei in laboratorio non sono praticamente mica riuscito
a farli lavorare a linea di comando. Ho ricevuto istruzioni in tal senso
e con il tempo che avevo a disposizione ho dovuto sostanzialmente
concordare con chi me le ha date. 
Comunque, tornando al gcc, in particolare compilazione e linking di
default vengono fatti in un solo passo, a meno che non dici altrimenti.
In questo ricordo altri compilatori piu' fiscali (nel senso che non
chiamavano implicitamente e automaticamente il linker a meno che non
"istruiti altrimenti"). Poi e' una questione di lana caprina: ho capito
cosa intendevi e sono sostanzialmente d'accordo.
-- 
-riko

 Forse il migliore e' l'Harbison. 
1  KING K.N.
   C PROGRAMMING
   A Modern Approach - 2nd edition
2) HARBISON S.P. STEELE G.L.
   C A REFERENCE MANUAL
   FIFTH EDITION
Sono questi i libri chemi consigli?

 Sono questi i libri chemi consigli?
Gia'.
-- 
-riko

 Gia'.
Un'ultima cosa con gcc da linux si pu� compilare per windows?
Ho fatto il classico "hell� world" che il linux funziona 
benissimo con il classico ./ in windows rinominandolo .exe no!
Si deve attivare qualche opzione o no?
Grazie!

 Si deve attivare qualche opzione o no?
non basta rinominarlo ... devi ricompilarlo su winz ...
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 benissimo con il classico ./ in windows rinominandolo .exe no!
Ovvio che non funziona.
-- 
-riko

 non basta rinominarlo ... devi ricompilarlo su winz ...
ok! l'ho ricompilato con mingw e funziona alla
perfezione
Ma da linux si possono fare programmi per win???????

bv ha scritto:

Direi di s�, tempo fa guardai un po' di documentazione a riguardo. 
Sostanzialmente ti devi installare mingw su linux.
E.

 riguardo. Sostanzialmente ti devi installare mingw su linux.
Ma non va in conflitto con il gcc?
Cio� se digito gcc etc etc poi va in eseguzione mingw o gcc
si deve disinstallare il gcc temo vero?

bv ha scritto:

No, non � necessario. Baster� dargli un nome diverso.
E.

 Sostanzialmente ti devi installare mingw su linux.
Mai usato mingw ma non serviva solo a fornire uno strato POSIX?

 dovuto sostanzialmente concordare con chi me le ha date.
Malissimo, poi quando arrivano al lavoro e devono occuparsi di 
ambienti embedded non riescono a capire cosa devono fare :-(
Arrivavano i laureati e mi toccava fare i corsi per insegnare loro a 
lavorare con gli ambienti specifici per micro-controllori e le 
modalità di installazione nell'ambiente target.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 writes:


Un'ultima cosa........
Se sono ot dimmelo ......
Se lancio l'applicazione da windows "hello word"
Mi apre una finestra dos .......
Ma se volessi aprire una finestra windows .......?
con sritto "hell� word" con magari caratteri comic sans?
Non so se mi s� spiegato

 con sritto "hell� word" con magari caratteri comic sans?
Devi utilizzare una libreria per la gestione delle finestre. Ad esempio 
puoi cercare informazioni su gtk, qt, wx-widget...
E.

Andrea D'Amore ha scritto:

Non so esattamente. Ma di certo ti fornisce anche la libreria standard 
per interfacciarsi correttamente con il sistema operativo e un linker 
che produca il formato EXE. Credo che queste siano le uniche differenze 
tra un programma windows e uno Linux. Per quel che ne so il codice 
macchina dovrebbe invece essere uguale.
E.

 esempio puoi cercare informazioni su gtk, qt, wx-widget...
Wow! A me piacciono un casino le gtk!Che sono pure free!!!!!
Ma per esempio windows vista che librerie usa????
Sono a pagamento?
Mi dici qual � la funzione c che richiama le librerie 
gtk o windows ??????? #include<etc, etc> ??????

 gtk o windows ??????? #include<etc, etc> ??????
Mi rispondo da solo ho trovato su internet questo esempio!
------------------------------------------------------------------------------------------------------
#include<windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
  MessageBox (NULL, TEXT ("Ciao mondo!"), TEXT ("ciaomondo"), 0);
  return 0;
}
------------------------------------------------------------------------------------------------------------
E funziona alla grande!!!!! Ora mi viene in mente una domanda
Questo non � c vero???
Per sapere tutte queste funzioni che non sono standard c ....
dove si va c'� un libro un link???

 dove si va c'� un libro un link???
Hai cercato "windows.h" con google?
E.

 Hai cercato "windows.h" con google?
boh? mi sembra con google ho messo: (sdk mingw)
poi mi sembra sono andato su wikipedia sdk .net 
o qualcosa del genere.
Comunque il link � qua:
http://www.negusweb.it/wiki/Tutorial_sulle_Windows_API
Per tornare alla domanda per una guida sulle api/sdk windows???
Ma poi perch� facendo click due volte si apre comunque 
la finestra dos???????????????

 la finestra dos???????????????
Ah, questo non so!
E.

 Ah, questo non so!
Nessuno pu� farmi un esempio di codice c che con un doppio click apre
una finestrella senza dos?

 modalit� di installazione nell'ambiente target.
E dovresti farlo comunque: non c'e' tempo a un corso di Programmazione I
di fargli qualcosa di cosi' specifico.
Oltretutto non credo che nessuno di loro andra' a lavorare in quel
mondo, come dicevo prima.
Comunque non credo il problema sia dell'univerita', in questo caso.
Quello che bisogna insegnare e' un metodo, una disciplina, un modo di
ragionare. Nello specifico a "programmare".
Ora io ritengo che le due o tre slides in cui sono comparsi comandi per
la compilazione da riga di comando dovrebbero bastare a chiunque, per
gli scopi del corso. Pare che la nuova generazione trovi davvero piu'
comodo l'IDE. Io non capisco, ma temo di doverlo accettare. Obbligarli
in un senso piuttosto che in un altro non sposterebbe molto le cose,
IMHO
-- 
-riko

 sposterebbe molto le cose, IMHO
Purtroppo l'università è al di fuori del mondo del lavoro.
Povera Italia :-(
