Casa > A > A Linguagem Assembly É Considerada Uma Linguagem De Programação Funcional?

A linguagem Assembly é considerada uma linguagem de programação funcional?

É *considerada * uma linguagem de programação funcional? Não pela maioria das pessoas.

é *actualmente* uma linguagem? Não vejo porque não.

A Programação funcional é um paradigma, tal como a programação imperativa ou orientada a objectos. Não importa em que linguagem você programa, ela é transformada em código de máquina em algum ponto ... e assembler é apenas código de máquina bonita.

Então, você pode implementar qualquer paradigma que você quiser. E você pode aplicar qualquer técnica de optmização que quiser.

Você só tem que fazê-lo por si mesmo.

Considerar a seguinte implementação de FP factorial.

  1. function fact(n): 
  2. função 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.

De Fritzsche

Qual é a diferença entre as instruções de montagem da movq e da movl? :: Há humanos que codificam em linguagem de máquina?