QNA > I > Il Linguaggio Assembly È Considerato Un Linguaggio Di Programmazione Funzionale?

Il linguaggio assembly è considerato un linguaggio di programmazione funzionale?

È *considerato* un linguaggio di programmazione funzionale? Non dalla maggior parte delle persone.

Lo è *attualmente*? Non vedo perché no.

La programmazione funzionale è un paradigma, proprio come la programmazione imperativa o orientata agli oggetti. Non importa in quale linguaggio si programmi, ad un certo punto viene trasformato in codice macchina... e l'assembler è solo un bel codice macchina.

Quindi, si può implementare qualsiasi paradigma si voglia. E potete applicare tutte le tecniche di ottimizzazione che volete.

Dovete solo farlo da soli.

Considerate la seguente implementazione FP di factorial.

  1. funzione fact(n): 
  2. funzione fact_inner(n, a): 
  3. if n == 0 
  4. return a 
  5. return fact_inner(n-1, n*a) 
  6. return fact_inner(n,1) 

Sort of Pythonish, but it needs tail recursion optimizations to not blow the stack. We’ll ignore overflow for now.

In assembler, you just define a convention for passing arguments and returning the result. Let’s say we pass n in R0, and a in R1 and we return the result in R0

  1. fact: 
  2. MOV #1, R1 ; a = 1 
  3.  
  4. inner_fact: 
  5. CMP R0,#0 
  6. BEQ ifact_010 ; if (n==0), we're done 
  7. MUL R1,R0 ; a = n * a 
  8. DEC R0 ; n = n - 1 
  9. BRA inner_fact ; recurse (with TRO) 
  10.  
  11. ifact_010: 
  12. MOV R1, R0 ; return a 
  13. RET 

And there you have it.

Di Richara Peerzada

Quali sono le differenze tra bytecode e codice macchina? Il bytecode è specifico solo per Java? :: Quanto è difficile il linguaggio assembly ed è molto più difficile del C?
Link utili