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

Che mi dite del nuovo standard C99 con i nuovi tipi, le nuove funzioni etc
etc? Che considerazioni fareste?

etc? Che considerazioni fareste?
Lo standard è disponibile gratuitamente da qualche parte?
Lanugo

"Lanugo of the wandering souls" <lan...@SCEMOCHISPAMMAflashmail.com> ha
scritto nel messaggio
news:ym_C6.95795$ZT1.5...@e420r-sjo3.usenetserver.com...

In che senso? Io quest'estate ho comprato un libro della McGraw Hill, *C la
guida completa III edition* di Schildt, dove l'autore parlava di questo
nuovo standard che introduce nel nuovo C, alcuni nuovi tipi fondamentali
come i Complex, i puntatori restrict, e altre cose che non ricordo! Con
questo c'é una nuova definizione dei tipi booleani e schifezze varie che a
mio avviso hanno denaturato in parte il linguaggio!! Sinceramente ammetto la
presenza di int char, short double, perché fanno parte delle operazioni base
della macchina ... ma che senso ha definire come tipo base i Complex, quando
possono essere benissimo simulati con 2 double? NOn ha senso ... nella CPU
non ci sono istruzioni per la computazione di questi numeri ... il C non era
forse quel linguaggio ad *alto livello* (per modo di dire) che rispecchiava
le operazioni della macchina?
Prova a vedere sul sito della McGraw Hill o cerca in rete!

Prova a vedere sul sito della McGraw Hill o cerca in rete!
No, non lo fare.
Quel libro e' pessimo.

Io sinceramente non sono d'accordo!! SE proprio volevano arricchirlo con
altri costrutti e tipi, lo potevano benissimo chiamare in un modo diverso da
C! E' come far diventare il C++ la copia perfetta del JAVA!!! Prendi come
esempio altri linguaggi come il mitico LISP: All'inizo si scrivevano le
operazioni in un certo modo e poi hanno fatto di deghejo introducendogli
cicli for e while manipolando il suo paradigma funzionale!! Un linguaggio
funzionale deve restare funzionale, cosě come uno procedurale resta
procedurale!! Ma non mi pare giusto che su quello funzionale si introduca
dei costrutti che mi fanno deviare dalla logica prevista dal linguaggio!!!
IL C era fatto per aver un controllo totale della macchina, cosě come lo si
aveva con l'ASM. il fatto di non mettere i Complex, secondo me ha senso, in
quanto esistendo molti metodi x risolvere lo stesso problema, su un progetto
si potrebbero avere esigenze diverse e quindi Complex implementati
diversamente!
IL Libro che ho preso, č stato corretto e riveduto. NOn ci sono errori, e a
mio avviso č molto dettagliato!!

 errori, e a mio avviso è molto dettagliato!!
se volessi essere cattivo, direi "questo spiega molte cose", ma non lo 
faro'.

 ha scritto nel messaggio
news:1830471.G...@tin.it...

Cosa?

mio avviso č molto dettagliato!!
Non ci giurerei.
Conta il numero di NOT RECOMMENDED su 
www.accu.org
 a riguardo di
Herbert Schildt.

> >> Lo standard è disponibile gratuitamente da qualche parte?

Concordo anch'io con quanto dice Pluto. Non tanto riguardo al libro in
questione, bensì ai concetti che ha proposto sul C. Personalmente mi sembra
che ci sia qualcuno nello standard che voglia far diventare il C come il
C++. C'è già tale linguaggio che è venuto come un miglioramento a qualcosa
che andava bene e si è potuto tranquillamente constatare che i risultati in
molti casi non sono stati dei migliori. L'OOP del C++ è un ottimo esempio di
ciò che voglio esprimere.
Se è l'alto livello quello che i programmatori vogliono, allora vedrò di
realizzare un software dove il "programmatore" dice vocalmente all'ambiente
che vuole un programma composto da x elementi grafici, che deve avere un y
scopo e lascia che sia l'ambiente stesso a fare il lavoro per lui :-). Bel
divertimento.
Venghino, signori, venghino, il programma che vi fa diventare esperti di
informatica lo trovate solamente nei negozi xxxx. :-)
Non dimentichiamo un vecchio detto di Norton "la programmazione non viene
per rendere più economico un processore per ciò che concerne la stesura del
codice".
Con la filosofia de "andiamo sempre più verso l'alto livello" arriveremo
dove tutti i cretini e i fessi potranno fare i programmatori. Faremo quindi
lo stesso gioco di MS che realizza programmi facili per tutti i cretini
dell'informatica e fa incavolare quello che vorrebbe realizzare cose serie.
Esistono così tanti linguaggi ad alto livello, perché quindi aggiungerne uno
che veniva considerato e stimato dai più, specialmente introducendo
paradigmi come la OOP che in molti casi sono solamente astrattismi che si
intromettono nella programmazione per renderla più facile.
Si utilizza il C per i progetti d'intelligenza artificiale proprio perché è
vicino al modo di ragionamento della macchina, dove un eventuale inserimento
di elementi che si avvicinano al nostro modo di pensare risulterebbero
inutili.
Molti di voi si lamentano del Visual Basic perché è troppo semplice e pieno
di bachi, ma non siete neppure capaci  di capire che con queste innovazioni
si potrebbe soprannominare il C con Visual Basic++.
Se voglio l'alto livello lo ricerco in altri linguaggi, se voglio la potenza
e l'efficienza la trovo in ASM o in C.
Non dimentichiamo che il linguaggio assoluto non esiste e mai esisterà.
Saluti.

si potrebbe soprannominare il C con Visual Basic++.
Non conosci il C se affermi una cosa del genere.

 Non conosci il C se affermi una cosa del genere.
Lo conosco abbastanza per poter dire che queste modifiche lo potrebbero far
diventare uno strumento assai peggiore del VB.
Lungi da me affermare che per come è adesso sia uguale al Vb, su questo
siamo entrambi d'accordo.
PS: non vorrei che tu l'avessi presa come una critica nei tuoi confronti.
Lungi da me questo intento e se ti ho offeso ti chiedo scusa.
Comunque mi fa piacere discutere con te. Attendo una tua risposta.
Ciao.

 Non conosci il C se affermi una cosa del genere.
Lo conosco abbastanza per poter dire che queste modifiche lo potrebbero far


diventare uno strumento assai peggiore del VB.
Non credo si corra questo pericolo.

 Non credo si corra questo pericolo.
Come fai ad essere così ottimista? D'accordo che sono i migliori conoscitori
del linguaggio quelli che presiedono allo standard, ma i pastrocchi vengono
fatti sia dall'esperto che dal novizio. L'unica cosa che cambia e la
frequenza degli stessi tra i due.
Ciao.

Mi dispiace, ma se ragioni in questo modo allora non potrai mai fare un'IA.
Scusa, ma tu cosa intendi di preciso con IA?
Lanugo

> Scusa, ma tu cosa intendi di preciso con IA?
Hai ragione, in effetti sono stato assai vago. Il progetto che intendevo con
IA comprendeva la stesura di eventuale algoritmo che simulasse il
comportamento di una rete neurale e non solo.
Non voglio entrare nei dettagli dei concetti come Fuzzy Logic e Reti Neurali
che sarebbero OT . Inoltre sicuramente non sono nuovi.
Sapete benissimo che lo scopo di una rete neurale è stato quello di ideare
una nuova spinta, diciamo, a come veniva trattata l'informazione nell'IA
classica.
Scopo di una RN è quello di generare codice in un certo linguaggio, per ovvi
motivi viene utilizzato il C in quanto si avvicina di più alla macchina -
dopo l'ASM -, ma esistono anche reti neurali che si avvalgono di altri
linguaggi come il Pascal, o il Basic. Raramente si scelgono linguaggi ad
oggetti in quanto sono un po' più complicati da gestire. Inoltre bisogna
considerare che i risultati non sono ancora così soddisfacenti, anche se di
progressi se ne sono fatti, ed utilizzare sarebbe come gettarsi per tre
volte la zappa sul piede dato che già con le consuete variabili ci si
impantana.
Sicuramente non bisogna dare credito a quelli come l'autore di ELOISA, per
netiquette evito di dire il nome anche se è risaputo, che va in giro dicendo
le più grandi panzane sul suo software comunicandomi via e-mail, dato che ho
avuto modo di conversare direttamente con lui, che utilizza il VB perché le
nuove opzioni di compilazione sono più efficienti di quelle del C ed ASM!!!.
Per l'applicativo della rete stessa si preferisce ancora il C non tanto per
un atto di sfiducia verso il suo successore, bensì a causa della stragrande
maggioranza dei compilatori che non eseguono sul codice C++ le
ottimizzazioni adeguate.
Di recente si sta sviluppando un nuovo progetto, quello a cui pensavo nelle
news precedenti,  che invece di limitarsi a gestire l'informazione, la
distorce - ovviamente non prendete in senso stretto la parola -, simulando
quella che potrebbe essere la fantasia umana. Però si deve lavorare, ai
primi tempi, al più basso livello possibile sia per non appesantire il
"motore" della stessa e sia perché è la filosofia che accompagna l'idea che
lo richiede.
Ciao.

 lo richiede.
Io stesso sto cercando di sviluppare un interprete per un linguaggio che mi
permette di scrivere software per IA. Ho trovato che la soluzione in C è
molto + semplice di quella in C++ tramite il quale avrei speso come minimo 1
o 2 anni solo per progettarne la struttura dati.
A mio avviso, le cose stanno in questo modo: e' verissimo che noi non siamo
+ programmatori pannellisti, ma è anche vero che in fin dei conti il nostro
ben caro computer di casa, ragiona sempre e cmq come una volta. Funziona
sempre con i bit presi a gruppi di 16 o 32 bit che alla fin fine
costituiscono la semplice e singola istruzione della macchina ... ma oltre a
quello, la macchina non è capace di leggere altro!! Solo codice macchina.
Poi sono stati fatti degli eventuali astrattismi, si è creato l'ASM che non
è altro che la fotocopia del linguaggio macchina, visto in un altro modo ...
poi il C che astrae leggermente di + il linguaggio e poi tutto il resto! Il
C++, è una cosa che effettivamente non si sa a che livello potrebbe stare
per via del suo multi paradigma...e naturalmente secondo me, all'ultimo
livello ci stanno i linguaggi che simulano quello umano (o che perlomeno ne
hanno la pretesa) tipo ROSIE, KRL e altri. Se voglio sviluppare un progetto
orientato all'Hardware userò il C o l'ASM, se voglio fare un applicativo
commerciale, posso scegliere tra VB, VC++ e DELPHI (e quant'altri ancora
dello stesso livello), se voglio fare un bellissimo progetto di IA, beh, la
ci sono le varie scelte. C'é chi usa il LISP per la sua plasmabilità e
omogeneità della struttura dati, chi il PROLOG, chi tanti altri, chi il VB
(facendo una porcata) e chi il C per motivi di ragionamenti *spinti*, vale a
dire, cercare di far fare alla macchina dei ragionamenti ad elevata velocità
che ad esempio non si avrebbero con il LISP data la natura di
interpretazione. Certo che poi tutto è relativo, ma la velocità e
l'efficienza della macchina sta sempre e cmq nell'ottimizzazione che sta
alla base. IO stesso, per il mio linguaggio x l'IA, ho scelto di usare il C,
in modo tale che se riuscissi ad implementare un SW di autoragionamento
(vale a dire che se il SW è capace di ragionare ...) sarebbe stato in grado
di automodificare il codice C dell'interprete in modo tale da farlo
diventare sempre + potente e complesso con quelle ottimizzazioni tanto
bramate che in questo contesto mi sa tanto che sono + che necessarie!
Pensate, fare un SW che autogenera codice C è un conto, ma che poi sia
capace di ottimizzarlo, è tutt'altra difficoltà!

 ha scritto nel messaggio
news:3ae04f17...@news.libero.it...

Bhe ... che sia ostico questo č normale, visto che l'autore ha la pretesa di
spiegare tutto lo standar C e le innovazioni al C99 ... ma che faccia
schifo, non mi pare proprio!! probabilmente non lo raccomandano per
l'elevato livello di programmazione necessario ad affrontare tale libro!!

 Scopo di una RN č quello di generare codice in un certo linguaggio,
Ma quando mai! Informati bene...
EMG

l'elevato livello di programmazione necessario ad affrontare tale libro!!
Non lo raccomandano per l'elevato numero di errori e cattive
interpretazioni presenti.

 Ma quando mai! Informati bene...
Scusa se ti contraddico, ma...
Perfettamente d'accordo con te che una rete neurale non ha il solo scopo di
generare codice, dato che si occupa di creare ad un determinato input un
certo output in modo da creare una simulazione artificiale di una mente
umana.
Ma, dopo che viene fatto il cosiddetto addestramento e successivamente il
test per verificare se l'informazione può essere trattata in quel
determinato modo, non si passa alla generazione di codice in un determinato
linguaggio, che in molti casi è il C/C++?
D'accordo, avrò fatto una sintesi inefficace,
ma si poteva, secondo te, fare un discorso completo - sicuramente non è
quello scritto sopra - in un newsgroup dove si tratta di C standard?
Ciao.

Herbert Schildt.
Tra tutti i libri di Shildt gli unici che non sono flaggati come NOT
RECOMMENDED sono quelli sostituiti da una nuova (e peggiore) versione
:P
On Tue, 24 Apr 2001 07:56:36 GMT, 
walkie...@libero.it
 (Andrea
Laforgia) wrotg:

Per lui standard = come piace a lui... leggiti su
http://www.lysator.liu.se/c/schildt.html
 le maree di vaccate che ha
sparato sul C e poi pensa a quante cose potrebbe aver detto sul C99...
vi vengono i brividi solo a pensarci.
Paolo

ottimizzazioni adeguate.
Questa affermazione mi lascia davvero perplesso. E' difficile confrontare il
grado di ottimizzazione attuato da un compilatore C e da un C++. Parlando di
compilatori in grado di capire sia il C che il C++ (come ad esempio la suite
egcs, che a quanto mi risulta usa solo "back-end" diversi per C e C++,
mantenendo lo stesso core - non ne sono per nulla sicuro) mi aspetto che il
livello di ottimizzazione sia il medesimo; se invece riscrivo il codice
secondo il paradigma ad oggetti probabilmente la differenza di prestazioni
non è da imputarsi al livello diverso di ottimizzazioni.
Spero che il gruppo tolleri questo OT,
Lanugo

 non è da imputarsi al livello diverso di ottimizzazioni.
Il problema è che molti compilatori eseguono ancora ottimizzazioni
sicuramente valide in un linguaggio strutturato come il C, ma in uno ad
oggetti come il suo successore sono del tutto inopportune.
Non è nemmeno nuovo che molti programmatori abbiano declinato il C++ a causa
dell'overhead imposto non dal linguaggio, bensì dallo strumento di
compilazione.
Ciao.

 partecipante alla rete, pertanto ti rimando al post in questione.
Se ti riferisci a me, io la tua risposta non l'ho mai letta. Quando
l'hai inviata? Se ne tieni ancora una copia me la manderesti in e-mail?
EMG

compilazione.
Sarà una mia impressione (non ho fatto test molto accurati), ma i
compilatori C++ possono fare poco per rallentare un programma, a meno che
questo non usi features che obblighino ad inserire overhead (RTTI,
erediterietà con virtual (non ricordo il nome giusto), etc.). E' altresì
vero che un compilatore può non implementare alla perfezione questi
elementi, o magari è obbligato a non implementarli nella maniera più
efficiente possibile perché deve farlo in maniera generale, ma è anche vero
che scrivere in C una cosa del genere comporta perdite di tempo più o meno
grandi e qualche overhead lo stesso.
L'unico caso in cui può essere utile riimplementare cose del genere è quando
serve un supporto ma più specializzato, e questa specializzazione porta alla
possibilità di implementare ottimizzazioni o risparmi che il compilatore non
prevede.
La mia impressione è che comunque in grandi sistemi, se questi vengono
scritti da persone competente e soprattutto se vengono progettati bene, la
differenza fra C e C++ sia piccola, direi attorno all'ordine del 15% (sparo
cifre assolutamente a caso, correggetemi!).
Torniamo però al punto principale: perché si preferiscono linguaggi di basso
livello a linguaggi di altro livello, alla fine? Per mancanza di
ottimizzazioni? Perché è più facile far generare ad una macchina codice C
piuttosto che C++? Non ho ancora capito :-/
Lanugo

 piuttosto che C++? Non ho ancora capito :-/
Le ragioni principali sono due, peraltro criticabili:
1) un oggetto implica più cose da modificare piuttosto che una consueta
variabile. Se noi addestriamo un Rn e gli facciamo produrre codice C e poi
ci accorgiamo, continuando ad addestrare, che alcuni elementi -come una
variabile- sono da eliminare, ciò risulta più facile con le variabili
piuttosto che con un oggetto.
Es:  abbiamo generato 20 variabili di tipo char, le cui prime 10 sono
inutili. Ci risulta molto più facile eliminare solo le prime dieci piuttosto
che andare a modificare un fantomatico oggetto di classe xxxx contenente 20
variabili char, implicando così la modifica della classe e delle relative
istanze create.
2) molti programmatori conoscono solo il C - sfortunatamente - o
preferiscono talvolta l'approccio a Java per motivi di semplicità.
Non è del tutto esatto però che una soluzione a basso livello sia più
efficiente di una ad alto, ma anche l'esatto contrario non è sempre
verificato. Come dice EMG si può avere anche il linguaggio più semplice del
mondo e ridursi ugualmente a scrivere baggianate.
Inoltre l'efficienza di un linguaggio non è solo basata sullo stesso, ma
anche sullo strumento che si utilizza, e qui si ritorna alla discussione
precedente sulle ottimizzazioni tra C/C++.
Se si riuscesse a realizzare un compilatore VB come si deve, ovvero in modo
da eguagliare - se non superare - quelli del C, in fatto di efficienza e
velocità del codice, metterei sicuramente la mano sul fuoco che C verrebbe
abbandonato.
Ciao.

 istanze create.
Scherzi? E' esattamente il contrario. Se le variabili di cui parli sono
ben incapsulate in una classe allora possono essere eliminate senza
alcuna ripercussione sul sorgente che utilizza la classe stessa. Questo
è uno dei motivi per cui è nata la OOP, no?
EMG

 è uno dei motivi per cui è nata la OOP, no?
Bisognerebbe prima verificare che siano ben incapsulate.
Scherzi? Nella mia scuola c'è una rete neurale sviluppata con le due
filosofie ANSI C e ANSI C++. Nella seconda c'è un appesantimento in velocità
di circa 5,764 secondi nella fase di apprendimento e di generazione.
Questo lo classifico come appesantimento.
PS: credo che ormai i nostri post possano essere classificati con il subject
"guerra di religione".
Ciao.

 "guerra di religione".
Non direi. Mi sono limitato a correggere un'imprecisione.
EMG

 Non direi. Mi sono limitato a correggere >un'imprecisione.
E' vero, ma č palese che abbiamo un debole per un linguaggio differente.
Difficilmente si resta imparziali - senza offesa -.
Ciao.

 Difficilmente si resta imparziali - senza offesa -.
Per quanto mi riguarda non è vero. Ho studiato il C molto prima del C++
e apprezzo moltissimo entrambi. Posso sbagliare, ma se sento delle
inesattezze le correggo.
EMG

Posso sbagliare,
Sicuramente, ma con una frequenza dello 0,1 %, perň.
Ciao.

Questo lo classifico come appesantimento.
dipende da come sono stati scritti. Può anche essere codice C++, ma se
è scritto da cani... allora era meglio scriverlo bene in VB ;-)
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 Sicuramente, ma con una frequenza dello 0,1 %, però.
Purtroppo è molto ma molto più alta... :-(
EMG