in Go/Golang

Tại sao nên học ngôn ngữ lập trình Go/Golang

Cũng không biết lý do gì mà tự nhiên đi nghiên cứu thử Golang, sau khi nghiên cứu một thời gian, cũng khá ngắn với chỉ cỡ 2 tuần, mình cảm thấy thích Go. Nhưng để xác định xem có nên nghiên cứu chuyên sâu hơn về Go không, thì mình viết bài giải thích tại sao mình thích Go/Golang, trước là để bản thân mình xác định về tương lai, tính cách bản thân có tương thích với Go hay không, sau là để các bạn chưa biết về Go có cái nhìn khái quát, để trả lời được tại sao nên học ngôn ngữ lập trình go/golang. Ít nhất là dành cho các bạn đang sử dụng ngôn ngữ động (như PHP, JS, Python, Ruby) như mình.

Bài viết đơn giản liệt kê một số ưu điểm “mới nhìn thấy”, mình không đủ thời gian chuyên sâu trong ngôn ngữ lập trình mới này, nên những gì viết ra sau đây đa phần dựa trên nhiều phát biểu của người khác, và thử nghiệm vọc vạch và thực sự thích – ngay tại thời điểm này:

Golang và phần còn lại

Biên dịch ra nhiều nền tảng

Mình thích C từ thời sinh viên, nhưng có lẽ do thời đại web cùng lúc – dễ kiếm tiền, nên mình chuyển sang sử dụng PHP để kiếm cơm. Tuy nhiên, ưu điểm biên dịch ra mã máy của C giúp tốc độ thực thi nhanh và vấn đề triển khai cũng rất gọn gàng với chỉ 1 file duy nhất, chương trình có tính ổn định cao (chất lượng code tương đương nhé :D) là những ưu điểm của biên dịch so với thông dịch.

Ngôn ngữ lập trình Go cũng biên dịch như Java, nhưng không như Java phải cần Java Virtual Machine để thực thi vì Java biên dịch ra Byte code, Go biên dịch ra mã máy (Machine code) nên có thể chạy ngay với hệ điều hành nó biên dịch ra mà không cần cài đặt gì thêm. Có nghĩa là từ máy tính của mình, có thể biên dịch ra các chương trình chạy trên Mac, Window, Linux, sau khi biên dịch, chỉ cần 1 file duy nhất, copy đến hệ điều hành đích là chạy, rất đơn giản. Đây là tính năng ấn tượng nhất, bao gồm cả việc build rất nhanh!

Dễ học

Đúng là Go khá dễ học, mặc dù nó tương đối khó xơi ở phần kiểu dữ liệu Slice, khái niệm Goroutine, Channel và Pointer. Tuy nhiên, có thể khẳng định là nếu đã từng học ít nhất 1 ngôn ngữ lập trình, bạn không hề gặp khó khăn khi học Go. Mặc dù ban đầu, nhìn cấu trúc của Go có vẻ hơi xấu – có vẻ làm khủng hoảng tinh thần, tuy nhiên dần dần cũng thấy thoải mái, và tiện lợi.

Để master thì chưa biết là bao lâu, nhưng so với cùng khoảng thời gian (ở đây là 2 tuần) khi mình học Python và Ruby thì Go dễ hiểu, dễ học hơn. Có thể tự xây dựng một client cho một API đơn giản một cách nhanh chóng, hoặc có thể viết web crawler có sử dụng goroutine/channel để xử lý concurrency.

Concurrency

Cocurrency là tính năng chủ lực của ngôn ngữ lập trình Go để tận dụng năng lực xử lý của CPU. Thông thường các ngôn ngữ lâp trình khác phải phụ thuộc sự cấp phát tài nguyên của hệ điều hành để có thể chạy Concurrency, trong khi đó Go có thể chạy concurrency mà không phụ thuộc hệ điều hành. Concurrency gần giống với thread, trong Go thì việc giao tiếp giữa các goroutine khá đơn giản với channel, có thể truyền dữ liệu giữa các goroutine với nhau bằng bất cứ loại dữ liệu nào.

Còn tiếp …

Điểm mạnh về microservice, realtime web, cloud computing, built-in web server (http/2) 🙂

Tạm kết

Ngôn ngữ lập trình Go chỉ mới có 6 năm tuổi đời nên sẽ còn có nhiều điều để phát triển so với các bậc tiền bối C, C++, Java. Nếu bạn cũng là người đang sử dụng chính ngôn ngữ động như PHP, JS, Ruby hay Python, thì cũng nên bước ra khỏi cái vỏ ốc an toàn đó, tìm hiểu thêm anh chàng Go này xem sao. Docker cũng đã được viết bằng ngôn ngữ lập trình Go, cũng như một phần trong Google.

Mình thích C, chưa bao giờ thích Java, và giờ là lúc để chọn ngôn ngữ lập trình Go: biên dịch và dành cho con người 😀

Comments

Written By:

Xin chào, mình là kỹ sư công nghệ thông tin đang làm việc tại Tokyo, Nhật Bản. Đam mê lập trình web và mobile, mình đang cố gắng học Javascript để hoàn thiện bản thân để trở thành lập trình viên fullstack thực thụ. Mình yêu thích tối ưu tốc độ ứng dụng cũng như cải thiện quy trình làm việc để phát triển sản phẩm chất lượng và nhanh chóng. Sự động viên của bạn bằng các hình thức "like", "share", "comment" sẽ giúp cho mình có động lực để viết nhiều bài tốt hơn!

Add a Comment

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *