Môi trường phát triển là gì — trình soạn thảo, terminal và môi trường chạy

Bài viết này nằm trong khóa Kiến thức nền tảng về CNTT, xây dựng từ đầu những kiến thức CNTT thực tế tối thiểu mà bạn cần để lập trình và vibe coding.
Bạn viết ở trình soạn thảo, chuyển nó đi từ terminal, và môi trường chạy sẽ chạy nó. Các sơ đồ cho thấy 3 vai trò này, cách shell đọc dòng bạn gõ, và nơi nó đi tìm file.

Bài viết này nói về môi trường phát triển.

Môi trường phát triển là cách gọi gộp 3 phần mềm: trình soạn thảo, terminal và môi trường chạy.

Gộp cả 3 vào 1 màn hình thì thành môi trường phát triển tích hợp (IDE, Integrated Development Environment), tiêu biểu có Visual Studio Code, IntelliJ IDEA và Xcode.

  • 3 thứ — trình soạn thảo, terminal và môi trường chạy — mỗi thứ làm gì
  • Tên gọi của terminal khác nhau theo từng OS, và cách đọc màn hình đó
  • Shell đọc dòng bạn gõ như thế nào, và đi tìm file nào
  • Môi trường chạy chạy app.js được trao cho nó ra sao, từng dòng một từ trên xuống

Môi trường phát triển là gì — 3 thứ: trình soạn thảo, terminal và môi trường chạy

Môi trường phát triển (development environment, tổ hợp phần mềm để viết mã nguồn rồi ra lệnh cho nó chạy) là cách gọi gộp 3 thứ, chứ không phải có một phần mềm mang đúng cái tên đó.

Bên trong máy tính khi bạn làm ứng dụng đặt chỗ my-app
Máy tính của bạn
Môi trường phát triển (chuẩn bị một lần rồi dùng lại)
Trình soạn thảo
  • Bạn gõ nội dung app.js rồi lưu lại
  • Phần mềm như Visual Studio Code
Terminal
  • Màn hình để gõ 1 dòng như node app.js
  • Được cài sẵn cùng OS ngay từ đầu
Môi trường chạy
  • Phần mềm có tên node hay python
  • Bạn cài từ trang chính thức
my-app (thư mục của ứng dụng đặt chỗ bạn làm)
  • app.js — mã nguồn bạn tự viết
  • File ảnh và file cấu hình cũng đặt ở đây
  • Làm ứng dụng khác thì bạn tạo một thư mục khác
Bên ngoài là máy tính của bạn. 3 thứ trong khung trên chỉ cần chuẩn bị một lần rồi dùng lại mãi. my-app ở dưới là thư mục tạo 1 cái cho mỗi ứng dụng bạn làm.

3 thứ trong khung trên chỉ cần cài một lần là dùng lại được.

Thứ bạn tạo mới mỗi lần chỉ là thư mục như my-app ở khung dưới.

Trình soạn thảo không chỉ là màn hình để viết chữ, nó còn xếp được cả danh sách file lẫn terminal trên cùng một màn hình.

"Code editor" hay "IDE" trong tài liệu hướng dẫn thì bạn cứ coi là cùng một thứ.

Những gì hiện trên màn hình trình soạn thảo
Màn hình trình soạn thảo
Bên trái — danh sách file
  • Các file trong my-app được liệt kê
  • Bấm vào app.js là nó mở ra bên phải
Ở giữa — chỗ bạn gõ chữ
  • Nội dung app.js hiện ra ở đây
  • File chưa đổi cho tới khi bạn lưu
Bên dưới — terminal
  • Bạn gõ được node app.js ngay tại đây
  • Cùng một thứ với terminal mở riêng
Trình soạn thảo dùng để lập trình có thể xếp danh sách file, chỗ chỉnh sửa và terminal cạnh nhau trong 1 màn hình.

3 phần mềm này nối với nhau và chạy bên trong 1 máy tính.

Toàn bộ khung là 1 máy tính, và 3 thứ chia vai trò bên trong đó.

Trình soạn thảo chỉ làm tới bước tạo ra file, còn thứ chạy nó là môi trường chạy.

Terminal là cửa vào để nói với môi trường chạy rằng hãy chạy file này, và kết quả cũng hiện ra ở chính terminal đó.

Môi trường phát triển là một bộ 3 phần mềm

Môi trường phát triển là cách gọi gộp 3 việc: viết, gõ và chạy.

Viết là trình soạn thảo, gõ là terminal, chạy là môi trường chạy, và 3 thứ này cài một lần là dùng lại được cho ứng dụng tiếp theo.

Terminal — trên Mac là "Terminal", trên Windows là "Command Prompt"

Terminal (phần mềm cho bạn một màn hình để gõ câu lệnh bằng chữ và nhận kết quả bằng chữ) được cài sẵn cùng OS ngay từ đầu.

Có điều, tên gọi khác nhau theo từng OS.

Tên của terminal trên từng OS
==MacWindowsLinuxTerminalCommandPromptTerminalConsoleNằm trongApplicationsCòn có tênPowerShellTên khác nhautheo bản phân phối
Hàng trên là OS, hàng giữa là tên của terminal trên OS đó, hàng dưới là manh mối khi bạn đi tìm. 3 thứ nối bằng đường kép chỉ khác tên chứ là cùng một thứ.

Tên khác nhau nhưng nhìn thì đều giống nhau.

Bạn gõ 1 dòng vào màn hình chỉ toàn chữ, bấm Enter, và kết quả hiện ra ngay dòng bên dưới.

3 phần hiện trên màn hình terminal
Màn hình terminal
Dấu nhắc ở đầu dòng
  • Các ký hiệu như $, # và >
  • Trước nó thường hiện tên thư mục bạn đang ở
1 dòng bạn tự gõ
  • Bạn gõ chữ ở bên phải dấu nhắc
  • Không có gì xảy ra cho tới khi bạn bấm Enter
Chữ trả về
  • Kết quả lẫn lỗi đều hiện bằng chữ ở các dòng dưới
  • Hiện xong thì dấu nhắc tiếp theo lại xuất hiện
Trên màn hình chỉ toàn chữ, bạn gõ 1 dòng ở bên phải dấu nhắc đầu dòng, bấm Enter, và kết quả trả về ở dòng dưới.

Màn hình thật thì như sau: bạn gõ 1 dòng ở bên phải ký hiệu đầu dòng, và kết quả trả về ngay bên dưới.

pwd trả về vị trí thư mục bạn đang ở, còn ls trả về những thứ nằm trong thư mục đó.

$ pwd
/home/you/my-app

$ ls
app.js  package.json

Terminal là màn hình để gõ chữ và hiện kết quả.

Thứ thực sự đọc dòng bạn gõ và quyết định chạy chương trình nào là shell (chương trình đọc dòng bạn đã gõ, tìm chương trình mang tên ở đầu dòng rồi khởi động nó) chạy bên trong màn hình đó.

bash và zsh xuất hiện trong tài liệu hướng dẫn chính là tên của các shell này.

Shell xử lý dòng bạn gõ bằng cách tách ra 2 phần: đầu dòng và phía sau.

Đầu dòng và phần còn lại đi tới hai nơi khác nhau
Dòng bạn gõnode app.jsnode ở đầuapp.js phía sauShell tìm rồikhởi độngBên được khởi độngđọc và chạycommandnot foundCannot findmodule
Shell tách 1 dòng thành 2 phần. Nó tìm chương trình theo cái tên ở đầu, rồi trao tên file phía sau cho chương trình đó. Ngoài cùng bên phải là dòng chữ hiện ra khi từng phần không được tìm thấy.

Shell tìm chương trình bằng chữ node ở đầu, rồi trao app.js phía sau cho chương trình đó.

Lúc này nó chỉ tìm app.js bên trong thư mục mà shell đang mở, và thư mục đó gọi là thư mục hiện tại (current directory, thư mục shell đang mở).

Tên của nó thường hiện ngay trước dấu nhắc (prompt, ký hiệu cho thấy máy đang nhận nội dung nhập vào) ở đầu dòng.

Thư mục shell đang ở, và cách tìm app.js
Máy tính của bạn
my-app (thư mục shell đang mở)
  • Đầu dòng trong terminal hiện chữ my-app
  • app.js nằm ở đây nên node app.js chạy được
Downloads (một thư mục khác)
  • Dù có app.js ở đây thì node app.js cũng không chạy
  • Gõ cd my-app thì khung trên trở thành thư mục bạn đang ở
Thư mục mà shell đang mở là thư mục hiện tại. Chữ app.js trong node app.js chỉ được tìm bên trong thư mục đó.

Cùng là node app.js nhưng thư mục bạn đang ở khác nhau thì kết quả khác nhau.

app.js được đặt bên trong my-app.

Thư mục shell đang ởNơi tìm app.jsKết quả của node app.js
my-appTrong my-app → tìm thấyapp.js được chạy
DownloadsTrong Downloads → không tìm thấyCannot find module
Sau khi cd my-appTrong my-app → tìm thấyapp.js được chạy

Tài liệu hướng dẫn đặt cd trước câu lệnh chính là để đổi nơi tìm này.

Viết đích đến sau cd thì dòng tiếp theo sẽ chạy trong thư mục bạn vừa chuyển tới.

$ cd my-app

$ pwd
/home/you/my-app

Với 1 dòng bạn gõ, thứ bạn viết ở đầu dòng quyết định việc gì sẽ xảy ra.

Nội dung tới đây là mức tối thiểu để đọc được các câu lệnh xuất hiện trong tài liệu hướng dẫn.

Nếu muốn học sâu hơn, Khóa Linux nhập môn có các bài luyện tập vừa gõ câu lệnh vào terminal trên trình duyệt vừa học.

Bắt đầu từ Đường dẫn và di chuyển thư mục thì bạn đi tiếp ngay từ phần nói về cd trong bài này.

Thứ đọc dòng bạn gõ là shell

Thứ đọc dòng bạn gõ không phải màn hình mà là shell chạy bên trong nó.

Khi không chạy được, hãy tách ra mà đọc: command not found là chưa tìm thấy cái tên ở đầu dòng, còn Cannot find module là file phía sau không có trong thư mục bạn đang ở.

Môi trường chạy — chạy nội dung app.js theo thứ tự từ trên xuống

Khi được shell trao app.js, môi trường chạy sẽ đọc nội dung của nó từng dòng một từ trên xuống và chạy theo đúng thứ tự đã viết.

Chạy 3 dòng sau bằng node app.js thì màn hình chỉ hiện 2 dòng.

console.log("Xin chào");
const price = 1200;
console.log(price + " yên");

Chỉ những dòng có lệnh hiển thị mới hiện lên màn hình.

Môi trường chạy chỉ đọc từng dòng một từ trên xuống

Việc mà môi trường chạy làm chỉ là đọc app.js từng dòng một từ trên xuống rồi làm đúng như đã viết.

Chỉ những dòng có lệnh hiển thị mới đưa chữ lên màn hình, và thứ duy nhất nó đọc là app.js do shell trao cho.

QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1Thứ nào đọc dòng bạn gõ vào terminal, tìm chương trình mang tên ở đầu dòng rồi khởi động nó?

Câu 2Bạn gõ node app.js nhưng nhận được thông báo không tìm thấy app.js. Bạn kiểm tra điều gì trước?

Câu 3Khi bạn gõ node app.js ở terminal, thứ nào chạy nội dung app.js theo thứ tự từ trên xuống?