Sử dụng ngôn ngữ lập trình tại Google [đã đóng]


29

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, Java và C ++ được sử dụng cho Google là gì. 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?


16
Ngoài ra, bạn đã quên Go.
cbrandolino

22
Nếu một ngôn ngữ là đủ, tại sao lại có Python, C ++ hoặc Java? Tất cả chúng ta chỉ có thể sử dụng ngôn ngữ hội cho bộ xử lý mà hệ thống của chúng tôi đang chạy.
Lazarus

Nói một ngôn ngữ là đủ cũng giống như nói một loại gỗ là đủ, bạn có tôn trọng một người thợ mộc chỉ làm việc ở Thông, nhưng không bao giờ là cây phong hay gỗ sồi?
Zachary K

Ngoài ra, bạn đã quên Sawzall labs.google.com.vn/s/sawzall.html
Chiron

1
Họ đã sử dụng java Kiểm tra reddit.com/r/google/comments/3sdx3b/
Elshan

Câu trả lời:


97

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.

Từ lời giải thích của bạn, điều đó có nghĩa là GMail sử dụng GWT?
Joshua Partogi

1
Google hiện cũng đang sử dụng python cho các ứng dụng web.
Raphael

Googler nổi bật Alex Martelli giải thích "Python nơi chúng ta có thể, C ++ nơi chúng ta phải"
Peter M. - là viết tắt của Monica

17
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.


4
+1, Sử dụng công cụ tốt nhất cho công việc. Tôi hiện đang làm việc trên một ứng dụng máy tính để bàn duy nhất sử dụng 3 ngôn ngữ lập trình (cộng với các ngôn ngữ đánh dấu và cơ sở dữ liệu khác nhau). Gần với công cụ kim loại với C ++, ứng dụng chính với Java và một số Jython ở đây và ở đó để dễ dàng tùy chỉnh. Thật ý nghĩa khi tận dụng tốt nhất của cả ba thế giới, IMO :-)
Joonas Pulakka


9

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. (Indexer, Crawler, Map-Giảm, Bảng lớn)
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.


Tôi đã triển khai các thuật toán phức tạp - không cực kỳ quan trọng về hiệu năng - trong Python.

3

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 tập lệnh python, họ sử dụng các thư viện java cho 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


2

"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 cũng 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 nghèo.


0

Họ cũng viết các ứng dụng Mac và iPhone bản địa, và các ứ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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.