การใช้งาน Python อย่างหนักใน Google [ปิด]


185

การใช้งาน Python ของ Google อย่างหนักมันเป็นเรื่องของรสนิยมหรือมันทำให้พวกเขาได้เปรียบในการแข่งขันหรือไม่?


21
ต้องเป็นวิกิชุมชน
โดยอัตโนมัติ

72
Alex Martelli เข้ามาเพื่อรับคำตอบจริงเร็ว ๆ นี้, ....
ChristopheD

4
จริง ๆ แล้วฉันคิดว่าคำตอบนี้สามารถตอบอย่างเป็นกลาง (ต้องมีคำสั่งบางแห่งโดย Google ว่าทำไมพวกเขาใช้มัน))
เฟลิกซ์ Kling

15
@nomemory "หนัก" ค่อนข้างเป็นคำคุณศัพท์ที่ถูกต้องที่นี่ (แน่นอนคุณจะต้องสามารถที่จะมองไปที่ codebase ของเราสำหรับการยืนยัน - เท่าใดหลาม VS Java VS C ++ ฯลฯ - แต่ฉันฉันสามารถที่จะมองไปที่มัน และสนับสนุนมันส่วนใหญ่เป็น Python ส่วนใหญ่ทุกวัน ;-) และคำถามนั้นไม่ได้อยู่ในอุตสาหกรรมไอทีทั้งหมด - โดยเฉพาะใน Google บริษัท 20,000 คน (รวมถึงผู้ที่ไม่ใช่โปรแกรมเมอร์) ซึ่งพวกเราบางคนดีกว่า "มีมุมมองโดยรวม" ตั้งแต่สร้างมุมมองและการปฏิบัติตาม มันเป็นส่วนสำคัญของงานของเรา ;-) ดังนั้นฉันจึงลงคะแนนเพื่อเปิดใหม่
Alex Martelli

7
@nememory มีผู้สรรหา Oracle อยู่เสมอในการประชุม Python ดังนั้นฉันจึงประหลาดใจที่ได้รู้ว่า Python นั้นไม่มีอยู่ใน codebase (ถ้าเป็นเช่นนั้นนายหน้าเหล่านั้นก็โกหกและเสียเวลาของพวกเขาเองและ Pythonistas ' ;-) และอย่างไรออราเคิลและ Google จะแข่งขันกันอย่างไรจริง ๆ -)
Alex Martelli

คำตอบ:


286

ฉันไม่สามารถให้คำตอบที่ชัดเจนได้จริงๆเพราะเมื่อตอนที่ฉันสัมภาษณ์ที่ Google ในปี 2004 Python ประสบความสำเร็จในการใช้งาน Google อยู่แล้ว

เห็นได้ชัดว่ามีคำอธิบายที่น่าสนใจอย่างหนึ่งที่ฉันสามารถปฏิเสธได้อย่างแน่นอน: ไม่ใช่ว่า Google ใช้ Python เพราะมันใช้ Pythonistas ที่โดดเด่นจำนวนมาก - แต่ชาว Google ที่มีชื่อเสียง "Pythonista" ส่วนใหญ่เข้าร่วมกับ Google อย่างน้อยในส่วนหนึ่ง ที่นั่น (ข้อยกเว้นที่เป็นไปได้ ได้แก่ Peter Norvig และ Jeremy Hylton แต่ในอดีตทางเลือกของ Python ของ Google นั้นมีการคาดการณ์ไว้แม้กระทั่งก่อนหน้า)

นั่นเป็นสาเหตุที่ทำให้ฉันสนใจเป็นครั้งแรก (ผู้จัดพิมพ์ของฉันแจ้งให้ฉันทราบเกี่ยวกับหนังสือจำนวนมากที่ Google ซื้อในตอนแรกฉันคิดว่ามันเป็นโอกาสที่ดีในการขายบริการให้คำปรึกษาอิสระของฉัน ... ; - ) วิธีการที่ฉันสามารถโน้มน้าวใจกุยโด้ให้เข้าร่วมกับเราและฉันเชื่อว่าเป็นส่วนหนึ่งของแรงจูงใจสำหรับ Pythonistas เช่น Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

ทุกอย่างเริ่มต้นขึ้นฉันเชื่อว่าเพราะ Googler แรกสุด (Sergey, Larry, Craig, ... ) ได้ทำการตัดสินใจทางวิศวกรรมที่ดี: "Python ที่เราสามารถทำได้, C ++ ที่เราต้อง" - พวกเขาใช้ (เซตย่อยของ) C ++ สำหรับส่วนต่าง ๆ ของซอฟต์แวร์สแต็กที่เวลาแฝงที่ต่ำมากและ / หรือการควบคุมหน่วยความจำอย่างเข้มงวดนั้นมีความสำคัญอย่างยิ่งและ Python ช่วยให้สามารถจัดส่งและบำรุงรักษาโปรแกรมได้รวดเร็วยิ่งขึ้นสำหรับชิ้นส่วนอื่น ๆ ในช่วงปลายทศวรรษที่ 90 ตัวเลือกสำหรับบทบาทหลังนั้นเป็นหลักระหว่าง Python และ Perl: ภาษาสคริปต์อื่น ๆ อาจไม่ถูกต้อง (เช่นฉันไม่คิดว่า Ruby เป็นตัวอย่างเช่น) หรือมีปัญหาและข้อ จำกัด อื่น ๆ Perl เป็นผู้ใหญ่มากขึ้น (โดยเฉพาะอย่างยิ่งในแง่ของระบบนิเวศของ add-on ที่มีอยู่ผ่านทาง CPAN) แต่ Python นั้นสามารถอ่านได้และบำรุงรักษาได้มากกว่าและการเชื่อมต่อกับไลบรารี C ++ (ผ่าน SWIG) นั้นง่ายกว่า

Java มาในภายหลัง, ครอบคลุมช่องกลาง - และอีกไม่นาน Go Go ได้รับการพัฒนา (แม้ว่าฉันจะไม่เชื่อว่ามีงานผลิตจำนวนมากอยู่ในนั้น ภาษาเฉพาะบางภาษาเช่นsawzallยังมีการผสมผสานสำหรับงานเฉพาะอย่างมากและแน่นอนว่าจาวาสคริปต์นั้นมีความสำคัญอย่างมากสำหรับงานด้านเบราว์เซอร์

ภาษาอื่น ๆ รวมถึงภาษาที่ Greg พูดถึงในปี 06 นั้นเป็น "ชนิดของอุบัติเหตุ" หรือใช้สำหรับงานเฉพาะอื่น ๆ (เช่น Objective C สำหรับลูกค้าบน iPhone หรือ Mac) - เช่นเมื่อ Google จ้างผู้ดูแลระบบคนแรก พนักงานเหล่านั้นย่อมมาพร้อมกับความชำนาญอย่างมากของ Perl และ Bash และมักใช้ภาษาใดภาษาหนึ่งในการพัฒนาระบบภายในที่ซับซ้อน การบันทึกใหม่ใน Python (เพื่อการปรับใช้และการบำรุงรักษาที่ง่ายขึ้น) มักจะเกิดขึ้น อื่น ๆ (เช่น C #) อาจมีการผสมชั่วคราวเนื่องจากการเข้าซื้อกิจการ แต่อีกครั้งการบันทึกใน "ภาษาหลักของ Google" หนึ่งครั้งนั้นมีความสำคัญค่อนข้างสูง (ในกรณีของ C # โดยทั่วไปการบันทึกจะเป็นส่วนใหญ่ใน Java เนื่องจากทั้งสองภาษากล่าวถึงพื้นที่ที่คล้ายกันในแง่ของระดับความเป็นนามธรรม)


@Alex อาจไม่เข้าใจอย่างถูกต้อง แต่ดูเหมือนว่า Google ต้องการสภาพแวดล้อมที่เปิดสำหรับวิศวกร (โดยเฉพาะนักวิจัย) ผู้ที่ใช้เวลาหลายปีในมหาวิทยาลัยและออกมาเพียง C หรือ C ++ ในมือ (ทุกคนเริ่มต้นด้วยภาษาเหล่านี้และส่วนใหญ่จบลงด้วย ขึ้นกับมันด้วย) ที่นี่หลามเป็นคู่แข่งที่แข็งแกร่งให้ส่วนต่อประสานกับ lib ขนาดใหญ่ของ C / C ++
Ramiz Uddin

8
การเดินทางข้ามเวลา FTW: web.archive.org/web/20091222094118/http://labs.google.com/?hl=th
Jess Telford

ข้อมูลเชิงลึกที่ยอดเยี่ยม !! สามารถช่วยชาว Google ที่คาดหวัง
kmario23

3
หนึ่งชิ้นอาหารอันโอชะที่ฉันรวบรวมจากการอ่านหนังสือยอดเยี่ยมของ Levy "ใน 'Plex" คือวิธีที่ Python เข้าถึง Google (ก่อนหน้าชื่อ Google นั่นคือ "backrub") Larry Page ได้เขียน "spider" บนเว็บในภาษา Java 1.0 beta ใหม่ล่าสุดและมันก็เสียจนเพื่อนร่วมห้องในหอพักของเขาช่วยเขาด้วยการเขียนใหม่ในภาษาที่มั่นคงและมีประสิทธิภาพมากขึ้น ... Python ตลกที่จะคิดว่าถ้าไม่มี "spider" Google อาจไม่เคยมีอยู่จริง ...
Alex Martelli

34

ผมยังไม่ได้อ่านบทความทั้งหมดและผมไม่ทราบว่ามันเป็นตัวแทน แต่อาจจะตอบคำถามของคุณ: งูหลามที่ Google

ตกลงผมอ่านมากที่สุดของมันโชคไม่ดีที่จะช่วยให้ไม่ว่าข้อมูลเชิงลึกมาก แต่ฉันคิดว่ามันยังคงเป็นบทความที่น่าสนใจ อาจสำคัญที่สุด:

ที่ Google python เป็นหนึ่งใน 3 "ภาษาราชการ" ควบคู่ไปกับ C ++ และ Java เป็นทางการที่นี่หมายความว่าชาว Google ได้รับอนุญาตให้ใช้ภาษาเหล่านี้กับบริการการผลิต (คน Google ภายในใช้เทคโนโลยีมากมายเช่น PHP, C #, Ruby และ Perl) Python เหมาะกับกระบวนการทางวิศวกรรมของ Google โครงการทั่วไปที่ Google มีทีมขนาดเล็ก (3 คน) และระยะเวลาสั้น ๆ (3 เดือน)


อย่าลืมว่าGuido van Rossumผู้สร้าง Python ทำงานให้กับ Google ตั้งแต่ 2005-2012;)


ฉันยังพบข้อความอ้างอิงนี้ แต่ฉันไม่สามารถตรวจสอบได้:

"Python เป็นส่วนสำคัญของ Google มาตั้งแต่ต้นและยังคงเป็นเช่นนี้เมื่อระบบเติบโตและพัฒนาวิศวกรของ Google หลายคนใช้ Python และเรากำลังมองหาผู้คนที่มีทักษะในภาษานี้"
- Peter Norvig ผู้อำนวยการฝ่ายคุณภาพการค้นหาที่ Google


ดังนั้นมันเป็นเรื่องของรสนิยมหรือความได้เปรียบในการแข่งขันหรือไม่?
Andrei Ciobanu

4
@nomemory: อาจเป็นได้ทั้งคู่? เหมาะกับกระบวนการทางวิศวกรรม (รส) และเนื่องจากอาจทำให้พวกเขาได้เปรียบถ้าพวกเขาสามารถเสร็จสิ้นผลิตภัณฑ์ของพวกเขาก่อนหน้านี้
เฟลิกซ์คลิง

1
วิศวกรหลายคนใช้ Python หรือไม่? สำหรับ บริษัท ที่มีขนาดใหญ่เท่ากับ Google นั่นเป็นกรณีที่ไม่น่าสนใจ
Jason Baker

28

ฉันกำลังอ่านเกี่ยวกับUnladen-Swallowซึ่งเป็นโครงการที่มุ่งปรับปรุงประสิทธิภาพของ CPython ในขณะที่กำลังอ่านกระดานสนทนาของพวกเขาฉันได้พบกับการอภิปรายนี้ที่ Collin Winter (พนักงานของ Google และผู้พัฒนาหลัก Python) ตอบคำถามที่อ้างว่าพนักงาน Google ไม่ได้รับการสนับสนุนจาก Python สำหรับโครงการใหม่ :

สามัญสำนึกง่าย ๆ จะ จำกัด การบังคับใช้ Python เมื่อใช้งานในระดับของ Google: มันไม่เร็วเท่า Java หรือ C ++, เธรดที่แย่กว่า, การใช้หน่วยความจำสูงกว่า ฯลฯ หนึ่งในข้อ จำกัด ด้านการออกแบบที่เราเผชิญเมื่อออกแบบระบบใหม่คือ "จะเกิดอะไรขึ้นเมื่อโหลดเพิ่มขึ้น 10 เท่าหรือ 100x จะเกิดอะไรขึ้นถ้าทั้งโลกคิดว่าบริการใหม่ของคุณยอดเยี่ยม" เทคโนโลยีใดก็ตามที่ทำให้การ จำกัด นั้นทำได้ยากขึ้นและฉันคิดว่า Python อยู่ในหมวดหมู่นี้ - ควรจะท้อถ้ามันไม่มีกรณีที่แข็งแกร่งมากในความโปรดปรานในข้อดีอื่น ๆ คุณต้องสมดุลจุดแข็งของ Python กับจุดอ่อนของมัน: วิศวกรของคุณอาจทำงานได้อย่างมีประสิทธิภาพมากขึ้นโดยใช้ Python แต่ถ้าพวกเขาต้องแก้ไขข้อ จำกัด ด้านประสิทธิภาพ / การขยายระดับแพลตฟอร์มให้มากขึ้น เป็นต้น


20

หากคุณสมัครรับข้อมูลจากแนวคิดของ Paul Grahamที่รวบรัดพลัง == (เช่นถ้าฉันสามารถเขียนโค้ดเป็นภาษา X ใน 10 บรรทัดเพื่อให้ได้สิ่งที่คุณใช้ในภาษา Y 100 เส้นภาษาของฉันจะมีประสิทธิภาพมากกว่า)

เหล่านี้วันฮาร์ดแวร์ราคาถูก, meatware มีราคาแพง ฉันรู้ว่าฉันสามารถเขียนได้มากขึ้นเร็วขึ้นดีขึ้นและชัดเจนมากขึ้นในภาษาไพ ธ อนมากกว่าภาษาอื่นเพราะแบตเตอรี่มีแนวโน้มที่จะรวมอยู่ด้วย แน่นอนว่าอาจช้าลง แต่คุณจะสังเกตเห็นความแตกต่างระหว่าง. 05 วินาทีกับ. 0005 วินาทีหรือไม่

ในตัวอย่างที่เป็นจริงมากขึ้นหากนักพัฒนาของ Google เขียนโปรแกรมใน Python ที่พวกเขาไม่ต้องกังวลเกี่ยวกับการรวบรวมขยะและ บริษัท X เขียนโปรแกรมใน C ++ และพวกเขาใช้เวลา 10% ของการติดตามข้อบกพร่องที่เกี่ยวข้องกับการจัดสรรหน่วยความจำ เดาว่าใครทำได้เร็วกว่า - แม้ว่าร้านค้า C ++ จะสามารถเขียนโค้ดที่เหลือได้อย่างรวดเร็ว

ใช่ฉันจะบอกว่ามันเป็นข้อได้เปรียบในการแข่งขันกับโค้ดใน Python


2
คำสาปออกแบบเว็บไซต์ใหม่! เขามีลิงค์สำรองดังนั้นไปเลย
Wayne Werner

11
'คุณจะสังเกตเห็นความแตกต่างระหว่าง 0.5 วินาทีกับ. 005 วินาทีหรือไม่' คุณไม่ทำงานกับการค้นหาหลักของ Google, YouTube หรือ Gmail ใช่ไหม
jwg

5
ฮาร์ดแวร์ไม่ถูกเมื่อคุณต้องการมากเท่ากับ Google
NGRhodes

5
สิ่งที่ยอดเยี่ยมเกี่ยวกับ Python คือเมื่อคุณมีความแตกต่างด้านประสิทธิภาพที่สำคัญ (เช่น ~ 495ms) คุณสามารถเสียบรหัส C / C ++ บางอย่างได้ Python ช่วยให้คุณพัฒนาได้อย่างรวดเร็วและเพิ่มประสิทธิภาพอย่างมีประสิทธิภาพ
เทรเวอร์

3
ความแตกต่างระหว่าง. 5 วินาทีถึง. 005 วินาทีคือช่วงเวลาหนึ่งนั้นสังเกตได้และอีกรุ่นหนึ่งไม่ใช่
Charlie Schliesser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.