Sì, hai ragione. Ma la base dello stack è solo una parte dell'intera storia. Ad esempio, l'interprete bytecode Java è anch'esso basato sullo stack (il codice compilato funziona, per motivi di efficienza, in modo diverso). Questo ci dice che qualsiasi linguaggio può essere trasformato in un linguaggio stack.
Ciò che conta sono gli oggetti al di fuori dello stack, quelli che possono sopravvivere all'attuale esecuzione del metodo. Finché la lingua non ha niente come malloc
o new
, non ci sono oggetti simili e non hai bisogno di delete
o GC.
Una lingua priva di allocazione dinamica della memoria è piuttosto limitata nella sua utilità.