Dietro il coding/Secondo Intermezzo: le differenze tra linguaggi

CopertinaDietro il coding/Copertina
  1. Che cos'è il codingDietro il coding/Che cos'è il coding
  2. Perché è così importante?Dietro il coding/Perché è così importante?
  3. Una valutazione storicaDietro il coding/Una valutazione storica
  4. Come si parla del coding?Dietro il coding/Come si parla del coding?
  5. Gli schieramenti in campoDietro il coding/Gli schieramenti in campo
  6. Primo Intermezzo: che significa opensource?Dietro il coding/Primo Intermezzo: che significa opensource?
  7. A che serve il coding?Dietro il coding/A che serve il coding?
  8. Chi può insegnare il coding?Dietro il coding/Chi può insegnare il coding?
  9. Secondo Intermezzo: le differenze tra linguaggiDietro il coding/Secondo Intermezzo: le differenze tra linguaggi
  10. Che linguaggio?Dietro il coding/Che linguaggio?
  11. Il modello didattico dietro ScratchDietro il coding/Il modello didattico dietro Scratch
  12. Come va praticato il CodingDietro il coding/Come va praticato il Coding
  13. Un po' di storia…Dietro il coding/Un po' di storia…
  14. E oggi?Dietro il coding/E oggi?
  15. Come potrebbe funzionare davveroDietro il coding/Come potrebbe funzionare davvero
  16. Suggerimenti di letturaDietro il coding/Suggerimenti di lettura

Leonardo Fibonacci è il matematico pisano che ha fatto conoscere la numerazione araba in occidente. Ma è più noto per la "successione di Fibonacci", cioè la serie di interi:

1,1,2,3,5,8,13,21,34,55,89,144,...

La formula per il calcolo dell'ennesimo numero di Fibonacci è:

Calcolo n-esimo elemento serie Fibonacci

con:

valore FI

in cui ф è la sezione aurea

Sezione Aurea

Un po' complicato? Beh, utilizzando un linguaggio di programmazione si può costruire la sequenza senza fare uso della sezione aurea e della formula matematica, semplicemente simulando il processo passo dopo passo.

Fn = F n-1 + F n-2

F1 = 1

F2 = 1

F3 = F1 + F2 = 1 + 1 = 2

F4 = F2 + F3 = 1 + 2 = 3

F5 = F3 + F4 = 2 + 3 = 5

Così la programmazione serve a risolvere un problema anche quando non se ne possiede una visione perfetta. In questo senso, programmare è un ausilio formidabile per l'apprendimento per scoperta.

E ci sono tanti modi diversi per arrivare ad una soluzione.

Alcuni esempi scritti in linguaggi diversi, tratti da http://www.scriptol.com/programming/fibonacci.php, possono servire a dare un'idea della differenza tra linguaggi di programmazione.

BASIC

x = 1
y = 1
n = 100
FOR x = 1 to n
z = x + y      
x = y
y = z
PRINT z + 1
NEXT x

C

int fib(int n) {
int first = 0, second = 1;
int tmp;
while (n--) {
  tmp = first+second;
  first = second;
  second = tmp;
}
return first;
}

LUA

fibs = { 1, 1 }
setmetatable(fibs, {                            
  __index = function(fibs,n)                    
              fibs[n] = fibs[n-2] + fibs[n-1]   
              return fibs[n]
    end
})

RUBY

def fibonacci( n )   
return  n  if n <= 1 
fibonacci( n - 1 ) + fibonacci( n - 2 )
end

PERL

sub fibo;
sub fibo {$_ [0] < 2 ? $_ [0] : fibo ($_ [0] - 1) + fibo ($_ [0] - 2)}

LOGO

to fibonacci :N
ifelse :N < 3 [output 1] [output sum fibonacci :N - 1 fibonacci :N - 2]
end

Come si vede, pur essendo tutte rappresentazioni dello stesso algoritmo, ci sono differenze superficiali enormi: dalla sintassi all'uso delle parentesi e della punteggiatura, ai termini usati per introdurre la funzione (def, sub, to). Però c'è chi sostiene che una volta imparati i primi due o tre linguaggi, poi è tutta discesa.

Come per le lingue naturali, E tutto sommato, una parentela tra apprendimento delle lingue naturali e dei linguaggi artificiali si può tentare di tracciare. Più in generale: ci sarebbe solo da guadagnare nello studiare i linguaggi di programmazione con gli stessi concetti con cui si studiano le lingue: evoluzione, derivazione, numero di parlanti, letteratura, stili...

NoteModifica