Newsgroup: it.comp.programmare
Titolo: Curiosità sul C

Ho iniziato da pochissimo ad imparare il linguaggio C, perchè ho letto un
sacco di cose buone su di esso.
Premetto che faccio il tutto solo per passione e senza alcuna pretesa di
diventare un programmatore evoluto.
Ho pero' una grossa curiosità. In quello che ho letto finora, non ho mai
trovato la maniera di creare interfacce grafiche.
In C non è possibile crearle?
Se fosse possibile qualcuno gentilmente mi potrebbe dare qualche spiegazione
o indicazione?
Ringrazio tutti
Gigi

 Icq #84624356
Saresti cosi gentile da dirmi un po delle librerie aggiuntive?
Dove trovarle, se si acquistano, se ci sono dei tutorial molto semplici per
capirne qualcosina .
Io uso Windows XP, ho installato pure Linux RedHat 7.3 (che pero' non so
ancora usare sufficientemente).
Francamente non vedo quale utilità ci sia a creare un programmino che non
abbia un'interfaccia grafica. Secondo te dovrei lasciare perdere il
linguaggio C, o è comunque utile impararne qualcosa?
Ti ringrazio molto Gigi

 Icq #84624356
Ti ringrazio molto
Gigi :-))

 In C non è possibile crearle?
In C è possibile fare tutto, ma non con il C da solo.
Per fare grafica devi chiamare il sistema operativo
(se programmi sotto Windows o altro SO gragfico)
oppure usare librerie apposite, esterne al linguaggio.

 pensare alle librerie grafiche, fai molta esperienza con il C classico ;-)
Oddio, visto che tanto deve cominciare da zero, per
me tanto vale che parta direttamente con il C++...
e impari direttamente a strutturare un programma
in termini di oggetti e interfacce. Cerca in rete
"Thinking in C++" di Bruce Eckel, lo trovi completo
e aggratis sotto forma di PDF.
Per il compilatore io lo orienterei verso il Borland
C++Builder 3, 4, 5 o 6 (tanto sta cominciando, le
differenze le noterà solo in futuro, e intanto il 3
è pure freeware... evitare il C++builderX che lo vedo
male per partire). Questo perchè con il C++Builder è
molto facile creare le interfacce grafiche del proprio
programma e sei naturalmente portato a programmare
per eventi e metodi, che è il modo universalmente
usato dalle GUI di tutti i sistemi operativi moderni
(non solo Win ma pure X11 sotto Linux, MacOS ecc.)

 o indicazione?
La libreria standard del linguaggio C non ha supporto per le interfacce
grafiche, dunque necessiti per forza di una libreria grafiche con il
supporto al linguaggio C, l'unica che conosco e forse la piu` adatta:
essendo multipiattaforma e semplice da imparare GTK, la libreria a base di
GIMP (un software di fotoritocco) e alla base dell'intera piattaforma
GNOME.
Puoi trovarla qui: 
www.gtk.org
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com

 o indicazione?
Come ti hanno gia detto, il c non ha diretto supporto per la grafica. Puoi
perň usare una di queste librerie, che hanno tutte la caratteristica di
essere supportate da molte piattaforme.
wxWindows
www.wxwindows.org
Gtk+
www.gtk.org
SDL (piů per il multimedia, a dire il vero)
www.libsdl.org
E altre ancora. Queste sono le piů importanti che mi vengono in mente.
Saluti
Raffaele
-- 
Raffaele Castagno
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 C++Builder 3, 4, 5 o 6 (tanto sta cominciando, le
Anche qui dissento. Per iniziare a programmare imho è meglio un semplice
editor di testi, con un compilatore a scelta, senza tanti pulsanti, wizard
e altre pupazzetti a distrarre o confondere lo "studente".
De gustibus


 il linguaggio C, o è comunque utile impararne qualcosa?
È utilissimo. Parti di Windows, tutto il kernel linux e Gnome sono tutti
scritti in C.
-- 
Andrea Bergia - studente              Linux Registered User #281550

 ti sembra un programma inutile? :-)
ping
ipchain
apache
samba
snort
ncat
cdburn
cdrdao
wget
make
e chi più ne a, più ne metta!
W CLI!


 pò la ruota.
Seee...
Già che ci siamo perchè non lo mandiamo a programmare
un PDP11 a forza di schede perforate? Anzi meglio,
l'ENIAC con gli interruttori nella memoria centrale?
La programmazione procedurale è implicita in quella
a oggetti: un oggetto è fatto di procedure e dati.
E gli "ammennicoli" non rompono le scatole, risolvono
problemi. A patto di avere la buona grazia di studiarseli
e capire come vanno usati, ovvio.
A programmare si impara ugualmente bene anche con la
roba che c'è adesso. Anzi si impara MEGLIO, perchè c'è
molto più gusto a creare un programma con le dialog, i
pulsanti e tutto quello che hanno gli altri programmi
che uno vede e usa sempre. Sai quanti si sono scoraggiati
dopo aver penato un giorno intero col compilatore e le
librerie per scrivere "ciao mondo" in console e poi non
essere manco capaci di vederlo funzionare perchè gli
spariva la finestra prima che riuscissero a vederla?
Avrà tempo e modo di imparare tutto: liste, alberi,
ordinamenti, algoritmi e compagnia cantante, ma lo
farà quando gli serviranno.

 pulsanti e tutto quello che hanno gli altri programmi
Sarà che odio i pupazzi...e poi molti potentissimi software sono a linea
di comando...Io sono dell'idea che prima di imparare ad usare wizard e
compagnia bella bisogna capire cosa c'è sotto, senò si usa visualbasic,
che con 4 click ti fa un filemanager, ma che non ti fa capire una cippa di
programmazione...
Ah, ho comprato di recente un manuale di programmazione java (Java 2,
guida  per il programmatore, Apogeo), che insegna a programmare, anche con
finestre ed eventi, senza usare altro che l'editor di testi preferito dal
lettore, e gli stessi Thinking in Java e Thinking in c++ non si comportano
diversamente, per il semplice fatto che sono stati scritti per insegnare
il LINGUAGGIO e non il TOOL DI SVILUPPO.
Saluti


 (o quasi...non sparatemi :) ) ?
Leggi questo doc: 
http://www.paulgraham.com/javacover.html
Io sono uno studente di informatica ma ti assicuro che insegnare
Java e` deleterio e nocivo per gli studenti (non perchè Java sia
il male) ma semplicemente perche` vengono date per scontate troppe
cose e perchè si riempiono gli studenti di parolone come "polimorfismo"
quando (ti assicuro che succede) c'è gente che ti chiede informazioni
durante le lezioni di questo genere: "ma l'if a che serve??"
Quindi io sono dell'idea che al di la del linguaggio in se sia meglio
che si insegni a programmare, con C o meglio con linguaggi come Python.
Ciao!


 il LINGUAGGIO e non il TOOL DI SVILUPPO.
Ho anche io i testi di Eckel, e pure lo Stroustrup, ma:
1) molto spesso, per non dire sempre, non sono programmi
completi ma esempi di classi, metodi e procedure;
2) sei proprio sicuro che $(CC) programma_di_Eckel.cpp
compilerebbe al primo colpo con qualunque compilatore
preso a caso???
Non è possibile prescindere dai tool di sviluppo, se vuoi
ottenere qualcosa di più complesso di un "Ciao mondo"...
i libri astraggono dai tool, sì, ma al prezzo di non
poter dare alcuna informazione su COME si struttura un
programma reale e come vanno organizzati i sorgenti, o
perchè. E in ogni caso, vuoi mettere lo spendere tre
mesi a studiare la programmazione e poter già scrivere
un programma GUI per Windows, contro lo spendere tre
mesi a studiare la programmazione e poi doverne spendere
ALTRI TRE per imparare come si programma sotto Windows?

 W CLI!
Ah, ora mi ricordo: tu sei quello che stava
usando PhotoShop da linea di comando, non ci
riusciva e diceva che PhotoShop era na sega...
:-PPPP

 
www.libsdl.org
-_-	...ehm...	-_-
queste NON sono librerie grafiche...
le prime due sono librerie di controlli per GUI.
L'ultima č una specie di DirectX open source.
Sarebbe meglio dire che con queste E con altre
chiamate al SO su cui pogrammi puoi fare ANCHE grafica.

 ...o per lo meno ci si diverte :D
Eh eh 


(o quasi...non sparatemi :) ) ?
io non odio java, e forse puň anche essere utile per insegnare a
programmare, se usato in maniera sensata (i.e. blueJ) . 
Ma alle uni lo usano perchč fa tanto "enterprise" , "business" e cose
cosě. 

...o per lo meno ci si diverte :D
poascal, mi commuovo :°°°) 
quello si che era un linguaggio!
Cmq dall'elenco mancano tutiti linguaggi un po meno "classici":
common lisp, scheme, haskell, ocaml, erlang,  e direi pure Tcl e
SmallTalk..avendo tempo e voglia io un'occhiata la darei ;)
Però secondo me, *non* all'inizio. 
PS
 e non scordiamo ruby ;)

 chiamate al SO su cui pogrammi puoi fare ANCHE grafica.
Lui ha chiaramente parlato di "interfacce grafiche".
E queste sono librerie per la creazione di interfacce grafiche...


 ALTRI TRE per imparare come si programma sotto Windows?
Vuoi mettere spendere 3 mesi ad imparare ad usare un tool, per poi
cambiare azienda, e finire in una azienda che usa UN ALTRO tool, e dover
imparare un altro tool, etc etc, e intanto continuare a non sapere a
programmare?
Vuoi mettere spendere 3 mesi ad imparere UN LINGUAGGIO, e poi finire in
una qualunque azienda che usa quel linguaggio e poter essere produttivo da
subito, eventualmente anche solo un notepad.
La differenza tra imparare un linguaggio  e imparare un tool, è che nel
primo caso puoi programmare con qualunque cosa, anche solo vi, mentre con
il secondo senza un tool simile a quello studiato non ci si riesce a
muovere.


 obbliga da subito entrare nella logica OOP. Molto interessante.
<mode flame="on">
Java e` razionale tanto quanto io sono analfabeta...
</mode>
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra


Non finisco mai di stupirmi di quanto sia utile internet. Qualsiasi cosa
serve c'è sempre la possibilità
di trovare qualcosa in merito o di avere pareri e consigli da qualche
gentile amico.
Ho deciso di continuare a studiare il linguaggio C e successivamente
approfondire le conoscenze per
la creazione di interfacce grafiche.
Un grazie a tutti di cuore
Gigi.



Penso che tra le tante cose buone che ti hai letto, non ci sara'
stato che il C e' il linguaggio piu' adatto per sviluppare applicazioni
dotate di interfaccia utente grafica. Infatti, sebbene il linguaggio C
vada benissimo per implementare l'interfaccia utente grafica, non e'
certo un linguaggio consigliabile per scrivere applicazioni dotate di
interfaccia utente grafica, per i seguenti motivi.
- Il modo piu' semplice di fare input/output, e' su file o su riga di
comando. La creazione di un'interfaccia utente a caratteri
aumenta la complessita'. La creazione di un'interfaccia utente grafica
aumenta grandemente la complessita'. Tale complessita' rimane tutta
nelle API rivolte ai programmatori in C. Per altri linguaggi sono state
create delle interfacce semplificate, che rendono piu' abbordabile la
programmazione di interfacce grafiche.
- Il linguaggio e la libreria standard del C non prendono in
considerazione ne' la grafica ne' l'interfaccia utente. Pertanto, per
ottenere tali funzionalita' si deve accedere direttamente all'hardware o
usare driver o librerie non standard. (Normalmente, il codice
applicativo usa una libreria grafica che accede a un driver che accede
all'hardware.)
- La grande efficienza del linguaggio C sarebbe comunque sprecata,
perche' i colli di bottiglia sarebbero comunque nel software si sistema.
Per esempio, per disegnare una linea sullo schermo, il tempo impiegato
nell'eseguire il codice applicativo e' meno dell'uno per cento del tempo
complessivo. Pertanto, usando un linguaggio dieci volte piu' lento del
C, il disegno della linea verrebbe rallentato di meno del dieci per
cento.
-- 
	Carlo Milanesi
 
http://digilander.libero.it/carlmila

 spariva la finestra prima che riuscissero a vederla?
dico solo una cosa senza voler alimentare il flame che si e' gia' creato 
:) io ho imparato a programmare in C64BASIC, sono passato all'Amos in 
Amiga, ho adorato il Visual Basic in Windows - anche se ora non lo posso 
soffrire - e ho odiato il Pascal (de gustibus). ora codo regolarmente in 
assembly, C, Java e quant'altro la fantasia possa suggerire. non c'e' 
nulla di male nel cominciare con le caramelle, basta avere la buona 
creanza e la voglia di capire cosa c'e' sotto e di che zucchero sono 
fatte :)
-- 
Morpheu5 (che sclera se deve seguire un NG cosi' affollato...)

Tin Toy ha scritto:

oddio, spiegatemi questa, che gia' io AMO morbosamente Photoshop, se poi 
lo posso usare da riga di comando raggiungo orgasmi multipli! o___O; ;DDD
-- 
Morpheu5 (che odia Fedora perche' non ci trova LaTeX)