Yukarıda alıntı yaptığınız tanım, yeni başlayanların tamamen anlayamayacakları kadar geneldir ve bu yüzden pratikte gördüğümüz bir şeyi basitleştirmeme izin verin.
Derleyici: Bir dilde yazılmış kaynak kodunu alan ve başka bir dilde bir (veya birçok) çıktı dosyası üreten bir programı tanımlamak için kullanılan genel bir terimdir. Pratikte bu terimi çoğunlukla C kodunu girdi olarak alan ve çıktı olarak ikili çalıştırılabilir (makine kodu) üreten gcc gibi bir derleyiciyi tanımlamak için kullanırız.
Aktarıcılar , kaynaktan kaynağa derleyiciler olarak da bilinir. Yani özünde, bir kaynak kod dosyasını alıp başka bir dilde başka bir kaynak kod dosyasına veya aynı dilin farklı bir sürümüne dönüştüren bir derleyici alt kümesidir . Çıktı genellikle bir insan tarafından anlaşılabilir. Bu çıktının makinede çalışabilmesi için yine de bir derleyici veya yorumlayıcıdan geçmesi gerekir.
Bazı aktarıcı örnekleri:
- Emscripten : Transpiles C / C ++ 'dan JavaScript'e
- Babel : ES5'e ES6 + kodu Transpiles (ES6 ve ES5, JavaScript dilinin farklı sürümleri veya nesilleridir)
Şimdi, "benzer düzeyde soyutlama" derken ne demek istiyorlar: Bir kaynak dosyaya derler / aktarır dediğim gibi, assembly dilinin de bir kaynak dosya olduğu ve dolayısıyla gcc'nin aynı zamanda bir aktarıcı olduğu iddia edilebilir. Dolayısıyla, bu argüman, bu benzer soyutlama düzeyinin geçersiz kıldığı şeydir.
Dilleri alt, orta ve daha yüksek düzeyde kategorize etme fikri, makinenin / mimarinin gerçek çalışmasından sağladıkları soyutlama düzeyine dayanmaktadır.
Assembly gibi daha düşük seviyeli diller işlemci mimarisine çok yakındır, yani farklı işlemciler için farklı talimatlara sahiptir. C / C ++ / Java / JavaScript, tüm bunları soyutlayarak daha fazla soyutlama sağlayın.
Yani, bir transpiler, bu soyutlama açısından başladığınız dile daha yakın olan (veya alt-orta-üst düzey dil merdiveninde o dilin seviyesine daha yakın olan) bir dile derler.
Bu yardımcı olur umarım!