การใช้ภาษาโปรแกรมที่ Google [ปิด]


29

ฉันเคยได้ยินว่า Google ใช้ Python, Java และ C ++ แต่สิ่งที่ฉันไม่รู้ก็คือวิธีการใช้ภาษาการเขียนโปรแกรมแต่ละภาษา ฉันหมายถึง Python, Java และ C ++ ที่ใช้กับ Google ทำไมพวกเขาถึงไม่เกิน 3 ภาษาการเขียนโปรแกรมเมื่อ 1 ภาษาเพียงพอ มีใครรู้บ้าง


16
นอกจากนี้คุณลืมไป
cbrandolino

22
หากภาษาหนึ่งเพียงพอทำไมถึงมี Python, C ++ หรือ Java เลย? เราทุกคนสามารถใช้ภาษา Assembly สำหรับโปรเซสเซอร์ที่ระบบของเรากำลังทำงานอยู่
Lazarus

การพูดภาษาเดียวก็พอจะเหมือนกับการบอกว่าไม้ชนิดหนึ่งก็พอแล้วคุณจะเคารพช่างไม้ที่เคยทำงานกับไพน์ แต่ไม่เคยเมเปิ้ลหรือโอ๊ก?
Zachary K

นอกจากนี้คุณลืม Sawzall labs.google.com/papers/sawzall.html
Chiron

1
พวกเขาใช้ java ตรวจสอบreddit.com/r/google/comments/3sdx3b/
Elshan

คำตอบ:


97

คำตอบที่ถูกต้อง " เนื่องจากภาษาต่าง ๆ มีจุดแข็งที่แตกต่างกัน " ได้ถูกระบุไว้แล้ว แต่ให้ฉันให้รายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุ:

C ++

C ++ มีข้อได้เปรียบหลักในการเป็นล็อตที่เร็วที่สุด ไม่จำเป็นเพราะ Java และ Python ช้า แต่เนื่องจากใน C ++ คุณสามารถควบคุมได้มากขึ้นเกี่ยวกับวิธีการดำเนินการต่างๆ

ตัวอย่างเช่นหากคุณกำลังเขียนส่วนบริการเว็บที่ต้องการเวลาแฝงน้อยกว่า 30ms คุณสามารถปรับแต่งรหัส C ++ เพื่อให้ได้ประสิทธิภาพนั้น ในภาษาที่มีการจัดการเช่น Java มันเป็นเรื่องยากที่จะให้ GC ร่วมมืออย่างสมบูรณ์แบบ

C ++ ใช้สำหรับ 'Google magic' มากมายเช่น BigTable, MapReduce และค้นหา goo

ชวา

สำหรับแอปพลิเคชันมาตรฐานส่วนใหญ่ Java เป็นภาษาที่สมบูรณ์แบบที่สุด มันมีเครื่องมือที่ยอดเยี่ยมห้องสมุดที่มีอยู่มากมายและไม่เสียเวลาในการดีบัก

Java ใช้สำหรับเว็บไซต์ขนาดใหญ่จำนวนมากที่ยากต่อการดูแลในภาษาระดับล่างเช่น C หรือ C ++ ตัวอย่างเช่นความเข้าใจของฉันคือ GMail นั้นเขียนด้วยภาษาจาวา

นอกจากนี้โปรดทราบว่าคุณสามารถใช้ Web Toolkit ของ Google เพื่อรวบรวมรหัส Java เป็น JavaScript ดังนั้นหน้าเว็บหรือวิดเจ็ตที่ยอดเยี่ยมที่คุณเห็นอาจเริ่มมีชีวิตเหมือนคลาส Java

หลาม

Python เป็นภาษาที่มีวัตถุประสงค์ทั่วไปที่ยอดเยี่ยม แต่ไม่มีการควบคุมที่ละเอียดเหมือน Java (ตัวอย่างเช่นมีข้อโต้แย้ง JVM ที่บ้าคลั่งทุกประเภท - หลามมีการกำหนดค่าที่คล้ายกันหรือไม่)

อย่างไรก็ตามด้วย Python เหมาะอย่างยิ่งสำหรับเว็บไซต์และแอพพลิเคชั่นที่เรียบง่ายซึ่งอาจเป็นเชลล์สคริปต์ที่น่ากลัว ตัวอย่างเช่นหากคุณต้องการเขียน testcase ง่ายๆเพื่อรวบรวมข้อมูลจากแหล่งข้อมูลบางอย่างประมวลผลและอัปโหลดไปยัง App Engine Python จะเป็นตัวเลือกที่ดี (หากคุณต้องการกระจายการประมวลผลใน 1,000 เครื่องอย่างไรก็ตามบางทีคุณอาจใช้ภาษาอื่น ... )

JavaScript

เห็นได้ชัดว่า Google ใช้จาวาสคริปต์จำนวนมาก อย่างไรก็ตามประเภทของ JavaScript ที่เขียนที่ Google นั้นแตกต่างจากสิ่งที่คุณเห็นใน wild Google ได้พัฒนาคอมไพเลอร์ JavaScript ที่ปรับให้เหมาะสมซึ่งช่วยให้คุณสามารถสร้างคำอธิบายประกอบในความคิดเห็นเพื่อแลกเปลี่ยนกับการเพิ่มประสิทธิภาพที่ดีขึ้นและการตรวจสอบแบบคงที่ ดูGoogle ปิด

ภาษาไม่สำคัญ (interop)

อีกเหตุผลที่ Google ไม่ได้ใช้เพียงภาษาเดียวก็คือมันไม่จำเป็นต้อง มีสิ่งอำนวยความสะดวกในภาษาการเขียนโปรแกรมสมัยใหม่เกือบทุกภาษาเพื่อโทรเข้าสู่ห้องสมุดภายนอกห้องสมุดที่อาจเขียนด้วยภาษาอื่น (ดูคำกริยา )

นอกจากนี้เนื่องจาก App Engine รัน JVM คุณสามารถเรียกใช้ภาษาใด ๆ ที่คอมไพล์ไปยังโค้ด Java byte (ที่ Google เรายึดติดกับภาษาที่กล่าวถึงที่นี่เป็นหลัก แต่นี่ไม่ใช่ข้อกำหนดที่ยาก) หากคุณต้องการใช้ปิด, Groovy หรือ Scala บน App Engine หากคุณรวมไฟล์ JAR ที่ถูกต้องแล้ว

โอเพ่นซอร์ส

นอกจากนี้ Google ยังใช้และสนับสนุนโอเพนซอร์ซจำนวนมากหากเป็นไปได้ โครงการเหล่านี้มักเขียนด้วยภาษาใดภาษาหนึ่งข้างต้นและต้องการให้ 'ใช้' ที่ Google

บรรทัดล่างคือสองสิ่ง:

  • ภาษาโปรแกรมทุกภาษามีจุดแข็งของตนเอง การไม่ใช้ประโยชน์จากจุดแข็งเหล่านี้ในสถานการณ์จะเป็นเรื่องน่าละอาย
  • การมีชุดเครื่องมือ interop และ runtimes ที่เข้ากันได้นั้นหมายความว่าการใช้หลายภาษาในสภาพแวดล้อมรันไทม์เดียวกันนั้นมีความเจ็บปวดน้อยกว่า

จากคำอธิบายของคุณหมายความว่า GMail ใช้ GWT หรือไม่
โยชูวา Partogi

1
ปัจจุบัน Google ใช้ python สำหรับแอปพลิเคชันบนเว็บเช่นกัน
Raphael

Promog Googler Alex Martelli อธิบาย "Python ซึ่งเราสามารถทำได้, C ++ ที่เราต้อง"
Peter M. - ย่อมาจาก Monica

17
1 language is enough

บางทีภาษาเดียวก็เพียงพอที่จะทำภารกิจต่าง ๆ ให้เพียงพอ แต่ภาษาที่ต่างกันมีจุดแข็งจุดอ่อนและความสามารถต่างกัน

เนื่องจาก Google อาจเป็นโปรแกรมสำหรับสถานการณ์ที่แตกต่างกันเป็นจำนวนมากมันเป็นเรื่องของม้าสำหรับหลักสูตรซึ่งเป็นเครื่องมือที่ดีที่สุดสำหรับงาน


4
+1, ใช้เครื่องมือที่ดีที่สุดสำหรับงาน ฉันกำลังทำงานกับแอปพลิเคชันเดสก์ท็อปเดียวที่ใช้ภาษาการเขียนโปรแกรม 3 ภาษา (รวมถึงมาร์กอัปและภาษาฐานข้อมูลที่หลากหลาย) ใกล้กับวัตถุที่เป็นโลหะด้วย C ++ แอปพลิเคชันหลักที่มี Java และ Jython บางตัวที่นี่และที่นั่นเพื่อการปรับแต่งที่ง่าย มันสมเหตุสมผลที่จะใช้สิ่งที่ดีที่สุดในโลกทั้งสาม IMO :-)
Joonas Pulakka


9

สามภาษานี้ใช้เพื่อจุดประสงค์ที่แตกต่างกัน

Python อาจใช้สำหรับการเขียนสคริปต์อัตโนมัติ
C ++ สำหรับการใช้อัลกอริธึมที่ซับซ้อน (ตัวทำดัชนี, ตัวรวบรวมข้อมูล, แผนที่ลด, ตารางขนาดใหญ่)
Java สำหรับเว็บเซอร์วิส, เว็บแอป ฯลฯ

นี่เป็นข้อสมมติฐานของฉันเท่านั้น


ฉันจะใช้อัลกอริทึมที่ซับซ้อน - ไม่สำคัญอย่างยิ่งกับประสิทธิภาพ - ใน Python

3

Python ใช้สำหรับเว็บไซต์สนับสนุนของพวกเขาคุณจะเห็นว่าหน้านี้สร้างขึ้นโดยสคริปต์ python พวกเขาใช้ไลบรารี java สำหรับเว็บแอปพลิเคชันดังนั้นการสนับสนุน GWT และ java ในเอ็นจิ้นแอป

ฉันคิดว่าพวกเขาใช้ C ++ สำหรับ google earth หรือแอปพลิเคชันเดสก์ท็อปทั่วไป


2

"1 ภาษาก็เพียงพอ" สามารถเป็นจริงได้หากทุกโครงการที่คุณทำมีลักษณะเฉพาะ และสำหรับบางโครงการแม้แต่ C ++ Java และ Python ก็ไม่ใช่เครื่องมือที่ดีที่สุด ยิ่งไปกว่านั้นการรู้ภาษาเดียวเท่านั้นคือคุณสมบัติเด่นของโปรแกรมเมอร์ที่ไม่ดี


0

พวกเขาเขียนแอปพลิเคชั่น Mac และ iPhone ที่ใช้งานอยู่เช่นกันและที่อยู่ใน Objective-C เหตุผลที่พวกเขาทำนั้นง่าย: API อยู่ใน Objective-C

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