Post by GennaroPost by KiuhnmPost by GennaroSecondo me quello che tu chiami tecnicismo, per me è uno puro ma
sciatto calco dall'americano nato in ambito informatico, che mi pare
non goda (ancora) di nessuna deroga alle regole sintattiche italiane.
Non capisco il discorso. Sarebbe come dire a un cane che ancora non ha
il permesso di avere quattro zampe.
Eppure è facile. E' un chiaro errore di sintassi, in italiano.
E invece è perfettamente corretto in ambito informatico. Guarda un po'.
Dirò di più. "Ritornare" e "restituire" non significano la stessa cosa.
Una funzione può ritornare senza restituire alcun valore. In effetti
"ritornare" significa ritornare al chiamante. Quando si chiama una
funzione, l'esecuzione viene trasferita a del "codice funzione" che alla
fine chiama "return" (nell'assembly IA32 si usa "ret") per tornare al
codice chiamante.
Quando "return" è assente, è implicito e da intendersi a fine funzione.
Nell'assembly IA32, "ret" non restituisce alcunché, ritorna e basta. Il
valore restituito viene di solito messo nel registro EAX (o RAX nel
codice a 64 bit) che contiene direttamente il valore, se è nativo (char,
int o float), o un puntatore se è derivato/composto.
Nei linguaggi di più alto livello si è pensato di estendere il "return"
permettendo di specificare direttamente il valore da restituire
scrivendo "return 5".
Per es. in assembly sarebbe
mov eax, 5
ret
ma in C semplicemente
return 5;
Quindi c'è una storia dietro all'uso del termine "ritornare".
Aggiungo che in matematica non ha senso dire che una funzione "ritorna"
qualcosa. In realtà non è neanche corretto dire che una funzione
restituisce qualcosa.
Non lo sarebbe neanche in programmazione funzionale pura, visto che è
strettamente legata alla matematica.
Praticamente esistono almeno due modi di concepire la computazione. Uno
tramite le macchine di Turing e l'altro tramite il lambda calcolo.
Le macchine di Turing danno origine ai nostri computer e ai linguaggi
imperativi, dove i programmi sono formati da azioni (fai questo, fai
quello, leggi questo, stampa questo, ecc...) e le funzioni "ritornano
valori".
Il lambda calcolo invece concepisce i programmi come espressioni a loro
volta composte da sottoespressioni e quindi le funzioni vengono
"valutate". In inglese si dice che una funzione "evaluates to something".
In matematica, una funzione è un sottoinsieme di un prodotto cartesiano,
cioè è un insieme di coppie (a,b). Per es. la funzione f(x) = x+1 sugli
interi è l'insieme infinito
..., (-3, -2), (-2, -1), (-1, 0), (0, 1), (1, 2), ...
Questo è il modo corretto di guardare alle funzioni. Una volta si
chiamava funzione l'espressione matematica, cioè "x+1" ma questo creava
problemi quando c'erano più modi per esprimere la stessa cosa.
--
Kiuhnm
The first time I took an elevator it was a great
experience, but the second time it was a letdown.