Matematica. La regina delle scienze
 

ricorrenza o ricorsione, questo e' il problema
1 | 2 |

Giorgio Pastore 12 Giu 2017 16:26
Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
differenziazione sia generalmente accettata o se sono io un po'
"deformato" dal punto di vista informatico.

Opinioni ?

Grazie in anticipo

Giorgio
Bruno Campanini 12 Giu 2017 19:08
Giorgio Pastore laid this down on his screen :
> Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
> differenziazione sia generalmente accettata o se sono io un po' "deformato"
> dal punto di vista informatico.
>
> Opinioni ?

Il termine "ricorsione" pare proprio non esistere nei dizionari
della ******* italiana, ciononostante si trova sovente usato
nelle pubblicazioni (più spesso un po' vecchiotte) di matematica,
informatica, etc.

Il termine corretto dovrebbe essere "ricorrenza" col sinonimo,
meno comune, di "ricorsività".
Io uso quest'ultimo, ché "ricorrena" mi fa pensare al giorno
dei morti...

Bruno
Yoda 12 Giu 2017 20:14
Addi' 12 giu 2017, Giorgio Pastore scrive:

> Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
> differenziazione sia generalmente accettata o se sono io un po'
> "deformato" dal punto di vista informatico.

> Opinioni ?

Secondo me non sei << "deformato" dal punto di vista informatico >>, sei
semplicemente americanizzato.

1. ANDATA (condizione necessaria)
Sansoni: ricorsivita
****** ricorsività ******
* s.f.
* recursion, recursiveness (anche Mat,Ling).


2. RITORNO (condizione sufficiente)
Sansoni: recursion
* recursion
****** recursion ******
* n.
* (Ling,Mat,Inform) ricorsività f.


--
bye, Yoda
Giorgio Pastore 12 Giu 2017 23:34
Il 12/06/17 20:14, Yoda ha scritto:
....
> Secondo me non sei << "deformato" dal punto di vista informatico >>, sei
> semplicemente americanizzato.

Mi interessa l' uso tecnico. E anche in inglese. Non e' questione di *******
italiana o di dizionari generalisti.
Alessandro Cara 12 Giu 2017 23:40
Il 12/06/2017 19:08, Bruno Campanini ha scritto:
> Giorgio Pastore laid this down on his screen :
>> Io considero differenti i due termini. Tuttavia ho qualche dubbio se
>> la differenziazione sia generalmente accettata o se sono io un po'
>> "deformato" dal punto di vista informatico.
>>
>> Opinioni ?
>
> Il termine "ricorsione" pare proprio non esistere nei dizionari
> della ******* italiana, ciononostante si trova sovente usato
> nelle pubblicazioni (più spesso un po' vecchiotte) di matematica,
> informatica, etc.
>
> Il termine corretto dovrebbe essere "ricorrenza" col sinonimo,
> meno comune, di "ricorsività".
> Io uso quest'ultimo, ché "ricorrena" mi fa pensare al giorno
> dei morti...

Io invece le uso per indicare 2 cose diverse
a) ricorrenza quando pontific(avo) di array
b) quando pontific(avo) di chiamate, appunto, /ricorsive/ di cui,
spesso, non conosci le condizioni finali
c) c'e' una zona grigia per cui una "ricorrenza" (non la ricorrenza)
e' elemento sia dell'uno che dell'altra.

ma, notoriamente, sono inafffffffidabile e cosa dicono i dizionari mi
interessa relativamente.
Avevo una mia teoria secondo cui le mie "zucchine" (intendesi
programmatori + che junior) non sarebbero cresciute col fiore se non
facevo questa distinzione (avvisandoli della zona grigia)


--
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor *****in-)
Yoda 13 Giu 2017 00:28
Addi' 12 giu 2017, Giorgio Pastore scrive:
> Il 12/06/17 20:14, Yoda ha scritto:

> ....
>> Secondo me non sei << "deformato" dal punto di vista informatico >>, sei
>> semplicemente americanizzato.

> Mi interessa l' uso tecnico. E anche in inglese. Non e' questione di
> ******* italiana o di dizionari generalisti.

E' senza senso questo che dici. Ecco due motivi.

1. Se vuoi creare e usare il neologismo Ricorsione, allora come creatore
lo puoi sapere solo tu che significato dargli. Dunque in questo caso e'
prematuro porre qui il problema, prima devi precisarne significato e uso
tecnico.

2. Se, per ragioni personali che pensi abbiano a che fare con la
matematica, intendi usare tale neologismo al posto di Ricorsivita',
allora qui devi chiedere << Ricorrenza o ricorsivita', questo e' il
problema >>.

--
bye, Yoda
Pangloss 13 Giu 2017 11:18
[it.scienza.matematica 12 Jun 2017] Giorgio Pastore ha scritto:
> Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
> differenziazione sia generalmente accettata o se sono io un po'
> "deformato" dal punto di vista informatico.
> Opinioni ?

Alla voce "Recursion" c'e' un bell'articolo sulla en.wikipedia.
In sintesi, tale termine e' usato quando un oggetto e' definito richiamando se'
stesso. Tale accezione del termine e' del tutto generale, e' valida nei campi
piu' disparati, dalla logica all'arte.

In campo matematico questa situazione si verifica nella definizione dei
frattali,
dei numeri naturali secondo Peano ecc., ed ovviamente nelle comuni "relazioni di

ricorrenza", che definiscono sequenze di oggetti appunto in "modo ricorsivo".

Ad es. la successione numerica: a0, a1, a2 ....
puo' essere definita dalla "formula di ricorrenza": a_n+1 = (a_n + a_n-1)/2
associata ai valori dei primi due termini a0, a1.
IMHO nulla vieta di considerare "formule ricorsive" come sinonimo di "formule
di ricorrenza".
Piuttosto e' bene rendersi conto che l'algoritmo ricorsivo, semplice e comodo,
non e' necessariamente l'unico applicabile al calcolo di un dato oggetto.
Ad es. un bell'esercizio di matematica consiste nel mostrare che la successione
sopra proposta puo' anche essere esplicitata nel seguente modo:

a_n = [ (-1)^n *(a0-a1)/2^(n-1) + a0 + 2*a1 ] /3

Per valori grandi di n, l'algoritmo basato su tale formula "esplicita" e'
ovviamente molto piu' rapido dell'algoritmo "ricorsivo" basato sulla formula
di "ricorrenza" scritta.

Tu quale distinzione "informatica" (tra ricorrenza e ricorsione) proporresti?

--
Elio Proietti
Valgioie (TO)
Pangloss 13 Giu 2017 15:29
[it.scienza.matematica 13 Jun 2017] Pangloss ha scritto:
> ...
> Tu quale distinzione "informatica" (tra ricorrenza e ricorsione) proporresti?

Riflettendoci mi sono tornati in mente la filosofia (oggi in disuso) del
software
"affidabile" ed il profeta della programmazione strutturata Edsger Dijkstra.
La sua battaglia contro il "goto" (sostituibile con opportune strutture dotate
di un solo ingresso e di una sola uscita) venne accolta dal Pascal prima maniera
(con l'eliminazione delle "labels" sostituite dai cicli repeat, while ecc.).
L'uso della "ricorrenza" (ossia di routines ripetitive percorse integralmente
piu'
volte) era considerato una prassi bene controllabile, a differenza dell'uso
della
"ricorsione" (ossia di routines che al loro interno richiamano se' stesse).

--
Elio Proietti
Valgioie (TO)
fmassei@gmail.com 13 Giu 2017 15:52
On Monday, June 12, 2017 at 10:26:21 AM UTC-4, Giorgio Pastore wrote:
> Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
> differenziazione sia generalmente accettata o se sono io un po'
> "deformato" dal punto di vista informatico.
>
> Opinioni ?
>

In informatica si dice "ricorsione", e basta.
In matematica non ne ho idea :)

Ciao!
Yoda 13 Giu 2017 18:27
Addi' 13 giu 2017, fmassei@gmail.com scrive:

> In informatica si dice "ricorsione", e basta.

Dipende.. guardando il grande Otto Vollnhals nella parte ita-eng trovo
quattro voci:

1. ricorrenza -> recurrence (of error etc.)
2. ricorsione -> recursion
3. ricorsivita' -> recursiveness
4. ricorsivo -> recursive (subroutine etc.)

E la parte eng-ita praticamente concorda con sei voci:

1. recurrence (of error etc.) -> ricorrenza
2. recursion -> ricorsione
3. recursive (subroutine etc.) -> ricorsivo
4. recursiveness, /recursivity/ -> ricorsivita'
5. recursice routine -> routine ricorsiva
6. recursivity, ==> /recursiveness/

> In matematica non ne ho idea :)

In matemastica mi risulta, ma vado a memoria, quasi sempre cosi':
- come sostantivo: ricorrenza
- come aggettivo: ricorsivo
Ricorsione invece non esiste, come ho detto a Giogio ;^)

Ciao!

--
bye, Yoda
El Filibustero 13 Giu 2017 18:30
On Tue, 13 Jun 2017 13:29:27 +0000 (UTC), Pangloss wrote:

>L'uso della "ricorrenza" (ossia di routines ripetitive percorse integralmente
piu'
>volte) era considerato una prassi bene controllabile, a differenza dell'uso
della
>"ricorsione" (ossia di routines che al loro interno richiamano se' stesse).

AFAIR, l'uso della ricorsione non era assolutamente considerato meno
controllabile dell'iterazione (ossia di routines ripetitive percorse
integralmente piu' volte: mai sentito il termine "ricorrenza" per
questa cosa). Magari meno efficiente da un punto di vista
computazionale, ma equivalente (se non addirittura preferibile) per la
chiarezza del codice. Ciao
ADPUF 13 Giu 2017 21:22
El Filibustero 18:30, martedì 13 giugno 2017:
> On Tue, 13 Jun 2017 13:29:27 +0000 (UTC), Pangloss wrote:
>
>>L'uso della "ricorrenza" (ossia di routines ripetitive
>>percorse integralmente piu' volte) era considerato una prassi
>>bene controllabile, a differenza dell'uso della "ricorsione"
>>(ossia di routines che al loro interno richiamano se'
>>stesse).
>
> AFAIR, l'uso della ricorsione non era assolutamente
> considerato meno controllabile dell'iterazione (ossia di
> routines ripetitive percorse integralmente piu' volte: mai
> sentito il termine "ricorrenza" per questa cosa).


Nemmeno io, l'alternativa era iterazione - ricorsione

iterazione ~= ripetizione
ricorsione ~ richiamo di sè, autoriferimento


> Magari meno
> efficiente da un punto di vista computazionale, ma
> equivalente (se non addirittura preferibile) per la chiarezza
> del codice. Ciao


Il famoso classico esempio del calcolo del fattoriale...

iterazione: for i ecc...
ricorsione: fatt(N)=N*fatt(N-1) ecc...


--
AIOE °¿°
Ho plonkato tutti quelli che postano da Google Groups!
Qui è Usenet, non è il Web!
Giorgio Pastore 13 Giu 2017 22:58
Il 13/06/17 21:22, ADPUF ha scritto:
> El Filibustero 18:30, martedì 13 giugno 2017:
>> On Tue, 13 Jun 2017 13:29:27 +0000 (UTC), Pangloss wrote:
>>

ok, andiamo sul caso concreto.

La domanda nasceva dall' aver visto classificare, in un articolo, in
inglese, una successione della forma "per ricorrenza"

a_(n+1) = F(a_n,b_n)
b_(n+1) = G(a_n,b_n)

come "recursive formula", anche se l' implementazione era puramente
iterativa (si partiva da a_0 e b_0 e si proseguiva fino a a_N,b_N).

Io la avrei classificata come "iterative formula" o "iteration". Ma mi
e' rimasto qualche dubbio.

Giorgio
El Filibustero 14 Giu 2017 01:07
On Tue, 13 Jun 2017 22:58:08 +0200, Giorgio Pastore wrote:

>La domanda nasceva dall' aver visto classificare, in un articolo, in
>inglese, una successione della forma "per ricorrenza"
>
>a_(n+1) = F(a_n,b_n)
>b_(n+1) = G(a_n,b_n)
>
>come "recursive formula",

infatti e' la tipica formula ricorsiva, in quanto la funzione vettore
<a,b> in n+1 e' definita in termini di se' stessa in n.

>anche se l' implementazione era puramente iterativa

tutto cio' che e' computabile (quindi ogni funzione ricorsiva) e'
implementabile mediante composizione di strutture di sequenza,
selezione e iterazione (e' il famoso th. di Boehm-Jacopini). Ciao
radicale.001@gmail.com 14 Giu 2017 13:22
Il giorno lunedì 12 giugno 2017 16:26:21 UTC+2, Giorgio Pastore ha scritto:
> Io considero differenti i due termini. Tuttavia ho qualche dubbio se la
> differenziazione sia generalmente accettata o se sono io un po'
> "deformato" dal punto di vista informatico.
>
> Opinioni ?
>
> Grazie in anticipo
>
> Giorgio

mah
io umilmente direi che la ricorsione si usa per es per definire
i linguaggi della logica. Si dice "in termini ricorsivi".

per es.
se A è una formula ben formata (fbf)
se B pure

allora
A and B è una fbf
A or B pure
not A pure

no, per dire ...

Invece la ricorrenza io non l' ho mai sentita
radicale.001@gmail.com 14 Giu 2017 13:46
Il giorno martedì 13 giugno 2017 15:29:28 UTC+2, Pangloss ha scritto:
> [it.scienza.matematica 13 Jun 2017] Pangloss ha scritto:
>> ...
>> Tu quale distinzione "informatica" (tra ricorrenza e ricorsione)
proporresti?
>
> Riflettendoci mi sono tornati in mente la filosofia (oggi in disuso) del
software
> "affidabile" ed il profeta della programmazione strutturata Edsger Dijkstra.
> La sua battaglia contro il "goto" (sostituibile con opportune strutture dotate

> di un solo ingresso e di una sola uscita) venne accolta dal Pascal prima
maniera
> (con l'eliminazione delle "labels" sostituite dai cicli repeat, while ecc.).
> L'uso della "ricorrenza" (ossia di routines ripetitive percorse integralmente
piu'
> volte) era considerato una prassi bene controllabile, a differenza dell'uso
della
> "ricorsione" (ossia di routines che al loro interno richiamano se' stesse).
>


Io so di sicuro solo questo :

anche se (se ricordo bene) si puo' dimostrare addirittura che
qualsiasi algoritmo ricorsivo puo' essere sostituito con un
algoritmo non ricorsivo (ignoro come si possa dimostrare qualcosa
di cosi generale. Siamo molto al di la delle mie capacita) è
evidente alla mia intuizione che certi problemi risultano
con infinita maggiore eleganza e semplicita, se affrontati con
la ricorsione.

E' come se la loro stessa "natura", se cosi si puo' dire, sia
ricorsiva. Non so se mi spiego.

Ignoro poi totalmente il concetto di routine "affidabile" (mentre
conosco abbastanza bene il concetto di programmazione strutturata
e non) e quindi, al complemento, ignoro quello di "inaffidabile".

Pero' vado per logica : siccome una certa routine non puo'
tirar fuori output differenti a parita di input, l' unica cosa
che puo' significare è che se è inaffidabile in quanto ricorsiva
si schianta per mancanza di risorse di calcolo con MAGGIORE
probabilità di una routine non ricorsiva

E questo mi torna : le routine ricorsive spesso e volentieri
si schiantano perchè lo stack delle chiamate si esaurisce.

In pratica non gli basta la parte di memoria dedicata allo stack
dal sistema operativo.

Di piu nin zo :-)
ADPUF 14 Giu 2017 15:57
El Filibustero 01:07, mercoledì 14 giugno 2017:
> On Tue, 13 Jun 2017 22:58:08 +0200, Giorgio Pastore wrote:
>
>>La domanda nasceva dall' aver visto classificare, in un
>>articolo, in inglese, una successione della forma "per
>>ricorrenza"
>>
>>a_(n+1) = F(a_n,b_n)
>>b_(n+1) = G(a_n,b_n)
>>
>>come "recursive formula",
>
> infatti e' la tipica formula ricorsiva, in quanto la funzione
> vettore <a,b> in n+1 e' definita in termini di se' stessa in
> n.


Catena markoviana?


>>anche se l' implementazione era puramente iterativa
>
> tutto cio' che e' computabile (quindi ogni funzione
> ricorsiva) e' implementabile mediante composizione di
> strutture di sequenza, selezione e iterazione (e' il famoso
> th. di Boehm-Jacopini).


La ricorsione non è connessa (in informatica) al concetto di
stack=pila=lista-LIFO ?

L'iterazione necessita di tale struttura?


--
AIOE °¿°
Ho plonkato tutti quelli che postano da Google Groups!
Qui è Usenet, non è il Web!
fmassei@gmail.com 14 Giu 2017 16:17
On Wednesday, June 14, 2017 at 7:46:48 AM UTC-4, radica...@gmail.com wrote:
> anche se (se ricordo bene) si puo' dimostrare addirittura che
> qualsiasi algoritmo ricorsivo puo' essere sostituito con un
> algoritmo non ricorsivo (ignoro come si possa dimostrare qualcosa
> di cosi generale.
>

Lo stato corrente dell'algoritmo può essere salvato in variabili locali
(iterativo) o sullo stack (ricorsivo). Semplicemente non c'è alcuna
differenza se non "stilistica".
Anche in pratica è non solo b*****e, ma anche automatizzabile: se hai una
funzione ricorsiva, fai un array per ogni parametro e chiudi tutto in un
ciclo for.

> Siamo molto al di la delle mie capacita) è
> evidente alla mia intuizione che certi problemi risultano
> con infinita maggiore eleganza e semplicita, se affrontati con
> la ricorsione.
>

Forse, dipende.

Ciao!
Pangloss 14 Giu 2017 17:13
[it.scienza.matematica 14 Jun 2017] radicale.001@gmail.com ha scritto:
> ...
> Ignoro poi totalmente il concetto di routine "affidabile" (mentre
> conosco abbastanza bene il concetto di programmazione strutturata
> e non) e quindi, al complemento, ignoro quello di "inaffidabile".
> Pero' vado per logica : siccome una certa routine non puo'
> tirar fuori output differenti a parita di input, l' unica cosa
> che puo' significare è che se è inaffidabile in quanto ricorsiva
> si schianta per mancanza di risorse di calcolo con MAGGIORE
> probabilità di una routine non ricorsiva
> E questo mi torna : le routine ricorsive spesso e volentieri
> si schiantano perchè lo stack delle chiamate si esaurisce.

Pur avendo iniziato a programmare in Fortran ed in Assembler su un mainframe
IBM-360 gia' negli anni '70, io non sono e non saro' mai un informatico.
Ricordo vagamente di avere appreso le basi della programmazione strutturata
oltre trent'anni fa, leggendo un articolo del suo profeta Edsger Dijkstra
(uno scienziato informatico insignito del premio Turing).
Le "regole" della programmazione strutturata (famosa quella di non usare il
"goto") portavano a costruire routines aventi una struttura modulare, facili
da comporre e da controllare separatamente, allo scopo dichiarato di ridurre
gli errori di programmazione.
"Errare humanum est": il mio uso dell'attributo "affidabile" si riferiva
semplicemente ai troppo frequenti bugs del software, ossia alla causa
dominante di crash nei sistemi informatici.

--
Elio Proietti
Valgioie (TO)
Bruno Campanini 14 Giu 2017 17:36
Pangloss was thinking very ******* :
> [it.scienza.matematica 14 Jun 2017] radicale.001@gmail.com ha scritto:
>> ...
>> Ignoro poi totalmente il concetto di routine "affidabile" (mentre
>> conosco abbastanza bene il concetto di programmazione strutturata
>> e non) e quindi, al complemento, ignoro quello di "inaffidabile".
>> Pero' vado per logica : siccome una certa routine non puo'
>> tirar fuori output differenti a parita di input, l' unica cosa
>> che puo' significare è che se è inaffidabile in quanto ricorsiva
>> si schianta per mancanza di risorse di calcolo con MAGGIORE
>> probabilità di una routine non ricorsiva
>> E questo mi torna : le routine ricorsive spesso e volentieri
>> si schiantano perchè lo stack delle chiamate si esaurisce.
>
> Pur avendo iniziato a programmare in Fortran ed in Assembler su un mainframe
> IBM-360 gia' negli anni '70, io non sono e non saro' mai un informatico.
> Ricordo vagamente di avere appreso le basi della programmazione strutturata
> oltre trent'anni fa, leggendo un articolo del suo profeta Edsger Dijkstra
> (uno scienziato informatico insignito del premio Turing).
> Le "regole" della programmazione strutturata (famosa quella di non usare il
> "goto") portavano a costruire routines aventi una struttura modulare, facili
> da comporre e da controllare separatamente, allo scopo dichiarato di ridurre
> gli errori di programmazione.
... allo scopo di sovvenire all'inefficienza dei linguaggi di allora
nelle gestioni "non strutturate".
Che ove ciò (l'inefficienza) non fosse stata, come è ora in quelli
più evoluti, sarebbero state scelte legittime del programmatore
avvalersene evitando il moltiplicarsi di routine e routinette
create separatamente per gestire convenientemente la procedura.
Quando penso al Cobol "strutturato" mi vengono il ******* e la diarrea
full screen in contemporanea!

Bruno
fmassei@gmail.com 14 Giu 2017 18:02
On Wednesday, June 14, 2017 at 11:13:58 AM UTC-4, Pangloss wrote:
> Ricordo vagamente di avere appreso le basi della programmazione strutturata
> oltre trent'anni fa, leggendo un articolo del suo profeta Edsger Dijkstra
> (uno scienziato informatico insignito del premio Turing).
> Le "regole" della programmazione strutturata (famosa quella di non usare il
> "goto") portavano a costruire routines aventi una struttura modulare, facili
> da comporre e da controllare separatamente, allo scopo dichiarato di ridurre
> gli errori di programmazione.

Dijkstra andrebbe ricordato per l'enorme lavoro che ha fatto su algoritmi,
teoria dei grafi e distributed computing, non per le sue sparate tipo quella
del goto, quasi sempre ripetuta dai non addetti ai lavori fuori contesto.
Curioso poi che, secondo Dijkstra, la maggior parte di chi lavora(va) nel
campo era troppo stupido per comprenderlo, ad avrebbe quindi dovuto lasciar
stare agli "esperti" (tipo lui). E' comunque vero che doveva essere un bel
tipo: altra battuta famosa, si era soliti dire che l'arroganza in informatica
si misura in micro Dijkstra :)

Ciao!
Giorgio Pastore 14 Giu 2017 21:48
Il 14/06/17 18:02, fmassei@gmail.com ha scritto:
....
> Dijkstra andrebbe ricordato per l'enorme lavoro che ha fatto su algoritmi,
> teoria dei grafi e distributed computing, non per le sue sparate tipo quella
> del goto, quasi sempre ripetuta dai non addetti ai lavori fuori contesto.
....

E perché no? L' articolo sul goto non ha nulla della "sparata" o del
talebano-strutturato. Quello lo hanno fatto altri personaggi. E' una
constatazione empirica, ragionevole, ma anche informata sui fatti e
sulla teoria (questa era la parte meno facile) che chiunque abbia
programmato con e senza goto difficilmente potrebbe non condividere. Se
poi uno vuole vincere l' "obfuscated C coding contest" è un altro discorso.

Giorgio
radicale.001@gmail.com 14 Giu 2017 22:05
Il giorno mercoledì 14 giugno 2017 21:48:51 UTC+2, Giorgio Pastore ha scritto:
> Il 14/06/17 18:02, fmassei@gmail.com ha scritto:
> ....
>> Dijkstra andrebbe ricordato per l'enorme lavoro che ha fatto su algoritmi,
>> teoria dei grafi e distributed computing, non per le sue sparate tipo quella
>> del goto, quasi sempre ripetuta dai non addetti ai lavori fuori contesto.
> ....
>
> E perché no? L' articolo sul goto non ha nulla della "sparata" o del
> talebano-strutturato. Quello lo hanno fatto altri personaggi. E' una
> constatazione empirica, ragionevole, ma anche informata sui fatti e
> sulla teoria (questa era la parte meno facile) che chiunque abbia
> programmato con e senza goto difficilmente potrebbe non condividere. Se
> poi uno vuole vincere l' "obfuscated C coding contest" è un altro discorso.
>

cè forse un aspetto positivo un po' dimenticato che offre la
programmazione strutturata : la maggiore facilita di comprensione del
codice e quindi la

- maggiore riutilizzabilita
- la maggiore facilita di lavoro in team

praticamente si tratta di "standardizzare" le regole di scrittura
del software in modo che tutti ci possano mettere le mani con relativa
facilita.

Non dico che i vantaggi della progr. strutturata siano "tutto qui".
Ma questa è di sicuro una componente importante.
radicale.001@gmail.com 14 Giu 2017 22:07
Il giorno mercoledì 14 giugno 2017 16:17:10 UTC+2, fma...@gmail.com ha scritto:
> On Wednesday, June 14, 2017 at 7:46:48 AM UTC-4, radica...@gmail.com wrote:
>> anche se (se ricordo bene) si puo' dimostrare addirittura che
>> qualsiasi algoritmo ricorsivo puo' essere sostituito con un
>> algoritmo non ricorsivo (ignoro come si possa dimostrare qualcosa
>> di cosi generale.
>>
>
> Lo stato corrente dell'algoritmo può essere salvato in variabili locali
> (iterativo) o sullo stack (ricorsivo). Semplicemente non c'è alcuna
> differenza se non "stilistica".
> Anche in pratica è non solo b*****e, ma anche automatizzabile: se hai una
> funzione ricorsiva, fai un array per ogni parametro e chiudi tutto in un
> ciclo for.

giusto

>> Siamo molto al di la delle mie capacita) è
>> evidente alla mia intuizione che certi problemi risultano
>> con infinita maggiore eleganza e semplicita, se affrontati con
>> la ricorsione.
>>
>
> Forse, dipende.

Sai, a un certo punto è anche questione di "imponderabili" gusti
personali ...
fmassei@gmail.com 14 Giu 2017 22:09
On Wednesday, June 14, 2017 at 3:48:51 PM UTC-4, Giorgio Pastore wrote:
> Il 14/06/17 18:02, fmassei@gmail.com ha scritto:
> ....
>> Dijkstra andrebbe ricordato per l'enorme lavoro che ha fatto su algoritmi,
>> teoria dei grafi e distributed computing, non per le sue sparate tipo quella
>> del goto, quasi sempre ripetuta dai non addetti ai lavori fuori contesto.
> ....
>
> E perché no? L' articolo sul goto non ha nulla della "sparata" o del
> talebano-strutturato. Quello lo hanno fatto altri personaggi. E' una
> constatazione empirica, ragionevole, ma anche informata sui fatti e
> sulla teoria (questa era la parte meno facile) che chiunque abbia
> programmato con e senza goto difficilmente potrebbe non condividere. Se
> poi uno vuole vincere l' "obfuscated C coding contest" è un altro discorso.
>

Mi spiace, non posso essere d'accordo: proprio la constatazione alla base è
ridicola. Nella programmazione non funzionale non è possibile (a meno di non
ricostruirsi un meccanismo funzionale) scrivere una grossa fetta di algoritmi
senza la possibilità di interrompere il flusso. Infatti i linguaggi di alto
livello che non hanno il goto hanno un meccanismo di eccezioni, perché in un
modo o nell'altro bisogna fare. Una constatazione ragionevole sarebbe stata
che il goto è necessario ma ha una sintassi incompatibile con un linguaggio
di alto livello. L'articolo originale, continuo a pensarlo, era solo un
pistolotto per sfogarsi di non so che.

Ciao!
El Filibustero 14 Giu 2017 22:38
On Wed, 14 Jun 2017 15:57:28 +0200, ADPUF wrote:

>La ricorsione non è connessa (in informatica) al concetto di
>stack=pila=lista-LIFO ?

Si'.

>L'iterazione necessita di tale struttura?

No. Ciao.
Giorgio Pastore 14 Giu 2017 23:45
Il 14/06/17 22:09, fmassei@gmail.com ha scritto:
...
> Mi spiace, non posso essere d'accordo: proprio la constatazione alla base è
> ridicola. Nella programmazione non funzionale non è possibile (a meno di non
> ricostruirsi un meccanismo funzionale) scrivere una grossa fetta di algoritmi
> senza la possibilità di interrompere il flusso. Infatti i linguaggi di alto
> livello che non hanno il goto hanno un meccanismo di eccezioni, perché in un
> modo o nell'altro bisogna fare. Una constatazione ragionevole sarebbe stata
> che il goto è necessario ma ha una sintassi incompatibile con un linguaggio
> di alto livello.

Se te lo rileggi senza prevenzioni troverai che dice qualcosa di simile.
In particolare quando fa riferimento ai parametri (lui le chiama
coordinate) con cui esprimere il progresso di un processo.
Il dijkstrismo puo' facilmente essere liquidato come ridicolo. Le
considerazioni di Dijkstra richiederebero un' *****isi più puntuale e
meno umorale. Evitando soprattutto di far dire a Dijkstra quello che non
ha mai scritto nel lavoro sul goto.

Giorgio
Archaeopteryx 15 Giu 2017 00:09
> Infatti i linguaggi di alto livello che non hanno il
> goto hanno un meccanismo di eccezioni

A parte il C++ che purtroppo ha entrambi nel miglior
spirito del sincretismo che ha abbracciato (in questo caso
con minor successo)...

Comunque in certi casi è veramente difficile fare a meno
del goto e per fortuna il C permette una tale libertà
negli identificatori che non è un problema. Io
personalmente le rare volte che devo usare "goto" scelgo
etichette del tipo LABEL_HERE_nomechesegue; quando come in
C/C++ la maggior parte dei caratteri sono minuscoli,
l'occhio capisce immediatamente cosa sta succedendo.


--
"La teoria è sapere come funzionano le cose e
non sapere come farle funzionare; la pratica è
sapere come far funzionare la cose senza sapere come
funzionano; il nostro scopo è unire la pratica
alla teoria per riuscire a non far funzionare
le cose senza capire come abbiamo fatto"
fmassei@gmail.com 15 Giu 2017 00:22
On Wednesday, June 14, 2017 at 5:45:19 PM UTC-4, Giorgio Pastore wrote:
> Se te lo rileggi senza prevenzioni troverai che dice qualcosa di simile.
>

Me lo sono riletto, cercando di non essere prevenuto, ma continuo a vederla
nello stesso modo. A questo punto probabilmente è colpa mia.

> In particolare quando fa riferimento ai parametri (lui le chiama
> coordinate) con cui esprimere il progresso di un processo.
>

Più che i parametri sarebbe l'indice nello spazio degli stati, che il goto
naturalmente non può puntare perché è limitato allo spazio delle istruzioni.

> Il dijkstrismo puo' facilmente essere liquidato come ridicolo.
>

Carino "dijkstrismo" :) Però mai sentito, non so a cosa ti riferisci.

> Le considerazioni di Dijkstra richiederebero un' *****isi più puntuale e
> meno umorale. Evitando soprattutto di far dire a Dijkstra quello che non
> ha mai scritto nel lavoro sul goto.
>

Cosa che farei volentieri se non fossi OT qui.

Ma in breve il mio punto è che, in questo caso, ad essere sbrigativo è stato
proprio lui!

Ciao!


P.S. Spero comunque vada da sè che secondo me D. è stato un genio che stimo
profondamente, e che il goto non lo uso praticamente mai :)
fmassei@gmail.com 15 Giu 2017 02:00
On Wednesday, June 14, 2017 at 6:08:57 PM UTC-4, Archaeopteryx wrote:
>> Infatti i linguaggi di alto livello che non hanno il
>> goto hanno un meccanismo di eccezioni
>
> A parte il C++ che purtroppo ha entrambi nel miglior
> spirito del sincretismo che ha abbracciato (in questo caso
> con minor successo)...
>

In C++ si può (e si dovrebbe) non usare: il goto fa parte del set di
istruzioni perché doveva garantire la retrocompatibilità con il codice C.

> Comunque in certi casi è veramente difficile fare a meno
> del goto e per fortuna il C permette una tale libertà
> negli identificatori che non è un problema. Io
> personalmente le rare volte che devo usare "goto" scelgo
> etichette del tipo LABEL_HERE_nomechesegue; quando come in
> C/C++ la maggior parte dei caratteri sono minuscoli,
> l'occhio capisce immediatamente cosa sta succedendo.
>

Iniziamo a dire che il goto in C è limitato allo scope di funzione, quindi
i "danni" di cui parla D. sono praticamente inesistenti (sempre che si scriva
in maniera ragionevole, naturalmente).

A dire il vero anche in C capita di rado di doverlo usare per forza, quando
il codice diventerebbe meno leggibile, e solitamente solo nei moduli di
bassissimo livello, o di altissimo se si emula il paradigma delle eccezioni,
cosa che spesso faccio.

Se non ci fosse diventerre un problema anche serio per il codice generato
automaticamente, ad esempio dai generatori di parsers LR, cosa che *nessuno*,
anche potendo, vorrebbe fare a mano.

Ciao!
Giorgio Pastore 15 Giu 2017 06:11
Il 15/06/17 00:22, fmassei@gmail.com ha scritto:
....
> Carino "dijkstrismo" :) Però mai sentito, non so a cosa ti riferisci.

Certo che non lo hai mai sentito. L' ho coniato io nel risponderti. :-)
Mi riferisco alla posizione di acritico bando del goto a cui spesso si
riducono i riferimenti a Dijkstra, e che fanno il paio con gli
immancabili, altrettanto acritici, riferimenti a Böhm-Jacopini che in
Italia si ritengono obbligatori in qualsiasi introduzione alla
programmazione. :-(

Giorgio

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Matematica. La regina delle scienze | Tutti i gruppi | it.scienza.matematica | Notizie e discussioni matematica | Matematica Mobile | Servizio di consultazione news.