thảo luận Tất tần tật về Go (Golang)

2 cái mà bản thân đang đánh giá cao, và chắc chắn có tương lai là Dart Golang :sure:

Dart thì làm mobile xịn vl
2F5wL7o.png
RrzHTyy.gif
 
Dart ngoài flutter để dev app mobile ra thì còn dùng chỗ nào nữa nhỉ? Có use case hay công ty nào lớn dùng không?
Thì mới nói là của tương lai mai phen ạ ;) nó là ngôn ngữ mới, khắc phục đa số những cái dở ở Js, java... Ngoài mobile ra thì định hướng của nó là cả web,desktop, backend...Còn về cái phần ai dùng nó hay không thì fen cứ xem có bao nhiêu công ty đã phát triển flutter với xem lại th bố tạo ra nó;)
 
Tốc độ chạy chỉ kém C,C++ 1 tí thì lại chả mọi hệ thống Backend sẽ viết lại hết bằng Go :sure:
Thế mà discord nó chuyển Go sang Rust đấy thím, chắc service nhỏ nào của nó thôi hay sao. Go code không khó rất tường minh, nhưng nó hơi ngu đối với mình ko có generic, try catch..vv . Trước bàn dân cũng propose rồi mà hình như là tác giả reject hết thì phải.
 
Rảnh rảnh type vài dòng cho các bác:

Ưu điểm của Go:
1. Code dễ đọc, dễ hiểu.
2. Go compiler mang lại nhiều thông tin có để giải quyết các vấn đề thay vì những output vô nghĩa.
3. Go code portable
4. Hỗ trợ concurrency, distributed programming.
5. Support Garbage collection. Được thiết kế khá nhanh chứ ko chậm chạp như GC của java.
6. Ko có preprocessor, tăng tốc độ khi compile chương trình.
7. Có thể build web app.
8. Bộ thư viện chuẩn của Go cung cấp nhiều library cho phép làm việc dễ dàng.
9. Sử dụng static linking by default. Ko cần quan tâm tới library, different version v.v...
10. Support Unicode
(cái này mình đọc sách nhiều nên biết thôi :sexy:)

Tất nhiên ko có ngôn ngữ nào là hoàn hảo, quan trọng là mục tiêu khi người ta xây dựng ngôn ngữ đó là gì.
Ví dụ như Go thì ko có OOP, có thể gọi là ko trực tiếp support OOP thì chính xác hơn.
Về tốc độ thì mình nghĩ Go vẫn ko thể nhanh hơn C dc, đơn giản là Unix viết bằng C.

Nhưng dù sao Go là một ngôn ngữ hiện đại, dễ học, dễ nắm bắt, dễ viết.

Để học syntax 1 ngôn ngữ thì rất dễ, python hay Java thì chắc ngồi vài hôm là xong. Nhưng để thực sự "đào sâu" vào ngôn ngữ đấy, thì mình nghĩ các bác cần nhiều thời gian hơn rất nhiều.
Có thể mất cả năm trời để hiểu rõ dc các cơ chế hoạt động phía dưới của ngôn ngữ, sử dụng một cách thông thạo, code đẹp đẽ tối ưu.
Do tính chất công việc hiện nay nên đa phần nhiều người ko đạt dc tới level đó và cũng ko coi việc đó là quan trọng, với mình đó là 1 điều đáng buồn.

Các bác chỉ có thể code 1 cách tối ưu khi các bác hiểu rõ ngôn ngữ đó hoạt động như thế nào.
Bữa cty mình có 1 case hài vl, má nào code Go sài ko đóng transaction hay sao ấy, nó lên connection poll :LOL:. Sập,
Nói chung Go nó tường mình rõ ràng nhưng code cũng tỉ mỉ tí là OK. Chứ mấy cái vụ transaction bên thằng Hibernate nó lo cho rồi.
 
Thế mà discord nó chuyển Go sang Rust đấy thím, chắc service nhỏ nào của nó thôi hay sao. Go code không khó rất tường minh, nhưng nó hơi ngu đối với mình ko có generic, try catch..vv . Trước bàn dân cũng propose rồi mà hình như là tác giả reject hết thì phải.

Generic thì go 2 sẽ có nhé.

Còn try catch thì hiện tại code theo nó function return error riết cũng quen. Cam giác try catch có thì sẽ sinh ra mấy ông đụng đâu panic chỗ đó :eek:

Thằng rust cung đâu có try catch đâu.

Nói chung go với rust force thăng dev phải có tâm khi handle error hơn.
 
Last edited:
Thế mà discord nó chuyển Go sang Rust đấy thím, chắc service nhỏ nào của nó thôi hay sao. Go code không khó rất tường minh, nhưng nó hơi ngu đối với mình ko có generic, try catch..vv . Trước bàn dân cũng propose rồi mà hình như là tác giả reject hết thì phải.
Discord 250 triệu người dùng voice realtime. So sánh ở tầm vĩ mô quá
jmEBCky.gif
 
Last edited:
Go gọi là performance cũng ngon nhưng đéo ăn được Java, .NET Core, C++...
Go GC cũng đéo ngon bằng Java.
Những cái ngon nhất của Go là memory footprint, build time.

Bên tôi những cái critical performance vẫn phải dùng Java, còn lại Go và Python cho những chỗ khác.
 
Ko biết rust với swift cho hỏi go nó thiếu gì vậy :what:
Cái cơ bản nhất là generic (có vẻ version 2 sẽ có, ngon hay k thì k chắc lắm)
Thiếu kiểu result (năm 2020 rồi gọi hàm vẫn trả về cái err và phải check nil haha)
Ko có kiểu optional
Thiếu nhiều hàm xử lý sequence (map filter reduce...)
Polymorphism ở runtime (rust có traits, swift thì xài protocol ở compile time) do hệ thống typing sida. B có thể thấy dev go abuse cái interface{} ntn.
Cá nhân mình thấy go giống như ngôn ngữ giúp các dev js / python code ra phần mềm nhẹ và nhanh hơn, chứ ko có j nổi trội.
 
Cái cơ bản nhất là generic (có vẻ version 2 sẽ có, ngon hay k thì k chắc lắm)
Thiếu kiểu result (năm 2020 rồi gọi hàm vẫn trả về cái err và phải check nil haha)
Ko có kiểu optional
Thiếu nhiều hàm xử lý sequence (map filter reduce...)
Polymorphism ở runtime (rust có traits, swift thì xài protocol ở compile time) do hệ thống typing sida. B có thể thấy dev go abuse cái interface{} ntn.
Cá nhân mình thấy go giống như ngôn ngữ giúp các dev js / python code ra phần mềm nhẹ và nhanh hơn, chứ ko có j nổi trội.

Chính xác là Go nó sinh ra trong thời đại cloud và serverless nên nó cần các thứ nhỏ nhỏ model đơn giản, startup nhanh, memory footprint thấp giúp deploy, scale, destroy nhanh chứ mode phức tạp làm việc với Go rất khổ.
 
đọc bài gốc của nó trên medium đi, phần response, nhiều ý kiến cho rằng chỉ cần upgrade version go lên bảng mới là đã giải quyết được vấn đề của go GC
Ý bạn là bài viết này: https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
~ 50 engineers tạo app cho 250 mil users, họ quyết định chuyển từ Go sang Rust chỉ vì GC ???
Như mình nói không ngôn ngữ nào hoàn hảo, bác kia hỏi Rust có gì mà Go không làm được mình đưa link dẫn chứng người thật việc thật cho xem, mình chưa hề nói Rust tốt hơn Go :)
 
Ý bạn là bài viết này: https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
~ 50 engineers tạo app cho 250 mil users, họ quyết định chuyển từ Go sang Rust chỉ vì GC ???
Như mình nói không ngôn ngữ nào hoàn hảo, bác kia hỏi Rust có gì mà Go không làm được mình đưa link dẫn chứng người thật việc thật cho xem, mình chưa hề nói Rust tốt hơn Go :)

Có Java là hoàn hảo đó bạn.
 
Tôi giờ ngày nào cũng tự nhủ, ráng mỗi ngày try-hard golang thêm vài tiếng (bên cạnh việc công ty).
Bao gồm đọc sách, code side project, học thêm về distributed system, database.

Cố gắng 1-2 năm nữa lên pro, hy vọng dc lương 4-5k là ổn, khỏi cần ra nước ngoài nữa.

Chắc phải bỏ bớt thú vui gái gú, chơi game lại T_T
 
cái vụ go -> rust của discord thực ra thì nó chỉ là một cái service nhỏ nhỏ thôi, nó đổi là vì muốn trải nghiệm ngôn ngữ mới là chính, chứ thực ra muốn performance thì có nhiều cách chả bắt buộc phải dùng rust. Backend của discord vẫn dùng elixir là chính, mà elixir là functional language trừ latency thấp ra còn lại raw performance thấp hơn java nhiều nói gì c++/rust, mà tại sao chúng nó không đổi?
 
Back
Top