Alat hebat untuk menyusun ke JavaScript

Setiap pengaturcara mempunyai dua atau dua bahasa kegemaran. Pencinta JavaScript paling beruntung hari ini kerana bahasa mereka mengambil alih Internet dan Internet mengambil alih dunia. Mereka yang hatinya berada di tempat lain dalam dunia bahasa pengaturcaraan, bagaimanapun, tersekat. Mereka boleh terus berada di luar dan mengutuk juggernaut HTML, CSS, JavaScript, dan Node.js tanpa henti, atau mereka dapat mencari cara untuk menyukainya.

Nasib baik, ada cara ketiga yang membolehkan anda menikmati keseronokan bahasa kegemaran anda sambil tetap menggunakan kod anda ke dunia JavaScript yang terus berkembang: Cukup ubah kod anda, yang sangat mudah. Prestasi mungkin sedikit merosot, tetapi selalunya jauh lebih sedikit daripada yang anda bayangkan. Kemudian anda boleh menghantar kod anda ke penyemak imbas dan berhenti berusaha menyuruh orang memasang fail yang boleh dilaksanakan.

Orang yang tabah akan merasa seperti ini adalah sikap tidak sabar, mundur pahit dari prinsip-prinsip yang mengikat anda dengan sintaks kegemaran anda. Mungkin ada yang merasa ia adalah pengkhianatan, tindakan yang sangat khianat sehingga anda mesti menyembunyikannya dari rakan sekerja. Orang lain akan mencadangkan, dengan betul, bahawa ia tidak begitu mudah. Mendapatkan kod untuk dijalankan adalah satu perkara. Melekatkan bahagian dan membuat UI adalah banyak kerja tambahan.

Anda dialu-alukan untuk berkasih sayang, tetapi terdapat banyak rasionalisasi yang menjadikan idea itu lebih sedap. Pertama, enjin JavaScript berjalan jauh lebih cepat daripada sebelumnya. Kedua, membuat UI Web tidak pernah semudah ini, berkat kerangka kerja dan bakat reka bentuk HTML / CSS yang banyak. Ketiga, JavaScript menjadi sedikit lingua franca. Sekiranya anda boleh menukar semua bahasa ini ke JavaScript, dan senarai itu panjang, anda juga boleh menghubungkannya semua.

Di sini kita melihat kekayaan bahasa kecil yang membolehkan beberapa bahasa pengaturcaraan yang paling popular dikompilasi ke JavaScript. Artikel yang akan datang akan meneroka bagaimana bahasa pudar dilahirkan semula dengan membawanya ke penyemak imbas. Tidak ada alasan untuk merasa kecewa atau benci. Teknik ini membolehkan anda menikmati bahasa kegemaran anda dan berjalan di mana sahaja JavaScript dilakukan.

Ruby

Terdapat sejumlah pilihan yang memungkinkan anda berfikir seperti pengaturcara Ruby ketika berlari dalam lingkungan JavaScript.

RubyJS, misalnya, adalah perpustakaan JavaScript yang menambahkan banyak primitif dasar dalam satu objek JavaScript. Apa yang anda tulis adalah secara teknikal JavaScript, tetapi objek Ruby khas berkelakuan seperti kod Ruby sepanjang masa. String, Numbers, Iterator dan Enumerator sedang menanti anda.

Sekiranya menulis JavaScript yang berfungsi seperti Ruby tidak mencukupi, Opal akan menerjemahkan kod sumber Ruby terus ke dalam JavaScript. Selalunya berkelakuan seperti Ruby VM, tetapi kadang-kadang tidak. Strings Ruby yang dapat diubah, misalnya, diubah secara langsung menjadi yang tidak berubah JavaScript, yang seharusnya tidak menjadi masalah bagi beberapa aplikasi tetapi dapat membuat beberapa orang menjadi gila. Kesan kecil lain seperti ini boleh menyebabkan kejutan kasar dalam kes-kes tepi.

Bagi mereka yang menginginkan lebih banyak, HotRuby menawarkan penyelesaian yang lebih lengkap, mesin maya JavaScript yang menggunakan kod Ruby op. Pangkalan kod semakin lama, tetapi ia memberikan pilihan lain kepada orang-orang yang benar.

Jawa

Sukar untuk mengetahui apa yang memberi inspirasi kepada Google untuk membuat Google Web Toolkit, sebuah preprocessor yang mengubah Java menjadi JavaScript. Mungkin pengurus itu menyukai Java dan tidak mahu ia mati. Mungkin mereka mempunyai genius Java tambahan yang duduk-duduk, menunggu untuk menjalankan Web.

Apa pun alasannya, mereka melakukannya dan mereka sering menggunakannya untuk produk Web mereka yang paling canggih. Ini hadiah terbaik untuk sesiapa sahaja yang mempunyai timbunan Java dan tidak ada masa untuk menulis semula. Semangat bahasa ada di sana, tetapi beberapa kelas yang kurang biasa seperti BigInteger hilang; yang mengatakan, anda biasanya dapat mencari cara untuk menambahkannya. Rangka kerja antara muka pengguna sebahagian besarnya dipinjam dari Swing, jadi pemaju Swing akan merasa seperti di rumah sendiri. Orang lain tidak akan sukar belajar.

Google Web Toolkit adalah satu-satunya pilihan untuk pengaturcara Java. Java2Script digabungkan sepenuhnya dengan Eclipse, dan GrooScript menukar sepupu ciuman Java, Groovy.

Terdapat beberapa alat yang menjalankan kod byte JVM dengan JavaScript, idea pintar yang membolehkan anda menyebarkan fail JAR walaupun anda tidak mempunyai sumber Java. Beberapa, seperti Doppio dan Node-jvm, adalah jurubahasa; yang lain, seperti TeaVM atau Dragome, akan menukar kod bait menjadi JavaScript secara kekal.

Erlang

Pencinta Erlang mempunyai beberapa pilihan. Salah satu penyelesaiannya adalah dengan menggunakan Erjang, alat yang menjalankan Erlang pada JVM, yang kemudian digunakan untuk menjalankan kod byte Java dengan salah satu pilihan Java di atas. Kedengarannya sederhana, bukan?

Shen adalah penyusun yang mengubah Erlang dan sepupunya, seperti Elixir, Joxa, dan Lol, menjadi JavaScript. Sekiranya anda ingin menjalankan kod ini di Node.js, ada juga pakej erlang-shen-js.

Pilihan ketiga adalah menggunakan LuvvieScript, subset Erlang yang ketat yang telah diberi kait untuk mengakses semua objek DOM. Anda menggunakan struktur Erlang yang anda sukai, dan ia menerjemahkan arahan anda menjadi sesuatu yang difahami oleh DOM. Ia tidak sama, tetapi ia akan berlaku.

C

Ramai orang terkejut apabila mereka dapat menggunakan bahasa C atau C dengan JavaScript. Pasti, sintaks JavaScript asasnya hampir sama dengan C, tetapi keberaniannya berbeza. C membolehkan anda menyentuh memori secara langsung, tetapi JavaScript menyembunyikan semua butiran ini. C membolehkan anda memanipulasi petunjuk, tetapi JavaScript melindungi anda dari kekuatan berbahaya mereka. Namun perbezaan ini dapat diatasi dengan sedikit peretasan pintar.

Mungkin tidak adil untuk memanggil LLJS versi C, tetapi versi JavaScript ini menawarkan pemboleh ubah yang ditaip secara statik dan pengaturcara kawalan memori - baik, bukan memori itu sendiri, tetapi versi JavaScript daripadanya. Dokumentasi suka menjanjikan pelaksanaan tanpa jeda kerana tidak ada pengumpulan sampah.

Sekiranya anda ingin bekerja dengan standard C, Clue akan menukar C menjadi JavaScript dan pelbagai bahasa skrip lain seperti Perl atau Lua. Pembangun bahkan mendakwa bahawa beberapa kod sebenarnya akan berjalan lebih cepat di JIT untuk bahasa dinamik ini daripada yang akan disusun ke dalam binari asli. Rahsianya adalah bahawa JIT dapat melihat perkara semasa runtime yang tidak dapat dilakukan oleh penyusun asas kerana mereka dapat menonton program berjalan.

Nama terbesar mungkin Emscripten, versi LLVM modded yang disusun semula untuk mengeluarkan arahan untuk asm.js dan bukannya kod mesin. Rahsianya ialah asm.js adalah subkumpulan sempit JavaScript yang direka untuk dioptimumkan dengan mudah oleh enjin JavaScript terkini, seperti SpiderMonkey. Hasilnya mengagumkan, dan beberapa bukti terbaik datang dari komuniti permainan. Enjin Unity dan Unreal boleh menjalankan permainan dalam penyemak imbas yang serasi dengan HTML5.

Python

Python adalah bahasa dinamik popular yang mudah dipetakan ke JavaScript. Banyak ciri dalamannya serupa, dan beberapa perbezaan terbesar terdapat dalam sintaks.

Pilihan 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 memasukkan kurungan keriting agar sepadan dengan blok yang diberi ruang kosong, dan voilĂ  - ia berjalan di penyemak imbas. Ini lebih untuk pengaturcara yang berfikir dalam JavaScript tetapi ingin menaip Pythonically, seperti yang dikatakan oleh pencinta bahasa.

Versi yang lebih rumit, seperti PYXC-PJ dan Pyjs, secara aktif akan menukar Python menjadi JavaScript, sering mencipta sesuatu yang cukup mudah dibaca - atau sekurang-kurangnya sama seperti kod asal. Pyjs juga dilengkapi dengan toolkit widget yang membuatnya serupa dengan Google Web Toolkit.

Yang paling menyeronokkan, mungkin PyPy, prestasi kejuruteraan perisian yang luar biasa dengan perkadaran hampir Rube Goldberg. Python masuk dan berjalan pada jurubahasa Python yang ditulis dalam RPython, subset Python yang dirancang untuk disusun dengan mudah. RPython ini kemudian disusun menjadi sesuatu yang kelihatan seperti C yang dapat dimasukkan ke dalam Emscripten. Pembangun mendakwa bahawa mereka dapat menunjukkan beberapa penanda aras Python berjalan lebih cepat di SpiderMonkey daripada CPython.

Sekiranya mereka dapat melakukannya dengan Python dan C, anda juga boleh.

JavaScript, dengan pakaian lain

Sudah tentu, walaupun berkaitan dengan JavaScript, anda mempunyai alternatif. Lagipun, sebilangan orang suka tanda baca dan yang lain tidak. CoffeeScript adalah untuk orang yang tidak. Sekiranya anda perlu memprogram dalam JavaScript tetapi tidak suka menaip begitu banyak titik koma atau tanda kurung, maka CoffeeScript adalah untuk anda.

Usaha CoffeeScript sama dengan JavaScript kerana sebenarnya bukan bahasa. Ini adalah praprosesor yang menambah tanda titik koma dan tanda kurung, jadi anda tidak perlu. Anda menaip program anda dalam kesederhanaan seperti Ruby, dan CoffeeScript mengubahnya menjadi versi JavaScript minimum.

Ini tidak sama dengan pengaturcaraan dalam bahasa lain kerana pemboleh ubah dan fungsi yang anda tentukan akan tetap berperilaku seperti pemboleh ubah dan fungsi JavaScript. Pemboleh ubah masih akan ditaip secara dinamik, dan semua kejengkelan kecil masih ada. Tingkah laku pengendali tambah matematik dan tupai tetap akan membuat anda kecewa, tetapi anda akan menjimatkan masa untuk menaip.

Dunia CoffeeScript sangat pelbagai. Setelah dunia menyedari bahawa ia dapat memproses kodnya, banyak yang masuk ke dalam permainan. Iced CoffeeScript, misalnya, seperti CoffeeScript biasa tetapi dengan beberapa konstruksi tambahan yang menjadikan panggilan tak segerak sedikit lebih bersih dan lebih mudah untuk menaip dan membaca. Mungkin ada sekurang-kurangnya selusin sepupu yang menawarkan untuk mempermudah gaya pengaturcaraan anda.

Artikel berkaitan

  • 7 sebab mengapa kerangka kerja adalah bahasa pengaturcaraan baru
  • 7 pelajaran abadi pengaturcaraan 'graybeards'
  • 9 bahasa canggih yang patut dipelajari sekarang
  • Muat turun: Panduan survival perniagaan pengaturcara profesional
  • Muat turun: Anugerah Teknologi Tahun 2015
  • Muat turun: 29 petua untuk berjaya sebagai pembangun bebas
  • Ulasan: Empat IDE Java yang besar dibandingkan
  • Muat turun: Hands-on dengan 10 editor JavaScript dan IDE
  • 10 pertempuran berkobar-kobar untuk hati dan fikiran pemaju
  • Serangan bahasa pengaturcaraan satu huruf
  • PHP vs Node.js: Pertempuran epik untuk bahagian pemikiran pemaju
  • 15 teknologi mengubah cara pemaju berfungsi
  • 12 ramalan untuk masa depan pengaturcaraan
  • 15 trend pengaturcaraan panas - dan 15 aliran sejuk
  • Perhatian: Memberi salam kepada 19 generasi pengaturcara komputer
  • 10 keupayaan yang ingin kita lihat dalam HTML6