¿Por qué la mayoría de las funciones anónimas no se pueden compilar JIT y nunca se optimizarán?

10

Acabo de leer https://techfindings.one/archives/2652 sobre programación funcional y me encontré con esto:

las funciones anónimas a menudo no se pueden compilar JIT y nunca se optimizarán

¿Alguien puede explicarme por qué este es el caso?

thadeuszlay
fuente
1
ver Discutir esto $ {blog}
mosquito
Creo que el voto negativo no está justificado aquí y que el enlace no se puede aplicar a mi pregunta. Estoy haciendo una pregunta técnica sobre JIT y funciones anónimas, no estoy pidiendo opiniones / gustos o discusiones. Les pido a otros que me expliquen por qué las funciones anónimas no se pueden compilar JIT. Incluso su enlace dice "Me gustaría que otros me explicaran ______”, entonces probablemente esté bien "@gnat
thadeuszlay
44
Antes de preguntar "¿Por qué?" primero debes preguntar, "¿Es esto incluso cierto?". Llamo a BS por ese reclamo. Hay 4 motores JS diferentes en los 4 principales navegadores, y la afirmación general de que ninguno de ellos optimizará las funciones anónimas, sin ninguna referencia o datos que respalden eso, es muy audaz.
Sebastian Redl
1
Estoy bastante seguro de que al menos el motor V8 es capaz de compilar JIT funciones anónimas. Fuente: He leído partes relacionadas del código fuente. Y no hay una razón técnica por la que esto sea imposible. Entonces la premisa de la pregunta está mal. Esto plantea la pregunta de por qué el autor piensa que esa afirmación tiene sentido. Pero no podemos saber eso y este no es el lugar para discutirlo, como se explica en el enlace de gnat.
amon
Veo tu punto y estoy de acuerdo contigo @SebastianRedl. No entendí esta declaración, pero en lugar de profundizar, hice la ruta fácil y pregunté aquí.
thadeuszlay

Respuestas:

15

Existe una idea errónea común sobre las funciones anidadas, con nombre o anónimas, donde la gente piensa que debido a que la función se declara dentro de otra función, el compilador debe recompilarla cada vez que se invoca la función externa. Esto no es verdad El código de la función es constante, incluso si su contexto de llamada no lo es, y puede ser incorporado u optimizado como cualquier otra función. Esta confusión parece especialmente potente entre los programadores que utilizan principalmente funciones anidadas en implementaciones de lenguaje interpretado / JIT, como en esta pregunta .

Ese artículo tiene algunas otras ideas falsas similares que muestran que él no entiende los problemas tan bien como cree que sí. No lo consideraría una fuente confiable para aprender sobre programación funcional.

Karl Bielefeldt
fuente
Gracias por aclararlo. Yo no soy un experto en informática (CS). Ni siquiera tengo un título o estudié CS. Por lo tanto, es difícil para mí investigar todo por mí mismo. ¿Podría aclarar qué otros puntos el autor del artículo vinculado no obtuvo del todo correcto?
thadeuszlay