Sử dụng nhiều Python tại Google [đã đóng]


185

Việc sử dụng Python nhiều của Google, đó chỉ là vấn đề về hương vị hay nó mang lại cho họ lợi thế cạnh tranh?


21
Điều này cần phải là wiki cộng đồng
AutomatedTester

72
Alex Martelli đến cho câu trả lời được chấp nhận thực sự sớm, ....
BarsheD

4
Trên thực tế tôi nghĩ rằng câu trả lời này có thể được trả lời một cách khách quan (phải có tuyên bố của Google ở ​​đâu đó tại sao họ sử dụng nó;))
Felix Kling

15
@nomemory, "nặng" là khá một tính từ đúng ở đây (tất nhiên bạn cần để có thể nhìn vào codebase của chúng tôi để xác nhận - bao nhiêu Python vs Java vs C ++ vv - nhưng, tôi có thể nhìn vào nó và đóng góp cho nó, chủ yếu là Python, hầu hết mỗi ngày ;-). Và câu hỏi không nằm ở tất cả ngành CNTT - cụ thể là trên Google, một công ty 20.000 nhân viên (bao gồm cả những người không lập trình viên), nơi một số người trong chúng ta đã "có cái nhìn tổng thể" tốt hơn , từ khi hình thành quan điểm đó và hành động theo nó là phần cốt lõi của công việc của chúng tôi ;-). Vì vậy, tôi đang bỏ phiếu để mở lại.
Alex Martelli

7
@nomemory, luôn có những nhà tuyển dụng Oracle quan tâm đến các hội thảo về Python nên tôi rất ngạc nhiên khi biết rằng Python "không tồn tại" trong cơ sở mã của họ (nếu vậy, những nhà tuyển dụng đó đang nói dối, cũng như lãng phí thời gian của họ và Pythonistas ' ;-). Và dù sao, Oracle và Google cạnh tranh như thế nào, thực sự? -)
Alex Martelli

Câu trả lời:


286

Tôi thực sự không thể đưa ra một câu trả lời dứt khoát, bởi vì vào thời điểm tôi phỏng vấn tại Google năm 2004, Python đã nổi bật tại Google.

Thật vậy, có một lời giải thích rõ ràng hấp dẫn mà tôi chắc chắn có thể phủ nhận: đó không phải là Google sử dụng Python bởi vì nó sử dụng rất nhiều Pythonistas nổi bật - thay vào đó, hầu hết các nhân viên "Python nổi bật" đã tham gia Google, ít nhất là bởi vì chúng tôi biết về sự nổi bật của Python ở đó (các trường hợp ngoại lệ có thể bao gồm Peter Norvig và Jeremy Hylton, nhưng trong lịch sử lựa chọn Python của Python có trước cả chúng).

Đó chắc chắn là lý do tại sao lần đầu tiên tôi quan tâm (nhà xuất bản của tôi cho tôi biết về số lượng lớn sách mà Google đã mua - ban đầu, tôi nghĩ đây là một cơ hội tốt để bán dịch vụ tư vấn tự do của mình ...; - ), làm thế nào sau đó tôi có thể thuyết phục Guido tham gia với chúng tôi, và, tôi tin rằng, một phần động lực cho những Pythonist như Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

Tất cả đã bắt đầu, tôi tin, bởi vì những nhân viên Google đầu tiên (Serge, Larry, Craig, ...) đã đưa ra một quyết định kỹ thuật tốt: "Python nơi chúng ta có thể, C ++ nơi chúng ta phải" - họ đã sử dụng (một tập hợp con) C ++ cho các phần của ngăn xếp phần mềm có độ trễ rất thấp và / hoặc kiểm soát chặt chẽ bộ nhớ là rất quan trọng và Python, cho phép phân phối và bảo trì chương trình nhanh hơn, cho các phần khác. Vào thời điểm đó, vào cuối những năm 90, sự lựa chọn cho vai trò thứ hai chủ yếu là giữa Python và Perl: các ngôn ngữ kịch bản khác chưa được xử lý (ví dụ như tôi không nghĩ rằng Ruby đã tồn tại) hoặc có những vấn đề và hạn chế khác. Perl đã trưởng thành hơn (đặc biệt là về hệ sinh thái của các tiện ích bổ sung có sẵn thông qua CPAN), nhưng Python được coi là dễ đọc và dễ bảo trì hơn, và việc giao tiếp với các thư viện C ++ (thông qua SWIG) dễ dàng hơn.

Java xuất hiện sau đó, bao gồm một phân khúc trung gian - và gần đây dĩ nhiên là Go đã được phát triển (mặc dù tôi không tin có nhiều công việc sản xuất trong đó, vì nó vẫn đang phát triển và trưởng thành). Một số ngôn ngữ chuyên ngành như sawzall cũng nằm trong hỗn hợp cho các tác vụ rất cụ thể và tất nhiên Javascript rất quan trọng đối với công việc phía trình duyệt.

Các ngôn ngữ khác, bao gồm cả những ngôn ngữ mà Greg đã đề cập lại trong '06, là "loại tình cờ" hoặc được sử dụng cho các tác vụ cụ thể khác (ví dụ: Mục tiêu C cho khách hàng trên iPhone hoặc máy Mac) - ví dụ: khi Google thuê quản trị viên hệ thống đầu tiên của mình , những nhân viên đó chắc chắn đã đến với sự thành thạo rất mạnh mẽ của Perl và Bash, và thường sử dụng một trong những ngôn ngữ đó để phát triển một số hệ thống nội bộ phức tạp; mã hóa lại những thứ trong Python (để triển khai và bảo trì dễ dàng hơn) thường xảy ra. Các ngôn ngữ khác (chẳng hạn như C #) có thể tạm thời bị trộn lẫn do mua lại, nhưng, một lần nữa, mã hóa lại bằng một trong những "ngôn ngữ chính của Google" luôn là ưu tiên khá cao (trong trường hợp của C #, mã hóa thường chủ yếu bằng Java, như hai ngôn ngữ giải quyết các lĩnh vực tương tự nhau về mức độ trừu tượng).


@Alex có lẽ tôi đã không hiểu chính xác nhưng có vẻ như google muốn môi trường của họ mở ra cho các kỹ sư (đặc biệt là các nhà nghiên cứu), những người đã dành nhiều năm ở trường đại học và chỉ có C hoặc C ++ trong tay (vì mọi người bắt đầu với những ngôn ngữ này và hầu hết đều kết thúc lên với nó quá). Ở đây, python là ứng cử viên mạnh mẽ cung cấp giao diện cho lib lớn của C / C ++.
Ramiz Uddin


Hiểu biết tuyệt vời !! Có thể giúp những người làm việc trong tương lai
kmario23

3
Một mẩu tin tôi thu thập được từ việc đọc cuốn sách tuyệt vời của Levy "Trong 'Plex" là cách Python vào Google (trước khi nó được đặt tên là Google - sau đó là "backrub"). Larry Page đã viết một "con nhện" quét web trong phiên bản Java 1.0 beta hoàn toàn mới, và nó đã bị hỏng đến nỗi bạn cùng phòng ký túc xá của anh ấy đã giúp anh ấy bằng cách viết lại nó bằng một ngôn ngữ cứng nhắc và hiệu quả hơn ... Python. Thật buồn cười khi nghĩ rằng, nếu không có "con nhện" đó, Google có thể không bao giờ tồn tại ...
Alex Martelli

34

Tôi chưa đọc toàn bộ bài viết và tôi không biết nó đại diện như thế nào nhưng có lẽ điều này trả lời câu hỏi của bạn: Python tại Google .

Ok tôi đã đọc hầu hết, thật không may là nó không nhiều cái nhìn sâu sắc nhưng tôi nghĩ nó vẫn là một bài viết thú vị. Có lẽ quan trọng nhất:

Tại Google, python là một trong 3 "ngôn ngữ chính thức" cùng với C ++ và Java. Chính thức ở đây có nghĩa là nhân viên Google được phép triển khai các ngôn ngữ này cho các dịch vụ sản xuất. (Nội bộ Google mọi người sử dụng nhiều công nghệ bao gồm PHP, C #, Ruby và Perl). Python rất phù hợp với quy trình kỹ thuật tại Google. Dự án điển hình tại Google có một nhóm nhỏ (3 người) và thời gian ngắn (3 tháng).


Đừng quên rằng Guido van Rossum , người tạo ra Python đã làm việc cho Google từ năm 2005-2012;)


Tôi cũng tìm thấy trích dẫn này nhưng tôi không thể xác minh nó:

"Python đã là một phần quan trọng của Google ngay từ đầu, và vẫn còn như vậy khi hệ thống phát triển và phát triển. Ngày nay, hàng chục kỹ sư của Google sử dụng Python và chúng tôi đang tìm kiếm thêm người có kỹ năng về ngôn ngữ này"
- Peter Norvig, Giám đốc chất lượng tìm kiếm tại Google


Vì vậy, nó là một vấn đề của hương vị hoặc một lợi thế cạnh tranh?
Andrei Ciobanu

4
@nomemory: Có lẽ cả hai? Nó phù hợp với quy trình kỹ thuật (hương vị) và do đó có thể mang lại lợi thế cho họ nếu họ có thể hoàn thành sản phẩm sớm hơn.
Felix Kling

1
Hàng chục kỹ sư sử dụng Python? Đối với một công ty lớn như Google, đó không phải là một trường hợp hấp dẫn.
Jason Baker

28

Tôi đã đọc về Unladen-Swallow , một dự án nhằm cải thiện hiệu suất của CPython. Trong khi duyệt qua bảng thảo luận của họ, tôi tình cờ thấy cuộc thảo luận này , nơi Collin Winter (nhân viên Google và nhà phát triển lõi Python) trả lời về tuyên bố rằng nhân viên của Google không được khuyến khích sử dụng Python cho các dự án mới :

Chà, thông thường đơn giản là sẽ hạn chế khả năng ứng dụng của Python khi hoạt động ở quy mô của Google: nó không nhanh như Java hay C ++, xâu chuỗi, sử dụng bộ nhớ cao hơn, v.v. Một trong những hạn chế thiết kế mà chúng tôi gặp phải khi thiết kế bất kỳ hệ thống mới nào là, "Điều gì xảy ra khi tải tăng gấp 10 hoặc 100 lần? Điều gì xảy ra nếu cả hành tinh nghĩ rằng dịch vụ mới của bạn tuyệt vời?" Bất kỳ công nghệ nào làm cho việc thỏa mãn ràng buộc đó trở nên khó khăn hơn - và tôi nghĩ Python rơi vào loại này - nênkhông được khuyến khích nếu nó không có một trường hợp rất mạnh được thực hiện theo hướng có lợi cho các công đức khác. Bạn phải cân bằng điểm mạnh của Python với điểm yếu của nó: các kỹ sư của bạn có thể làm việc hiệu quả hơn khi sử dụng Python, nhưng nếu họ phải khắc phục nhiều hạn chế về hiệu suất / tỷ lệ ở cấp độ nền tảng hơn khi tăng âm lượng, bạn có đi ra không? Vân vân.


20

Nếu bạn đăng ký ý tưởng của Paul Graham rằng sự cô đọng == sức mạnh (tức là nếu tôi có thể viết mã bằng ngôn ngữ X trong 10 dòng để thực hiện những gì bạn đã lấy 100 dòng ngôn ngữ Y, thì ngôn ngữ của tôi mạnh hơn)

Ngày nay phần cứng là rẻ, thịt là đắt tiền . Tôi biết rằng tôi có thể viết nhiều hơn, nhanh hơn, tốt hơn và rõ ràng hơn bằng Python trong các ngôn ngữ khác, đơn giản vì pin có xu hướng được bao gồm. Chắc chắn, nó có thể chậm hơn nhưng bạn có thực sự nhận thấy sự khác biệt giữa 0,05 giây và 0,0005 giây không?

Trong một ví dụ thực tế hơn, nếu các nhà phát triển Google viết chương trình bằng Python, nơi họ không bao giờ phải lo lắng về việc thu gom rác và Công ty X viết chương trình bằng C ++ và họ dành 10% thời gian để theo dõi các lỗi liên quan đến cấp phát bộ nhớ, đoán xem ai đã hoàn thành nhanh hơn - ngay cả khi cửa hàng C ++ quản lý để viết phần còn lại của mã của họ nhanh như vậy.

Vì vậy, có, tôi muốn nói rằng đó là một lợi thế cạnh tranh để viết mã trong Python.


2
Thiết kế lại trang bị nguyền rủa! Vâng, anh ấy có một liên kết thay thế, vì vậy có đi.
Wayne Werner

11
'bạn có thực sự nhận thấy sự khác biệt giữa 0,5 giây và 0,05 giây không?' Bạn không làm việc trên tìm kiếm cốt lõi của Google, YouTube hay Gmail, phải không?
jwg

5
Phần cứng không rẻ khi bạn cần nhiều như Google.
NGRhodes

5
Điều tuyệt vời của Python là, khi bạn có sự khác biệt hiệu năng đáng kể (ví dụ ~ 495ms), bạn có thể cắm một số mã C / C ++. Python cho phép bạn phát triển nhanh chóng tối ưu hóa hiệu quả.
Trevor

3
Sự khác biệt giữa 0,5 giây và 0,05 giây là một cái đáng chú ý và cái kia thì không.
Charlie Schliesser
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.