Precedente :: Successivo |
Autore |
Messaggio |
Mick Death Eroe

Registrato: 25/09/05 20:20 Messaggi: 64 Residenza: Italia
|
Inviato: 20 Apr 2009 15:58 Oggetto: |
|
|
controcorrente ha scritto: | C'è solo una differenza: con il COBOL devi SAPER PROGRAMMARE, con gli altri linguaggi no, perchè ti aiutano moltissimo. |
Stai parlando del paradigma ad oggetti? In questo caso, oltre a saper programmare, devi anche saper "smontare" bene la realtà: responsabilità e interazioni tra entità coinvolte, nell'ottica del riuso (o reinventiamo la ruota ogni volta?). Penso che, preso un programmatore abituato all'analisi funzionale e un esperto di risorse umane, sia più facile avere un buon progetto OO proprio dal secondo. |
|
Top |
|
 |
Mick Death Eroe

Registrato: 25/09/05 20:20 Messaggi: 64 Residenza: Italia
|
Inviato: 20 Apr 2009 16:03 Oggetto: |
|
|
controcorrente ha scritto: | freemind ha scritto: | @controcorrente: non avevo visto che intando avevi scritto un altro post quindi riprendo in questo.
controcorrente ha scritto: |
Un giorno mi spiegherai cosa vuol dire "Il paradigma di Cobol è scorretto sotto ogni punto di vista".
|
I listati di cobol che ho visto hanno tutti dei gran goto: tranne in rari casi il goto non va usato.
|
Vero. Ma i nuovi linguaggi non l'hanno, e quindi NON PUOI usarlo anche dove serve. Perchè toglierti una possibilità? Tieni presente che, molto spesso, i listati infarciti di GOTO sono l'n_esima derivazione di un programma scritto 20 anni fa quando anche risparmiare 20 byte era utile... |
Scusate, ma quando vi serve il goto?
Il teorema di Böhm-Jacopini, enunciato nel 1966 dagli informatici Corrado Böhm e Giuseppe Jacopini, afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione ed il ciclo, da applicare ricorsivamente alla composizione di istruzioni elementari (ad es. di istruzioni eseguibili con il modello di base della macchina di Turing). |
|
Top |
|
 |
mda Dio maturo


Registrato: 01/11/06 10:39 Messaggi: 6648 Residenza: Figonia
|
Inviato: 20 Apr 2009 17:05 Oggetto: |
|
|
Ma quale goto è perform che devi usare, certo che se vedi i listati con TROPPI goto ..... Capisciii aaa mee !
Citazione: | The PERFORM command transfers control explicitly to one or more statements and implicitly returns control to the next executable statement after execution of the specified statements is completed. The keywords cannot be abbreviated. |
Comunque se il COBOL era come il PHP3 che è diventato PHP5, questa discussione non esisteva qui sopra !
Ogni esigenza RICHIEDE il suo specifico linguaggio NON esiste un linguaggio che và bene per tutto !!!!
Ciao |
|
Top |
|
 |
digirun Dio maturo


Registrato: 23/03/08 00:37 Messaggi: 1687 Residenza: TOSCANACCIO (salmastroso)
|
Inviato: 20 Apr 2009 17:11 Oggetto: |
|
|
zeross ha scritto: | Quando un professionista serio si ingegna per scrivere linguaggi dedicati a specifiche funzioni come per il COBOL per il commercio, il FORTRAN per le formule scientifiche, ADA per le applicazioni militari critiche, il C per i sistemi operativi ed addirittura il LOGO per imparare ed il BASIC per le applicazioni basiche, allora abbiamo invenzioni destinate a durare forse anche oltre gli uomini o le aziende che li hanno prodotti.
E se nessuno a inventato qualcosa di meglio forse non è solo perché quello che è gia presente va benissimo, ma anche perché la semplice logica commercilae speculativa, e la ricerca del bello e funzionale esasperato a portato a prodotti si affascinanti ma anche complessivamente fragili ed inadatti.
Poco di quello che è stato prodotto dal 1980 ad oggi a dimostrato di durare a lungo o di avere una specifica funzione tale da renderlo insostituibile.
Faccio esempi come il REXX oppure il JAVA, per non dire del FORTH o del PASCAL.
Ci sono anche le eccezioni ma vedere che anche i dinosauri sopravvivono alle invenzioni odierne mi fà tornare in mente un detto sulle piramidi.
L'uomo teme il tempo ma il tempo teme le piramidi.
L'informatica teme il tempo, ma il tempo teme il COBOL! |
Grazie per queste perle di saggezza e verità (che mi risparmiano la fatica di scrivere un mio commento) non c'è bisogno di aggiungere che ti quoto in pieno!  |
|
Top |
|
 |
hungaricus Mortale pio

Registrato: 29/11/05 15:41 Messaggi: 27 Residenza: Trieste
|
Inviato: 20 Apr 2009 19:15 Oggetto: goto |
|
|
Mick Death ha scritto: | Scusate, ma quando vi serve il goto?
|
Il goto va usato pochissimo, ma quando serve guai a non averlo.
Fondamentalmente io l'ho usato in 2 situazioni (in C/C++, perché in Java esiste la parola chiave goto ma il costrutto non è implementato ):
1) (per motivi di leggibilità del codice) quando hai 2-3 cicli annidati e devi uscire dal più interno (una specie di break all'n-esima potenza);
2) (per motivi di performance) se vuoi implementare la chiamata ricorsiva finale.
Citazione: | In computer science, tail recursion (or tail-end recursion) is a special case of recursion in which the last operation of the function, the tail call, is a recursive call. Such recursions can be easily transformed to iterations. Replacing recursion with iteration, manually or automatically, can drastically decrease the amount of stack space used and improve efficiency. This technique is commonly used with functional programming languages, where the declarative approach and explicit handling of state promote the use of recursive functions that would otherwise rapidly fill the call stack. |
Il teorema di Böhm-Jacopini, che citi tu, non si può applicare pedissequamente alla programmazione reale perché non tiene conto di tutti gli aspetti della leggibilità (e quindi della mantenibilità) del codice...
P.S. scusate l'OT ma sono un paladino del "goto quanno ce vò ce vò"  |
|
Top |
|
 |
controcorrente Mortale devoto

Registrato: 28/06/06 10:11 Messaggi: 17
|
Inviato: 20 Apr 2009 21:36 Oggetto: |
|
|
Mick Death ha scritto: | ...
Scusate, ma quando vi serve il goto?
Il teorema di Böhm-Jacopini, enunciato nel 1966 dagli informatici Corrado Böhm e Giuseppe Jacopini, afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione ed il ciclo, da applicare ricorsivamente alla composizione di istruzioni elementari (ad es. di istruzioni eseguibili con il modello di base della macchina di Turing). |
Che una cosa POSSA essere fatta non vuol automaticamente dire che VADA FATTA.
A volte fa comodo"uscire" da questi paradigmi per semplicità e leggibilità di codice.
Io, ad esempio, se devo far terminare in modo brutale un porgramma (ABEND) perchè si è trovato di fronte ad una condizione non gestibile, faccio un GOTO ABEND. Questo mi dice che vado MA NON TORNO.
Se faccio PERFORM ABEND (PERFORM=GOSUB), vuol dire che RITORNO, dopo aver impostato un flag di ABEND A FINE PROGRAMMA ed aver emesso dei messaggi diagnostici (a volte, nei programmi che elaborano molte posizioni, è comodo che gli ERRORI FATALI non vengano segnalati uno per volta ma tutti assieme, per evitare di andare a correggere i dati uno alla volta).
Altre volte un GOTO ti evita di dover mettere una nuova nidificazione. Tieni presente che in COBOL non puoi terminare un "GOSUB" con un "RETURN", ma sei obbligato a raggiungere la fine, quindi un:
GOSUB PIPPO
:PIPPO
IF A < 0 RETURN
...
...
...
RETURN
In COBOL diventa:
PERFORM PIPPO THRU EX-PIPPO
PIPPO.
IF A < 0 GO TO EX-PIPPO
...
...
...
EX-PIPPO.
EXIT.
Altri ti hanno fatto altri esempi.
A proposito: sai come il computer realizza questo:
if condizione then
eseguo1
else
eseguo2
end
proprio così:
if condizione goto e1
eseguo2
goto endif
:e1
eseguo1
:endif
In altre parole, visto che quello è il risultato di una if/else/end, mi spieghi perchè non è strutturato?
Quindi il GOTO, se ben usato, può servire, è solo molto più delicato da maneggiare. |
|
Top |
|
 |
mda Dio maturo


Registrato: 01/11/06 10:39 Messaggi: 6648 Residenza: Figonia
|
Inviato: 20 Apr 2009 22:16 Oggetto: |
|
|
controcorrente ha scritto: |
Che una cosa POSSA essere fatta non vuol automaticamente dire che VADA FATTA.
A volte fa comodo"uscire" da questi paradigmi per semplicità e leggibilità di codice.
(.....)
In altre parole, visto che quello è il risultato di una if/else/end, mi spieghi perchè non è strutturato?
Quindi il GOTO, se ben usato, può servire, è solo molto più delicato da maneggiare. |
Infatti !!!!
Il goto DEVE essere usato da persone esperte ! Il fatto d'eliminarlo (Java prima stesura aveva il goto) è proprio per eliminare la tentazione al pivello d'usarlo !
Ma personalmente io usai il goto proprio per velocizzare alcune procedure, come in altri casi cancellai/sostituii dei goto proprio per la medesima ragione !!!! Bisogna saperlo usare bene !!!
Per esperienza se si nota troppi goto sicuramente NON è stato pensato minimamente il codice prima di scriverlo, viceversa, se non esiste, allora deve essere qualche fissato della "pulizia del codice".
Adesso BASTA CON IL GOTO PERCHè SIAMO ANDATI IN LOOP !!!
Comunque se guardate bene come è fatto il COBOL (al di là del vecchiume) noterete che è un linguaggio molto potente e peccato che pochissimi linguaggi giovani non hanno rubato delle idee. Speriamo che venga ristabilita l'organizzazione per svecchiarlo !
Ciao |
|
Top |
|
 |
Mick Death Eroe

Registrato: 25/09/05 20:20 Messaggi: 64 Residenza: Italia
|
Inviato: 21 Apr 2009 11:04 Oggetto: Re: goto |
|
|
hungaricus ha scritto: | Mick Death ha scritto: | Scusate, ma quando vi serve il goto?
|
Il goto va usato pochissimo, ma quando serve guai a non averlo.
Fondamentalmente io l'ho usato in 2 situazioni (in C/C++, perché in Java esiste la parola chiave goto ma il costrutto non è implementato ):
1) (per motivi di leggibilità del codice) quando hai 2-3 cicli annidati e devi uscire dal più interno (una specie di break all'n-esima potenza);
2) (per motivi di performance) se vuoi implementare la chiamata ricorsiva finale.
Citazione: | In computer science, tail recursion (or tail-end recursion) is a special case of recursion in which the last operation of the function, the tail call, is a recursive call. Such recursions can be easily transformed to iterations. Replacing recursion with iteration, manually or automatically, can drastically decrease the amount of stack space used and improve efficiency. This technique is commonly used with functional programming languages, where the declarative approach and explicit handling of state promote the use of recursive functions that would otherwise rapidly fill the call stack. |
Il teorema di Böhm-Jacopini, che citi tu, non si può applicare pedissequamente alla programmazione reale perché non tiene conto di tutti gli aspetti della leggibilità (e quindi della mantenibilità) del codice...
P.S. scusate l'OT ma sono un paladino del "goto quanno ce vò ce vò"  |
Precisazione: non conoscendo il COBOL, parlavo dell'utilizzo del goto in generale.
Passi anche il discorso delle leggibilità nei cicli annidati (comunque tutto da dimostrare! hai un esempio?), non capisco il discorso delle performance della ricorsione: nella citazione è scritto che la tail recursion può essere rimpiazzata da codice iterativo (strutturato) più efficiente
Quanto alla maggiore manutenibilità e leggibilità del codice data dal goto, ho seri dubbi in merito, anzi direi che, se devo ricorrere al goto per essere più chiaro, vuol dire che ho sbagliato il design del progetto! |
|
Top |
|
 |
Mick Death Eroe

Registrato: 25/09/05 20:20 Messaggi: 64 Residenza: Italia
|
Inviato: 21 Apr 2009 11:10 Oggetto: |
|
|
controcorrente ha scritto: | A proposito: sai come il computer realizza questo:
if condizione then
eseguo1
else
eseguo2
end
proprio così:
if condizione goto e1
eseguo2
goto endif
:e1
eseguo1
:endif
In altre parole, visto che quello è il risultato di una if/else/end, mi spieghi perchè non è strutturato? |
Certo che lo so! Ma che esempio è scusa?!?! Se tu vuoi fare anche da compilatore accomodati  |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11802 Residenza: Tokelau
|
Inviato: 21 Apr 2009 14:49 Oggetto: Re: goto |
|
|
Mick Death ha scritto: | Quanto alla maggiore manutenibilità e leggibilità del codice data dal goto, ho seri dubbi in merito, anzi direi che, se devo ricorrere al goto per essere più chiaro, vuol dire che ho sbagliato il design del progetto! |
Quoto.
E in più avrei da ridire su questo esempio:
Codice: | if condizione then
eseguo1
else
eseguo2
end |
perchè ad esempio un compilatore per ARM potrebbe compilare quanto sopra senza nessuna istruzione di salto (istruzioni condizionali)
Poi, per tornare invece al discorso generale, sono contro le 'guerre di religione' tra linguaggi di programmazione. Che senso ha paragonare il COBOL e il JAVA, scusate? Un linguaggio del '59 con uno del '90?
Boh. |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 21 Apr 2009 15:15 Oggetto: |
|
|
Non è tanto il paragonare il cobol con java ma è un paragone tra paradigmi.
Cobol è molto più vecchio ed è per questo che ritengo debba essere pian pianino abbandonato per cose più nuove e migliori.
Non ricominciamo la polemica, questa è una mia idea, cobol ha fatto storia, ha meritato tante belle cose ma ora basta, non ne vedo l'utilità in lavori nuovi.
Per quel che riguarda il cobol: basta! Ho fatto partire io la polemica ma ora faccio anche chiudere perchè effettivamente si è usciti dal topic.
Se volete splitto così poi possiamo scannarci amorevolmente sui goto, i jump e tutto quello che ci viene in mente! |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11802 Residenza: Tokelau
|
Inviato: 21 Apr 2009 17:30 Oggetto: |
|
|
freemind ha scritto: | Se volete splitto così poi possiamo scannarci amorevolmente sui goto, i jump e tutto quello che ci viene in mente! |
OT
potremmo fare anche noi delle liste da presentare alle Europee
"No GOTO!"
"Sì GOTO!"
"GOTO GRATIS!"
(se avete visto nomi e simboli delle liste presentate capite la battuta...) |
|
Top |
|
 |
Mick Death Eroe

Registrato: 25/09/05 20:20 Messaggi: 64 Residenza: Italia
|
Inviato: 21 Apr 2009 18:53 Oggetto: |
|
|
SverX ha scritto: |
OT
potremmo fare anche noi delle liste da presentare alle Europee
"No GOTO!"
"Sì GOTO!"
"GOTO GRATIS!"
(se avete visto nomi e simboli delle liste presentate capite la battuta...) |
Sì ho visto  |
|
Top |
|
 |
zeross Amministratore


Registrato: 19/11/08 12:04 Messaggi: 8076 Residenza: Atlantica
|
Inviato: 21 Apr 2009 20:37 Oggetto: |
|
|
SverX ha scritto: | ...liste da presentare alle Europee
"No GOTO!"
"Sì GOTO!"
"GOTO GRATIS!"
|
GOTO GRATIS
 |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|