it-swarm-vi.com

Sử dụng ngôn ngữ lập trình tại Google

Tôi đã nghe nói Google sử dụng Python, Java và C++. Nhưng điều tôi không biết là mỗi ngôn ngữ lập trình đó được sử dụng như thế nào. Ý tôi là Python là gì, Java và C++ được sử dụng cho Google. Tại sao họ sử dụng tối đa 3 ngôn ngữ lập trình khi 1 ngôn ngữ là đủ. Có ai biết không?

29
Joshua Partogi

Câu trả lời đúng " 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ó ưu điểm 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ó kiểm soát nhiều hơn about how 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ó khăn 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 tiện ích tuyệt vời mà bạn thấy có thể đã bắt đầu cuộc sống như một lớp Java.

Python

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 cho 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 Đóng cửa Google .

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à vì 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. (Tại Google, chúng tôi chủ yếu bám sát các ngôn ngữ được đề cập ở đây, nhưng đây không phải là một yêu cầu khó.) Nếu bạn muốn sử dụng Đóng, Groovy hoặc Scala trên Máy ứng dụng nếu bạn bao gồm các tệp JAR đúng, mọi thứ chỉ nên công việc.

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 các 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 một cách tình cờ những lợi thế của những điểm mạnh này sẽ là một sự xấu hổ.
  • Sự sẵn có của các 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.
97
Chris Smith
1 language is enough

Có thể một ngôn ngữ là đủ để hoàn thành một số nhiệm vụ khác nhau đầy đủ, nhưng các ngôn ngữ khác nhau có điểm mạnh, điểm yếu và khả năng khác nhau.

Vì google hầu hết có thể lập trình cho một số lượng lớn các tình huống khác nhau, đó là trường hợp ngựa cho các khóa học, công cụ tốt nhất cho công việc.

17
StuperUser

Ba ngôn ngữ này được sử dụng cho các mục đích khác nhau.

Python có thể được sử dụng để viết các kịch bản tự động hóa.
[.__.] C++ để thực hiện các thuật toán phức tạp.
[.__.] Java cho các dịch vụ web, ứng dụng web, v.v.

Đây chỉ là những giả định của tôi.

9
Sorantis

Python được sử dụng cho trang web hỗ trợ của họ, bạn có thể thấy rằng Trang này được tạo bởi một tập lệnh python, họ sử dụng các thư viện Java đối với các ứng dụng web, do đó hỗ trợ GWT và Java trong công cụ ứng dụng

Tôi nghĩ rằng họ sử dụng C++ cho google earth hoặc cho các ứng dụng máy tính để bàn nói chung

3
Mahmoud Hossam

"1 ngôn ngữ là đủ" chỉ có thể đúng nếu mỗi dự án bạn làm là thuộc một loại cụ thể. Và đối với một số dự án, ngay cả C++ Java và Python không phải là công cụ tốt nhất. Hơn nữa, chỉ biết một ngôn ngữ là một đặc điểm nổi bật của lập trình viên kém.

2
Eldritch Conundrum

Họ cũng viết các ứng dụng Mac và iPhone gốc và những ứng dụng này nằm trong Objective-C. Lý do họ làm điều đó rất đơn giản: các API nằm trong Objective-C.

0
user4051