
Hướng dẫn dành cho nhà phát triển: Từ Web2 đến Web3, cần học những ngôn ngữ lập trình nào?
Tuyển chọn TechFlowTuyển chọn TechFlow

Hướng dẫn dành cho nhà phát triển: Từ Web2 đến Web3, cần học những ngôn ngữ lập trình nào?
Nên tập trung vào ngôn ngữ nào trong số Solidity, Go, Haskell, Rust khi chuyển từ lập trình viên sang Web3.0?
Lập trình viên chuyển sang Web3.0 nên tập trung vào ngôn ngữ nào trong Solidity, Go, Haskell, Rust?
01 Mở đầu
Mặc dù các từ như metaverse và NFT đã trở nên quen thuộc, nhưng đối với những người làm trong ngành này, Web3.0 vẫn đang ở giai đoạn sơ khai, với các giải pháp mới, mô hình kinh doanh, khái niệm hay ý tưởng liên tục xuất hiện. Đồng thời, làn sóng công nghiệp mạnh mẽ này đã tạo ra nhu cầu nhân lực khổng lồ, trong đó lập trình viên blockchain là một trong những nghề được săn đón nhiều nhất.
Năm 2021, số lượng lập trình viên tham gia Web3.0 nhiều hơn bất kỳ thời điểm nào trước đây, với hơn 34.000 người gia nhập ngành trong cả năm. Tương tự như lĩnh vực tài chính truyền thống, số lượng việc làm trong lĩnh vực blockchain cũng đang ở mức cao kỷ lục.

[Như hình] Sau khi giá Bitcoin tăng vọt năm 2017, số lượng tuyển dụng tăng mạnh theo năm; trong thời gian Covid-19, giá Bitcoin tiếp tục tăng, xu hướng tuyển dụng cũng duy trì theo đà này
Các lập trình viên Internet truyền thống đã nắm vững nhiều ngôn ngữ như Python, C++, Truffle, Javascript, Golang,... Vì vậy, những người có kỹ năng phát triển Web2 sẽ dễ dàng chuyển đổi sang Web3.
Hiện nay ngoài Ethereum, các blockchain được các lập trình viên ưa chuộng còn có Cardano, Solana, Avalanche, Tezos. Những blockchain này sử dụng nhiều ngôn ngữ lập trình khác nhau, lập trình viên dù nắm bất kỳ ngôn ngữ nào đều có cơ hội việc làm. Tất nhiên, tham gia vào cộng đồng phát triển lớn sẽ có lợi thế hơn vì họ có nhiều tài liệu hướng dẫn, thư viện tương thích và các công cụ plug-and-play để di chuyển dApp phong phú hơn. Tất nhiên, nếu có thể kết hợp nhiều kỹ năng lập trình thì con đường phát triển blockchain chắc chắn sẽ càng rộng mở.
Bài viết này chủ yếu tổng hợp một số ngôn ngữ phát triển được chú trọng hiện nay, bao gồm Javascript và Solidity dùng trên Ethereum, Haskell - nền tảng của ngôn ngữ Plutus bản địa Cardano, Go dùng trong Cosmos, cuối cùng là Rust từng được sử dụng bởi Solana, giao thức NEAR và Polkadot.
02 Javascript & Solidity: Ethereum
Ethereum có bốn ngôn ngữ chuyên dụng: Serpent (lấy cảm hứng từ Python), Solidity (lấy cảm hứng từ JavaScript), Mutan (lấy cảm hứng từ Go) và LLL (lấy cảm hứng từ Lisp), tất cả đều được thiết kế từ底层 cho lập trình hợp đồng thông minh.
Trong đó Solidity là ngôn ngữ ưu tiên của Ethereum, nó tích hợp mọi tính năng của Serpent, cú pháp gần giống JavaScript, dễ học và sử dụng. Vì JavaScript đã là ngôn ngữ phổ biến của các lập trình viên Web, hàng triệu lập trình viên trên thị trường đã sở hữu nền tảng cơ bản để phát triển hợp đồng Ethereum.
Cùng là ngôn ngữ hướng đối tượng, Javascript và Solidity có nhiều điểm tương đồng, nhưng chức năng lại khác biệt. Javascript đã được dùng trong phát triển Web một thời gian dài, mã nguồn của nó tăng tính tương tác cho hiển thị web, mang lại sức sống mới cho web qua trải nghiệm động và các chức năng.
Tương tự như trang web và ứng dụng di động, Javascript có thể dùng trong quá trình phát triển Web3 để tạo dApp, tuy nhiên cần lưu ý rằng trong ứng dụng blockchain, cần sử dụng các thư viện JavaScript như web3.js và ethereum.js, chúng cho phép người dùng tương tác với nút Ethereum thông qua HTTP, IPC hoặc WebSocket cục bộ hoặc từ xa, đồng thời cho phép lập trình viên dùng công cụ plug-and-play để làm cho dApp tương thích với Ethereum.

[Như hình] Dữ liệu cho thấy, tổ hợp kỹ năng lý tưởng cho lập trình viên là thành thạo Rust, Kotlin, Haskell và Go. Nguồn: Khảo sát lập trình viên HackerEarth 2021
Solidity không phải ngôn ngữ lập trình phức tạp, giống phiên bản thu nhỏ của JavaScript, do đó dễ tiếp cận hơn với nhiều lập trình viên.
Mặc dù Solidity tương đối non trẻ, cộng đồng sử dụng cũng trẻ, quy mô nhỏ, thư viện chuẩn hóa tái sử dụng ít. Nhưng kể từ năm 2020, cộng đồng Solidity và kho mã nguồn phát triển nhanh chóng, đến cuối năm 2021 đã có hơn 2.000 lập trình viên tích cực hoạt động. Thêm vào đó, Ethereum vẫn là hệ sinh thái phát triển lớn nhất hiện nay, không thể nghi ngờ, Solidity vẫn là một trong những ngôn ngữ lập trình vàng được ứng dụng rộng rãi nhất trong ngành blockchain.
Với sự xuất hiện của Ethereum 2.0, việc kết hợp Solidity với các ngôn ngữ khác để xây dựng dApp trên Ethereum mang lại lợi thế lớn. Đối với nhiều lập trình viên muốn bước vào Web3, đây cũng là một con đường tắt.
03 Haskell: Ngôn ngữ lập trình Web3 hàm thuần túy
Haskell là một ngôn ngữ lập trình hàm đa năng, trong ứng dụng blockchain thường được định vị là ngôn ngữ tùy chỉnh nền tảng cho ngôn ngữ lập trình hợp đồng thông minh Plutus của Cardano.
Về bản chất, Haskell cung cấp một khung lý thuyết để mô tả và đánh giá các hàm, trong đó mỗi hàm đều là hàm toán học, có độ an toàn cao. Trong Haskell, các hàm thực hiện nhiệm vụ cấp thấp và xác định nhiệm vụ chương trình cần hoàn thành. Đồng thời nó là ngôn ngữ kiểu tĩnh, mã nguồn dễ được đánh giá trong quá trình biên dịch, nhờ đó kiểm tra kiểu có thể đảm bảo mã nguồn gọn gàng, rõ ràng và chính xác.
Nó sử dụng đánh giá lười biếng (lazy evaluation), nếu không cần thiết sẽ bỏ qua mọi mã không liên quan, giúp chương trình chạy nhanh hơn. Ngoài ra, lập trình viên dùng nó rất thuận tiện vì tận dụng quản lý bộ nhớ tự động (AMM), không cần viết mã quản lý bộ nhớ khi phát triển dApp.
Tính đến năm 2021, số lượng lập trình viên Web3 sử dụng ngôn ngữ Haskell rất ít, chưa được đông đảo lập trình viên chấp nhận. Việc làm chủ Haskell khó, thư viện Haskell ít, số lượng lập trình viên ít và tăng trưởng chậm. Tuy nhiên Haskell đóng vai trò quan trọng trong sản xuất phần mềm chất lượng cao, việc thành thạo thêm Haskell giúp lập trình viên dễ nổi bật hơn.
04 Go: Cosmos và SDK Polygon
Go là một ngôn ngữ lập trình đa năng mã nguồn mở, được các lập trình viên Google ra mắt năm 2009. Đây là một ngôn ngữ kiểu tĩnh rõ ràng, Go nhằm mục đích kết hợp đặc tính dễ phát triển của Python với hiệu quả của ngôn ngữ biên dịch như C++.
Cosmos và SDK Polygon thường sử dụng Go. Nó có lượng lớn thư viện nội bộ, tương thích đa nền tảng và thiết bị di động. Hơn nữa, nó sử dụng "Goroutines", giúp dApp khởi động nhanh và thực hiện nhiệm vụ mà không tiêu tốn quá nhiều bộ nhớ. Go còn có thể chạy nhiều luồng đồng thời để thực hiện hiệu quả trong điều kiện sử dụng nặng.
Các ví dụ Web3 của Go bao gồm SDK Polygon Edge, một framework mô-đun cho dApp và blockchain, dùng để xây dựng mạng lưới tương thích Ethereum. Nó dẫn dắt mạng bên thứ ba lên blockchain Ethereum, từ đó truyền ERC-20 token và NFT ERC-721 thông qua giải pháp riêng của họ. Các thực thi Ethereum khác có thể nhúng vào Go bằng client Go Ethereum.
Việc học Go không quá khó vì giai đoạn đầu phù hợp với tư duy lập trình viên JS hoặc C, đồng thời cung cấp nhiều tài nguyên học tập. Những lập trình viên có kinh nghiệm C/C++/Java sẽ nắm bắt nhanh hơn.
Theo khảo sát lập trình viên Stack Overflow năm 2020, Go khá được ưa chuộng, hơn 62% người tham gia cho biết họ thích ngôn ngữ này và sẽ tiếp tục dùng nó để phát triển.
05 Rust: Đơn giản, tính đồng thời và hiệu suất cao
Năm 2015, một cựu nhân viên Mozilla lần đầu tiên phát hành Rust, đây là một ngôn ngữ lập trình đa mô hình tập trung vào an toàn và hiệu suất, được xây dựng với tốc độ và hiệu quả, nghĩa là nó có thể cung cấp trừu tượng chi phí bằng không, tính kế thừa và các đặc tính chức năng.
Rust có tốc độ và hiệu quả bộ nhớ đáng kinh ngạc. Hệ thống kiểu phong phú và mô hình quyền sở hữu của nó đảm bảo an toàn bộ nhớ và luồng, từ đó loại bỏ nhiều lỗi điển hình trong lúc biên dịch. Ngoài ra, nó có thể xử lý mã đồng thời (và song song), xử lý giao dịch nhanh chóng. Điều này mang lại khả năng mở rộng cho chương trình Rust, vì thông lượng cao, nên lượng giao dịch mỗi giây (TPS) xử lý được nhiều hơn các ngôn ngữ khác.
Trừu tượng chi phí bằng không đảm bảo rằng trừu tượng bạn dùng hầu như không gây chi phí runtime, nghĩa là không có sự khác biệt về tốc độ giữa mã gốc và mã dùng trừu tượng. Khái niệm chi phí bằng không cũng trở thành nguyên tắc cốt lõi trong phát triển Rust.
Rust còn cung cấp tài liệu tuyệt vời và trình biên dịch đơn giản, giúp chẩn đoán vấn đề dễ dàng, nâng cao hiệu suất làm việc. Nghĩa là lập trình viên không cần tốn nhiều thời gian tối ưu mã, vì trình biên dịch sẽ tự động trừu tượng hóa mã của họ. So với các ngôn ngữ khác, ứng dụng viết bằng Rust chạy nhanh hơn, ngay cả mã đã được tối ưu của ngôn ngữ khác cũng không sánh kịp tốc độ của Rust.
Ngoài ra, Rust có thể kết hợp tốt với các ngôn ngữ khác, dễ dàng gọi ngôn ngữ khác và ngược lại. Đặc tính này càng thể hiện rõ giá trị tương tác trong mạng lưới kết nối vạn vật.
Nhờ những lợi thế này, năm 2020, một khảo sát lập trình viên của Stack Overflow cho thấy Rust là "ngôn ngữ lập trình được yêu thích nhất", khoảng 86% người tham gia khảo sát cho biết họ muốn tiếp tục dùng Rust để lập trình trong tương lai.
Sự ra đời của Polkadot và việc sử dụng Rust trực tiếp dẫn đến nhu cầu tuyển dụng lập trình viên Rust. Đồng thời đến cuối năm 2021, số lượng lập trình viên tích cực hoạt động trên Solana đã tăng từ khoảng 180 người lên gần 1.000 người, tăng gần 500%. Điều này cho thấy tiềm năng ứng dụng mạnh mẽ của Rust.

Rust phù hợp nhất với các thao tác có thông lượng cao và đồng thời.
06 Kết luận: Rust là một viên ngọc tiềm năng
Do các giao thức Web3 cần hiệu suất nhanh và mạnh khi xử lý hàng chục triệu đầu vào không tin cậy, Rust có lợi thế rõ rệt. Nó xử lý các nhiệm vụ phức tạp với tốc độ chớp nhoáng, đồng thời giảm thiểu các lỗi liên quan đến bộ nhớ, ranh giới, biến rỗng, biến khởi tạo hoặc tràn số nguyên.
Rust có độ khó học nhất định, nhưng vẫn có nhiều lập trình viên tìm học. Sử dụng Rust có thể tạo ra dApp mạnh mẽ hơn, giảm nhiều lỗi phổ biến, khiến dApp sau khi phát hành hoạt động đúng như mong đợi. Khả năng đồng thời của nó chính là thứ cần thiết để xử lý hàng chục ngàn thậm chí hàng trăm ngàn giao dịch mỗi giây, khiến Rust trở thành lựa chọn lý tưởng cho các ứng dụng Web3 và giao dịch trong thế giới ảo.
Mặt khác, Solidity cung cấp một cộng đồng lớn và thư viện Ethereum đồ sộ. Hiệu ứng mạng lưới này thúc đẩy hợp tác, đồng thời tăng khả năng ứng dụng rộng rãi hơn cho dApp cụ thể.
Nhu cầu việc làm cho mỗi ngôn ngữ đều đang tăng lên, và lập trình viên thành thạo nhiều ngôn ngữ sẽ có nhiều cơ hội lựa chọn việc làm hơn. Hiện tại, nhu cầu với lập trình viên Solidity rất lớn, nhưng việc học Go, Haskell hay Rust sẽ có lợi thế hơn vì số lượng lập trình viên dùng các ngôn ngữ này còn ít, đồng thời các ngôn ngữ này cũng được nhà tuyển dụng ưa chuộng hơn.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














