¿Qué significa realmente para ellos ser apilados? ¿Significa que no usan una pila de llamadas?
Sí, eso es todo.
Si no usan una pila de llamadas, ¿qué utilizan?
La implementación exacta, por supuesto, variará de un idioma a otro. En Stackless Python, hay un despachador que inicia el intérprete de Python utilizando el marco superior y sus resultados. El intérprete procesa los códigos de operación según sea necesario de uno en uno hasta que llegue al código de operación CALL_FUNCTION
, la señal que está a punto de ingresar en una función. Esto hace que el despachador construya un nuevo marco con la información relevante y lo devuelva al despachador con el indicador de desenrollado. A partir de ahí, el despachador comienza de nuevo, señalando al intérprete en el marco más alto.
Los idiomas apáticos evitan las pilas de llamadas por varias razones, pero en muchos casos se utilizan para que ciertas construcciones de programación sean mucho más fáciles de implementar. El canónico es continuations. Las continuas son estructuras de control muy potentes y muy simples que pueden representar cualquiera de las estructuras de control habituales con las que probablemente ya esté familiarizado (while
, do
, if
, switch
, etc.).
Si eso es confuso, es posible que desee para tratar de envolver su cabeza alrededor de un artículo de Wikipedia, y en particular la cursi continuación analogía sándwich:
Digamos que estás en la cocina delante de la nevera , pensando en un sándwich. Tomas una continuación allí y la guardas en tu bolsillo. Luego, saca un poco de pavo y pan del refrigerador y hazte un sándwich, que ahora está sobre el mostrador. Usted invoca la continuación en su bolsillo, y se encuentra frente a la nevera de nuevo, pensando en un emparedado. Pero afortunadamente, hay un bocadillo en el mostrador, y todos los materiales utilizados para hacerlo desaparecen. Entonces te lo comes
Véase la respuesta al http://stackoverflow.com/questions/1016218/how-does-a-stackless-language-work/1053159#1053159 –
no existe La página http://stackoverflow.com/questions/551950/what-stackless-programming-languages-are-available/671296 # 671296 –