Quan điểm cộng đồng: Cách tôi chuyển từ kỹ sư Java sang Go Blockchain
lời tựa
tiêu đề phụ
Tôi đã từng phát triển Java trước khi tham gia Bytom Chain. Lần đầu tiên nhìn thấy Go, tôi đã có một chút do dự và tôi sợ rằng mình sẽ không thể vượt qua cuộc phỏng vấn. Kết quả là, việc cân nhắc thành thạo một ngôn ngữ thực sự rất quan trọng. không cao lắm. Tôi đã tham gia thành công Chuỗi Bytom và trong vòng nửa tháng, tôi nhanh chóng thành thạo Go và có thể phát triển các dự án cốt lõi.
Ngôn ngữ Java có lợi thế trong các dự án trưởng thành lớn hơn, nhưng nó có nhiều thiếu sót trong phát triển chuỗi khối, chẳng hạn như trong xử lý coroutine và bản thân ngôn ngữ Java không đủ linh hoạt, v.v. Tất nhiên, lý do chính để chọn Go là phổ biến của chuỗi khối.
tiêu đề phụ
Ngôn ngữ phổ biến của chuỗi khối
Thực hiện một số thống kê nhỏ về các ngôn ngữ lập trình được sử dụng bởi các dự án nổi tiếng hơn, như thể hiện trong hình bên dưới:
Thế hệ chuỗi công khai cũ, chẳng hạn như Bitcoin và Litecoin, thường sử dụng nhiều C/C++ hơn (hãy xem xét thời điểm đó, khi Go chưa bắt đầu) và thế hệ chuỗi công khai mới như Ethereum, dẫn đầu về chuỗi liên minh, Hyperledger, bắt đầu sử dụng nhiều hơn Sử dụng ngôn ngữ Go, tất nhiên chúng ta đã thấy rằng đà phát triển của Rust cũng rất mạnh, trong hai năm qua, nhiều chuỗi công cộng như Polkadot và Grin đã bắt đầu sử dụng Rust ngôn ngữ để phát triển.
tiêu đề phụ
Ưu điểm của ngôn ngữ Go
dễ triển khai
Quá trình biên dịch Go tạo ra một tệp thực thi tĩnh không có phụ thuộc bên ngoài nào ngoài glibc. Điều này làm cho việc triển khai trở nên cực kỳ thuận tiện: chỉ cần một hệ thống cơ bản và các công cụ giám sát và quản lý cần thiết trên máy mục tiêu và không cần phải lo lắng về sự phụ thuộc của các gói và thư viện khác nhau mà ứng dụng yêu cầu, giúp giảm đáng kể gánh nặng bảo trì . Nó có thể được biên dịch trực tiếp thành mã máy mà không cần dựa vào các thư viện khác Phiên bản của glibc có một số yêu cầu nhất định và quá trình triển khai được hoàn tất bằng cách ném một tệp lên.
màn biễu diễn quá xuất sắc
Mặc dù không tốt bằng C và Java, nhưng nó thường cao hơn một bậc so với các ứng dụng Python gốc và phù hợp để viết một số doanh nghiệp thắt cổ chai. Sử dụng bộ nhớ cũng rất thấp.
Đồng thời & Kênh
Goroutine và channel giúp dễ dàng viết phần mềm máy chủ đồng thời cao.Trong nhiều trường hợp, không cần xem xét cơ chế khóa và các vấn đề khác nhau do nó gây ra. Một ứng dụng Go duy nhất cũng có thể sử dụng hiệu quả nhiều lõi CPU và hiệu suất thực thi song song là tốt.
thiết kế ngôn ngữ tốt
Cờ vây rất đơn giản và dễ học. Từ quan điểm học thuật, ngôn ngữ Go thực sự rất tầm thường và không hỗ trợ nhiều tính năng ngôn ngữ nâng cao; nhưng từ quan điểm kỹ thuật, thiết kế của Go rất tốt: đặc điểm kỹ thuật đủ đơn giản và linh hoạt. Nhờ tính đơn giản của Go, bất kỳ nhà phát triển Python, Elixir, C++, Scala hoặc Java nào cũng có thể thành lập một nhóm Go hiệu quả trong vòng một tháng.
Thư viện & Công cụ tiêu chuẩn
Go hiện có một số lượng lớn thư viện tích hợp sẵn, đặc biệt là thư viện mạng rất mạnh mẽ. Quan trọng hơn, Go đi kèm với một chuỗi công cụ hoàn chỉnh, giúp cải thiện đáng kể tính nhất quán của hoạt động cộng tác nhóm. Ví dụ: gofmt tự động sắp chữ mã Go, giúp loại bỏ phần lớn vấn đề về các kiểu mã sắp chữ không nhất quán được viết bởi những người khác nhau. Định cấu hình trình chỉnh sửa để tự động chạy gofmt khi chỉnh sửa kho lưu trữ, để bạn có thể đặt mã theo ý muốn khi viết mã và nó sẽ tự động trở thành mã sắp chữ chính xác khi lưu trữ. Ngoài ra, có các công cụ rất hữu ích như gofix và govet.
Một đội tuyệt vời
Người hỗ trợ đằng sau ngôn ngữ Go là Google. Ngôn ngữ này đủ để thử nghiệm trong nhiều tình huống khác nhau. Đồng thời, người sáng lập cũng là cha đẻ của ngôn ngữ C, và có thể mong đợi sự phát triển và đổi mới tiếp theo.
Đi dự án thành công
Ngôn ngữ Go đã được sử dụng rộng rãi trong kỷ nguyên đám mây, đặc biệt là sự xuất hiện của các sản phẩm sát thủ như Docker và K8s đã mang lại cho ngôn ngữ Go một vị trí trong thế giới kỹ thuật.
Ngoài ra, ngôn ngữ Go có rất nhiều phần mềm chạy thành công:
nsq: Hệ thống xếp hàng tin nhắn nguồn mở của Bitly có hiệu suất rất cao, hiện tại họ xử lý hàng tỷ tin nhắn mỗi ngày;
trình đóng gói: được sử dụng để tạo tệp hình ảnh cho các nền tảng khác nhau, chẳng hạn như VM, vbox, AWS, v.v., tác giả là tác giả của vagrant;
skynet: khung lập lịch phân tán;
Doozer: một công cụ đồng bộ hóa phân tán, tương tự như ZooKeeper;
Heka: hệ thống xử lý nhật ký mã nguồn mở mazila;
cbfs: Hệ thống tệp phân tán mã nguồn mở Couchbase;
tsuru: một nền tảng PAAS mã nguồn mở, có các chức năng hoàn toàn giống với SAE;
thần: một hệ thống bộ đệm tương tự như redis, nhưng hỗ trợ phân phối và khả năng mở rộng;
gor: Công cụ chụp và phát lại lưu lượng mạng;
tiêu đề phụ
Khe sinh thái và những chuẩn ngầm
Bên cạnh sự cần cù luyện công, cũng có một số cơ hội và vận may khiến blockchain chọn ngôn ngữ cờ vây. Hãy xem xét các đại diện thành công nhất của chuỗi công khai và chuỗi tập đoàn kể từ Blockchain 2.0, Ethereum và Hyperledger Fabric, tất cả đều đã chọn sử dụng Go làm ngôn ngữ phát triển hàng đầu mà không có ngoại lệ.
Sức ảnh hưởng của hai siêu chuỗi khối này không thể so sánh với các dự án thông thường, chúng không chỉ chiếm một vị trí thích hợp lớn trong hệ sinh thái mà còn ngầm hình thành các tiêu chuẩn của chuỗi khối, cho dù đó là trí thông minh trong chuỗi công khai hay hợp đồng. công nghệ của chuỗi liên minh có thể vượt qua Ethereum và Fabric, vậy đối với một công ty muốn chọn công nghệ chuỗi khối, cách nhanh nhất để đạt được điều đó là gì? Đương nhiên là sao chép trực tiếp những sáng tạo của hai dự án này, và một con đường tắt là trực tiếp sử dụng mã nguồn mở để sửa đổi, thì nghiễm nhiên ngôn ngữ Go trở thành lựa chọn hàng đầu của những người đến sau, không dễ để thực hiện lại nó trong một ngôn ngữ khác và nếu bạn chọn một số đổi mới nhưng không phải là một ngôn ngữ rất trưởng thành cũng sẽ thiếu hỗ trợ cho một số thư viện cụ thể, khiến dự án không thể thực hiện được.
Nhiều người không nghi ngờ gì về ảnh hưởng của Ethereum, nhưng trên thực tế, không nên đánh giá thấp ảnh hưởng của Fabric đối với việc triển khai chuỗi khối doanh nghiệp:
Hyperledger Fabric là khung giao thức được sử dụng nhiều nhất trong số các mạng chuỗi khối doanh nghiệp được triển khai và Hyperledger (trong đó Fabric là giao thức hàng đầu) là khung giao thức được các nhà tích hợp và nền tảng phát triển phần mềm hỗ trợ phổ biến nhất, chiếm 53%.
Trong số tất cả các cuốn sách về công nghệ chuỗi khối, thực tế là những cuốn sách về siêu sổ cái là phổ biến nhất cũng là một xác nhận phụ về ảnh hưởng của Hyperledger.
tiêu đề phụ
Thực hành Bytom trong ngôn ngữ Go
Trong quá trình lựa chọn ngôn ngữ lập trình, C, C++ và Java đã được cân nhắc, nhưng C/C++ khó duy trì cho các dự án lớn và Java hơi cồng kềnh, tại thời điểm này, ngôn ngữ Go đã tỏa sáng trong blockchain dự án. Dần dần hình thành hiệu ứng đầu của công nghệ và tài năng, sau đó theo xu hướng lựa chọn công nghệ sẽ tự nhiên làm giảm lực cản mà dự án Bytom ban đầu gặp phải. Tất nhiên, trong quá trình phát triển dần dần, chúng tôi cũng cảm thấy sự tiện lợi do việc lựa chọn mang lại Go ngôn ngữ và lợi thế.
Một trường hợp của Go trên Blockchain
Về mặt kỹ thuật, các nút blockchain yêu cầu nhiều mô-đun hoạt động cùng nhau một cách không đồng bộ, do đó, các kênh và ngôn ngữ Go đồng thời là rất thuận lợi. Hãy xem ví dụ sau về xác minh giao dịch:
Chúng ta có thể sử dụng Routine+Ch+WaitGroup để xây dựng chức năng giao dịch xác minh đồng thời trong vòng 30 dòng code, trong trường hợp máy chủ cấu hình cao có thể chạy hơn 100.000 TPS.
Dễ dàng trở thành cao thủ ngôn ngữ Go
Về mặt cộng tác, việc sắp chữ tự động mã Go thông qua gofmt có thể giảm thiểu sự khác biệt về kiểu mã do các thành viên cốt lõi trong nhóm và thậm chí cả các nhà phát triển cộng đồng gửi, đồng thời cải thiện chất lượng tổng thể và khả năng bảo trì của dự án.
tóm tắt
tiêu đề phụ
tóm tắt


