Lập trình hệ thống

Lập trình hệ thống là công việc viết những phần mềm cho hệ thống (máy tính). Điểm khác biệt chủ yếu của lập trình hệ thống đối với lập trình ứng dụng là lập trình ứng dụng nhằm viết những phần mềm phục vụ cho người dùng máy tính (ví dụ: chương trình xử lý văn bản), trong khi đó, lập trình hệ thống nhằm xây dựng những phần mềm phục vụ cho phần cứng (hệ thống) máy tính (ví dụ chương trình chống phân mảnh đĩa cứng). Nó cũng đòi hỏi phải có những hiểu biết sâu hơn về phần cứng máy tính. Cụ thể hơn, trong lập trình hệ thống: Lập trình viên sẽ tạo những giả định về phần cứng và những thông tin khác của hệ thống mà các chương trình đang chạy trên đó, và thường xuyên khai thác những thông tin này (ví dụ như sử dụng những thuật toán đã biết một cách hiệu quả khi sử dụng với những phần cứng cụ thể). thường sử dụng ngôn ngữ lập trình cấp thấp, bởi: có thể thực thi trong môi trường hạn chế tài nguyên rất hiệu quả và ít khi bị quá tải sử dụng rất ít thư viện runtime library, hoặc không sử dụng cho phép truy cập trực tiếp và điều khiển thô với bộ nhớ control flow cho phép lập trình viên sử dụng trực tiếp mã assembly language trong chương trình