Mengapa konsep bytecode tidak relevan seperti sebelumnya


Pendahuluan


Bahasa yang dikompilasi dari tipe yang ditafsirkan adalah bahasa pemrograman yang dikompilasi ke dalam beberapa jenis representasi perantara (kadang-kadang disebut sebagai " bytecode "). Contoh yang paling mencolok adalah JVM (Java Virtual Machine).


Artikel ini mengemukakan pemikiran saya tentang konsep mesin virtual untuk bahasa pemrograman dalam realitas saat ini. Dalam kenyataan, di mana sebagian besar layanan bekerja di Internet, dan program desktop secara bertahap dihapus.


Penyebab terjadinya


Pada saat World Wide Web lahir, muncul teknologi Java yang pertama kali mempopulerkan penggunaan mesin virtual sebagai lingkungan runtime untuk bahasa pemrograman tingkat tinggi.


Sun Microsystems mencoba menggabungkan keandalan dan kecepatan tinggi dari bahasa yang dikompilasi dengan portabilitas dan kemudahan penggunaan bahasa yang ditafsirkan. Hingga taraf tertentu, idenya terwujud, karena Java masih menjadi teknologi paling umum dalam membangun server yang sangat banyak dimuat.


Antara lain, salah satu persyaratan utama platform diajukan, yang kemudian menjadi slogan - "Kompilasi sekali, jalankan di mana-mana!" . Ini berarti bahwa programmer hanya harus mengkompilasi kode sumber ke dalam bytecode yang disebut, mampu berjalan pada sistem di mana JVM diinstal.


Ini telah menjadi kekuatan pendorong di belakang teknologi, melemparkan banyak bahasa ke latar belakang. Ini adalah semacam revolusi dalam dunia komputasi digital, karena sebelumnya siapa pun tidak dapat mencapai tingkat lintas platform yang serupa. Sekarang pengguna dapat mengunduh versi program yang sama pada banyak sistem operasi dan arsitektur prosesor, dan pastikan program itu akan bekerja persis seperti yang diinginkan pengembang.


Tetapi waktu berubah, dan teknologi menyertainya. World Wide Web mendapatkan semakin banyak popularitas, memadatkan beberapa hal yang akrab bagi kita.


Era layanan jarak jauh


"Mengapa mengirimkan program kepada pengguna jika Anda bisa membuat situs web?" - Pertanyaan ini diajukan oleh pengusaha besar, yang kemudian menghasilkan emigrasi layanan berskala besar ke World Wide Web. Program desktop standar telah mulai kehilangan popularitasnya, karena jauh lebih mudah dan lebih efisien untuk membuat situs web sederhana (atau tidak demikian).


Akibatnya, kebutuhan untuk mengunduh program dari Internet begitu sering telah menghilang. Buka situs dan lakukan tindakan yang diperlukan jauh lebih cepat daripada mengunduh megabyte data biner.


Sementara itu, Java telah mendapatkan popularitas dalam membangun situs-situs tersebut, karena tidak ada yang lebih nyaman pada waktu itu (hingga hari ini) tidak ada. File sumber mulai dikompilasi hanya untuk arsitektur server tertentu, oleh karena itu, prinsip "Kompilasi sekali, jalankan di mana-mana!" tidak lagi memiliki arti semula . Pengguna berhenti mengunduh program, dan pengembang mulai mengkompilasi hanya untuk arsitektur tertentu.


Evolusi bahasa


Sebelumnya, bahasa pemrograman yang dikompilasi memiliki fungsi pustaka standar yang agak buruk, karena itu perlu menggunakan banyak fungsi yang bergantung pada platform bahkan untuk aplikasi sederhana yang tidak melakukan hal supernatural.


Bahasa pemrograman juga tidak diam, dan bahasa seperti Rust dan Golang , keduanya dikompilasi, terungkap, dan keduanya memiliki perpustakaan standar dan banyak pihak ketiga yang menyediakan fungsionalitas independen dari arsitektur dan sistem operasi. Selain itu, ekosistem C / C ++ juga tidak diam.


Akibatnya, ternyata perpustakaan standar modern dan mesin virtual melakukan peran yang sama - mereka menerjemahkan kode lintas platform menjadi fungsi yang bergantung pada platform.


Sisa dari


Beberapa mungkin berpendapat bahwa masih ada permintaan untuk program desktop. Pada dasarnya, ini adalah program tertutup yang dimaksudkan untuk penggunaan internal di perusahaan, serta sejumlah kecil aplikasi yang tersedia untuk umum.


Dalam kedua kasus, kompilasi untuk ratusan platform yang berbeda tidak masuk akal, karena dalam sebagian besar kasus hanya tiga sistem operasi yang terkenal ( GNU / Linux , Microsoft Windows dan Mac OS ) dan satu keluarga arsitektur prosesor ( x86 ) yang digunakan.


Kesimpulan


Secara total, kami memiliki mesin virtual yang memperlambat pekerjaan mereka (seperti runtime bytecode), yang telah kehilangan keunggulan utama mereka karena dua faktor di atas:


  1. Kebutuhan untuk menjalankan program pada ratusan arsitektur yang berbeda tidak masuk akal, karena sebagian besar program bekerja pada server, dan tidak ada begitu banyak arsitektur pengguna dan sistem operasi.
  2. Bahasa yang dikompilasi tidak tinggal diam, dan perpustakaan standar mereka memperoleh fungsionalitas dasar yang diperlukan untuk kode lintas platform.

Diskusi dalam komentar ini disambut baik, saya harap artikel tersebut memberi Anda beberapa pemikiran tentang memilih bahasa yang tepat untuk tugas Anda.


Penambahan


Seperti disebutkan dalam komentar , kode terkelola memiliki beberapa kelebihan yang tidak tersedia untuk kode terkompilasi, termasuk refleksi dan anotasi.

Source: https://habr.com/ru/post/id454562/


All Articles