ใครที่นี่กำลังเรียนรู้โก บริษัท อื่นกำลังมองหาการใช้งานหรือไม่? มีแนวโน้มที่จะใช้กันอย่างแพร่หลาย?
ใครที่นี่กำลังเรียนรู้โก บริษัท อื่นกำลังมองหาการใช้งานหรือไม่? มีแนวโน้มที่จะใช้กันอย่างแพร่หลาย?
คำตอบ:
เมื่อพูดถึงการเขียนโปรแกรมภาษาสุภาษิตโบราณ "ไม่ใช่คนที่คุณเป็นคนที่คุณรู้" ถือเป็นจริงอย่างแน่นอน C และ C ++ ได้รับการสนับสนุนจาก AT&T Java ถูกนำมาให้เราโดย Sun ตระกูล. NET ออกมาจาก Microsoft และทุกคนได้รับความนิยมอย่างรวดเร็ว จากนั้นเรามี Objective-C และ Python ซึ่งมีอยู่พักหนึ่งและอยู่ในสภาพปิดบังจริง ๆ จนกระทั่งพวกเขาถูกค้นพบและสะกดรอยตาม Apple และ Google ตามลำดับจากนั้นพวกเขาก็ถอดออกจริงๆ แต่ภาษาที่ไม่มีสปอนเซอร์รายใหญ่มักจะละเหี่ยในความสับสนไม่ว่าพวกเขาจะดีแค่ไหน
Go ได้รับการสนับสนุนจาก Google การสรุปที่ถูกต้องไม่ใช่เรื่องยากที่นี่ ให้ห้าปีและมันจะใหญ่มาก
ฉันไม่คิดว่า Go จะประสบความสำเร็จ เหตุผลที่ทำไมมันไม่ถึงมวลชนขนาดใหญ่ก็คือมันมีวัตถุประสงค์เพื่อเป็นภาษาสำหรับการเขียนโปรแกรมระบบ
มีความต้องการที่แท้จริงสำหรับภาษาของระบบที่มีคุณสมบัติที่ทันสมัยกว่า C และ C ++ ถูกผูกไว้ด้วยรหัสดั้งเดิมและความเข้ากันได้ย้อนหลังที่นี่เพื่อปรับปรุงมาก ที่กล่าวว่าฉันไม่คิดว่าจะไปเติมเต็มบทบาทในรูปแบบปัจจุบันของมัน การออกแบบมันเรียบง่ายเกินไป ในขณะที่รูปแบบการทำงานพร้อมกันนั้นน่าตื่นเต้น แต่ก็มีคุณสมบัติอื่น ๆ อีกสองสามอย่างตั้งแต่ภาษาระดับสูงไปจนถึงโลกของระบบ (ครั้งล่าสุดที่ฉันตรวจสอบซึ่งเป็นที่ยอมรับมาระยะหนึ่งแล้วมันก็ไม่มีข้อยกเว้น) นอกจากนี้อย่างน้อยที่สุดเท่าที่เกมเกณฑ์มาตรฐานภาษาคอมพิวเตอร์เป็นตัวชี้วัดที่ดี เกือบเร็วเท่ากับภาษาระบบ "ของจริง" ที่ต้องมี
ผมคิดว่าภาษาที่มีโอกาสที่ดีที่สุดที่จะเติมช่องว่างของภาษาระบบที่ทันสมัยมากขึ้นคือD D มีความแข็งแกร่งทางเทคนิคมากกว่า Go แต่มีความอ่อนแอทางการเมือง มันไม่ได้รับการสนับสนุนจาก บริษัท ใหญ่ ๆ สิ่งที่ต้องการจริงๆคือห้องสมุดบางแห่ง (ซึ่งกำลังได้รับการแก้ไขอย่างรวดเร็วในขณะนี้ว่าข้อมูลจำเพาะทางภาษามีเสถียรภาพ) และแอปนักฆ่า
foo, err := SomeFunc()
เรื่องธรรมดา สำหรับปัญหาที่สำคัญหรือจุดที่ผิดพลาดไม่สามารถทำงานได้เป็นอย่างดีคุณสามารถใช้และpanic()
recover()
อย่างไรก็ตามสิ่งเหล่านี้ถูกใช้อย่างไม่ค่อยตั้งใจ ไม่มีทางที่จะส่งข้อยกเว้นขึ้นไปบนสแต็กหากสแต็กสั้นมากและสแต็คสั้น ๆ เป็นเรื่องธรรมดาที่มีหลายเธรดพร้อมกัน
ฉันกำลังเรียนรู้ไปและใช่มันถูกใช้อย่างมีประสิทธิภาพนอกเหนือจาก Google และ Heroku
Go เป็นภาษาที่ดีสำหรับการเขียนโปรแกรมระบบ รหัสง่าย ๆ ใน C โครงสร้างที่ทรงพลังเหมือนกับใน C ++ และคุณลักษณะด้านความปลอดภัยเหมือนกับใน Java เนื่องจากเป็นภาษาที่อายุน้อยมากสิ่งดีๆมากมายจากภาษาอื่นจึงได้รับการถ่ายทอด:
i := 1
แทนint i = 1
, func f(x, y, z int)
แทนvoid f(int x, int y, int z)
, type Foo struct { a, b int }; bar := Foo{1, 2}
แทนที่จะเป็นclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
เมื่อพิจารณาจากสิ่งที่ดีเหล่านี้และความปลอดภัยและประสิทธิภาพที่รู้จักกันเฉพาะจากภาษาที่พิมพ์แบบคงที่ผู้คนจำนวนมากจากชุมชนภาษาแบบไดนามิกได้เริ่มชอบ Go ในกรณีส่วนใหญ่ Go-code นั้นไม่ได้ยาวกว่า Ruby-code มากนัก แต่ในทุกกรณีจะปลอดภัยและมีโครงสร้างที่ดีกว่า
แต่ในที่สุดฉันก็เดาได้ว่าการโต้เถียงของนักฆ่าสำหรับโกคือการเกิดพร้อมกัน มันเป็นภาษาที่เหมือน C ที่มีการสนับสนุนการทำงานพร้อมกันที่มีประสิทธิภาพที่เป็นที่รู้จักเท่านั้นจากภาษาที่ใช้งานได้
ฉันจะบอกว่าสิ่งนี้ส่วนใหญ่ขึ้นอยู่กับห้องสมุด / บริการ / ซอฟต์แวร์ที่จะถูกสร้างขึ้นใน / สำหรับ / ใช้ไป ผู้คนใช้บางสิ่งในสามสถานการณ์ (ลำดับสำคัญ): เมื่อพวกเขาไม่มีตัวเลือกอื่น (Objective-C) เมื่อสภาพแวดล้อมใช้ (FORTRAN) เมื่อมันทำให้ชีวิตง่ายขึ้น (Ruby)
มันอาจจะช้าไปหน่อยสำหรับเรื่องนี้ แต่ Go กลายเป็นภาษาที่ได้รับความนิยมในขณะนี้และมีแนวโน้มว่าจะเข้าสู่กระแสหลักด้วย Google ผลักดันไปข้างหน้า มันกำลังถูกผลักดันให้เป็นภาษาที่ใช้สำหรับระบบและผลิตภัณฑ์ภายใน Google และถูกผลักให้เป็นภาษาที่ใช้กับ Google App Engine มีบางคนที่คมมากในแบ็กเอนด์ของการสร้าง Go และเสริมสร้างมัน มีคนที่ฉลาดและจินตนาการมากที่ทำงานในห้องสมุดบุคคลที่สามสำหรับ Go
เติมช่องว่างที่ภาษาอื่นยังไม่ได้กรอก สำหรับฉันฉันเคยลองเติมช่องว่างด้วย Perl และวิธีแก้ปัญหาและเทคนิคมากมาย ฉันไม่เชื่อว่ามันเป็นภาษาที่สมบูรณ์แบบสำหรับทุกสถานการณ์และทุกคน แต่แน่นอนว่ามันเป็นตัวเลือกสำหรับสถานการณ์จำนวนมาก ตัวอย่างเช่นมันใช้งานได้ดีสำหรับเว็บแอปขณะเดียวกันก็ใช้งานได้ดีสำหรับแอปเดสก์ท็อปหรือแอพที่ใช้เซิร์ฟเวอร์ มันทำงานได้อย่างยอดเยี่ยมด้วย HTTP และ WebSocket (ซึ่งหมายความว่าคุณสามารถข้าม Apache หรือ nginx ไปพร้อมกัน) ในขณะที่ยังทำงานได้ดีบน Windows, Linux และ OS X สำหรับ daemons และแอปเดสก์ท็อป ol ปกติ ตอนนี้สถานการณ์เดียวที่มันล้มเหลวสำหรับฉันคือสำหรับแอพ Android ซึ่งฉันหวังว่าจะได้รับการแก้ไขในไม่ช้า ฉันใช้มันสำหรับแอป Windows บนเดสก์ท็อป, แอปพลิเคชันบนเดสก์ท็อป Linux และแอปบนเว็บที่ใช้ Linux
ฉันเชื่อว่ามันจะเป็นเวลาหลายปีก่อนที่มันจะกระทบกระแสหลัก แต่จะไปถึงที่นั่น ฉันคิดว่ามันจำเป็นต้องสร้างไลบรารี่ของบุคคลที่สามมากขึ้นเช่นเดียวกับจำนวนและตัวเลือกที่ Perl มีกับ CPAN มันจะไปถึงที่นั่น
“ กระแสหลัก” หมายความว่าอย่างไร มันไม่ยากเลยที่จะตอบคำถามนี้ ลองดูสักหน่อยสิ
มีคำจำกัดความที่เป็นไปได้มากมาย นี่คือบางส่วน:
มุมมองการจัดการ:
มุมมองของนักพัฒนา:
มุมมองนักอาชีพ:
จากข้างต้นทั้งหมดฉันจะยืนยันว่าคำตอบที่ซื่อสัตย์เพียงอย่างเดียวน่าจะเป็น "เร็วเกินไปที่จะบอก" แต่ฉันเชื่อว่าตัวบ่งชี้ที่ดีที่สุดของอายุยืนที่แท้จริงใด ๆ คือจำนวนน้อยธุรกิจที่ใช้ภาษา องค์กรขนาดใหญ่ทุกอย่างดี - พวกเขาอาจจำเป็นต่อการเติบโตของภาษาหรือระบบของเครื่องมือเนื่องจากขนาดของการลงทุนที่พวกเขาสามารถนำไปใช้ได้ - แต่พวกเขาค่อนข้างมีแนวโน้มที่จะผ่านแฟชั่น (มีข้อยกเว้นเล็กน้อย) ในทางตรงกันข้ามหากธุรกิจขนาดเล็กสร้างตัวเองขึ้นมาโดยใช้ภาษาเพื่อส่งมอบผลิตภัณฑ์และบริการพวกเขามีแนวโน้มที่จะต้องการมีส่วนร่วมในการสร้างความมั่นใจว่าพวกเขาจะยังคงสามารถทำได้ในอนาคต พวกเขายังเป็นรากฐานของตลาดงานที่แข็งแกร่งในพื้นที่และความต้องการเครื่องมือด้วย ตลกนี่เป็นตัวชี้วัดหลายประการเกี่ยวกับกระแสหลักในรายการของฉัน
ดังนั้นมีคนจำนวนมากนอก Googleที่ใช้ Go สำหรับทำงานของพวกเขา ฉันไม่รู้. (ฉันไม่ได้ความต้องการของฉันได้รับการบริการอย่างดีจากส่วนผสมของ Java, C และ Tcl. YMMV)
มันเป็นที่นิยมมากกว่าบางภาษา
อาจเป็นไปได้ว่า Go เป็นภาษาที่สำคัญที่สุดในรอบ 20 ปี มันนำเสนอผลประโยชน์ที่ยอดเยี่ยมในแง่ของชุดข้อมูลขนาดใหญ่ซึ่งมีไซต์โซเชียลมีเดียคอมพิวเตอร์คลาวด์การค้นหาและมือถือในปัจจุบัน
ไซต์ต่างๆเช่น Facebook, Twitter, Linkedin, YouTube และเครือข่ายการแสดงโฆษณามีการใช้งาน Google Go มากกว่า Ruby On Rails อย่างน้อยในบริบทบางอย่าง
ฉันมองไปที่เมื่อฉันได้ยิน ในฐานะผู้เริ่มต้นที่สมบูรณ์ฉันยังคงเรียนรู้ภาษาเริ่มต้น (ในกรณีของฉัน Java, C #, Python และ Scheme) ซึ่งเป็นสิ่งที่ต้องทำ แต่ถ้าฉันไม่ได้สนใจในภาษาที่แตกต่างกันมากมายฉันจะพิจารณาอย่างจริงจัง
ฉันคิดในระดับของฉันไม่มีอันตรายใด ๆ ในการทำให้พื้นฐานลงไปก่อนที่จะกระโดดลงบน bandwagons แม้ว่าถ้าฉันจำได้ถูกต้องเมื่อฉันเงยหน้าขึ้นมองฉันก็กลายเป็นที่ดึงดูดของ Erlang ด้วยเหตุผลบางอย่าง
ฉันเพิ่งดู Go เพราะคำถามนี้ดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นได้ว่าจะเป็นภาษาหลักหรือไม่ แต่สิ่งหนึ่งที่ทำให้ฉันตื่นเต้นจริงๆ:
http://golang.org/doc/go_spec.html#Channel_types
ครั้งแรกที่ผมมาในแนวคิดของช่องในสาธารณรัฐโคลัมเบีย-ปี่และผมต้องบอกว่ามันเป็นหนึ่งในสิ่งที่ดีที่สุดแนวคิดการเขียนโปรแกรมที่เคย มันทำให้การทำงานพร้อมกันดูง่ายมาก ๆ ซึ่งการทำสิ่งเดียวกันในภาษา C-type อาจเป็นเรื่องเจ็บปวด
จากสิ่งที่ฉันได้เห็น (ใน 10 นาทีที่ฉันได้ดู) Go ดูเหมือนว่าจะพยายามรวมแนวคิดการเขียนโปรแกรมที่แตกต่างกันมากมาย แต่นั่นมีความเสี่ยงที่จะเป็นแจ็คของการซื้อขายทั้งหมด
ฉันสงสัยว่ามันจะกลายเป็นกระแสหลักหรือไม่นั้นขึ้นอยู่กับว่า Google ใช้ภาษานั้นเป็นภาษาที่รองรับสำหรับ appengine และ / หรือ GWT หรือไม่
ฉันหวังว่า Go จะกลายเป็นที่นิยม
มันมีประสิทธิภาพในไวยากรณ์ (เรียนรู้ข้อดีจาก python, C, Java) มันดีสำหรับซีพียูแบบมัลติคอร์ (ฟังก์ชั่นของช่องนั้นดีกว่าการเขียนโปรแกรมเธรด) การออกแบบป้องกันไม่ให้เกิดข้อผิดพลาดของโปรแกรมเมอร์หลายคน (ตัวชี้ที่ไม่ถูกต้อง, รูปแบบการเขียนโค้ดเดียวกันโดยเครื่องมือ gofmt, ป้องกันข้อผิดพลาดที่ไม่ได้กำหนดค่าเริ่มต้นในครั้งแรกฉันลองใช้ครั้งแรกเพราะมันคือ python + C แต่ด้วยความเร็วใกล้ 1/2 1/2 ของ C
แต่หลังจากเรียนรู้อย่างลึกซึ้งฉันพบว่ามันอาจเหมาะสมในการพัฒนาความทนทานต่อข้อบกพร่องและสถาปัตยกรรมที่ปรับขนาดได้
after
ไป?