Ini hanya bertanya-tanya yang saya miliki saat membaca tentang bahasa yang ditafsirkan dan dikompilasi.
Ruby tidak diragukan lagi merupakan bahasa yang ditafsirkan karena kode sumber diproses oleh juru bahasa pada titik eksekusi.
Sebaliknya C adalah bahasa yang dikompilasi, karena kita harus mengkompilasi kode sumber terlebih dahulu sesuai dengan mesin dan kemudian jalankan. Hasil ini jauh lebih cepat dieksekusi.
Sekarang datang ke Python :
- Kode python ( somefile.py ) ketika diimpor membuat file ( somefile.pyc ) di direktori yang sama. Katakanlah impor dilakukan dalam modul python shell atau django. Setelah impor saya mengubah sedikit kode dan menjalankan fungsi yang diimpor lagi untuk menemukan bahwa itu masih menjalankan kode lama. Ini menunjukkan bahwa file * .pyc adalah file python yang dikompilasi mirip dengan executable yang dibuat setelah kompilasi file C, meskipun saya tidak dapat menjalankan file * .pyc secara langsung.
- Ketika file python (somefile.py) dieksekusi secara langsung (./somefile.py atau python somefile.py) tidak ada file .pyc dibuat dan kode dieksekusi seperti menunjukkan perilaku yang ditafsirkan.
Ini menunjukkan bahwa kode python dikompilasi setiap kali itu diimpor dalam proses baru untuk membuat .pyc saat ditafsirkan ketika langsung dieksekusi.
Jadi, jenis bahasa apa yang harus saya pertimbangkan? Diterjemahkan atau Dikompilasi? Dan bagaimana efisiensinya dibandingkan dengan bahasa yang ditafsirkan dan dikompilasi?
Menurut halaman Interpreted Languages wiki , itu terdaftar sebagai bahasa yang dikompilasi dengan Virtual Machine Code, apa yang dimaksud dengan itu?
RUN
. Seolah-olah Anda memiliki kompiler yang melakukan langkah lexing dan kemudian menampilkan aliran token yang harus diulang setiap kali program dijalankan. Sama sekali tidak seperti kompilasi bytecode modern seperti yang dilakukan oleh, katakanlah javac
, yang meliputi lexing, parsing, dan optimisasi.