e poi: per una funzione esiste UNA sola variabile d'uscita che ha lo stesso nome della funzione e il cui tipo và specificato, mentre per un function block posso dichiarare quante variabili d'uscita voglio.
Se vogliamo fare un paragone, un function block è un pò come un OGGETTO in un linguaggio OOP poichè possiede anche uno stato (però esistono anche parecchie differenze con gli oggetti)
una funzione può chiamare qualsiasi altra funzione, ma non può chiamare function block o programmi; un function block può chiamare funzioni e altri function block, ma non può chiamare programmi; in entrambi i casi la ricorsione è vietata, quindi funzioni e function block non possono mai richiamare sè stessi!