Saya membaca bahwa Facebook dimulai dalam PHP, dan kemudian untuk mendapatkan kecepatan, mereka sekarang mengkompilasi PHP sebagai kode C ++. Jika itu masalahnya mengapa mereka tidak:
Hanya memprogram di c ++? Tentunya harus ada BEBERAPA kesalahan / bug ketika menekan tombol kompiler ajaib yang port PHP ke kode c ++, kan?
Jika konverter yang mengesankan ini bekerja dengan sangat baik, mengapa tetap menggunakan PHP? Mengapa tidak menggunakan sesuatu seperti Ruby atau Python? Catatan - Saya memilih keduanya secara acak, tetapi kebanyakan karena hampir semua orang mengatakan pengkodean dalam bahasa-bahasa itu adalah "sukacita". Jadi mengapa tidak mengembangkan bahasa super hebat lalu menekan tombol kompilasi c ++ magic?
<snark>
(Sejauh JS dapat disebut "dapat dibaca", yaitu.)</snark>
Jawaban:
Mereka tidak melakukannya. Setidaknya tidak lagi. Ternyata melakukannya dengan cara itu menyebabkan terlalu banyak masalah, termasuk penyebaran sakit kepala dan meniadakan salah satu keunggulan utama menggunakan bahasa scripting di tempat pertama - mampu mengubah skrip tanpa perlu mengkompilasi ulang - sehingga mereka mengubah sistem HipHop menjadi arsitektur VM dengan fase JIT transparan, dan menghentikan kompiler C ++.
Cukup menarik, ternyata melakukannya dengan cara ini juga sekitar dua kali lebih cepat (seperti pada performan) seperti pendekatan trans-kompilasi C ++ asli.
sumber
Insinyur Senior Facebook Haiping Zhao mungkin menjawab pertanyaan Anda dengan sangat baik.
Sisa posting blog adalah bacaan yang baik, dan saya merekomendasikannya. Ini memberi beberapa wawasan tentang tantangan pemrograman yang dihadapi Facebook, dan bagaimana mereka berusaha mengatasi masalah itu.
sumber
Benar, tetapi pemrograman dalam C ++ akan memerlukan penggantian seluruh basis kode yang ada - sebuah ide terkenal di dunia karena benar-benar bodoh dan menghancurkan.
Karena itu, sekali lagi, memerlukan penggantian basis kode PHP yang ada.
Di dunia yang ideal, mereka hanya kode dalam C ++ dari awal. Sayangnya, karena mereka memiliki kode shitload yang ada di PHP, itu tidak mungkin. Jadi sebagai gantinya, mereka meretas masalah. Jauh lebih murah.
sumber
they hack around the problem
? Mengoptimalkan kode menggunakan C ++ atau bahkan perakitan bukanlah hal yang baru, sudah melakukannya sejak sebelum ada PC."Memang, mengapa tidak bekerja secara langsung, karena kode C ++ akhirnya diterjemahkan ke dalam instruksi kode mesin?"
- Bahwa, pada intinya, adalah apa yang mengurangi argumen. Dan mudah-mudahan ini menjelaskan mengapa itu tidak dilakukan:
sumber
Saya tidak di Facebook, tetapi tebakan terbaik saya pada motifnya adalah "untuk menghindari risiko yang signifikan". Pada titik ini, beralih ke bahasa lain bukan lagi keputusan teknologi: di atas segalanya, itu adalah keputusan bisnis.
Ketika Anda adalah perusahaan besar yang tumbuh secara organik dengan ukuran FB, Anda perlahan-lahan menarik orang yang kemudian mendapatkan keahlian dalam platform pemrograman Anda (dalam kasus FB, itu PHP). Satu per satu, Anda mendapatkan beberapa ribu karyawan dengan keahlian hebat di PHP. Pada titik ini, beralih ke bahasa lain menjadi sangat berbahaya: teknisi Anda tidak akan mampu mempercepat ekosistem baru, dan mungkin memerlukan waktu yang signifikan untuk mencapai tingkat keahlian yang diminta oleh pekerjaan mereka saat ini, apalagi meningkatkan keterampilan mereka.
Mengesampingkan manfaat relatif PHP dan bahasa alternatif, dengan jumlah investasi yang dilakukan FB ke dalam teknologi PHP, akan terlalu sombong untuk berpikir bahwa peralihan akan tidak menyakitkan, dan terlalu bodoh untuk mencobanya. Dalam bisnis, teknologi adalah alat untuk mencapai tujuan, sehingga "kegembiraan" pemrograman bahkan tidak memasuki diskusi.
sumber
Saya hanya bisa memikirkan satu situs web utama yang diimplementasikan dalam C ++. H2G2
Bahkan kemudian ion implementasi saat ini sebenarnya adalah juru bahasa dengan sejumlah besar fungsi manipulasi teks dan basis data (apakah itu tidak terdengar seperti dan PHP awal :-)).
Facebook cukup senang dengan fungsionalitas situs web mereka. Mereka baru saja tumbuh ke titik di mana vanilla PHP tidak dapat mendukung volume yang mereka proses. Oleh karena itu kompilasi ada PHP ke dalam kode mesin C ++ dari sana. Bisa saja menulis kompiler penuh untuk PHP, tetapi mereka akan melewatkan 20 tahun optimasi halus yang telah masuk ke tumpukan kompiler gcc. Intinya adalah kode "C ++" tidak dimaksudkan untuk dapat dibaca atau dipelihara manusia, hanya langkah menengah dalam perjalanan ke kode mesin.
Seperti banyak programmer di situs ini saya merasa Anda meremehkan jumlah pekerjaan yang diinvestasikan dalam logika bisnis hte dan fungsionalitas yang tertanam dalam aplikasi yang ada, dan, kode nilai untuk kepentingannya sendiri.
sumber