Học Golang, nên hay không? Goroutines, nó là gì?
1. Go phát triển nhanh hơn bất kỳ ngôn ngữ nào khác
Đầu năm 2017, theo thống kê của Zdnet, Go vượt qua các đối thủ, độ phổ biến đạt 2.6%, leo từ vị trí 54 ở năm 2016 lên vị trí 13. Chưa hề có 1 ngôn ngữ nào có tốc độ phổ cập nhanh như vậy.
2. Go biên dịch ra nhiều nền tảng
Mình tiếp cận C/C++ từ thời sinh viên, đặc biệt yêu thích chúng. 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 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!
3. Sử dụng nhiều Core
Ở những năm 90, một trong những thay đổi lớn của phần cứng máy tính chính là việc bổ sung thêm các core. Quad-core và octa-core CPUs giúp nâng cao đáng kể hiệu năng xứ lý. Tuy nhiên, các ngôn ngữ lập trình được tạo ra vào trước thời điểm đó chỉ chạy trên các máy tính đơn nhân. Chúng được xây dựng không phải chủ đích để chạy trên multi-core. Nhưng Go thì khác, việc sinh sau đẻ muộn đã tạo ra lợi thế cho nó. Phần cứng máy tính có thể mở rộng core, khiến cho Go trở thành ngôn ngữ có thể dễ dàng scale hơn.
4. Concurrency và Goroutines
Concurrency là tính năng chủ lực của 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. Nếu như 1 Thread của Java được tạo ra, nó sử dụng xấp xỉ 1MB bộ nhớ của Heap. Nếu bạn tạo ra 1000 Thread như vậy, chúng sẽ tạo ra áp lực lớn lên heap dẫn tới việc hệ thống bị tắt bởi vì thiếu hụt bộ nhớ. Mặt khác, việc giao tiếp giữa 2 hoặc nhiều Thread cực kỳ khó khăn.
Nhưng với Go thì khác, khi việc sử dụng bộ vi xử lý multi-core khả thi. Goroutines hoàn toàn có thể thay thế được Thread. Mỗi Goroutines chỉ sử dụng 2KB bộ nhớ từ heap. Như vậy bạn có thể tạo ra hàng triệu goroutines bất kỳ lúc nào.
Ngoài ra, Goroutines còn đem lại những lợi ích:
- Goroutines sử dụng bộ nhớ một cách linh hoạt cho segmented stack, sẽ tự tăng memory khi cần thiết.
- Thời gian khởi động của Goroutines nhanh hơn so với Thread
- Communicate giữa các Goroutines sử dụng channel cực an toàn.
- Goroutines và OS thread không tồn tại 1:1. Mỗi Gorountine có thể chạy đồng thời nhiều threads, chúng có thể ghép vào OS threads.
5. Dễ dàng maintain
Cú pháp của Go cực kỳ đơn giản. Không có những cú pháp quá phức tạp giống như các ngôn ngữ khác nên dễ dàng cho việc học Golang. Những người phát triển Go đến từ Google, nơi có quy mô code-base lớn và hàng nghìn developers cùng làm việc. Vì vậy source code phải đơn giản để bất kỳ developer nào cũng có thể hiểu được. Mỗi đoạn code đều hạn chế tối thiểu side effect. Điều đó làm cho code có thể maintain một cách dễ dàng và đơn giản để thay đổi.
Mặt khác, Go bỏ qua nhiều đặc tính của lập trình hướng đối tượng OOP.
- Không có Class. Mọi thứ đều được gói vào trong các package. Go chỉ có structs.
- Không hỗ trợ kết thừa.
- Không constructor, annotation, generics hay exceptions.
Điều đó khiến Go trở nên khác biệt so với phần còn lại làm cho việc học Golang trở nên khá tù nếu các bạn đã quen với một ngôn ngữ hướng đối tượng. Nhìn theo mặt tích cực, nó khiến code trở nên ngắn gọn, dễ hiểu hơn.
Tạm kết
Ngoài ra, Go còn được chống lưng bởi Google. Điều này giúp ta tin tưởng vào lộ trình phát triển của Go, độ phổ cấp của nó trong tương lai. Hơn nữa, có rất nhiều công nghệ phát triển bên cạnh Go. Như Go kit – thư viện để xây dựng microservices, giải quyết các vấn đề về phân tán hệ thống, kiến trúc ứng dụng , Cloud computing, realtime web, web server. 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.
Tới đây có lẽ bạn đã có câu trả lời cho mình về câu hỏi có nên học Golang hay không rồi nhỉ? ^^
16 Tháng Hai, 2021, 3:09 chiều
17 Tháng Hai, 2021, 3:07 sáng
2 Tháng Ba, 2021, 6:20 sáng
16 Tháng Ba, 2021, 12:07 sáng
23 Tháng Ba, 2021, 6:15 sáng
25 Tháng Ba, 2021, 9:08 chiều
30 Tháng Ba, 2021, 6:24 chiều
1 Tháng Tư, 2021, 10:59 chiều
22 Tháng Tư, 2021, 4:38 sáng
28 Tháng Tư, 2021, 6:05 sáng
7 Tháng Năm, 2021, 6:35 sáng
8 Tháng Năm, 2021, 8:33 sáng
12 Tháng Năm, 2021, 7:55 chiều
18 Tháng Năm, 2021, 9:00 sáng
20 Tháng Năm, 2021, 8:02 chiều
24 Tháng Năm, 2021, 9:30 chiều
1 Tháng Sáu, 2021, 8:23 chiều
8 Tháng Sáu, 2021, 4:23 chiều
15 Tháng Sáu, 2021, 2:36 sáng
21 Tháng Sáu, 2021, 7:48 chiều
23 Tháng Sáu, 2021, 4:15 sáng
25 Tháng Sáu, 2021, 7:24 chiều
26 Tháng Sáu, 2021, 5:49 chiều
28 Tháng Sáu, 2021, 11:02 sáng
2 Tháng Bảy, 2021, 8:52 chiều
3 Tháng Bảy, 2021, 1:40 chiều
3 Tháng Bảy, 2021, 2:32 chiều
3 Tháng Bảy, 2021, 4:33 chiều
10 Tháng Bảy, 2021, 5:35 sáng
12 Tháng Bảy, 2021, 8:21 chiều
16 Tháng Bảy, 2021, 9:42 sáng
16 Tháng Bảy, 2021, 11:17 sáng
26 Tháng Bảy, 2021, 5:44 chiều
26 Tháng Bảy, 2021, 6:37 chiều
30 Tháng Bảy, 2021, 11:24 sáng
2 Tháng Tám, 2021, 10:55 sáng
17 Tháng Tám, 2021, 6:15 sáng
21 Tháng Tám, 2021, 11:56 chiều
1 Tháng Chín, 2021, 4:24 chiều
17 Tháng Chín, 2022, 11:06 sáng
Looking at this article, I miss the time when I didn’t wear a mask. baccaratcommunity Hopefully this corona will end soon. My blog is a blog that mainly posts pictures of daily life before Corona and landscapes at that time. If you want to remember that time again, please visit us.
20 Tháng Mười Một, 2022, 4:13 chiều
Afrikalı milftoon porno. dede torun milftoon. çizgi
pornosu. türbanli am meme vidyo sikis. gratis porno göt foto.
anne ogul porno cizgi film.
22 Tháng Mười Một, 2022, 4:09 chiều
Get Porn Videos masturbasyon: Masturbating in Lace Panty.
on a massage. masturbation. office secret gizli masturbasyon. guzel amcigiyla masturbasyon yapiyor.
भारतीय पत्नी पेशाब.
Asian step son masturbate in front of computer/mom catches her stepson masturbating in front
of the computer mom and stepson mom help him.
Hot live masturbation time!. Babe loves.
20 Tháng Ba, 2023, 5:05 chiều
Are you looking for a high quality cylinder block? Look no further than MyMROmarts.com. We are the leading supplier of cylinder blocks for sale. Our cylinder blocks are made from premium materials for optimum performance and longevity. Our cylinder blocks are available in a variety of sizes, shapes and configurations to meet your specific requirements. With our extensive inventory and fast shipping, you can be sure to find the perfect cylinder block to suit your needs.
28 Tháng Ba, 2023, 9:06 sáng
How to buy diabetes medication online without a prescription and get
it delivered by mail? Buy Glyburide online without prescription
Cheap Glyburide online Insulin delivery to my home
28 Tháng Ba, 2023, 6:49 chiều
You expressed that really well.