Mã giả, như tên của nó, không phải là mã thực, nhưng nó trông giống như mã. Nó giúp mọi người hiểu một miền vấn đề hoặc giải pháp tốt hơn mà không cần phải thêm tất cả hành lý cần thiết khi sử dụng ngôn ngữ thực.
Nói tóm lại: nó chỉ được sử dụng cho mục đích minh họa.
Mã giả và lập trình
Không có định nghĩa hoặc quy tắc cố định nào về mã giả, nó có thể khác nhau mỗi lần. Nó không phải là ngôn ngữ lập trình (thực) và không ai sẽ coi nó là ngôn ngữ. Nó không thể được biên dịch hoặc sử dụng như một ngôn ngữ lập trình thực sự: nếu bạn có thể làm điều đó, nó không còn là mã giả. Mã giả không cần phải có tính xác định (một điều cần thiết cho máy tính để biên dịch), nó cần phải được hiểu bởi con người. Để sử dụng mã giả, bạn sẽ phải chuyển đổi nó sang ngôn ngữ lập trình yêu thích của bạn. Quá trình chuyển đổi này có thể khác nhau mỗi lần và không có quy tắc nào có thể được đưa ra cho nó bởi vì, một lần nữa, mã giả giống như lời nói tự do: nó có thể có bất kỳ hình thức nào.
Công dụng
Nó thường được sử dụng, đặc biệt là trong giai đoạn thiết kế các dự án để giúp hiểu một cách tiếp cận nhất định đối với một vấn đề. Nó cũng thường được sử dụng trong thiết kế thuật toán hoặc khi giáo viên vẽ một cái gì đó lên bảng. Trong tất cả các trường hợp này, không cần thiết phải biên dịch mã, bạn chỉ muốn hiểu vấn đề / giải pháp.
Các loại mã giả
Mã giả có thể, nhưng không phải là một loại nhất định, nghĩa là bạn có thể có mã giả dựa trên ngăn xếp để minh họa cho MSIL, bạn có thể có mã giả bắt buộc để minh họa Java, C #, C ++, Python, bạn có thể có mã giả chức năng để minh họa F #, Haskell, SQL, v.v.
Ví dụ
Từ đỉnh đầu của tôi, nhưng bất cứ điều gì đi, bởi vì mã giả có thể được phát minh tại chỗ:
Mã giả XML, hiển thị cấu trúc đầu + cơ thể cho phép nhiều phần tử p:
<head ...
<title ...
</
<body ...>
(<p>...)+
</
Mã giả bắt buộc, hiển thị vấn đề kim cương trong các ngôn ngữ hỗ trợ đa kế thừa:
class A() { readFile(); }
class B() : A {} // overrides readFile in A
class C() : A {} // overrides readFile in A
class D() : B, C {} // what definition of readFile should be used?
Hai ví dụ trên rõ ràng giống với một số (loại) ngôn ngữ, nhưng thực sự không phải là ngôn ngữ đó và không thể biên dịch được. Họ thay vì minh họa một cái gì đó mà bạn muốn giải thích.