Post by mrntPost by Angelo PaolittoSe il tono e' stato sgradevole me ne scuso: mai rispindere 5 minuti
prima di spegnere la macchina, si capisce "imparare a programmare"
invece che "voglio realizzare un programma, datemi le istruzioni
passo passo"
perché alla prima domanda secondo te bisogna rispondere male in un NG come
questo? e alla seconda invece avresti risposto bene in un NG come questo?
Le risposte, in ogni caso, sono diverse.
Post by mrntse a lui serve potenza e gli interessa diventare un esperto e conoscere a
fondo il funzionamento del suo sistema allora come primo linguaggio il C
fa per lui (in C sono stati creati importanti sistemi operativi).
Se ha voglia di diventare un esperto programmatore, il linguaggio di
programmazione e' una delle ultime cose di cui preoccuparsi.
Se vuoi ti spiego anche il perche'.
Post by mrntaltrimenti (ipotesi da non scartare, e non sono ironico) può iniziare da
Java o da un altro linguaggio ad alto livello al fine di impadronirsi dei
concetti fondamentali della programmazione in qualsiasi linguaggio (array,
stringhe, interi, numeri a virgola mobile, classi, oggetti, metodi
virtuali, ecc.); si tratta solo di due approcci diversi alla
programmazione.
Se uno vuole "impadronirsi dei concetti fondamentali della
programmazione" la prima cosa da fare e' conoscere la macchina su cui
si trova ad operare, la seconda e' conoscere il S.O. su cui il
programma gira... Ovvero le prime due cose che ho scritto nella mia
risposta.
Programmare NON E' scrivere righe di codice.
Post by mrntPost by Angelo PaolittoSpesso si propende per il VisualBasic
(che bistratti piu' sotto) per la facilita' di utilizzo.
sono in molti a bistrattarlo e ovviamente io posso solo dirti che fanno
tutti bene.
Sara', ma spesso e volentieri ti chiedono se sai programmare in
VisualBasic.
Post by mrntcome faccio a farmi molto male con quella cosa, aldilà del fatto che è
comunque sbagliata a livello concettuale e che io non l'ho mai scritta?
Passando dal C++ a C e "scoprendo" la meraviglia che ti ho mostrato? Io
conosco di persona il fesso a cui la cosa e' capiata.
Post by mrntnon interessano di certo a uno che inizia, ma le terrò comunque presenti.
Allora non gli interessa nemmeno farsi la convinzione (sbagliata) che
C++ e C siano l'uno il sovrainsieme dell'altro.
Post by mrntnon hai le funzioni virtuali, non hai private public e protected, non hai
niente... hai solo la possibilità di ereditare (e non so se è possibile
solo con le estensioni Microsoft o anche senza)... chiamala come ti pare
ma quella per me non è programmazione a oggetti...
Assurdo o meno che ti sembri, quella e' programmazione ad oggetti. E
programmando in C e' un approccio che consiglio (oltre che usare
personalmente)...
Utilizzando un qualcosa tipo
objType* objType_create(void);
e
void objType_destroy(objType*);
si evitano un sacco di casini... Ad esempio crash del programma dovuti
ad una malloc() in una DLL e la free() in un'altra e la perdita di una
settimana per capire perche' la stessa cosa sotto Linux (ad es.) non
succede.
Post by mrnt... le vtable come le fai,
a mano?
Qualcosa in contrario?
Giusto per precisare... Io non sostengo che programmare ad oggetti in
C facendosi a manina la vtab sia una cosa furba, ma quando ti trovi a
mettere le mani su del codice da 1'500'000 di righe, cosa fai? Ti
rifuiti di lavorarci sopra perche' NON e' ad oggetti (e per me e'
anche una cazzata)...
Anche qui conosco di persona il fesso a cui la cosa e' capitata...
Post by mrntsul piano delle innovazioni nei linguaggi di programmazione la
programmazione a oggetti la considero abbastanza moderna (parlo di quella
"vera", non quella fatta con struct al posto di class e le vtable
realizzate con gli array...)
http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
<cite>
SIMULA I (1962-65) and Simula 67 (1967) are the two first
object-oriented languages. Simula 67 introduced most of the key
concepts of object-oriented programming: both objects and classes,
subclasses (usually referred to as inheritance) and virtual
procedures, combined with safe referencing and mechanisms for bringing
into a program collections of program structures described under a
common class heading (prefixed blocks).
</cite>
Post by mrntil concetto di "libreria nativa" (che corrisponde a DLL in Windows e
oggetto shared in Unix) è portabile: se un programma Java usa JNI per
caricare una libreria nativa, per far funzionare il programma è necessario
che esistano due versioni della libreria: la DLL e l'oggetto ELF, e allora
il programma è portabile.
Appena trovo user32.lib sotto Linux comincero' a pensare che tu abbia
ragione (e per piacere evita di tirare in ballo wine, non e' troppo
difficile fare qualcosa che con wine non funziona nemmeno con
preghiere in aramaico stretto).
Post by mrntsempre meglio di tanti altri linguaggi in cui è necessario compilare due
volte anche l'eseguibile principale (oltre alla "libreria nativa")... :)
Tu hai una pessima idea di cosa significhi portabile...
printf("a = %d, a+b = %d"\n", a++, a++ + b++);
secondo te e' una istruzione portabile?
Post by mrntper "Microsoft Java" intendevo dire scherzosamente un linguaggio Microsoft
per molti aspetti simile al Java.
Ottimo discorso da fare a qualcuno assolutamente digiuno di tutto
quello che riguarda la programmazione.
Come programmatore assembler non valgo gran che, ma basta che ci siano
due modi di accesso alla memoria identificati dall'unico menemonico
mov, per smentire la tua affermazione che l'assembler e 1-1 con il
codice macchina (ed e' quasta la contestazione che ti ho fatto).
Post by mrntPost by Angelo PaolittoPerche' non il compilatore della Borland o di Microsoft (che si
possono scaricare liberamente per uso non professionale) e l'IDE
ce l'hanno gia'?
chi?
I compilatori della Borland e della Microsoft...
Post by mrntse vuole può scaricare quelli, ma il gcc è meglio perché può farci
qualsiasi cosa per qualsiasi scopo...
Infatti... e fino a quando scrive
gcc -g -o pippo.exe pippo.c
non ha grossi problemi... E quando scrive gdb che cominciano i casini.
Post by mrnt... (almeno credo, non me lo sono letto
il papocchio di licenze, politica, legge e tutto quel pappone là mi
interessa poco).
Ottimo! Dovresti farlo se sei un programmatore: consegnare un
programma di cui il committente potrebbe essere costretto a rilasciare
i sorgenti non e' una cosa buona (per il committente, ovvio).
C:\>iao Angelo
P.S. Per inciso, con gcc non sei costretto a niente. Il tuo bravo
sorgente puo' tranquillamente rimanere chiuso (questo e' valido
sicuramente se il sorgente e' tutto e' tutto tuo, potrebbe non esserlo
se usi altri strumenti rilasciati sotto GPL)... Ma io lo so perche' la
licenza l'ho letta.
Post by mrntPost by Angelo PaolittoSe il tono e' stato sgradevole me ne scuso: mai rispindere 5 minuti
prima di spegnere la macchina, si capisce "imparare a programmare"
invece che "voglio realizzare un programma, datemi le istruzioni
passo passo"
perché alla prima domanda secondo te bisogna rispondere male in un NG come
questo? e alla seconda invece avresti risposto bene in un NG come questo?
Le risposte, in ogni caso, sono diverse.
Post by mrntse a lui serve potenza e gli interessa diventare un esperto e conoscere a
fondo il funzionamento del suo sistema allora come primo linguaggio il C
fa per lui (in C sono stati creati importanti sistemi operativi).
Se ha voglia di diventare un esperto programmatore, il linguaggio di
programmazione e' una delle ultime cose di cui preoccuparsi.
Se vuoi ti spiego anche il perche'.
Post by mrntaltrimenti (ipotesi da non scartare, e non sono ironico) può iniziare da
Java o da un altro linguaggio ad alto livello al fine di impadronirsi dei
concetti fondamentali della programmazione in qualsiasi linguaggio (array,
stringhe, interi, numeri a virgola mobile, classi, oggetti, metodi
virtuali, ecc.); si tratta solo di due approcci diversi alla
programmazione.
Se uno vuole "impadronirsi dei concetti fondamentali della
programmazione" la prima cosa da fare e' conoscere la macchina su cui
si trova ad operare, la seconda e' conoscere il S.O. su cui il
programma gira... Ovvero le prime due cose che ho scritto nella mia
risposta.
Programmare NON E' scrivere righe di codice.
Post by mrntPost by Angelo PaolittoSpesso si propende per il VisualBasic
(che bistratti piu' sotto) per la facilita' di utilizzo.
sono in molti a bistrattarlo e ovviamente io posso solo dirti che fanno
tutti bene.
Sara', ma spesso e volentieri ti chiedono se sai programmare in
VisualBasic.
Post by mrntcome faccio a farmi molto male con quella cosa, aldilà del fatto che è
comunque sbagliata a livello concettuale e che io non l'ho mai scritta?
Passando dal C++ a C e "scoprendo" la meraviglia che ti ho mostrato? Io
conosco di persona il fesso a cui la cosa e' capiata.
Post by mrntnon interessano di certo a uno che inizia, ma le terrò comunque presenti.
Allora non gli interessa nemmeno farsi la convinzione (sbagliata) che
C++ e C siano l'uno il sovrainsieme dell'altro.
Post by mrntnon hai le funzioni virtuali, non hai private public e protected, non hai
niente... hai solo la possibilità di ereditare (e non so se è possibile
solo con le estensioni Microsoft o anche senza)... chiamala come ti pare
ma quella per me non è programmazione a oggetti...
Assurdo o meno che ti sembri, quella e' programmazione ad oggetti. E
programmando in C e' un approccio che consiglio (oltre che usare
personalmente)...
Utilizzando un qualcosa tipo
objType* objType_create(void);
e
void objType_destroy(objType*);
si evitano un sacco di casini... Ad esempio crash del programma dovuti
ad una malloc() in una DLL e la free() in un'altra e la perdita di una
settimana per capire perche' la stessa cosa sotto Linux (ad es.) non
succede.
Post by mrnt... le vtable come le fai,
a mano?
Qualcosa in contrario?
Giusto per precisare... Io non sostengo che programmare ad oggetti in
C facendosi a manina la vtab sia una cosa furba, ma quando ti trovi a
mettere le mani su del codice da 1'500'000 di righe, cosa fai? Ti
rifuiti di lavorarci sopra perche' NON e' ad oggetti (e per me e'
anche una cazzata)...
Anche qui conosco di persona il fesso a cui la cosa e' capitata...
Post by mrntsul piano delle innovazioni nei linguaggi di programmazione la
programmazione a oggetti la considero abbastanza moderna (parlo di quella
"vera", non quella fatta con struct al posto di class e le vtable
realizzate con gli array...)
http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
<cite>
SIMULA I (1962-65) and Simula 67 (1967) are the two first
object-oriented languages. Simula 67 introduced most of the key
concepts of object-oriented programming: both objects and classes,
subclasses (usually referred to as inheritance) and virtual
procedures, combined with safe referencing and mechanisms for bringing
into a program collections of program structures described under a
common class heading (prefixed blocks).
</cite>
Post by mrntil concetto di "libreria nativa" (che corrisponde a DLL in Windows e
oggetto shared in Unix) è portabile: se un programma Java usa JNI per
caricare una libreria nativa, per far funzionare il programma è necessario
che esistano due versioni della libreria: la DLL e l'oggetto ELF, e allora
il programma è portabile.
Appena trovo user32.lib sotto Linux comincero' a pensare che tu abbia
ragione (e per piacere evita di tirare in ballo wine, non e' troppo
difficile fare qualcosa che con wine non funziona nemmeno con
preghiere in aramaico stretto).
Post by mrntsempre meglio di tanti altri linguaggi in cui è necessario compilare due
volte anche l'eseguibile principale (oltre alla "libreria nativa")... :)
Tu hai una pessima idea di cosa significhi portabile...
printf("a = %d, a+b = %d"\n", a++, a++ + b++);
secondo te e' una istruzione portabile?
Post by mrntper "Microsoft Java" intendevo dire scherzosamente un linguaggio Microsoft
per molti aspetti simile al Java.
Ottimo discorso da fare a qualcuno assolutamente digiuno di tutto
quello che riguarda la programmazione.
Come programmatore assembler non valgo gran che, ma basta che ci siano
due modi di accesso alla memoria identificati dall'unico menemonico
mov, per smentire la tua affermazione che l'assembler e 1-1 con il
codice macchina (ed e' quasta la contestazione che ti ho fatto).
Post by mrntPost by Angelo PaolittoPerche' non il compilatore della Borland o di Microsoft (che si
possono scaricare liberamente per uso non professionale) e l'IDE
ce l'hanno gia'?
chi?
I compilatori della Borland e della Microsoft...
Post by mrntse vuole può scaricare quelli, ma il gcc è meglio perché può farci
qualsiasi cosa per qualsiasi scopo...
Infatti... e fino a quando scrive
gcc -g -o pippo.exe pippo.c
non ha grossi problemi... E quando scrive gdb che cominciano i casini.
Di sicuro gcc NON E' MEGLIO perche' puoi farci di tutto, ma perche'
(essendo meno semplice da usare) ti costringe a leggerti i manuali.
Pratica estremamente in disuso ultimamente.
Post by mrnt... (almeno credo, non me lo sono letto
il papocchio di licenze, politica, legge e tutto quel pappone là mi
interessa poco).
Ottimo! Dovresti farlo se sei un programmatore: consegnare un
programma di cui il committente potrebbe essere costretto a rilasciare
i sorgenti puo' non essere una cosa buona se vuoi un'altra commessa.
C:\>iao Angelo
P.S. Per inciso, con gcc non sei costretto a niente. Il tuo bravo
sorgente puo' tranquillamente rimanere chiuso (questo e' valido
sicuramente se il sorgente e' tutto e' tutto tuo, potrebbe non esserlo
se usi altri strumenti rilasciati sotto GPL)... Ma io lo so perche' la
licenza l'ho letta. Io con la programmazione ci campo.
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG