Bahasa pemrograman yang didukung untuk penggunaan sisi server di Meta

Bahasa pemrograman yang didukung untuk penggunaan sisi server di Meta

– Mendukung bahasa pemrograman di Meta adalah keputusan yang sangat hati-hati dan disengaja.

– Kami membagikan panduan bahasa pemrograman internal kami yang membantu teknisi dan pengembang kami memilih bahasa terbaik untuk proyek mereka.

– Rust adalah tambahan terbaru untuk daftar bahasa sisi server yang didukung Meta.

Bahasa pemrograman : Di Meta, kami menggunakan banyak bahasa pemrograman yang berbeda untuk berbagai platform dan kasus penggunaan. Mendukung bahasa baru bukanlah keputusan yang kami buat dengan enteng. Penting bahwa setiap bahasa yang kami adopsi paling cocok untuk kasus penggunaan tertentu, jadi kami melakukan tingkat ketekunan yang tinggi setiap kali kami mengevaluasi suatu bahasa. Keputusan bahasa cenderung tetap setelah dibuat, jadi kami ingin berhati-hati sejak awal untuk memberi teknisi kami alat terbaik untuk digunakan.

Hari ini, kami berbagi wawasan tentang panduan internal kami tentang berbagai bahasa yang memainkan peran penting di Meta — dan khususnya bahasa pemrograman sisi server kami, dengan tambahan terbaru Rust.

Apa bahasa yang didukung di Meta?

Sebelum kita masuk ke detail individu, inilah arti yang didukung (dan tidak berarti) dalam Meta:

  • Jika bahasa didukung, pengembang dapat mengandalkan untuk mendapatkan pengalaman yang baik dengan pengeditan kode, debugging, build, dan penerapan, serta pustaka inti dan interoperabilitas. Pengembang juga dapat mengandalkan pengalaman yang tidak akan hilang — mereka tidak akan diminta untuk beralih dari bahasa yang didukung. Untuk sebagian besar kasus, Meta merekomendasikan untuk memilih bahasa yang didukung untuk proyek dan layanan baru.
  • Mendukung sepenuhnya sebuah bahasa adalah investasi besar untuk Meta, jadi bahasa “long tail” didukung oleh komunitas. Untuk bahasa tersebut, ada jaminan yang jauh lebih sedikit, dan tim yang mengadopsinya harus menanggung beban pemeliharaan. Dalam kebanyakan kasus, tim harus menghindari menggunakannya untuk aplikasi baru, kecuali jika tim sudah memiliki investasi yang signifikan dalam bahasa tersebut.

Bahasa sisi server utama yang didukung Meta adalah Hack, C++, Rust, dan Python.

  • Untuk layanan back-end yang sensitif terhadap kinerja, kami mendorong C++ dan Rust. Karat adalah tambahan baru untuk daftar ini. Ada jejak Rust yang meningkat pesat dalam produk dan layanan kami, dan kami berkomitmen untuk Rust jangka panjang dan menyambut pengadopsi awal.
  • Untuk alat CLI, kami merekomendasikan Rust. Ini adalah rekomendasi baru untuk tahun ini.
  • Untuk logika bisnis dan aplikasi yang relatif tanpa kewarganegaraan, ekosistem Hack memiliki tingkat otomatisasi dan dukungan tertinggi di Meta dan merupakan bahasa yang direkomendasikan.
  • Terakhir, Meta terus mendukung pengembang Python kami. Untuk ilmu data, aplikasi ML, dan Instagram, Python terus menjadi bahasa pilihan, dan kami terus berinvestasi dalam pengalaman dengan ekosistem ini.
  • Untuk kasus penggunaan tertentu, kami mendukung bahasa lain, termasuk Java, Erlang, Haskell, dan Go. Bahasa-bahasa ini saat ini tidak didukung secara luas di luar kasus penggunaan tertentu.

Bagaimana kami sampai pada daftar bahasa yang didukung?

Mari kita jelaskan mengapa kami memiliki daftar bahasa yang didukung dan mengapa kami umumnya enggan menambahkan bahasa ke daftar itu (walaupun Rust adalah tambahan baru). Alasan utamanya adalah dibutuhkan investasi rekayasa yang signifikan untuk mendukung bahasa pemrograman pada skala Meta, dan biaya tersebut didistribusikan secara luas — tidak hanya ditanggung oleh penggunanya. Beberapa contoh:

  • Dukungan untuk perpustakaan inti. Ada sangat sedikit layanan yang terisolasi, dan semakin sedikit bahasa yang kita miliki, semakin sedikit beban yang ada pada perpustakaan inti.
  • Keamanan dan Privasi. Tumpukan yang terfragmentasi meningkatkan kerumitan dalam membangun fitur keamanan dan privasi yang penting ke dalam layanan kami.
  • Resiko operasional. Jika beberapa layanan mengalami masalah kritis, itu akan membutuhkan bantuan segera. Kami telah membangun keahlian luar biasa dalam mendiagnosis dan menyelesaikan masalah produksi, dan respons insiden kami bergantung pada kemampuan membaca, memahami, dan men-debug layanan untuk membantu dalam insiden besar. Menghindari fragmentasi mengurangi risiko operasional.
  • Keahlian. Kami membangun dan memelihara sejumlah besar insinyur dengan keahlian di masing-masing bahasa ini.
  • Pengalaman pengembang. Bahasa yang didukung memiliki tim yang bekerja untuk meningkatkan area seperti dukungan IDE, kecepatan build, pengalaman debugging, dan banyak lagi.

Memilih bahasa yang kurang optimal untuk sebuah proyek dapat memakan biaya yang mahal dalam hal waktu, efisiensi, dan produktivitas. Jadi, ada baiknya menempatkan setiap bahasa yang kami evaluasi di bawah pengawasan ketat. Contoh di atas menunjukkan seberapa besar investasi yang kami lakukan untuk mendukung suatu bahasa.

Rust adalah bahasa sisi server terbaru di Meta

Sejak kami memulai perjalanan kami dengan Rust, jumlah proyek yang menggunakan Rust di dalam Meta telah meningkat pada tingkat yang dipercepat. Kami senang melihat Rust ditambahkan ke daftar bahasa yang didukung sisi server ini, memberi teknisi kami lebih banyak alat, fleksibilitas, dan dukungan untuk pekerjaan mereka. Meta berkomitmen untuk memberikan dukungan jangka panjang untuk bahasa pemrograman yang digunakan oleh pengembang kami, dan langkah ini menandakan komitmen dan dukungan jangka panjang Meta untuk ekosistem bahasa Rust.

Pemrograman