BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

มุมมองของชุมชน: ฉันเปลี่ยนจาก Java เป็น Go Blockchain Engineer ได้อย่างไร

比原链Bytom
特邀专栏作者
บทความนี้มีประมาณ 2787 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
บทความนี้มาจากคำชี้แจงของวิศวกร Bytom
สรุปโดย AI
บทความนี้มาจากคำชี้แจงของวิศวกร Bytom

คำนำ

ชื่อเรื่องรอง

ฉันได้ทำการพัฒนา Java ก่อนเข้าร่วม Bytom Chain ฉันรู้สึกลังเลเล็กน้อยเมื่อได้เห็น Go เป็นครั้งแรก และฉันกลัวว่าจะไม่สามารถผ่านการสัมภาษณ์ ด้วยเหตุนี้ การพิจารณาถึงความเชี่ยวชาญด้านภาษาจึงเป็นสิ่งที่จำเป็นจริงๆ ไม่สูงขนาดนั้น ฉันเข้าร่วม Bytom Chain สำเร็จ และภายในครึ่งเดือน ฉันเชี่ยวชาญ Go อย่างรวดเร็วและสามารถพัฒนาโปรเจ็กต์หลักได้

ภาษา Java มีข้อได้เปรียบในโปรเจกต์ที่พัฒนาแล้วขนาดใหญ่ แต่มีข้อบกพร่องมากมายในการพัฒนาบล็อกเชน เช่น ในการประมวลผลแบบคอร์รูทีน และตัวภาษา Java เองนั้นไม่ยืดหยุ่นเพียงพอ ฯลฯ แน่นอน เหตุผลหลักในการเลือก Go ก็คือ ความนิยมของบล็อกเชน

ชื่อเรื่องรอง

ภาษายอดนิยมของ Blockchain

สร้างสถิติเล็กน้อยเกี่ยวกับภาษาโปรแกรมที่ใช้โดยโครงการที่มีชื่อเสียงดังแสดงในรูปด้านล่าง:

เชนสาธารณะรุ่นเก่า เช่น Bitcoin และ Litecoin โดยทั่วไปใช้ C/C++ มากกว่า (ลองดูตอนนั้น ตอนที่ Go ยังไม่เริ่ม) และเชนสาธารณะรุ่นใหม่ เช่น Ethereum ซึ่งเป็นผู้นำของ กลุ่มพันธมิตร Hyperledger เริ่มใช้งานมากขึ้น การใช้ภาษา Go แน่นอนว่าเราเห็นว่าโมเมนตัมการพัฒนาของ Rust นั้นแข็งแกร่งมากเช่นกัน ในช่วง 2 ปีที่ผ่านมา เครือข่ายสาธารณะจำนวนมาก เช่น Polkadot และ Grin ได้เริ่มใช้ Rust ภาษาเพื่อการพัฒนา

ชื่อเรื่องรอง

ข้อดีของภาษา Go

ง่ายต่อการปรับใช้

การคอมไพล์ Go สร้างการเรียกทำงานแบบคงที่โดยไม่มีการพึ่งพาภายนอกนอกเหนือจาก glibc สิ่งนี้ทำให้การปรับใช้สะดวกอย่างยิ่ง: เฉพาะระบบพื้นฐานและเครื่องมือการจัดการและการตรวจสอบที่จำเป็นเท่านั้นในเครื่องเป้าหมาย และไม่ต้องกังวลเกี่ยวกับการพึ่งพาของแพ็คเกจและไลบรารีต่างๆ ที่แอปพลิเคชันต้องการ ซึ่งช่วยลดภาระในการบำรุงรักษาได้อย่างมาก . สามารถคอมไพล์เป็นรหัสเครื่องได้โดยตรงโดยไม่ต้องพึ่งไลบรารีอื่น เวอร์ชันของ glibc มีข้อกำหนดบางประการและการปรับใช้จะเสร็จสมบูรณ์โดยการโยนไฟล์ขึ้น

ประสิทธิภาพที่ยอดเยี่ยม

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

การทำงานพร้อมกันและช่องทาง

Goroutine และแชนเนลทำให้ง่ายต่อการเขียนซอฟต์แวร์เซิร์ฟเวอร์พร้อมกันสูง ในหลายกรณี ไม่จำเป็นต้องพิจารณากลไกการล็อกและปัญหาต่างๆ แอปพลิเคชัน Go เดียวยังสามารถใช้ CPU หลายคอร์ได้อย่างมีประสิทธิภาพ และประสิทธิภาพของการดำเนินการแบบขนานก็ดี

การออกแบบภาษาที่ดี

Go นั้นเรียบง่ายและง่ายต่อการเรียนรู้ จากมุมมองทางวิชาการ ภาษา Go นั้นธรรมดามากและไม่รองรับคุณสมบัติภาษาขั้นสูงมากมาย แต่จากมุมมองทางวิศวกรรม การออกแบบของ Go นั้นดีมาก: ข้อมูลจำเพาะนั้นเรียบง่ายและยืดหยุ่นเพียงพอ ด้วยความเรียบง่ายของ Go นักพัฒนา Python, Elixir, C++, Scala หรือ Java สามารถสร้างทีม Go ที่มีประสิทธิภาพได้ภายในหนึ่งเดือน

ไลบรารีและเครื่องมือมาตรฐาน

ปัจจุบัน Go มีไลบรารีในตัวจำนวนมาก โดยเฉพาะไลบรารีเครือข่ายที่ทรงพลังมาก ที่สำคัญกว่านั้น Go มาพร้อมกับห่วงโซ่เครื่องมือที่สมบูรณ์ ซึ่งช่วยปรับปรุงความสอดคล้องของการทำงานร่วมกันในทีมได้อย่างมาก ตัวอย่างเช่น gofmt เรียงพิมพ์โค้ด Go โดยอัตโนมัติ ซึ่งส่วนใหญ่ช่วยขจัดปัญหารูปแบบการจัดเรียงพิมพ์ที่ไม่สอดคล้องกันของโค้ดที่เขียนโดยคนอื่น กำหนดค่าเอดิเตอร์ให้เรียกใช้ gofmt โดยอัตโนมัติเมื่อแก้ไขไฟล์เก็บถาวร เพื่อให้คุณสามารถวางโค้ดได้ตามต้องการเมื่อเขียนโค้ด และโค้ดจะกลายเป็นโค้ดเรียงพิมพ์ที่ถูกต้องโดยอัตโนมัติเมื่อเก็บถาวร นอกจากนี้ยังมีเครื่องมือที่มีประโยชน์มากมาย เช่น gofix และ govet

ทีมที่ยอดเยี่ยม

ผู้สนับสนุนที่อยู่เบื้องหลังภาษา Go คือ Google ภาษานี้เพียงพอสำหรับการทดสอบในสถานการณ์ต่างๆ พร้อมกันนี้ ผู้ก่อตั้งยังเป็นบิดาของภาษา C และการพัฒนาและนวัตกรรมที่ตามมาสามารถคาดหวังได้

ไปโครงการที่ประสบความสำเร็จ

ภาษา Go ถูกนำมาใช้อย่างแพร่หลายในยุคคลาวด์ โดยเฉพาะอย่างยิ่งการเกิดขึ้นของผลิตภัณฑ์นักฆ่า เช่น Docker และ K8s ทำให้ภาษา Go กลายเป็นสถานที่ในโลกวิศวกรรม

นอกจากนี้ ภาษา Go ยังมีซอฟต์แวร์ที่ใช้งานได้สำเร็จมากมาย:

nsq: ระบบคิวข้อความโอเพ่นซอร์สของ Bitly มีประสิทธิภาพสูงมาก ปัจจุบัน พวกเขาประมวลผลข้อความหลายพันล้านข้อความทุกวัน

packer: ใช้สร้างไฟล์อิมเมจสำหรับแพลตฟอร์มต่างๆ เช่น VM, vbox, AWS เป็นต้น ผู้เขียนเป็นผู้เขียนคนจรจัด

skynet: กรอบการจัดตารางเวลาแบบกระจาย;

Doozer: เครื่องมือซิงโครไนซ์แบบกระจาย คล้ายกับ ZooKeeper;

Heka: ระบบประมวลผลบันทึกโอเพ่นซอร์ส mazila;

cbfs: Couchbase ระบบไฟล์แบบกระจายแบบโอเพ่นซอร์ส;

tsuru: แพลตฟอร์ม PAAS แบบโอเพ่นซอร์สซึ่งมีฟังก์ชันเหมือนกับ SAE ทุกประการ

พระเจ้า: ระบบแคชคล้ายกับ redis แต่รองรับการกระจายและปรับขนาดได้

gor: เครื่องมือดักจับและเล่นซ้ำเครือข่าย;

ชื่อเรื่องรอง

ช่องเชิงนิเวศและมาตรฐานโดยปริยาย

นอกจากการทำงานหนักที่ต้องใช้ในการตีเหล็กแล้ว ยังมีโอกาสและโชคชะตาบางอย่างที่ทำให้บล็อกเชนเลือกภาษา Go มาดูตัวแทนที่ประสบความสำเร็จมากที่สุดของเครือข่ายสาธารณะและกลุ่มเครือข่ายตั้งแต่ Blockchain 2.0, Ethereum และ Hyperledger Fabric ซึ่งทั้งหมดเลือกใช้ Go เป็นภาษาการพัฒนาชั้นนำโดยไม่มีข้อยกเว้น

อิทธิพลของ super blockchain ทั้งสองนี้เทียบไม่ได้กับโครงการทั่ว ๆ ไป พวกเขาไม่เพียงครอบครองช่องขนาดใหญ่ในระบบนิเวศเท่านั้นแต่ยังกำหนดมาตรฐานของ blockchain โดยปริยาย ไม่ว่าจะเป็นข่าวกรองในเครือข่ายสาธารณะทั้งสัญญาหรือ เทคโนโลยีของห่วงโซ่พันธมิตรสามารถข้าม Ethereum และ Fabric ได้ ดังนั้นสำหรับบริษัทที่ต้องการเลือกเทคโนโลยี blockchain วิธีที่เร็วที่สุดในการบรรลุเป้าหมายคืออะไร โดยธรรมชาติแล้ว การคัดลอกนวัตกรรมของทั้งสองโครงการนี้โดยตรง และทางลัดคือการใช้รหัสโอเพ่นซอร์สโดยตรงเพื่อแก้ไข จากนั้นโดยธรรมชาติ ภาษา Go จะกลายเป็นตัวเลือกแรกสำหรับผู้มาใหม่ มันไม่ง่ายเลยที่จะนำมันกลับมาใช้ใหม่ ภาษาอื่น และหากคุณเลือกนวัตกรรมบางอย่างแต่ไม่ใช่ภาษาที่พัฒนาแล้วก็จะขาดการสนับสนุนสำหรับห้องสมุดบางแห่ง ทำให้โครงการไม่สามารถดำเนินการได้

หลายคนไม่ต้องสงสัยเลยเกี่ยวกับอิทธิพลของ Ethereum แต่อันที่จริงแล้ว ไม่ควรประเมินอิทธิพลของ Fabric ที่มีต่อการใช้งานบล็อกเชนระดับองค์กรต่ำเกินไป:

Hyperledger Fabric เป็นเฟรมเวิร์กโปรโตคอลที่ใช้มากที่สุดในบรรดาเครือข่ายบล็อกเชนระดับองค์กรที่ปรับใช้ และ Hyperledger (ซึ่ง Fabric เป็นโปรโตคอลหลัก) เป็นเฟรมเวิร์กโปรโตคอลที่ได้รับการสนับสนุนโดยทั่วไปโดยผู้รวมระบบและแพลตฟอร์มการพัฒนาซอฟต์แวร์ ซึ่งคิดเป็น 53%

ในบรรดาหนังสือเทคโนโลยีบล็อกเชนทั้งหมด ข้อเท็จจริงที่ว่าหนังสือเกี่ยวกับไฮเปอร์เลดเจอร์เป็นที่นิยมมากที่สุดก็เป็นเครื่องยืนยันถึงอิทธิพลของไฮเปอร์เลดเจอร์ด้วยเช่นกัน

ชื่อเรื่องรอง

การฝึก Bytom ในภาษา Go

ในกระบวนการเลือกภาษาการเขียนโปรแกรม C, C++ และ Java ได้รับการพิจารณา แต่ C/C++ นั้นยากต่อการบำรุงรักษาสำหรับโปรเจกต์ขนาดใหญ่ และ Java ค่อนข้างยุ่งยาก ในตอนนี้ ภาษา Go ได้ฉายแววในบล็อกเชนแล้ว โครงการ ค่อย ๆ สร้างผลกระทบหลักของเทคโนโลยีและความสามารถจากนั้นตามแนวโน้มของการเลือกเทคโนโลยีจะช่วยลดการต่อต้านที่พบโดยโครงการ Bytom เริ่มต้นตามธรรมชาติ แน่นอน ในกระบวนการพัฒนาแบบค่อยเป็นค่อยไปเรายังรู้สึกถึงความสะดวกสบายที่มาจากการเลือก ไปภาษาและข้อได้เปรียบ

กรณีของ Go on Blockchain

ในทางเทคนิคแล้ว โหนด blockchain ต้องการหลายโมดูลเพื่อทำงานร่วมกันแบบอะซิงโครนัส ดังนั้น การทำงานพร้อมกันของภาษา Go และช่องทางต่างๆ จึงได้เปรียบมาก ลองดูตัวอย่างการตรวจสอบธุรกรรมต่อไปนี้:

เราสามารถใช้ Routine+Ch+WaitGroup เพื่อสร้างฟังก์ชันธุรกรรมการยืนยันพร้อมกันภายใน 30 บรรทัดของโค้ด ในกรณีของเซิร์ฟเวอร์ที่มีการกำหนดค่าสูง มันสามารถรันได้มากกว่า 100,000 TPS

เป็นผู้เชี่ยวชาญภาษา Go ได้อย่างง่ายดาย

ในแง่ของการทำงานร่วมกัน การเรียงพิมพ์โค้ด Go โดยอัตโนมัติผ่าน gofmt สามารถลดความแตกต่างของสไตล์โค้ดที่ส่งโดยสมาชิกในทีมหลักและแม้แต่นักพัฒนาชุมชน และปรับปรุงคุณภาพโดยรวมและความสามารถในการบำรุงรักษาของโครงการ

สรุป

ชื่อเรื่องรอง

สรุป

开发者
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
คลังบทความของผู้เขียน
比原链Bytom
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android