Giới thiệu về Go

Giới thiệu

Go hay Golang là một ngôn ngữ lập trình bậc cao có những đặc điểm hết sức quan trọng bao gồm:

  • Ngôn ngữ biên dịch, kiểu tĩnh, có hổ trợ bộ quản lý gom rác
  • Hiệu suất cao, gần bằng ngôn ngữ C/C++, cùng với đó là sử dụng ít bộ nhớ so với Java
  • Biên dịch nhanh, và nhanh hơn nhiều so với C/C++ hay Java
  • Code dễ đọc
  • Thư viện chuẩn của Go tiện lợi còn unit test thì tích hợp luôn vào bộ công cụ chuẩn
  • Hổ trợ đa luồng rất tốt thông qua Goroutine
  • Phù hợp để viết chương trình lớn, chạy trên nhiều máy và làm việc với hệ thống mạng tốt
  • Hổ trợ bởi Google, cộng đồng nhiều

Lịch sử

Ba ông Robert Griesemer, Rob PikeKen Thompson đã phát thảo ngôn ngữ từ năm 2007 và phiên bản chính thức đầu tiên là năm 2009. Go sinh ra để giải quyết các vấn đề về ngôn ngữ lập trình ở Google.

Ông Ken Thompson đã thiết kế ra hệ điều hành Unix và phát triển ngôn ngữ B (tiền thân của ngôn ngữ C) cùng với đó là định nghĩa mã hóa UTF-8. Ông làm việc cho Google từ năm 2006, trước đó là công tác ở Bell Lab.

Rob Pike cũng là thành viên phát triển Unix, cùng với Ken Thompson đã tạo ra mã hóa UTF-8. Ông đồng tác giả hai cuốn sách The Practice of ProgrammingThe Unix Programming Environment. Ông làm việc cho Google từ năm 2002.

Còn Robert Griesemer trước khi phát triển cho Go thì ông phát triển V8 JavaScript engine, ngôn ngữ Sawzall (một ngôn ngữ xử lý log của Google) cùng với máy ảo Java Hotpot.

Các ông này thảo luận vấn đề lập trình đang gặp phải với các ngôn ngữ như C/C++, Java hay Python:

  • Thời gian build lâu
  • Các gói phụ thuộc không kiểm soát
  • Mỗi người viết một kiểu khác nhau
  • Code khó đọc
  • Khó viết các công cụ tự động
  • Vấn đề với dự án đa ngôn ngữ

Các vấn đề này sẽ được giải quyết khi Go phát triển.

Cảm nhận

Go là ngôn ngữ ưa thích của mình, mình làm việc với nó hằng ngày. Phần lớn thời gian làm việc là đọc code hoặc debug code. Việc Go rất dễ đọc và biên dịch nhanh nên làm việc với Go rất hiệu quả.

Tham khảo

Tài liệu học Go

https://go.dev/tour/welcome/1
https://go.dev/doc/effective_go
https://gobyexample.com/
https://yourbasic.org/golang/

Giới thiệu Google do Rob Pike viết

https://talks.golang.org/2012/splash.article