Mengapa sebagian besar fungsi anonim tidak dapat dikompilasi JIT dan tidak akan pernah dioptimalkan?


10

Saya baru saja membaca https://techfindings.one/archives/2652 tentang pemrograman fungsional dan menemukan ini:

fungsi anonim seringkali tidak dapat dikompilasi JIT dan tidak akan pernah dioptimalkan

Adakah yang bisa menjelaskan kepada saya mengapa demikian?



Saya pikir downvote tidak dibenarkan di sini dan juga tautannya tidak dapat diterapkan pada pertanyaan saya. Saya mengajukan pertanyaan teknis tentang JIT dan fungsi anonim - Saya tidak meminta pendapat / rasa atau diskusi. Saya meminta orang lain untuk menjelaskan kepada saya mengapa fungsi anonim tidak dapat dikompilasi JIT. Bahkan tautan Anda mengatakan "Saya ingin yang lain menjelaskan _______ kepada saya", maka Anda mungkin baik-baik saja "@gnat
thadeuszlay

4
Sebelum Anda bertanya "Mengapa?" pertama-tama Anda harus bertanya, "Apakah ini benar?". Saya memanggil BS pada klaim itu. Ada 4 mesin JS berbeda di 4 browser utama, dan klaim selimut bahwa tidak ada dari mereka yang akan mengoptimalkan fungsi anonim, tanpa referensi atau data untuk mendukung hal itu, sangat berani.
Sebastian Redl

1
Saya cukup yakin bahwa setidaknya mesin V8 tentu mampu mengkompilasi fungsi anonim JIT. Sumber: Saya telah membaca bagian terkait dari kode sumber. Dan tidak ada alasan teknis mengapa ini tidak mungkin. Jadi premis dari pertanyaan itu salah. Ini menimbulkan pertanyaan mengapa penulis berpikir bahwa pernyataan itu masuk akal. Tapi kita tidak bisa tahu itu dan ini bukan tempat untuk membahasnya, seperti yang dijelaskan oleh tautan nyamuk.
amon

Saya mengerti maksud Anda dan setuju dengan Anda @SebastianRedl. Saya tidak mengerti pernyataan ini tetapi alih-alih menggali lebih dalam, saya melakukan rute yang mudah dan bertanya di sini.
thadeuszlay

Jawaban:


15

Ada kesalahpahaman umum tentang fungsi bersarang, bernama atau anonim, di mana orang berpikir bahwa karena fungsi tersebut dinyatakan di dalam fungsi lain, maka kompilator harus mengkompilasi ulang setiap kali fungsi luar dipanggil. Ini tidak benar. Fungsi ini kode adalah konstan, bahkan jika konteksnya panggilannya tidak, dan dapat inline atau dioptimalkan seperti fungsi lainnya. Kebingungan ini tampaknya sangat kuat di kalangan programmer yang terutama menggunakan fungsi bersarang dalam implementasi bahasa yang ditafsirkan / JIT, seperti dalam pertanyaan ini .

Artikel itu memiliki beberapa kesalahpahaman serupa lainnya yang menunjukkan dia tidak memahami masalah serta dia pikir dia mengerti. Saya tidak akan menganggapnya sebagai sumber yang dapat dipercaya untuk belajar tentang pemrograman fungsional.


Terima kasih telah mengklarifikasi. Saya bukan ahli dalam Ilmu Komputer (CS) sendiri. Saya bahkan tidak memiliki gelar atau belajar CS. Karena itu sulit bagi saya untuk meneliti semuanya sendiri. Bisakah Anda menjelaskan poin-poin lain apa yang penulis artikel terkait itu tidak sepenuhnya benar?
thadeuszlay
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.