Thực sự có nhiều sự tương đồng giữa các loại cho cú pháp kiêng và các loại như thường được hiểu. Nhưng các loại là một khái niệm cú pháp chính thức và cây AS cũng là cú pháp, trong khi các loại là một khái niệm ngữ nghĩa .
Thuật ngữ này xuất phát từ thuật ngữ đại số (còn gọi là đại số tự do ) và đại số phổ quát . Đây thực chất là những lý thuyết cú pháp của các cấu trúc đại số, được phân tích độc lập với bất kỳ diễn giải nào. Chúng được phát triển vào nửa đầu thế kỷ 20.
Một thuật ngữ có thể được xem như một cái cây, trong đó các nút được gắn nhãn từ một tập hợp toán tử hữu hạn, mỗi toán tử có một mức độ cố định xác định số lượng con gái trong cây. Arity 0 là cho lá. Trong các đại số đa sắp xếp, phần này được tinh chỉnh bằng các loại, sao cho mỗi toán tử thuộc về một loại và các giá trị được thay thế bằng một danh sách sắp xếp theo thứ tự, sửa cho mỗi con gái loại toán tử đầu. Loại toán tử, cùng với danh sách các loại con gái của nó, được gọi là chữ ký của toán tử.
Trong đại số phổ quát, điều này được tiếp tục hoàn thiện bằng cách đưa ra các mối quan hệ tương đương được xác định theo phương trình giữa các thuật ngữ.
Mặc dù dường như đã mờ đi một chút, những khái niệm này khá phổ biến và được nghiên cứu nhiều về khoa học máy tính vào cuối thế kỷ 20, như các đại số trừu tượng, sau đó được coi là cơ sở cho các loại dữ liệu trừu tượng, một phần, là tiền thân của những gì các lớp nos trong lập trình hướng đối tượng.
Đại số phổ quát có liên quan đến sự phát triển của lý thuyết thể loại, cũng là nền tảng trong tầm nhìn hiện tại của các loại và ngôn ngữ lập trình.
Đại số là đối tượng cú pháp và được dự định sẽ được sử dụng với một diễn giải trong một số miền ngữ nghĩa tương ứng với các loại. Giải thích là một phép đồng hình ánh xạ sắp xếp thành các miền của các giá trị (loại) và toán tử thành các hàm giữa các miền đó, do đó chữ ký được tôn trọng và phương trình cũng trong trường hợp đại số phương trình. Đây là cách bạn có thể áp dụng kết quả của lý thuyết nhóm cho bất kỳ miền nào có hoạt động tôn trọng định nghĩa của nhóm.
Tổ chức này được các nhà nghiên cứu đầu tiên về ngôn ngữ lập trình coi là rất thuận tiện, đặc biệt là những người quan tâm đến việc chính thức hóa ngôn ngữ lập trình. Nó có lợi thế của việc cô lập cú pháp và ngữ nghĩa, và được hiểu rõ về mặt toán học.
Một lý do khác để áp dụng nó là mối quan tâm với việc phát triển công cụ để thao túng các chương trình, trong môi trường phát triển hoặc trong các hệ thống chính thức để chứng minh các thuộc tính của chương trình (hóa ra ngày càng có nhiều vấn đề sinh đôi).
Điều này dẫn đến sự xuất hiện của khái niệm cây cú pháp trừu tượng (AST) cho các ngôn ngữ lập trình, về cơ bản là các thuật ngữ của đại số đa sắp xếp (đôi khi được tinh chỉnh với việc sử dụng liên kết sắp xếp trong một số sytems). AST là cú pháp tham chiếu cho một ngôn ngữ, từ đó ngữ nghĩa có thể được định nghĩa bằng phép đồng hình như trong ngữ nghĩa học biểu thị.
Điều này không chỉ thuận tiện cho việc nghiên cứu ngữ nghĩa của các ngôn ngữ, mà cây còn có cấu trúc chuỗi tốt hơn và do đó là cơ sở tốt hơn để phát triển các công cụ lập trình và môi trường lập trình.
Nó cho phép cô lập phân tích cú pháp vốn là một phần lộn xộn vì những hạn chế của công nghệ phân tích cú pháp buộc phải sử dụng các ngữ pháp bị biến dạng. Nó cũng là yếu tố ra vấn đề trình bày.
Nó cho phép biểu diễn nhiều chương trình (chuỗi hoặc đồ họa) cụ thể, đôi khi có thể thuận tiện (không có lý do tại sao sử dụng dấu câu thay vì các tab hoặc ngược lại, trong cú pháp chương trình nên bắt buộc mọi người).
Nó giúp dễ dàng xác định nhiều cách hiểu về chương trình và các loại , để phân tích sự phù hợp của chương trình với các diễn giải trừu tượng.
Nó thuận tiện cho việc viết (bán) các công cụ thao tác chương trình tự động, ví dụ để chuyển đổi chương trình tự động hoặc dịch giữa các ngôn ngữ.
Mọi thứ đôi khi có thể phức tạp hơn một chút trong thực tế, bởi vì một số dạng Tóm tắt Cú pháp cho phép một số toán tử đưa cây (biểu thức) thuộc một số loại (một cách không chính thức để xem xét nó). Ví dụ, có thể có một loại sắp xếp cú pháp đại diện cho các biến (các thực thể có thể gán) và một loại khác cho các biểu thức. Nhưng bất kỳ biến nào cũng có thể được sử dụng như một biểu thức, ngược lại là sai.
Những bài báo ban đầu về điều này, đối với các ngôn ngữ lập trình, có từ giữa những năm bảy mươi. Việc khái niệm hóa tại thời điểm đó được dành cho việc tạo ra các môi trường lập trình có ý thức cú pháp (từ "hướng" sau đó được sử dụng). Tìm kiếm Mentor và Centaur ở Châu Âu và cho Tổng hợp chương trình Cornell ở Hoa Kỳ. Họ là hai hệ thống đầu tiên thực sự sử dụng các khái niệm như vậy một cách thực tế. Nhiều người khác đã được phát triển sau đó.
Nhưng cú pháp trừu tượng có trước các hệ thống này. Ngôn ngữ Lisp (1958) có cú pháp trừu tượng, không có gì ngạc nhiên khi nó được phát triển bởi một nhà logic học và với mục đích tạo ra các chương trình thao túng các chương trình (xem thêm ML và LCF ... xuất hiện sau). Nhưng Lisp không được sắp xếp: mọi thứ về mặt cú pháp đều có cấu trúc và cấu trúc tinh tế hơn về cơ bản phụ thuộc vào ngữ nghĩa. Điều này dẫn đến một số người xem xét, phần nào không chính xác, rằng Lisp không có cú pháp.