Đây là bài viết đầu tiên nằm trong serie “Tôi đã học lập trình Golang web như thế nào?”. Có thể coi đây là một sự khởi đầu nhỏ cho một chuỗi hành trình dài... Hoặc có thể không. Bạn thắc mắc tại sao ư? Thú thật, đến tôi cũng không rõ. Tôi rất lười viết văn bởi nhận thấy mình không có khiếu. Tôi thích đọc sách hơn. Tuy nhiên, như các bạn thấy, tôi đã viết. Tôi viết một phần là do có sự thúc giục “nhẹ” từ sếp, một phần kia là do nổi hứng bất chợt. Vậy nên ai có thể đoán trước được, ngày mai khi áp lực không còn hay hứng thú cạn, ý tưởng tàn thì tôi sẽ dừng lại. Và đương nhiên, bài viết này sẽ trở thành bài viết đầu tiên đồng thời cũng là cuối cùng. Tôi nhớ có một câu hát thế này “Chẳng hứa sẽ sang giàu chỉ hứa yêu dài lâu”. Tôi thì ngược lại, không hứa viết bài lâu dài, nhưng chắc chắn mỗi bài viết của tôi sẽ là những chia sẻ thật tâm nhất. Thôi chém gió luyên thuyên như vậy là đủ rồi. Giờ tôi sẽ đi vào giải đáp hai câu hỏi mà phần lớn các bạn sẽ thắc mắc khi đọc bài viết này.

1. Tại sao lại là Golang?

go vs nodejs

Thực hiện một khảo sát nhỏ về nhu cầu tuyển dụng hiên nay, bạn sẽ thấy có một sự chênh lệch lớn giữa các ngôn ngữ. Xin phép dẫn chứng số liệu trên trang itviec.com, kết quả tìm kiếm trả về chỉ có 14 việc làm Golang. Trong khi đó, có tới 98 việc làm Nodejs và 244 việc làm PHP. Mặc dù Go đã có tăng trưởng mạnh mẽ so với các năm trước, song vẫn là chưa đủ đối với những sinh viên sắp tốt nghiệp và cần việc làm như tôi. Nó quá rủi ro. Vậy tại sao tôi lại chọn Golang thay vì Nodejs hay PHP?

Như các bạn đã biết, Go (hay còn gọi là “Golang”) là một ngôn ngữ lập trình biên dịch hướng hệ thống được phát triển nội bộ bởi Google vào nằm 2007 và công bố vào năm 2009. Go được xem như là kết quả của một quá trình tiến hóa ngôn ngữ khá thận trọng từ các ngôn ngữ như C và C++. Những thế mạnh nổi trội có thể kể đến của Go:

  • Tốc độ thực thi nhanh hơn Java, C#, PHP, Node.js, Python, Ruby trong hầu hết các phép thử nghiệm. Golang chỉ chậm hơn C và C++.
  • Cú pháp Golang đơn giản, rất giống với C. Cùng một chức năng sẽ viết code gọn hơn.
  • Tốn ít bộ nhớ khi chạy hơn so với Java, C#, PHP, Nodejs, Python, Ruby.
  • Thời gian biên dịch ngắn hơn hơn so với Java, C#, C++, C.
  • Biên dịch thành file binary, bảo mật hơn so với ứng dụng Nodejs, Python, Ruby, PHP luôn mở mã nguồn khi triển khai.
  • Khi triển khai production, không yêu cầu cài đặt thư viện phụ như JVM, .NET Framework, PHP extension.
  • Hệ sinh thái các thư viện phát triển rất nhanh hơn Java, C#, C++ mặc dù mới ra mắt năm 2009.

WOW! Xem chừng có vẻ rất “cool ngầu” phải không? Nhưng đó không phải nguyên nhân chính khiến tôi quyết định học Go. Tôi hiện là sinh viên thuộc chuyên ngành công nghệ thông tin. Năm sau, tôi sẽ tốt nghiệp. Trường đại học đã dạy cho tôi rất nhiều kiến thức. Tôi biết nhiều ngôn ngữ nhưng tôi thấy mình thực sự chẳng giỏi một ngôn ngữ nào cả mặc dù điểm số ở trường của tôi không tệ. Do vậy, hè vừa rồi tôi đã quyết định tham gia khóa thực tập web front-end tại Techmaster để học bài bản chuyên sâu về lập trình web. Hoàn thành khóa front-end, tôi quyết định học lên back-end. Bấy giờ tôi có ba sự lựa chọn: PHP, Nodejs và Golang. Tại sao lại chỉ có ba? Bởi các khóa học web back-end tại Techmaster lúc đó chỉ có ngần ấy thôi (cũng phong phú hơn nhiều trung tâm khác rồi). PHP và Nodejs trước đó tôi đã được học qua và làm một số project đơn giản tại trường. Còn với Golang, hoàn toàn là một cái tên mới. Trước đó tôi chưa từng nghe qua. Tôi cũng đã phân vân và hỏi ý kiến của nhiều người. Đa số đều khuyên tôi nên chọn Nodejs. Song vốn là người thích thử thách với những cái mới, tôi đã chọn Golang. Một quyết định bốc đồng chỉ trong giây lát. Nhưng tính đến nay, tôi vẫn chưa hối hận. Tôi có cơ hội được tham gia dự án thực tế tại Techmaster, tích lũy khá nhiều nhiều điều. Tôi cũng vừa nhận được tháng lương đầu tiên nhờ Go. Mặc dù không nhiều chỉ đủ cho tôi mua một nửa cái bàn là cây của Philips nhưng tôi vẫn vui. Anh Cường, sếp lớn của tôi thường đùa rằng: “Tham gia dự án Go tại Techmaster có hai kiểu người. Một là nhà giàu, không quan tâm chuyện tiền nong. Hai là bị điên.” Tôi không thuộc loại thứ nhất, vậy nên chắc tôi bị điên rồi. Bị điên nên mới chọn Go. Nhưng không sao, tôi thích sự điên đó. Vậy là đủ.

2. Tôi sẽ viết về cái gì? Và các bạn sẽ nhận được gì?

Như đã nói ở trên, tôi đang tham gia đội phát triển phần mềm tại Techmaster. Tôi mới học Golang được một tháng rưỡi. Và tôi hiện không phải là master về Golang, do vậy những chia sẻ của tôi trong serie này sẽ không phải là những thứ gì đó quá ghê gớm. Có thể chỉ là những tip nhỏ, bug hay đơn giản là dịch lại các bài viết công nghệ mà tôi thấy hữu ích và đã áp dụng khi làm dự án. Những chia sẻ này có thể đúng mà cũng có thể sai. Do vậy tôi rất mong nhận được sự góp ý chỉnh sửa từ các bạn.

 

Bài viết đầu tiên chủ yếu là chém gió tâm sự. Hẹn gặp lại các bạn ở bài viết số hai với một nội dung hay ho hơn. Lời cuối, xin gửi lời cảm ơn đến các bạn đã, đang và sẽ đọc các bài viết của tôi.

Lập trình Java cơ bản và nâng cao 

Lập trình Web Java Spring 2018