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

Sono un neofita e vorrei imparare a programmare.
Mi sono convinto, ma sono pronto a ricredermi, che si potrebbe cominciare
dal linguaggio c per poi provare con assembler, ecc. Ho una laurea in
materie umanistiche (psicologo), ma sono un buon utilizzatore (dai tempi del
dos) del pc e mi piacerebbe approfondire la programmazione.
In ogni cso sono sprovvisto di manualistica e vorrei evitare di spendermi lo
stipendio in manuali; c'è qualcosa di ben fatto online e free?
Grazie delle indicazioni

Se te la cavi bene con l'inglese trovi molti testi (libri veri e propri)
scaricabili online.
Se no in ita trovi libri come Tricky C o appunti e dispense sui siti
universitari, facolta di informatica :)

c'č poco o niente se nn sai dove cercare... :)
Si trovano gli stessi libri che compri su 
amazon.com

dal linguaggio c per poi provare con assembler, ecc.
Ti consiglierei il contrario, cioe' iniziare con l'assembler, in
questo modo ti sara' molto piu' facile passare al C.
---
acc(at)
libero.it

 questo modo ti sara' molto piu' facile passare al C.
...
Mi sembra un punto di vista un po' singolare. Allora se uno ti chiede 
come si fa a imparare a guidare l' auto gli consigli di diventare prima 
un pilota di F.1 ? :-)
Un linguaggio di programmazione e' un attrezzo. Conviene usare sempre 
quello giusto per il problema che si deve affrontare. Ma se uno vuole 
cominciare a rendersi conto di come funzionano gli "attrezzi", meglio 
partire da uno di tipo "universale" (alias linguaggio di alto livello) 
piuttosto che uno "specifico" (alias assembler).
Giorgio Pastore

 stipendio in manuali; c'è qualcosa di ben fatto online e free?
Se non hai problemi con l' inglese prova
http://staff.aes.rmit.edu.au/olga/programming1/html/c1.html
E' ben fatto e con molti esempi.
Giorgio Pastore

piuttosto che uno "specifico" (alias assembler).
Specifico l'assembler?  =8-o
---
acc(at)
libero.it

 Specifico l'assembler?  =8-o
Direi proprio di si' visto che ogni architettura di elaborazione ha il 
suo a. specifico. O sei di quelli che pensano che il mondo nasce e 
finisce con l' architettura Intel 80x86 ?
Quanto alla preferibilita' di imparare l' a. prima  per imparare  piu' 
facilmente il C ho seri dubbi. Quello che realmente aiuta nell' 
apprendimento del C, piu' di un assembler e' avere le idee chiare su 
aspetti generali dell' architettura dei sistemi di elaborazione e sulla 
rappresentazione in memoria dei dati. Ma questo si puo' fare anche senza 
assembler.
Giorgio Pastore

 
		di niente, rz.
-- 
                                   /TIDIRYUM - Ferrara - ITALY\
                                   \ICQ#    13901251   !!bye!!/
° ° associato #2 alla LAV PS2 ° °
Matrix - Messiah - Lisa INSTALLER

 rappresentazione in memoria dei dati. 
[CUT]
A tal proposito volevo sapere (e mi scuso per l'OT) se qualcuno conosce
dei buoni link (architettura dei sistemi di elaborazione, etc) perche'
"giochicchio" un po' con il C e sono sicuro che conoscendo questi aspetti
potrei fare qualche passo avanti :)
Ciao e Grazie
-- 
Fai un programma che anche un idiota puo'
usare, e soltanto un idiota vorra' usarlo.

Ma questo si puo' fare anche senza assembler.
Se e' per questo si fare anche senza usare un computer... pero' averlo
aiuta!
---
acc(at)
libero.it

aiuta!
avendo una discreta base sulla architettura dei calcolatori, è possibile
programmare in modo efficiente in C. Se poi si programma ad alto
livello, si può ignorare anche quella.
ciao
Manfry

livello, si può ignorare anche quella.
Di programmi scritti da cani ne esistono a bizzeffe, uno in piu' o in
meno non fa testo.  :-P
---
acc(at)
libero.it

sviluppare procedure complete.
mettiamola cosi:
secondo la definizione classica assembly è un linguaggio altamente
specializzato (il contrario cioè di general purpose).
Seguendo la tua definizione tutti i linguaggi sono general purpose. Se
voglio posso fare un software di calcolo scientifico in cobol, un
gestionale in fortran, programmazione con paradigma object oriented in
c, un gioco in vhdl etc etc. 
ciao

 aiuta!
Tipico "non sequitur". Evidentemente sei a corto di argomenti. Comunque 
questo thread sta cominciando ad assomigliare ad una guerra di religione 
  sui vantaggi/svantaggi dell' assembler vs. C fuori tempo massimo. 
Direi che per essere il 2004 arriva un po' tardi. Sarebbe stato 
tempestivo negli anni '60.
Giorgio

 negli anni '60.
Ooops!
Parlando di C, ovviamente leggasi '80. Pero' la vera polemica tra 
linguaggi di alto livello vs. assembler fu negli anni '60 quando il C 
non era ancora nato :-)
Giorgio

Ciao Antonello,
Io programmo in C oramai da svariati anni e trascorsi anche in assembly.
Parlo dal mio punto di vista, lascia perdere.
Con molta probabilità vuoi imparare un linguaggio di programmazione a
livello hobbistico allora il mio consiglio e' partire direttamente con il
Java, con il quale poi in seguito potrai fare anche cose carine su Web che
potrebbero tornarti veramente
utili, prima di avrei consigliato anche VisualBasic ma oramai e' un
linguaggio in decadenza.
Il C e' fortemente legato per certi versi all'architettura della macchina
sulla quale lavora, ancora prima di partire con lo studio del linguaggio
devi assicurarti di avere solide basi sull'architettura del calcolatore, su
le tecniche di programmazione base per linguaggi procedurali (il C e' un
linguaggio procedurale) e tutto questo comunque non ti basta perche' se poi
vorrai spingerti oltre la solita stupidata del "Hello World!" o della
creazione di un file Pippo.Txt dove ci scrivi dentro il tuo numero di
telefono allora devi passare allo studio del sistema operativo e delle
librerie che ti mette a disposizione per poter creare applicazioni che
"comunicano" con li resto della macchina e con l'utente.
Studiando il C devi scontrarti con concetti come puntatori, stack, heap,
allocazione dinamica di segmenti di memoria e sara' sempre tuo il compito di
eliminare tali segmenti.
Hai quasi il controllo totale della macchina (non come l'assembly ma ti
avvicini) il rovescio della medagli e' che dovrai investire davvero molto
tempo ed impegno (non parlo ne' di settimane ne' di mesi...) , per uno
sfizio ne vale la pena?
Se poi userai come sistema operativo Windows sarai praticamente costretto ad
usare VisualC e dovrai investire ulteriore tempo per capire quelle
mostruosita' librerie Microsoft Mfc mescolando anche C++ (che e' un
linguaggio ad oggetti).
Ancora piu' complesso il discorso assembly, qua le istruzioni sono una
manciata ma i concetti sono ancora piu' ostici, per fare una stupidata tipo
creare un file, scriverci, chiuderlo, spostarlo da un posto ad un altro,
riaprirlo e stampare il contenuto a video potresti impiegarci anche piu' di
un giorno.
Lascia perdere quelli che pensano "studio assembly in 10 minuti carico
questo valore in questo registro, altero questo contatore, remmo questa jump
e divento il cracker piu' tosto su tutti i software dell'universo".
Inoltre il linguaggio assembly è hardaware dipendente ovvero se studi le
istruzioni per microprocessore ZilogZ80 quello che impari non puoi riportalo
su altre piattaforme con architetture diverse, solo i concetti  (ma non
tutti, alcuni richiedono soluzioni alternative) ma il codice no.
Ne vale la pena? Al 90% abbandoneresti tutto dopo poco tempo.
Con il Java eviteresti tutto questo e comunque studieresti tecnologia
attuale.
Il C e' obsoleto, linguaggio potentissimo ma oramai relegato a tecnologia
per svilluppo e manutenzione dei sistemi operativi, piattaforme Embedded
anche se Java comincia a fare la voce grossa anche in questo campo ed infine
i Videogames/Computer grafica (ma qui si entra in campo molto complesso ed
articolato)
Le applicazioni commerciali oramai sono anni che non prevedono piu' l'uso
estensivo del C nudo e crudo.

c, un gioco in vhdl etc etc. 
Se vuoi farti del male...
---
acc(at)
libero.it

tempestivo negli anni '60.
L'Assembler e' attualissimo, come il C del resto.
---
acc(at)
libero.it

Assembler. (ok, non prendere questa affermazione troppo seriamente)
qualsiasi programma può essere realizzato in qualsiasi linguaggio. 

Se vuoi farti del male...
ma scusa. Non hai detto tu che assembly è general purpose. Perchè non lo
usi per fare un bel newsreader, allora? Perchè non usi COBOL oppure
VHDL?

Visto che molti ti hanno scoraggiato, io voglio incoraggiarti.
Non che tu ne abbia bisogno, con una laurea in psicologia,
lo sai benissimo da solo che ognuno ha le sue idee e le sue
preferenze.
Ma voglio appunto ribadire che queste sono tutte idee
personali....e quindi aggiungo la mia.   :)
Considero il C un ottimo linguaggio, per niente obsoleto,
molto potente, e quindi inevitabilmente non immediato
da imparare, ma ne vale la pena !
Linux e' scitto in C.
La maggior parte dei compilatori e interpreti per gli
altri linguaggi (e anche per il C) e' scritta in C.
E' vero che col C non puoi costruirti subito una
interfaccia grafica (bisogna usare librerie apposite, esterne
al linguaggio vero e proprio )
Pero' (dopo un po' di tempo) puoi costruirti le
strutture dati piu' complicate e strampalate...
oltre a quelle piu' semplici, efficienti e veloci.
La struttura di un programma C e' simile a quella
di Basic, Pascal etc, ma hai pochisime limitazioni.
Prova a usare i suddetti Basic e Pascal, poi mi dici.... ;)
Per cui ti consiglio di provare, poi se vedi che non ti piace,
puoi sempre provare con qualcosa di piu' semplice, come Python
(almeno all'inizio, perche' se vuoi la potenza, qualche
complicazione ci vuole...e alla fine e' sempre questione di gusti ).
Ciao
E.

 complicazione ci vuole...e alla fine e' sempre questione di gusti ).
Mamma mia ragazzi, dal C a Python denigrando il Basic e il Pascal.
Parli di "potenza", potenza di che ? Di calcolo? Hai idea i calcolatori
di oggi che ordine di potenza hanno ?
E' il linguaggio a determinare la potenza di un calcolatore?
O forse conoscendo a priori COSA DEVI REALIZZARE e la potenza del
calcolatore
che hai a disposizione decidi poi quale strumento, ovvero linguaggio,
utilizzare?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 potrai fare tutto quello potresti fare col C.  
  ... e rimmarresti peraltro inchiodato per sempre alle piattaforme 
  DOS/Windows...
-- 
<!--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                      The Hacking Pages
 
www.lulli.net
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-->

 dell'assembler.
  Perchč non domandi ai bravi Kernighan & compare perchč si sono
  fatti un mazzo cosě ad ingegnerizzare un nuovo linguaggio, visto
  che poi il povero utente disperato deve studiarsi i dettagli 
  dell'implementazione di GCC per scrivere ``ciao mondo'' ? 
  Quello che proponi č un assurdo, renditi conto.


, nips62 ha
scritto:

	Quanto a ``ben fatto'' ai posteri l'ardua sentenza, io mi
	limito a segnalarti la seguente pagina:
 
 
www.lulli.net/paolo/hack.html
	nella quale troverai i link a diverse versioni della guida
	``Imparare il C''. Nota che il sistema di sviluppo al quale si
	fa riferimento è GNU/Linux; tuttavia l'intera prima parte è
	rivolta con particolare attenzione a spiegare gli aspetti
	standard del linguaggio, e nulla ti vieta di copiare e 
	compilare i primi facili esempi di codice.
 
	Ciao e... buon divertimento,
	P.


   dell'implementazione di GCC per scrivere ``ciao mondo'' ?
Perche' parli di Kernighan?
Il fatto che abbia scritto il libro assieme a Dennis M. Ritchie non vuole
dire che abbia anche partecipato alla creazione del linguaggio.
Detto questo... cosa vuole dire:
"studiarsi i dettagli dell'implementazione di GCC per scrivere 'ciao mondo'
? "
?!?
Mi sembra un pochino estremo come esempio o sbaglio?
Con questo credo di essermi perso la discussione, quindi non voglio dire
altro.
Tommy

Sono un neofita e vorrei imparare a programmare.
io ora come ora inizierei in java. E` un bel linguaggio, estremamente
portabile, molto coerentente. E` tecnicamente un gioiellino. Inizi
facendo programmazione strutturata e poi passi all'object oriented.
ciao
Manfry

qualsiasi programma puň essere realizzato in qualsiasi linguaggio. 
Un programma in grafica 3D (ad es. un gioco) con frame rate decenti,
in cobol e' impossibile.
---
acc(at)
libero.it

Perchè non usi COBOL oppure VHDL?
Idem come sopra.
Vorrei pero' fare una precisazione:
Ci sono Assembler piuttosto particolari e sopratutto dotati di
librerie piuttosto consistenti che in pratica permettono lo sviluppo
di applicazioni complete.  Si tratta pero' di eccezioni.
Per me "general purpose" significa che il linguaggio non ha alcun
orientamento applicativo, poco importa se viene utilizzato per
realizzare applicazioni enormi o piccole o solo parte di esse.
Attualmente sto sviluppando un gestionale, con parti in Assembler.
---
acc(at)
libero.it

in cobol e' impossibile.
anche in assembly. Cosa ne concludi? 

anche in assembly. Cosa ne concludi? 
Che non sai di cosa parli, in assembly si puo' !
---
acc(at)
libero.it

  Quello che proponi č un assurdo, renditi conto.
Cosa avrei proposto?
---
acc(at)
libero.it

 Attualmente sto sviluppando un gestionale, con parti in Assembler.
Approfondisci....
a prima vista sembra un controsenso....
Come mai usi assembler?
Tommy

Che non sai di cosa parli, in assembly si puo' !
si, come si può fare un gestionale. Esiste al mondo qualcuno che lo fa?
Perchè il fatto che in teoria si potrebbe, nella pratica non è che conta
molto per giudicare se un linguaggio è specializzato o meno.
Di fatto assembly (non capisco perchè continui a scrivere "assembler",
non conosci la differenza?) è un linguaggio altamente specializzato per
realizzare driver di periferica.
Consigliare assembly ad uno che vuole imparare a programmare è
_sbagliato_ perchè in assembly non è possibile implementare nessuna
delle tecniche di programmazione che si usano oggi.
O forse tu lo usi come esempio quando vuoi spiegare le funzioni,
procedure, ereditarietà, polimorfismo e compagnia bella?

Attualmente sto sviluppando un gestionale, con parti in Assembler.
a meno che tu non stia lavorando su un sistema embedded, o casi
eccezionalmente particolari, direi che qualcuno ha toppato di brutto da
qualche parte se tu devi fare un gestionale e ti devi occupare di
assembly.

 Attualmente sto sviluppando un gestionale, con parti in Assembler.
Forse (venendo da un ambiente piu' tecnico) non so bene cosa sia un
gestionale.
Ma a cosa ti servono parti di assembler in un gestionale ???
ciao,
g.

Appunto !
Questione di opinioni.
p.s.
Se ti piace litigare, vai su  comp.lang.c ,
vedrai che trovi pane per i tuoi denti

 battitura e non solo, forse dovuti alla localizzazione italiana.
Io ho letto le recensioni di questo libro e sono tutte negative, sia per gli
errori di grammatica (probabilmente del traduttore) ma sopratutto per
moltissimi errori logici e concetti sbagliati che evidentemente non possono
essere stati inseriti dal traduttore ma dall'autore in persona.
In un sito (di cui non ricordo adesso l'indirizzo) mi pare che questo autore
non sia molto apprezzato anche nella recensione di altri libri.
Ciao
Giuseppe


Personalmente sono d'accordo con te che la conoscenza dell'assembly agevoli
la programmazione in C.
Pero', nella mia opinione, e' che oggi come oggi conviene per uno che non ha
mai programmato, conviene partire dal C e poi se vuole andare oltre puo'
studiarsi l'assembly per ottimizzare il codice.
Io ho fatto il percorso Assembly -> C perche nel mio campo (embedded) quando
ho cominciato a programmare, non esistevano compilatori C molto ottimizzati
quindi avendo i micro che utilizzavo pochi registri, poca memoria, e
sopratutto qualche centinaio di byte di RAM era praticamente impossibile
utilizzare un linguaggio diverso dall'assembly.
Oggi mi trovo benissimo a programmare in C e poi andare a guardare il codice
prodotto dal compilatore per eventualmente apportare qualche ottimizzazione,
ma non con i microcontrollori moderni non c'e' nessun problema ad utilizzare
un C, a meno che uno non debba spaccare il capello in 4 (che tra parentesi
e' quello che adoro fare :-) ).
Per quanto riguardo l'Intel, penso che uno per utilizzare l'assembly con un
micro del genere debba essere o un genio o uno con qualche rotella fuori
posto :-)
Ciao
Giuseppe


E' vero, Schildt e' un autore che 'divide' molto:
c'e' chi lo ama e chi non lo sopporta.
Forse dipende da cosa ci aspettiamo dal libro e da come
lo usiamo.
Anni fa ho comprato "C the complete reference",
e sono pronto a regalarlo senza rimpianto al primo che passa.
Ciao
E.

 E.
Va bene, pero' errori come quelli riportati qui:
http://www.lysator.liu.se/c/schildt.html
non so se sono accettabili per uno che intende scrivere un libro per
insegnare il C.
Ciao
Giuseppe

 
		ciao, rz
P.S. Uno degli errori più grossolani che ho troveto personalmente è il 
fatto che la funzione strcmp viene riassunta in una tabella secondo la 
quale ritornerebbe 1 sia in caso di str1 > str2 che di str1 < str2 . O 
qlcs del genere.... Poi è pieno di frasi con parole o blocchi di parole 
ripetuti più volte.
-- 
                                   /TIDIRYUM - Ferrara - ITALY\
                                   \ICQ#    13901251   !!bye!!/
° ° associato #2 alla LAV PS2 ° °
Matrix - Messiah - Lisa INSTALLER

 insegnare il C.
Scusa, non mi sono spiegato !
Intendo dire che e' l'unico libro sul C che
regalerei perche' non so cosa farmene.....
Cioe, saro' fatto male io, ma un libro cosi' non mi serve !
Ciao
E.

Come mai usi assembler?
In alcuni casi per prestazioni.
In altri perche' certe cose sono piu' pratiche da implementare in asm
che in C, in particolare modifiche alle chiamate al S.O. di alcune
routine di libreria per questioni di compatibilita' con uindos.
---
acc(at)
libero.it

Ma a cosa ti servono parti di assembler in un gestionale ???
Avevi appena detto che non sapevi neppure cos'era un gestionale!
---
acc(at)
libero.it

routine di libreria per questioni di compatibilita' con uindos.
ROTFL
questa me la segno. Esilarante:
1) tu fai un gestionale in C, e quindi canni subito il linguaggio. 
2) per le prestazioni del tuo gestionale non ti basta il C, con cui
altri fanno grafica 3d e programmi number crunching, ti serve asm
3) Non contento, dici che certe cose sono più pratiche in assembly che
in C, e qui voglio sapere quali cose perchè la cosa è esilarante
4) ti serve il C per fare modifiche alle chiamate al sistema operativo,
per questioni di compatibilità (controsenso)
5) vuoi modificare chiamate al sistema operativo. Cosa significa scusa? 
spiega spiega che mi faccio due risate.
ciao

procedure, ereditarietà, polimorfismo e compagnia bella?
Io se dovessi insegnare (sgrat sgrat) a qualcuno le basi della
programmazione mi guarderei bene dall'iniziare col polimorfismo,
ereditarieta' e... ma non era it.comp.lang.c ? Mi sono perso qualcosa?
---
acc(at)
libero.it

posto :-)
No nulla di tutto cio', la differenza sta soltanto nella quantita' di
imprecazioni contro i progettisti, che pero' porta benefici
psicologici e alla circolazione (delle parti basse).
---
acc(at)
libero.it

esagerare... IMHO lo sono di piu' !
   E chi non sa fare le moltiplicazioni utilizzando un regolo
calcolatore, ma si appoggia alle mollezze delle moderne calcolatrici
non sara` mai un vero ingegnere. :)
-- 
S.L.

 ciao
Ciao
Giuseppe


Altri esercizi simpatici sono:
a) Sommare o sottrarre ad esempio due interi e vedere se sei andato in
overflow, in assemby sono 2 istruzioni in C .... n
b) Eseguire dei test sui bit di una variabile, in assembly e' 1 istruzione
in C .... n
c) Copiare il bit x da una variabile sul bit y di un'altra, in assembly sono
2 istruzioni in C .... n
E ne avrei anche molte altre ...
Ciao
Giuseppe

 clock del micro).
Veramente ho provato. Il compilatore ha generato 1 istruzione.
Forse il tuo compilatore/cpu non conosce/ha i registri a 32 bit ?
Per esempio con il gcc -O6 questo ciclo
for (i=0; i<99;i++) a=(a>>1)+i;
diventa
-------------------------------
.L6:
         sarl    %eax
         addl    %edx, %eax
         incl    %edx
         cmpl    $98, %edx
         jle     .L6
-------------------------------
come vedi e' solo una sarl.
In generale non si puo' dire quante istruzioni
genera il compilatore per un dato costrutto,
visto che l'ottimizzatore e' sempre in agguato.
(In questo caso e' di fatto scomparsa la variabile "a");
ciao,
g.


In effetti questa e' una ragione per cui vado sempre con i piedi di piombo.
Il mio compilatore (per Hitachi H8/300 che ha i registri a 32 bit) per il
tuo codice C mi genera il seguente codice assembly se c'e' l'ottimizzazione
di velocita' e di loop attivata:
SUB.L     ER6,ER6                     for (i=0; i<99;i++)
SHLR.L    ER1                           a=(a>>1)+i;
ADD.L     ER6,ER1
MOV.L     ER1,ER2
INC.L     #1,ER6
MOV.L     ER2,ER0
SHLR.L    ER0
ADD.L     ER6,ER0
INC.L     #1,ER6
SHLR.L    ER0
ADD.L     ER6,ER0
MOV.L     ER0,ER1
INC.L     #1,ER6
CMP.L     #H'00000063,ER6
BCS       @H'5DAA:8
Che secondo me e' pure errato ! (l'indirizzo 5DAA e' sul primo SHLR.L)
e il seguente se ho l'ottimizzazione di area attivata:
SUB.L     ER0,ER0                             for (i=0; i<99;i++)
MOV.L     ER0,ER2
MOV.L     @(H'0002:16,ER7),ER0   a=(a>>1)+i;
SHLR.L    ER0
MOV.L     ER2,ER1
ADD.L     ER1,ER0
MOV.L     ER0,@(H'0002:16,ER7)
MOV.L     ER2,ER0
INC.L     #1,ER0
MOV.L     ER0,ER2
CMP.L     #H'00000063,ER0
BCS       @H'5510:8
In questo caso fa pure due accessi alla ram :-((
Forse, quando parlavo di compilatori non ottimizzati, probabilmente ho
sbagliato ad usare il passato :-)
Pero', per me, questo conferma il fatto che se uno conosce l'assembler
queste cose le riconosce e le mette a posto, mentre se uno non lo sa prende
quello che passa il convento :-).
Ciao
Giuseppe

 imparato molte cose :-)
Beh, questo e' capitato a tutti ;-)
Tommy

 Avevi appena detto che non sapevi neppure cos'era un gestionale!
ahahah... dobbiamo farci quattro risate ?!?
Mah..... no comment.
Tommy

 psicologici e alla circolazione (delle parti basse).
Intel e' un processore semplice da programmare in assembly. E' vero ci sono
cose un pochino contorte che derivano dal fatto che e' i moderni P4 sono
ancora compatibili con i vecchi 8086 !!! Ovvio che alcune cose, senza sapere
la storia di tali processori risultano strane e... ovvio che alcune cose non
sono per nulla il massimo della efficienza.
Detto questo Intel e' sicuramente facile da programmare in assembly. Ci sono
architetture molto molto piu' complicate. Poi ovvio ce ne sono anche di piu'
semplici.
Tommy

 shl dword[ebp-04], 05
Tommy

 Altri esercizi simpatici sono:
ammettendo che l'optimiser faccia un pessimo lavoro (ed in alcuni casi a
mano puoi fare meglio), che vantaggio hai in un gestionale? Ripeto le
prestazioni in un gestionale non servono a nulla! Dove servono prestazioni
e' nel database che usa il gestionale, ma .... il gestionale si limita ad
accedere ad esso, non ad implementarne uno ;-)
Se mi parli di sistemi embedded real-time (mi pare tu provenga da questo
campo, no?!) quello che dici ha perfettamente senso, nei gestionali NO!
Tommy


Il punto e' che io uso e scrivo programmi di carattere essenzialmente
matematico, e quindi non sapevo 'esattamente' cosa era un software
gestionale. Avevo qualche sospetto.
Ora ho cercato con Google. Pare trattarsi di un programma (meglio, una
suite) correlato a vari aspetti della gestione di una societa' o una
azienda, come fatturazione, magazzino, mandria clienti, etc.etc.
(I prodotti piu' avanzati pare abbiano anche i moduli "evasione Fiscale
1.2" e "contabilita' in nero 2.3".)
Insomma, a prima vista sembra consistere nel prendere un programma per
la gestione di database (scritto da altri) e rompersi le scatole
a non finire per gestire tutte le interazioni grafiche con l'utente e
quelle con il database.
Cosi' molto superficialmente (sono il primo ad ammettere la mia
ignoranza nel campo economico) mi sembra che il collo di bottiglia,
quello da ottimizzare anche con l'uso di assembler, siano le prestazioni
del database.
Una volta escluso il database mi sembra che il grosso di quello che
rimane sia il tipico caso di pochi calcoli su molti dati. Tuttalpiu'
un po' di sorting, cosa ampiamente standardizzata, e poi che altro ?
Quindi sulla parte "algoritmica" non riesco a vedere bene il vantaggio
del'assembler in un gestionale. (A volte ne avrebbe nei programmi che
faccio io, ma a 40 anni sono troppo pigro per impararmil'assembler.)
Sulla parte di interazione con il s.o. invece non so cosa dirti,
potresti anche avere le tue ragioni.
ciao,
g.

 > Azz...



Tra le altre cose non avere esperienza in campo di gestionale e' una cosa
positiva.... e' uno degli ambiti della programmazione piu' noiosi che
esistano.
Tommy

"Giovanni Resta" <g.r...@iit.cnr.it.nospam> wrote
Giovanni, guarda che io concordo perfettamente con te....
Io ho risposto ad acc che ha fatto una battuta inutile dicendo che non
faceva ridere.
Come ho gia' detto, e anche tu, i gestionali non hanno problemi di
prestazioni se non nel database che pero' *usano* e *non implementano*.
Quindi, basta che un gestionale usi un buon DBMS.
Altri punti potrebbero essere minimamente migliorati utilizzando assembly,
ma e' non ne vale la pena. Infatti non saranno mai quei punti a rallentare
un gestionale e scrivendoli in assembly si aumenterebbero i costi, il tempo
richiesto per l'implementazione e per il testing; inoltre si abbasserebbe la
portabilita'.
Tommy

proprio d'accordo.
ascolta Giuseppe,
non quoto nemmeno il tuo post perchč quello che scrivi č vero, nel senso
che non č falso.
Di fatto tutto quello he hai esposto non serve a nulla in un gestionale.
Un gestionale č un programma che passa il 99,9999999 del tempo ad
aspettare l'utente, andare ad ottimizzare il codice in modo che risparmi
4 righe di codice  macchina non sole č inutile  (fossero anche 400), č
controproducente.
Se lavori su sistemi embedded saprai che il 99% del codice č C e si
ricorre ad asm se proprio č necessario, ma necessario veramente.
Va bene se uno studentello si diverte a farsi il programmino che ordina
le sue videocassette. Punto.
Qui si parlava di programmazione vera, oppure no?

 dell'assembler.
  Personalmente, non sono d'accordo.
  P.
-- 
<!--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                      The Hacking Pages   
 
www.lulli.net
 
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-->

 altri libri.
 
 
accu.org
 (credo)


 il
	[...]
 
	Io credo di ricordare che scrivesse ovunque: 
	void main()


non sara` mai un vero ingegnere. :)
Non capisco cosa c'entri, sono due casi completamente diversi.
L'importante e' che chi fa le moltiplicazioni conosca la teoria, poi
quale strumento utilizzi non ha importanza.
---
acc(at)
libero.it

spiega spiega che mi faccio due risate.
Mi sa che hai sbagliato NG, perche' non te ne torni su IDF da dove sei
venuto?
---
acc(at)
libero.it

controproducente.
Il data-entry e' soltanto una parte del gestionale, non penserai che
io mi metta ad ottimizzare in Asm le schermate?
Il gestionale che sto sviluppando (gia' operativo da due anni nella
azienda per cui lavoro) esegue anche delle elaborazioni spesso
piuttosto corpose, comprende archivi di piu' aziende e funziona in
rete locale.
Prima veniva utilizzato un software scritto in Cobol che nella maggior
parte delle elaborazioni bloccava tutti gli archivi, precludendo la
possibilita' di lavorare anche agli operatori che lavoravano su altre
aziende, l'elaborazione piu' pesante richiedeva circa un'ora e mezza.
Adesso l'elaborazione piu' pesante richiede circa 1 minuto e mezzo.
Oggi il lavoro di un anno lo facciamo in tre mesi.
---
acc(at)
libero.it

rimane sia il tipico caso di pochi calcoli su molti dati.
Nella maggior parte dei casi e' cosi', per cui non ha senso
ottimizzare, ma ci sono casi in cui i calcoli non sono pochi.
---
acc(at)
libero.it

Mah..... no comment.
Vedi Tommy, il fatto e' che Giovanni prima afferma di non sapere di
preciso cos'e' un gestionale, per poi discutere sull'utilizzo dell'Asm
in questo campo, cosa che quantomeno implica la consapevolezza di cosa
sia un gestionale!
Sul momento ho avuto l'impressione (sbagliata) che volesse soltanto
prendermi per il c..o, e se hai letto tutto il thread non sarebbe il
primo.  Non che la cosa mi tocchi piu' di tanto, quello che non mi va'
e' vedere della spazzatura su un thread che e' gia' abbastanza OT.
---
acc(at)
libero.it

Quindi, basta che un gestionale usi un buon DBMS.
I DBMS attuali sono ottimi per applicazioni remote, in ambito locale
(LAN) preferisco altre soluzioni piu' performanti, inoltre disponendo
di PC in rete e' preferibile usare anche le risorse delle workstation
per certe elaborazioni piuttosto che scaricare tutto sul server.
---
acc(at)
libero.it

esistano.
Come fai a dire una cosa del genere senza avere neppure visto le
segretarie ?
---
acc(at)
libero.it

Abbiamo capito che ti piace che ti si dia ragione.....
Erano soltanto delle battute... Il fatto e' che certi argomenti su
questo NG sono quasi tabu', questo almeno in apparenza, quello che
invece mi fa piacere e' sentire che non sono l'unico pirla che si
sbatte con certe diavolerie. ;-)
---
acc(at)
libero.it

 e' vedere della spazzatura su un thread che e' gia' abbastanza OT.
No, hai ragione, prendersi in giro non e' bello.....
In un NG bisognerebbe discutere pacificamente ma putroppo spesso non ci si
riesce, vedi questo thread ;-)
Giovanni mi e' sempre sembrato una persona seria. Probabilmente hai letto
con tono sbagliato il suo primo messaggio, capita.
Del resto hai ragione questo thread sta diventando OT e francamente sempre
meno interessante. Speriamo che si calmino le acque.... (e sfortunatamente
mi sono reso partecipe anche io ;-)
Tommy

 
Allè! Qui si esagera: NO, scrive int main(void) o gli mette gli 
argomenti, spiegando in entrambi i casi il perchè.
		ciao, rz.

> Questione di opinioni.
1° Non litigo
2° Quello che tu pensi e' irrilevante, contano i dati di fatto sulle
tecnologie impiegate per lo sviluppo
3° Spari esempi a caso
4° Non sei in grado di dare consigli.
resta con le tue strutture "strampalate" in C... parole tue.
Ultimo, io vado dove cazzo mi pare....

, mrzac ha
scritto:

  No, no, nella mia edizione mette ``void main() '' ed a tutto 
  spiano, altrochè !


 argomenti, spiegando in entrambi i casi il perchè.
certo per i sistemi operativi Unix e derivati e' vero ma per il resto del
mondo no.
Fai te che su alcuni sistemi Embedded non esiste nemmeno la procedura
chiamata "main"....

chiamata "main"....
   Ovviamente quei sistemi non sono conformi allo standard in vigore
da prima che mi cadessero i capelli. :)
-- 
S.L.

 da prima che mi cadessero i capelli. :)
Veramente la situazione e' un po' piu' articolata: lo standard prevede 
due ambienti di esecuzione "freestanding" e "hosted". Nel primo (in cui 
l' esecuzione del programma C puo' non prevedere l' esistenza ed il 
beneficio di un S.O.) *nome* e *tipo* della function chiamata all' 
inizio del programma sono "implementation-defined".
*Se* invece c'e' un ambiente "hosted" allora
1. la function chiamata all' inizio del programma DEVE chiamarsi main
2. il suo prototipo DEVE essere
     int main(void);
    oppure
     int main(int argc, char *argv[]);
Nota: nel caso 2 ,di quale debba essere il S.O. nello standard non se ne 
parla. Ergo, "int main(void)" NON e' una richiesta  di Unix ma un 
obbligo con qualsiasi OS (se si vuole restare nello standard C).
Giorgio

 parla. Ergo, "int main(void)" 
Ovviamente volevo dire "int main(...)


inizio del programma sono "implementation-defined".
   Insieme ai capelli mi cadono anche i neuroni. Non me ne ricordavo
per niente. :)
-- 
S.L.

 
Evidentemente non hai quella che ho io: l'ultima, la terza per l'Italia 
e la quarta per gli U.S.A. (vado a memoria).
		ciao, rz.

, mrzac ha
scritto:

  Una precisazione: che sia sbagliato, non lo metto mica 
  in dubbio :-)
 
  Che Schildt abbia poi corretto il libro, buon per lui. 
