Một phần của loạt bài về |
Phát triển phần mềm |
---|
Hoạt động cốt lõi[hiện] |
Mô hình và hình mẫu[hiện] |
Phương pháp và framework[hiện] |
Các ngành hỗ trợ[hiện] |
Thực hành[hiện] |
Công cụ[hiện] |
Tiêu chuẩn và khối kiến thức[hiện] |
Bảng thuật ngữ[hiện] |
Sơ lược[hiện] |
Viết chương trình cho máy tính hay tạo chương trình máy tính, thường được gọi tắt là lập trình (tiếng Anh: computer programming, hay programming), là quá trình tạo ra các chương trình hoạt động cho máy có bộ xử lý, cụ thể là máy tính, để thực hiện một nhiệm vụ xử lý thông tin nào đó. Chương trình này bao gồm chuỗi các chỉ thị (hay lệnh) hợp lý để máy thực hiện theo trình tự thời gian.
Lập trình phải thực hiện cho tất cả các hệ thống xử lý thông tin, từ các máy điện toán lớn, máy tính cá nhân (PC), đến các chip điều khiển lập trình được trong các thiết bị như máy đo đạc phân tích, vũ khí có điều khiển, máy giặt, lò vi sóng, v.v... và trong các thiết bị ngoại vi của máy tính như chip điều khiển ở card màn hình, cổng giao tiếp, v.v...
Dạng chương trình duy nhất mà máy tính có thể thực thi trực tiếp là ngôn ngữ máy hay mã máy, có dạng chuỗi các số nhị phân. Lập trình trực tiếp ở dạng mã máy là công việc tốn sức, khó kiểm tra và phụ thuộc vào phần cứng cụ thể. Vì thế giới lập trình đã phát triển ra các ngôn ngữ lập trình với hệ thống ký hiệu, từ khóa và cú pháp cụ thể để lập trình viên dễ viết mã nguồn ở dạng văn bản mà không quá phụ thuộc vào phần cứng, sau đó biên dịch (compile) ra mã máy.
Ngày nay lập trình ứng dụng trên các máy điện toán được hỗ trợ bởi các thư viện, các công cụ AI như chatgpt, github copilot cùng với nhiều AI bot khác, khả năng liên kết mã phát sinh từ các ngôn ngữ khác nhau cũng như viết mã lệnh tự động, và đặc biệt là sử dụng biểu tượng trực quan (visual) cho lập trình. Trong kỹ thuật điện toán, việc tạo ra bộ chương trình thường được gọi là phát triển phần mềm. Lập trình bao gồm các yếu tố nghệ thuật, khoa học, toán học, và kỹ thuật.
Ngôn ngữ lập trình
Chương trình duy nhất mà máy tính có thể thực thi trực tiếp là ngôn ngữ máy hay mã máy. Nó có dạng chuỗi các số nhị phân, thường được nhóm thành byte 8 bit cho các hệ xử lý 8/16/32/64 bit. Nội dung byte thường được biểu diễn bằng số hex. Ngày nay, để có được mã này, người ta sử dụng ngôn ngữ lập trình để viết chương trình dưới dạng văn bản và dùng trình dịch để chuyển sang mã máy.
Mã máy
Khi kỹ thuật điện toán ra đời và chưa có ngôn ngữ lập trình đại diện, lập trình phải thực hiện trực tiếp bằng mã máy. Chuỗi byte được đục lỗ trên phiếu đục lỗ (punched card) và nhập qua máy đọc phiếu vào máy tính. Sau đó, chương trình có thể được ghi vào băng/đĩa từ để sau này nhập nhanh vào máy tính. Ngôn ngữ máy được gọi là 'ngôn ngữ lập trình thế hệ 1' (1GL, first-generation programming languages). Lúc đó, có nhiều hãng sản xuất máy tính và mã máy chưa hoàn toàn thống nhất, nên lập trình gắn liền với từng hãng.
Hợp ngữ
Sau đó, các mã lệnh được thay thế bằng các tên gợi nhớ và trình bày dưới dạng văn bản, rồi dịch sang mã máy. Hợp ngữ (assembly languages) ra đời, trở thành 'ngôn ngữ lập trình thế hệ 2' (2GL, second-generation programming languages). Lập trình trở nên dễ dàng hơn, cho phép liên kết với thư viện chương trình con ở cả dạng macro (chưa dịch) và mã đã dịch.
Dù vậy, lập trình viên phải hiểu rõ về hoạt động của hệ thống xử lý, các thanh ghi (register), con trỏ (pointer) và vai trò của chúng để tránh lỗi. Lúc này bắt đầu có sự thống nhất quốc tế về các tập lệnh trong kỹ thuật điện toán.
Trong kỹ thuật điện toán, hợp ngữ hiện nay được dùng như ngôn ngữ bậc thấp (low-level programming languages) để tinh chỉnh ngôn ngữ bậc cao truy cập trực tiếp phần cứng cụ thể trong lập trình hệ thống, hoặc tạo các hiệu ứng đặc biệt cho chương trình.
Hợp ngữ hiện là công cụ lập trình các vi điều khiển trong các thiết bị điện tử như máy đo, vũ khí, thiết bị dân dụng như máy giặt, lò vi sóng, v.v... Bảng lệnh của vi điều khiển khác với máy điện toán, nên hợp ngữ vi điều khiển cũng khác và đơn giản hơn.
Lập trình mã máy và hợp ngữ tạo ra chương trình chạy nhanh nhất trên cùng máy tính, vì chứa rất ít chỉ thị thừa hoặc chỉ thị rác, và giảm lượng mã nhờ việc đặt giá trị các thanh ghi. Các ngôn ngữ bậc cao khi dịch phải sử dụng nhiều chỉ thị máy để đảm bảo tính khái quát, cùng với những câu lệnh thừa của lập trình viên mà khi sửa chữa chưa kịp xóa.
Ngôn ngữ lập trình bậc cao
Ngôn ngữ bậc cao (high-level programming languages) hay còn gọi là 'ngôn ngữ lập trình thế hệ 3' (3GL, third-generation programming languages) ra đời vào những năm 1950. Đây là các ngôn ngữ hình thức, dùng trong lập trình máy tính và không phụ thuộc vào hệ máy cụ thể nào. Nó giúp lập trình viên làm việc trên hệ điều hành mà không cần quan tâm đến phần cứng cụ thể. Các ngôn ngữ này được liên tục phát triển và biến đổi, theo kịp sự tiến bộ của kỹ thuật điện toán.
Những ngôn ngữ bậc cao thời kỳ đầu gồm có FORTRAN ra đời năm 1954, COBOL năm 1959, BASIC năm 1963, Pascal năm 1970, và C năm 1970, v.v... Chúng khác nhau về từ khóa, ký hiệu, cú pháp, và cách tổ chức dữ liệu trong bộ nhớ. Sự phát triển của lập trình dẫn đến việc ngôn ngữ C trở nên ưu việt trong lập trình và quản lý dữ liệu, từ đó trở thành nền tảng cho nhiều ngôn ngữ mới.
Hiện nay, các ngôn ngữ lập trình phổ biến gồm có ActionScript, C, C++, MATLAB, C#, Haskell, Java, JavaScript, Objective-C, Perl, PHP, Python, Ruby, Smalltalk, SQL, Visual Basic, và nhiều ngôn ngữ khác.
Ngày nay, các ngôn ngữ lập trình đều cung cấp môi trường soạn thảo mã nguồn với khả năng kiểm tra cú pháp cao. Một số ngôn ngữ lưu mã nguồn ở dạng văn bản. Tuy nhiên, thay vì dịch ra mã máy, một số ngôn ngữ khác lưu mã nguồn dưới dạng Bytecode (hoặc Portable code) và có trình thông dịch tương ứng để thực thi. Bytecode được sử dụng trong ngôn ngữ lập trình Java của Sun Microsystems cũng như họ ngôn ngữ lập trình .NET của Microsoft và Visual Basic trước phiên bản .NET.
Các ngôn ngữ lập trình hỗ trợ nhiều phong cách lập trình khác nhau (còn gọi là các phương pháp lập trình). Một phần quan trọng của công việc lập trình là chọn lựa ngôn ngữ phù hợp nhất với bài toán cần giải. Mỗi ngôn ngữ đòi hỏi lập trình viên xử lý chi tiết ở các mức độ khác nhau khi cài đặt thuật toán, dẫn đến sự thỏa hiệp giữa thuận tiện lập trình và hiệu quả chương trình, hoặc giữa 'thời gian lập trình' và 'thời gian tính toán'.
Phát triển phần mềm
Phần mềm là thuật ngữ chỉ một gói các chương trình máy tính và dữ liệu kèm theo. Tài liệu hướng dẫn và bản quyền phần mềm cũng được xem là một phần quan trọng của phần mềm, mặc dù chúng không liên quan trực tiếp đến lập trình.
Quy trình phát triển phần mềm gồm các bước chính sau:
- Phân tích yêu cầu (requirements analysis)
- Đặc tả (specification)
- Thiết kế (design and architecture)
- Lập trình (coding)
- Biên dịch (compilation)
- Kiểm thử (testing)
- Viết tài liệu (documentation)
- Bảo trì (maintenance)
Hướng dẫn
adadawjs dunuawnsvuedaso
Liên kết bên ngoài
- TechBookReport – đánh giá sách về lập trình máy tính
Những lĩnh vực chính của khoa học máy tính |
---|
Công nghệ phần mềm |
---|