Linux là gì? Tại sao lập trình viên nên biết cách sử dụng Linux
Bài viết được sự cho phép của tác giả Phạm Bình
Chào các bạn,
Cái tên Linux chắc bạn nghe nhiều rồi nhỉ, và có thể bạn đã biết Linux là tên một hệ điều hành máy tính được các lập trình viên yêu thích, thế nhưng bạn mới chỉ nghe vậy thôi, chứ tại sao các lập trình viên lại yêu thích hệ điều hành này thì bạn chưa biết, có phải vậy không? Nếu đúng thì … bạn thật giống mình ngày trước. Trước kia, khi nghe các “developer nhà người ta” khuyên rằng “là lập trình viên thì nên biết cách dùng Linux” mình cũng rất tò mò, không hiểu Linux là gì? cái OS này có gì hay ho mà lại được họ ca ngợi như vậy. Mình cũng có bỏ công tìm hiểu, thì chỉ thấy họ nói: Linux nhẹ, Linux linh hoạt, Linux miễn phí,… nhưng từng đó lý do là chưa đủ để mình cảm thấy “thích” hệ điều hành này, phải mãi cho tới khi…
Cho tới khi đi làm, vì công việc mà bắt buộc phải sử dụng tới Linux để phát triển dự án, mình mới hiểu được lý do tại sao các developer tiền bối lại khuyên vậy. Cụ thể lý các do là gì, mình xin được chia sẻ lại qua bài viết ngắn gọn này.
I. LINUX VÀ CÁC BẢN PHÂN PHỐI CỦA LINUX
1.1 Linux là gì?
Dẫu ai cũng biết rằng nó là cái gì đó rồi. Nhưng mình vẫn muốn nhắc lại chút để chúng ta có chung khái niệm về Linux mà mình đề cập ở dưới.
Ngày nay, Linux được biết đến là tên một hệ điều hành máy tính (để dễ hiểu thì bạn cứ tưởng tượng nó là cái gì đó tương tự như Windows, MacOS vậy). Nhưng nói một cách chính xác thì Linux chỉ là kernel (hạt nhân) của hệ điều hành.
Còn hệ điều hành Linux mà ngày nay mọi người vẫn nhắc đến thì có tên đầy đủ là GNU/Linux – chắc do cái tên GNU/Linux dài quá nên người ta mới gọi tắt là Linux cho ngắn gọn.
Giới thiệu thêm về GNU/Linux
GNU là một dự án được ra đời vào năm 1983 bởi Richard Stallman. Dự án này hướng đến một hệ điều hành miễn phí, nơi mà mọi người có thể tự do chỉnh sửa, phát triển, sao chép theo ý mình.
Bản thân dự án GNU sau khi ra đời đã đạt được nhiều thành tự lớn, đóng góp nhiều sản phẩm hữu ích cho cộng đồng. Nhưng GNU vẫn còn thiếu một thành phần vô cùng quan trọng để trở thành một hệ điều hành hoàn chỉnh, đó chính là kernel – thành phần tương tác với phần cứng máy tính.
Trong dự án GNU, một kernel có tên GNU Hurd cũng được nhắc đến, nhưng do chưa sẵn sàng ra mắt nên các kernel phi GNU cũng có thể sử dụng được với GNU – mà nổi bật nhất chính là Linux kernel. Kể từ đó cái tên GNU/Linux đã ra đời và được biết đến là hệ điều hành phát triển bằng cách kết hợp giữa GNU với Linux kernel.
Để phù hợp với nhiều tài liệu khác, cũng như cách mà mọi người vẫn hiểu Linux là gì, thì khái niệm Linux mà mình nhắc tới trong bài viết này là chỉ hệ điều hành GNU/Linux hoặc các bản phân phối của Linux, chứ không phải là Linux kernel. Bạn hãy chú ý.
Tham khảo việc làm Linux Hồ Chí Minh hấp dẫn trên TopDev
1.2 Các bản phân phối của Linux
Bản phân phối của Linux (Linux distribution hay Linux distro) là chỉ những hệ điều hành được phát triển dựa trên hệ điều hành Linux. Một bản phân phối của Linux thường sẽ được tích hợp sẵn một số phần mềm tiện ích, một trình quản lý gói (packages manager), một window system (phần lớn sử dụng X Window System), window manger và một môi trường desktop.
Lưu ý: X Window System và window manager không liên quan gì tới hệ điều hành Windows của Microsoft.
Một số bản phân phối điển hình của Linux đang phổ biến hiện nay (2020) có thể kể đến như: Ubuntu, CentOS, Fedora – chắc bạn cũng từng nghe qua những cái tên đó rồi chứ nhỉ.
II. TẠI SAO LẬP TRÌNH VIÊN NÊN BIẾT CÁCH SỬ DỤNG LINUX?
Mình nhấn mạnh từ “nên”, nghĩa là không bắt buộc, nghĩa là bạn vẫn có thể trở thành lập trình viên mà không cần phải biết cách dùng Linux. Nhưng nếu bạn muốn trở thành một lập trình viên “hợp thời”, muốn khám phá những giải pháp công nghệ hiện đại, muốn trở thành “hổ thêm cánh” thì chắc chắn phải biết cách dùng Linux. Và dưới đây là một số lý do điển hình:
2.1 Các server phần lớn đều sử dụng hệ điều hành Linux
Mặc dù rất khó để tìm thấy một chiếc laptop của người dùng thông thường lại được cài hệ điều hành Linux. Nhưng đối với các server thì lại khác, Linux là hệ điều hành phổ biến nhất trên các server bởi những lý do sau:
- Miễn phí: Bạn sẽ không phải tốn chi phí bản quyền khi sử dụng hệ điều hành Linux.
- Ít tốn tài nguyên phần cứng: Linux được cho là ít tốn tài nguyên phần cứng hơn là hệ điều hành Windows, hay cũng có thể nói Linux có thể chạy tốt trên các phần cứng thông thường (phần cứng rẻ).
- Bảo mật và cập nhật nhanh chóng: Vì linux là mã nguồn mở, nên khi phát hiện lỗi, sẽ nhận được sự đóng góp nhiệt tình từ cộng đồng người sử dụng trên khắp thế giới.
Từ những lý do trên, có thể thấy rằng Linux là hệ điều hành “tối ưu cho túi tiền”. Bạn có thể tập trung chi phí cho phần cứng của server thay vì phải mất một khoản để trả cho bản quyền của hệ điều hành.
Mặt khác, các lập trình viên lại là đối tượng thường xuyên tọc mạch vào các server để nghịch ngợm. Vì vậy, bạn nên biết sử dụng Linux để có thể làm chủ server của mình.
Nếu bạn chưa bao giờ làm việc với server Linux, thì có nghĩa là chưa tới lúc bạn động đến chúng, chứ không có nghĩa là bạn không cần chúng.
Blog phambinh.net cũng được cài đặt trên VPS Linux.
2.2 Là môi trường lý tưởng cho các công nghệ Open Source
Bản thân Linux là một open source, nên nó rất dễ dàng kết hợp với các công nghệ open source khác. Ngoài ra, các công nghệ open source phần lớn đều tương thích với hệ điều hành Linux (thật ra mình chưa gặp một open source nào mà không hỗ trợ Linux cả).
Mặt khác, phát triển sản phẩm open source lại đang là xu hướng. Bằng chứng là ngay cả ông lớn Microsoft – nổi tiếng với cách làm closed source cũng đã có sản phẩm open source cho riêng mình là VsCode – một editor được nhiều lập trình viên yêu thích. Hay trong mấy năm gần đây, Microsoft cũng đã mua lại github và npm, vốn là 2 nền tảng liên quan nhiều tới các open source. Bạn cũng có thể thêm các open source của Microsoft tại đây: https://opensource.microsoft.com
Việc cài đặt thêm các nền tảng open source khác trên Linux thật sự dễ dàng thông qua các trình quản lý gói. Ví dụ để cài đặt PHP trên Ubuntu (một distro của Linux) bạn chỉ cần chạy lệnh sau trên CLI:
sudo apt install php
Nếu như bạn là một web developer (PHP, NodeJS), android developer thì môi trường phát triển tốt nhất có lẽ là Linux.
2.3 Có ứng dụng CLI mạnh mẽ
Mình đã phân vân không biết có nên đưa mục này vào không. Vì trên các bản distro của Linux thường sẽ có sẵn một app CLI là Terminal, và điều khiến mình cho rằng CLI trên Linux mạnh mẽ hơn các hệ điều hành khác, cụ thể là với Windows là do cái app Terminal này dễ dàng sử dụng hơn so với Command Prompt hay Powershell có sẵn trên Windows. Nhưng mình cũng gặp rất nhiều bạn chuyển qua dùng Linux đơn giản chỉ vì cái cái Terminal của Linux dùng được tổ hợp phím control + C / control + V để copy và paste, thay vì phải sử dụng chuột hoặc một tổ hợp phím “lạ lùng” nào đó để thực hiện công việc tương tự trên Windows.
Sau khi suy nghĩ, mình quyết định đưa mục này vào bài viết.
III. MỘT SỐ LƯU Ý VỀ LINUX
Phía trên toàn là thấy khen Linux không à, sợ các bạn sẽ gỡ Windows để mà cài đặt Linux nên mình viết thêm mục này để lưu một số điều về Linux.
3.1 Nếu bạn chuyên làm các stack liên quan tới Windows, biết Linux có thể không giúp ích cho bạn
Nếu bạn chỉ làm C#, aps.net, Visual basic, hay bất kỳ công nghệ độc quyền nào của Microsoft thì biết linux sẽ không giúp ích gì cho bạn. Bởi bản thân ông lớn Microsoft đã trang bị sẵn một hệ sinh thái khép kín cho các công nghệ của mình.
3.2 Linux không phù hợp với các ứng dụng văn phòng hay thiết kế
Linux tuy rất phù hợp để lập trình, để phát triển các sản phẩm trên nền tảng open source, nhưng lại không hỗ trợ tốt các ứng dụng văn phòng như MS world, Excel, Power Point,… Mặc dù trên Linux có hai bộ ứng dụng là LibreOffice và OpenOffice để giải quyết vấn đề này, nhưng nó vẫn không mượt mà và ổn định như MS Office có trên Windows được. Cũng đúng thôi, MS Office là một trong những niềm tự hào của Microsoft mà, đâu dễ dàng thay thế được.
Tuy lập trình viên ít khi phải động tới các ứng dụng dạng này, nhưng không phải là không có.
Một phần mềm nữa là Photoshop cũng không có bản hỗ trợ trên Linux, với những bạn có nhu cầu cắt giao diện từ Photoshop thì đây cũng là vấn đề đang lưu ý đó.
Về cách khắc phục, thao tác với các ứng dụng văn phòng bạn có thể sử dụng LibreOffice, OpenOffice, hoặc Google docs, Google sheet, Google slide để thay thế. Với việc cài photoshop, bạn có thể cài trên máy ảo windows để sử dụng, hoặc chọn một nền tảng khác photoshop để sử dụng.
Lưu ý: Cách khắc phục trên chỉ giải quyết được phần nào, chứ không giải quyết được triệt để vấn đề. Cách giải quyết triệt để là không dùng Linux nữa.
3.4 Sao chỉ thấy so sánh Linux với Windows vậy, sao không thấy so sánh với MacOS?
Có một câu chuyện dài phía sau câu hỏi này.
Có thể bạn đã biết, MacOS được phá triển dựa trên BSD – một hệ điều hành thuộc họ nhà UNIX. Còn Linux thì chính là GNU (như mình nói ở phần đầu), trong khi đó GNU là một hệ điều hành clone (nhân bản, học tập ý tưởng, bắt chước) UNIX. Do đó, tuy GNU không được phát triển dựa trên UNIX và không được coi là hệ điều hành thuộc họ nhà UNIX, nhưng lại có khá nhiều điểm tương đồng với các hệ điều hành thuộc họ nhà UNIX, cụ thể là MacOS. Vì vậy có thể coi MacOS và Linux là hai anh em tuy không cùng bố mẹ, nhưng lại khá giống nhau. Mà giống nhau, thì người ta không cần phải so sánh.
Ngoài ra, MacOS là độc quyền của Apple, trong khi đó Apple lại chưa có dịch vụ nào liên quan tới cloud server giống như Windows cả – một trong những điều khiến người ta phải so sánh với Linux nhất.
IV. CÀI ĐẶT UBUNTU ĐỂ NGHỊCH
Sau cùng, nếu bạn muốn trải nghiệm Linux, thì dưới đây là vài gợi ý của mình để bạn có thể cài đặt và trải nghiệm Ubuntu – distro nổi bật nhất của Linux:
- Mua một máy tính mới và cài đặt Ubuntu làm hệ điều hành: Cách này giành cho những bạn có tiền, chịu đầu tư để học hỏi :D.
- Cài Ubuntu song song với hệ điều hành chính: Dành cho những bạn muốn có trải nghiệm mượt mà với Ubuntu nhưng lại không muốn mua máy tính mới.
- Cài máy ảo Ubuntu: Dành cho những bạn muốn trải nghiệm nhanh hệ điều hành này.
Bài viết gốc được đăng tải tại phambinh.net
Có thể bạn quan tâm:
- Hướng dẫn cài đặt, lập trình Python trên Ubuntu (Linux)
- Hướng dẫn cài đặt VirtualBox trên Ubuntu chi tiết nhất
- Chuyện gõ tiếng Việt trên Linux
Xem thêm các việc làm lĩnh vực IT hấp dẫn trên TopDev
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS
- C Compiler là gì? Công việc cụ thể của một trình biên dịch