Transpiler itu apa?

Apakah kamu pernah berfikir untuk memahami lebih dalam bagaimana sebuah bahasa pemrograman itu dimaknai (berjalan) ?

Bahasa

Bahasa adalah sebuah sebuah simbol, lambang, atau bunyi - bunyian yang berkembang berdasarkan suatu aturan yang disepakati oleh pemakainya. Sederhananya, sesuatu yang digunakan untuk berkomunikasi. Namun, kali ini kita coba persempit dalam ruang lingkup pemrograman. Programmer adalah seseorang yang menulis dan berkomunikasi dengan komputer (tepatnya program komputer). Dalam berkomunikasi dengan komputer maka kita tanpa sadar sepakat terhadap aturan yang berlaku dan apapun yang menjadi dasar pada sebuah komputer. Programmer adalah seorang pemakai dari sebuah bahasa dan secara langsung mengakui aturan dan tata cara menulis dan berkomunikasi dengan bahasa tersebut. Ketika bahasa tersebut dituliskan apakah kalian berfikir siapa yang menegakkan aturan, struktur, dan tata cara tersebut?

jawabannya adalah tergantung.

Didalam komputer dan ketika kalian menulis sebuah program maka kalian akan berkomunikasi dengannya dan dibantu oleh alat yang biasanya kita kenal sebagai sebagai "Compiler".

Compiler

Compile menerjemahkan antara kode sumber dari bahasa tingkat tinggi (high level) menjadi bahasa tingkat rendah (low level)

High level adalah istilah ketika kalian menulis menggunakan sebuah bahasa dan menjadi bahasa utama dalam program yang kalian buat. Misalnya, kalian membuat aplikasi web maka secara aturan yang berlaku kalian menggunakan JavaScript sebagai alat komunikasi dilingkungan web.

Low level adalah sebuah bahasa lanjutan dan menjadi hasil compilation bahasa High Level yang dikenali oleh sebuah lingkungan, platform, atau mesin untuk menjalankan sebuah instruksi tertentu (tergantung dari fungsi atau fitur yang dipakai pada High Level).

Compiler adalah sebuah alat untuk menerjemahkan sebuah bahasa dari "HIGH Level" menjadi "LOW LEVEL".

flowchart LR Start[High Level] --> Compiler --> Stop[Low Level]

Transpiler

Transpile: menerjemahkan antara kode sumber dalam tingkatan (level) abstraksi yang sama. (salah satunya ast - abstract syntax tree yang sama)

Setelah kalian mengenal sedikit tentang compiler sekarang kita berkenalan dengan transpiler. Yah, agak mirip dengan compiler namun sebenarnya berbeda.

Perbedaannya yang paling "eksplisit" ialah transpiler masih ditingkatan bahasa yang sama namun diubah menjadi standar tertentu. Misalnya, dari format es2022 menjadi cjs pada spesifikasi untuk bahasa JavaScript.

Bahasa Dimaknai

Ketika tahap compilation dari sebuah program itu selesai, maka program tersebut HARUSnya bisa dijalankan. Untuk dapat dijalankan maka hal tersebut sudah diketahui dan dipahami kumpulan instruksi yang ada pada program.

Siapa yang memaknai hal tersebut? Runtime (Tukang yang menjalankan program atau penggerak dari program)

Program yang menjalankan program

Dimana Program tersebut dijalankan?

  • Entah itu Web
    • Chrome V8
    • SpiderMonkey
    • JavascriptCore
  • Entah itu disistem Operasi
    • Nodejs
    • LuatJIT
    • Zend Engine
    • BEAM
    • ART (bukan asisten rumah tangga tapi Android Runtime)
    • JVM (Ehem)
  • Entah itu Hardware (Yah ujungnya hardware, atau mau tahu siapa ujungnya? yah listrik lah)
    • 1010101010101010101010100101010
  • Entah sampai kapan? (sangat mencengankan)

Kesimpulan

  • Mesin tidak pernah peduli soal clean code yang dia peduli adalah hasil dari code kamu itu instruksinya sudah efisien, baik, terstruktur, dan tidak melewati batasan.
  • Manusia sangat peduli dengan clean code karena menjadi bagian proses komunikasi antara manusia, program, dan komputer itu sendiri.

Referensi

© 2023 - r17x with You.