Alat keren untuk kompilasi ke JavaScript

Setiap programmer memiliki satu atau dua bahasa favorit. Pecinta JavaScript adalah yang paling beruntung saat ini karena bahasa mereka mengambil alih Internet dan Internet mengambil alih dunia. Mereka yang hatinya berada di tempat lain di dunia bahasa pemrograman, bagaimanapun, akan terjebak. Mereka dapat tetap berada di pinggir lapangan dan mengutuk raksasa HTML, CSS, JavaScript, dan Node.js tanpa henti, atau mereka dapat menemukan cara untuk menyukainya.

Untungnya, ada cara ketiga yang memungkinkan Anda menikmati kesenangan bahasa favorit sambil tetap menerapkan kode Anda ke dunia JavaScript yang terus berkembang: Cukup ubah kode Anda, yang ternyata sangat mudah. Performa mungkin sedikit menurun, tetapi seringkali jauh lebih sedikit dari yang Anda bayangkan. Kemudian Anda dapat mengirimkan kode Anda ke browser dan berhenti mencoba membuat orang menginstal file yang dapat dijalankan.

Yang teguh akan merasa seperti ini adalah penyerahan diri yang hina, kemunduran pahit dari prinsip-prinsip yang mengikat Anda pada sintaksis favorit Anda. Beberapa bahkan mungkin merasa itu sedikit pengkhianatan, tindakan yang sangat pengkhianat sehingga Anda harus menyembunyikannya dari kolega Anda. Orang lain akan menyarankan, dengan sangat tepat, bahwa ini tidak sesederhana itu. Mendapatkan kode untuk dijalankan adalah satu hal. Merekatkan bagian-bagian menjadi satu dan membuat UI adalah pekerjaan tambahan yang banyak.

Anda dipersilakan untuk berkubang dalam belas kasihan Anda, tetapi ada banyak rasionalisasi yang membuat gagasan itu lebih disukai. Pertama, mesin JavaScript bekerja jauh lebih cepat daripada sebelumnya. Kedua, membuat UI Web tidak pernah semudah ini, berkat kerangka kerja dan banyak bakat desain HTML / CSS. Ketiga, JavaScript menjadi sedikit lingua franca. Jika Anda dapat mengonversi semua bahasa ini ke JavaScript, dan daftarnya sangat panjang, Anda juga dapat menautkan semuanya.

Di sini kita melihat kekayaan bahasa kecil yang memungkinkan beberapa bahasa pemrograman paling populer untuk dikompilasi ke JavaScript. Artikel mendatang akan membahas bagaimana bahasa yang memudar dilahirkan kembali dengan menghadirkannya ke browser. Tidak ada alasan untuk terjebak dalam rasa kasihan atau kebencian. Teknik ini memungkinkan Anda menikmati bahasa favorit dan berjalan di mana pun JavaScript berjalan.

Rubi

Ada sejumlah opsi yang memungkinkan Anda berpikir seperti programmer Ruby saat berjalan di lingkungan JavaScript.

RubyJS, misalnya, adalah pustaka JavaScript yang menambahkan banyak primitif dasar dalam satu objek JavaScript. Apa yang Anda tulis secara teknis adalah JavaScript, tetapi objek Ruby khusus berperilaku seperti kode Ruby hampir sepanjang waktu. String, Numbers, Iterator, dan Enumerator sedang menunggu Anda.

Jika menulis JavaScript yang berfungsi seperti Ruby tidak cukup, Opal akan menerjemahkan kode sumber Ruby langsung ke JavaScript. Ini sering berperilaku seperti VM Ruby, tetapi terkadang tidak. String Ruby yang bisa berubah, misalnya, diubah langsung ke JavaScript yang tidak bisa diubah, yang seharusnya tidak menjadi masalah untuk beberapa aplikasi tetapi bisa membuat beberapa orang menjadi gila. Efek kecil lainnya seperti ini dapat menyebabkan kejutan kasar dalam kasus edge.

Bagi mereka yang menginginkan lebih, HotRuby menawarkan solusi yang lebih lengkap, mesin virtual JavaScript yang berputar melalui kode op Ruby. Basis kode sudah menjadi agak tua, tetapi ini menawarkan opsi lain bagi penganut sejati.

Jawa

Sulit untuk mengetahui apa yang menginspirasi Google untuk membuat Google Web Toolkit, sebuah preprocessor yang mengubah Java menjadi JavaScript. Mungkin manajernya menyukai Java dan tidak ingin Java mati. Mungkin mereka memiliki jenius Java ekstra yang duduk-duduk, menunggu untuk menjalankan Web.

Apapun alasannya, mereka melakukannya dan mereka sering menggunakannya untuk produk Web mereka yang paling canggih. Ini adalah hadiah yang bagus untuk siapa saja yang memiliki tumpukan Java dan tidak ada waktu untuk menulis ulang. Semua isi bahasa ada di sana, tetapi beberapa kelas yang kurang umum seperti BigInteger tidak ada; Meskipun demikian, biasanya Anda dapat menemukan cara untuk menambahkannya. Kerangka antarmuka pengguna sebagian besar dipinjam dari Swing, jadi pengembang Swing akan merasa seperti di rumah sendiri. Orang lain tidak akan merasa terlalu sulit untuk belajar.

Google Web Toolkit bukanlah satu-satunya pilihan untuk programmer Java. Java2Script sepenuhnya terintegrasi dengan Eclipse, dan GrooScript mengubah sepupu berciuman Java, Groovy.

Ada beberapa alat yang menjalankan kode byte JVM dengan JavaScript, ide cerdas yang memungkinkan Anda menerapkan file JAR meskipun Anda tidak memiliki sumber Java. Beberapa, seperti Doppio dan Node-jvm, adalah penerjemah; yang lainnya, seperti TeaVM atau Dragome, akan mengubah kode byte menjadi JavaScript secara permanen.

Erlang

Pecinta erlang memiliki beberapa pilihan. Salah satu solusinya adalah dengan menggunakan Erjang, alat yang menjalankan Erlang di JVM, yang kemudian digunakan untuk menjalankan kode byte Java dengan salah satu opsi Java di atas. Kedengarannya sederhana, bukan?

Shen adalah kompiler yang mengubah Erlang dan sepupunya, seperti Elixir, Joxa, dan Lol, menjadi JavaScript. Jika Anda ingin menjalankan kode ini di Node.js, ada juga paket erlang-shen-js.

Pilihan ketiga adalah menggunakan LuvvieScript, subset Erlang ketat yang telah diberikan hook untuk mengakses semua objek DOM. Anda menggunakan struktur Erlang yang Anda sukai, dan itu menerjemahkan instruksi Anda menjadi sesuatu yang dipahami DOM. Ini tidak persis sama, tetapi akan berhasil.

C

Banyak orang terkejut saat mengetahui bahwa mereka dapat menggunakan bahasa mirip C atau C dengan JavaScript. Tentu, sintaks dasar JavaScript sangat mirip dengan C, tetapi intinya berbeda. C memungkinkan Anda menyentuh memori secara langsung, tetapi JavaScript menyembunyikan semua detail ini. C memungkinkan Anda memanipulasi pointer, tetapi JavaScript melindungi Anda dari kekuatan berbahaya mereka. Namun perbedaan ini dapat diatasi dengan sedikit peretasan yang cerdik.

Mungkin tidak adil untuk menyebut LLJS sebagai versi C, tetapi versi JavaScript ini menawarkan variabel yang diketik secara statis dan kontrol pemrogram memori - yah, bukan memori itu sendiri, tetapi versi JavaScript-nya. Dokumentasi suka menjanjikan eksekusi bebas jeda karena tidak ada pengumpulan sampah.

Jika Anda ingin bekerja dengan C standar, Clue akan mengubah C menjadi JavaScript dan berbagai bahasa skrip lain seperti Perl atau Lua. Para pengembang bahkan mengklaim bahwa beberapa kode sebenarnya akan berjalan lebih cepat di JIT untuk bahasa dinamis ini daripada saat dikompilasi ke dalam biner asli. Rahasianya adalah bahwa JIT dapat memperhatikan hal-hal selama runtime yang tidak dapat dilakukan oleh kompiler dasar karena mereka dapat melihat program berjalan.

Nama terbesarnya mungkin Emscripten, versi modded dari LLVM yang di-rewired untuk mengeluarkan instruksi untuk asm.js dan bukan kode mesin. Rahasianya adalah asm.js adalah bagian sempit dari JavaScript yang dirancang agar mudah dioptimalkan oleh mesin JavaScript terbaru, seperti SpiderMonkey. Hasilnya mengesankan, dan beberapa bukti terbaik berasal dari komunitas game. Baik mesin Unity dan Unreal dapat menjalankan game di browser yang kompatibel dengan HTML5.

Python

Python adalah bahasa dinamis populer lainnya yang memetakan dengan mudah ke JavaScript. Banyak fitur internal yang serupa, dan beberapa perbedaan terbesar ada pada sintaksnya.

Opsi yang lebih sederhana, seperti RapydScript dan PyvaScript, hanya menawarkan sintaks seperti Python yang diterjemahkan secara langsung ke dalam JavaScript. Mereka akan melakukan beberapa transformasi, seperti menyisipkan tanda kurung kurawal untuk mencocokkan blok yang diindentasi dengan spasi, dan voila - ini berjalan di browser. Ini lebih untuk programmer yang berpikir dalam JavaScript tetapi ingin mengetik secara Python, seperti yang dikatakan pecinta bahasa.

Versi yang lebih kompleks, seperti PYXC-PJ dan Pyjs, akan secara aktif mengubah Python menjadi JavaScript, seringkali membuat sesuatu yang cukup mudah dibaca - atau setidaknya dapat dibaca seperti kode aslinya. Pyjs juga dilengkapi dengan perangkat widget yang membuatnya cukup mirip dengan Google Web Toolkit.

Yang paling menyenangkan, mungkin PyPy, prestasi luar biasa dari rekayasa perangkat lunak dengan proporsi hampir Rube Goldbergian. Python masuk dan berjalan pada interpreter Python yang ditulis dalam RPython, bagian dari Python yang dirancang agar mudah dikompilasi. RPython ini kemudian dikompilasi menjadi sesuatu yang terlihat seperti C yang dapat dimasukkan ke dalam Emscripten. Pengembang mengklaim bahwa mereka dapat menunjukkan beberapa tolok ukur Python yang berjalan lebih cepat di SpiderMonkey daripada CPython.

Jika mereka bisa melakukannya dengan Python dan C, Anda juga bisa.

JavaScript, dengan kostum lain

Tentu saja, bahkan ketika menyangkut JavaScript, Anda punya alternatif. Bagaimanapun, beberapa orang menyukai tanda baca dan yang lainnya tidak. CoffeeScript untuk orang yang tidak. Jika Anda perlu memprogram dalam JavaScript tetapi tidak suka mengetik begitu banyak titik koma atau tanda kurung kurawal, maka CoffeeScript adalah untuk Anda.

Inti dari CoffeeScript sama dengan JavaScript karena ini sebenarnya bukan bahasa. Ini adalah preprosesor yang menambahkan tanda titik koma dan tanda kurung kurawal, jadi Anda tidak perlu melakukannya. Anda mengetik program Anda dalam kesederhanaan mirip Ruby, dan CoffeeScript mengubahnya menjadi JavaScript versi mini.

Ini tidak sama dengan pemrograman dalam bahasa lain karena variabel dan fungsi yang Anda tetapkan akan tetap berperilaku seperti variabel dan fungsi JavaScript. Variabel masih akan diketik secara dinamis, dan semua gangguan kecil akan tetap ada. Matematika dan perilaku operator plus yang tupai dan kelebihan beban masih akan membuat Anda lelah, tetapi Anda akan menghemat waktu mengetik.

Dunia CoffeeScript sangat beragam. Begitu dunia menyadari bahwa ia dapat memproses kodenya, banyak yang masuk ke dalam permainan. Iced CoffeeScript, misalnya, seperti CoffeeScript biasa tetapi dengan beberapa konstruksi tambahan yang membuat panggilan asinkron sedikit lebih bersih dan lebih mudah untuk diketik dan dibaca. Mungkin ada setidaknya selusin sepupu yang menawarkan untuk menyederhanakan gaya pemrograman khusus Anda.

Artikel terkait

  • 7 alasan mengapa framework adalah bahasa pemrograman baru
  • 7 pelajaran abadi dari pemrograman 'graybeards'
  • 9 bahasa mutakhir yang layak dipelajari sekarang
  • Unduh: Panduan kelangsungan hidup bisnis programmer profesional
  • Unduh: Penghargaan Teknologi Tahun Ini 2015
  • Unduh: 29 tip untuk sukses sebagai pengembang independen
  • Review: Empat besar Java IDE dibandingkan
  • Unduh: Praktis dengan 10 editor JavaScript dan IDE
  • 10 pertempuran berkecamuk untuk hati dan pikiran para pengembang
  • Serangan bahasa pemrograman satu huruf
  • PHP vs Node.js: Pertempuran epik untuk berbagi pikiran pengembang
  • 15 teknologi mengubah cara kerja pengembang
  • 12 prediksi untuk masa depan pemrograman
  • 15 tren pemrograman populer - dan 15 menjadi dingin
  • Dev-olution: Memberi hormat pada 19 generasi pemrogram komputer
  • 10 kemampuan yang ingin kami lihat di HTML6