Câu trả lời đúng " bởi vì các ngôn ngữ khác nhau có thế mạnh khác nhau " đã được nêu. Nhưng hãy để tôi cung cấp thêm một số chi tiết về lý do:
C ++
C ++ có lợi thế chính là nhanh nhất trong số rất nhiều. Không cần thiết vì Java và Python chậm, nhưng vì trong C ++, bạn có nhiều quyền kiểm soát hơn về cách mọi thứ được thực thi.
Ví dụ: nếu bạn đang viết một frontend dịch vụ web yêu cầu độ trễ dưới 30ms, bạn có thể điều chỉnh mã C ++ để đạt được hiệu suất đó. Trong một ngôn ngữ được quản lý như Java, khó hơn một chút để khiến cho GC hợp tác hoàn hảo.
C ++ được sử dụng cho rất nhiều 'phép thuật của Google' như BigTable, MapReduce và tìm kiếm goo.
Java
Đối với hầu hết các ứng dụng tiêu chuẩn, Java là một ngôn ngữ hoàn toàn tốt. Nó có các công cụ tuyệt vời, rất nhiều thư viện hiện có và không mất nhiều thời gian để gỡ lỗi.
Java được sử dụng cho rất nhiều trang web lớn sẽ khó duy trì hơn trong một ngôn ngữ cấp thấp hơn như C hoặc C ++. Ví dụ, sự hiểu biết của tôi là GMail được viết bằng Java.
Ngoài ra, lưu ý rằng bạn có thể sử dụng Bộ công cụ web của Google để biên dịch mã Java thành JavaScript. Vì vậy, trang web hoặc widget tuyệt vời mà bạn thấy có thể đã bắt đầu cuộc sống như một lớp Java.
Con trăn
Python là một ngôn ngữ có mục đích chung tuyệt vời, nhưng không cung cấp nhiều quyền kiểm soát chi tiết như Java. (Ví dụ: có tất cả các loại đối số JVM điên rồ cho mọi thứ - python có cung cấp cấu hình tương tự không?)
Tuy nhiên, với Python hoàn toàn phù hợp với các trang web và ứng dụng đơn giản, nếu không sẽ là các tập lệnh shell khủng khiếp. Ví dụ: nếu bạn muốn viết một testcase đơn giản để thu thập dữ liệu từ một số nguồn, xử lý chúng và tải chúng lên App Engine Python sẽ là một lựa chọn tốt. (Tuy nhiên, nếu bạn cần phân phối quá trình xử lý đó trên 1.000 máy, có lẽ bạn có thể sử dụng ngôn ngữ khác ...)
JavaScript
Rõ ràng Google sử dụng rất nhiều JavaScript. Tuy nhiên, loại JavaScript được viết tại Google khác với những gì bạn thấy trong tự nhiên. Google đã phát triển trình biên dịch JavaScript tối ưu hóa cho phép bạn xây dựng các chú thích trong các bình luận để đổi lấy việc tối ưu hóa tốt hơn và kiểm tra tĩnh. Xem Google Đóng cửa .
Ngôn ngữ không thành vấn đề (interop)
Một lý do khác khiến Google không sử dụng chỉ một ngôn ngữ là nó không cần thiết. Có những cơ sở trong hầu hết mọi ngôn ngữ lập trình hiện đại để gọi vào các thư viện bên ngoài, các thư viện có thể được viết bằng một ngôn ngữ khác. (Xem swig .)
Ngoài ra, vì Máy ứng dụng chạy JVM, bạn có thể chạy bất kỳ ngôn ngữ nào biên dịch thành mã byte Java. .
Mã nguồn mở
Ngoài ra, Google sử dụng và đóng góp cho rất nhiều Nguồn mở nếu có thể. Các dự án này thường được viết bằng một trong những ngôn ngữ trên và yêu cầu nó phải được 'sử dụng' tại Google.
Điểm mấu chốt là hai điều:
- Mỗi ngôn ngữ lập trình đều có thế mạnh riêng. Không tận dụng tình huống tận dụng những điểm mạnh này sẽ là một sự xấu hổ.
- Sự sẵn có của bộ công cụ interop và thời gian chạy tương thích có nghĩa là ít sử dụng nhiều ngôn ngữ trong cùng một môi trường thời gian chạy.