Чому більшість анонімних функцій не може бути скомпільовано JIT і ніколи не буде оптимізовано?


10

Я щойно прочитав https://techfindings.one/archives/2652 про функціональне програмування і натрапив на це:

анонімні функції часто не можуть бути складені JIT і ніколи не будуть оптимізовані

Хтось може мені пояснити, чому це так?



Я вважаю, що голосування не є виправданим тут, а також посилання не може бути застосоване до мого питання. Я задаю технічне запитання щодо JIT та анонімних функцій - я не прошу думок / смаку чи обговорення. Я прошу інших пояснити мені, чому анонімні функції не можна компілювати JIT. Навіть у вашому посиланні сказано: "Я хотів би, щоб інші пояснили мені ______", тоді ви, мабуть, добре "@gnat
thadeuszlay

4
Перш ніж запитати "Чому?" спершу слід запитати: "Це навіть правда?". Я закликаю БС на цю претензію. У чотирьох головних браузерах є 4 різних двигуни JS, і ковдра стверджує, що жоден з них не оптимізує анонімні функції, без будь-яких посилань чи даних, щоб зробити це резервним, дуже сміливим.
Себастьян Редл

1
Я повністю впевнений, що принаймні V8 двигун, безумовно, здатний зібрати JIT-анонімні функції. Джерело: Я прочитав пов'язані частини вихідного коду. І немає жодної технічної причини, чому це має бути неможливим. Тож передумова питання неправильна. Це викликає питання, чому автор вважає, що це твердження має сенс. Але ми не можемо це знати, і це не місце для обговорення цього, як пояснюється посиланням на гната.
амон

Я бачу вашу думку і згоден з вами @SebastianRedl. Я не зрозумів цього твердження, але замість того, щоб копати глибше, я пройшов легкий маршрут і попросив тут.
thadeuszlay

Відповіді:


15

Існує поширена помилка щодо вкладених функцій, названих або анонімних, де люди думають, що оскільки функція оголошена всередині іншої функції, компілятор повинен її перекомпілювати кожен раз, коли викликається зовнішня функція. Це неправда. Функція в коді є постійним, навіть якщо його викликає контекст не є, і це може бути вбудовуваним або оптимізовано так само , як і будь-який інший функція. Ця плутанина виглядає особливо сильною серед програмістів, які в основному використовують вкладені функції в інтерпретації / реалізації JIT мови, як у цьому питанні .

У цій статті є кілька інших подібних хибних уявлень, які показують, що він не розуміє питань так добре, як він вважає, що він робить. Я б не вважав це надійним джерелом для вивчення функціонального програмування.


Дякуємо за уточнення. Я сам не фахівець з інформатики (CS). Я навіть не маю ступеня або вивчаю CS. Тому мені важко все досліджувати самостійно. Не могли б ви пояснити, які ще моменти автора зв'язаної статті не виявились повністю правильними?
thadeuszlay
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.