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.
- funzione fact(n):
- funzione fact_inner(n, a):
- if n == 0
- return a
- return fact_inner(n-1, n*a)
- 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
- fact:
- MOV #1, R1 ; a = 1
- inner_fact:
- CMP R0,#0
- BEQ ifact_010 ; if (n==0), we're done
- MUL R1,R0 ; a = n * a
- DEC R0 ; n = n - 1
- BRA inner_fact ; recurse (with TRO)
- ifact_010:
- MOV R1, R0 ; return a
- RET
And there you have it.
Articoli simili
- Qual è la differenza tra linguaggio macchina, linguaggio assembly e linguaggio di alto livello nei computer?
- Perché non c'è nessun linguaggio di programmazione funzionale nella top ten?
- Perché il linguaggio assembly è migliore del linguaggio a livello macchina?
- Qual è la differenza tra un linguaggio assembly e un linguaggio ad alto livello?